Well, I'm not a make expert, but I'll see if I can help. I may be wrong tho.

[...]

.SUFFIXES: .java .class

I don't think you need the .SUFFIXES directive.  According to the
make manual, this method is deprecated.
[...]

.java.class:
$(JC) $(JFLAGS) -classpath $(CLASSPATH) $(CLASSES)

again, this is deprecated.

Okay, I think you can do this:

CLASSPATH = .://home/skunkworks/acme
JFLAGS= -g -deprecation
JC= javac
.PHONY: jar clean

CLASSES= \
  AboutDialog.class \
  PatternEditor.class \
  SingleBit.class \
  BitPanel.class \
  TimeBit.class \
  TimePanel.class \
  SimpleBit.class \
  SimpleBitPanel.class \
#    patedit.class \
  entry.class \
  comment_entry.class \
  integration_entry.class \
  metarow_entry.class \
  reset_entry.class \
  metarow.class \
  frame.class \
  regular_frame.class \
  reset_frame.class \
  integration_frame.class \
  tag_entry.class \
  file_display.class \
  time_display.class \
SingleBitEntry.class
all:  $(CLASSES)

%.class: %.java
   $(JC) $(JFLAGS) -classpath $(CLASSPATH) $<

jar:
jar cmf manifest PatternEditor.jar *.class Acme/JPM/Encoders/*.class Acme/JP
M/*.class Acme/*.class

clean:
   -$(RM) *.class

Note the .PHONY directive. Without it, if you ever created a file called, "jar" or "clean" inside the srcdir, then the "jar" or "clean" targets wouldn't work (respectively). %.class : %.java is preferred over .java.class from what I read in the make manual. For the clean directive, it's better to put a - before the $(RM), just in case you don't have any class files (- means make shouldn't care if the command returns non-zero exit status.) It actually doesn't matter in the default
case, I don't think, because $(RM) is normally expanded to "rm -f".

To be honest though, I'm not sure why your makefile doesn't work. It seems to
have a good dependency list.

--Ray

Reply via email to