Commit | Line | Data |
---|---|---|
4871c009 JB |
1 | # define compiler and compiler flag variables |
2 | # define a variable for compiler flags (JFLAGS) | |
3 | # define a variable for the compiler (JC) | |
4 | # define a variable for the Java Virtual Machine (JVM) | |
5 | ||
6 | JFLAGS = -g | |
7 | JC = javac | |
8 | JVM = java | |
9 | ||
10 | # | |
11 | # Clear any default targets for building .class files from .java files; we | |
12 | # will provide our own target entry to do this in this makefile. | |
13 | # make has a set of default targets for different suffixes (like .c.o) | |
14 | # Currently, clearing the default for .java.class is not necessary since | |
15 | # make does not have a definition for this target, but later versions of | |
16 | # make may, so it doesn't hurt to make sure that we clear any default | |
17 | # definitions for these | |
18 | # | |
19 | ||
20 | .SUFFIXES: .java .class | |
21 | ||
22 | ||
23 | # | |
24 | # Here is our target entry for creating .class files from .java files | |
25 | # This is a target entry that uses the suffix rule syntax: | |
26 | # DSTS: | |
27 | # rule | |
28 | # DSTS (Dependency Suffix Target Suffix) | |
29 | # 'TS' is the suffix of the target file, 'DS' is the suffix of the dependency | |
30 | # file, and 'rule' is the rule for building a target | |
31 | # '$*' is a built-in macro that gets the basename of the current target | |
32 | # Remember that there must be a < tab > before the command line ('rule') | |
33 | # | |
34 | ||
35 | .java.class: | |
36 | $(JC) $(JFLAGS) $*.java | |
37 | ||
38 | ||
39 | # | |
40 | # CLASSES is a macro consisting of N words (one for each java source file) | |
41 | # When a single line is too long, use \<return> to split lines that then will be | |
42 | # considered as a single line. For example: | |
43 | # NAME = Camilo \ | |
44 | Juan | |
45 | # is understood as | |
46 | # NAME = Camilo Juan | |
47 | ||
48 | CLASSES = \ | |
97929775 | 49 | Compactable.java \ |
9cc8a5bc JB |
50 | Affichable.java \ |
51 | Structure.java \ | |
2a977a24 | 52 | Point.java \ |
bd443eec | 53 | Forme.java \ |
a988a46e | 54 | Image.java \ |
4871c009 JB |
55 | Segment.java \ |
56 | Cercle.java \ | |
2a977a24 JB |
57 | Entiers.java \ |
58 | Liste.java \ | |
14d4fd0d | 59 | Piletransformations.java \ |
4871c009 JB |
60 | Main.java |
61 | ||
62 | # | |
63 | # MAIN is a variable with the name of the file containing the main method | |
64 | # | |
65 | ||
66 | MAIN = Main | |
67 | ||
68 | # | |
69 | # the default make target entry | |
70 | # for this example it is the target classes | |
71 | ||
72 | default: classes | |
73 | ||
74 | ||
75 | # Next line is a target dependency line | |
76 | # This target entry uses Suffix Replacement within a macro: | |
77 | # $(macroname:string1=string2) | |
78 | # In the words in the macro named 'macroname' replace 'string1' with 'string2' | |
79 | # Below we are replacing the suffix .java of all words in the macro CLASSES | |
80 | # with the .class suffix | |
81 | # | |
82 | ||
83 | classes: $(CLASSES:.java=.class) | |
84 | ||
85 | ||
86 | # Next two lines contain a target for running the program | |
87 | # Remember the tab in the second line. | |
88 | # $(JMV) y $(MAIN) are replaced by their values | |
89 | ||
90 | run: $(MAIN).class | |
91 | $(JVM) $(MAIN) | |
92 | ||
93 | # this line is to remove all unneeded files from | |
94 | # the directory when we are finished executing(saves space) | |
95 | # and "cleans up" the directory of unneeded .class files | |
96 | # RM is a predefined macro in make (RM = rm -f) | |
97 | # | |
98 | ||
99 | clean: | |
100 | $(RM) *.class |