Commit | Line | Data |
---|---|---|
f734b987 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 = \ | |
c4aaaeca | 49 | Message.java \ |
f734b987 | 50 | ClientSimplifie.java \ |
58312685 | 51 | SocketClient.java \ |
2c648f75 JB |
52 | ThreadClientSend.java \ |
53 | ThreadClientReceive.java \ | |
c4aaaeca JB |
54 | ThreadClientoSend.java \ |
55 | ThreadClientoReceive.java \ | |
f734b987 JB |
56 | Main.java |
57 | ||
58 | # | |
59 | # MAIN is a variable with the name of the file containing the main method | |
60 | # | |
61 | ||
62 | MAIN = Main | |
63 | ||
64 | # | |
65 | # the default make target entry | |
66 | # for this example it is the target classes | |
67 | ||
68 | default: classes | |
69 | ||
70 | ||
71 | # Next line is a target dependency line | |
72 | # This target entry uses Suffix Replacement within a macro: | |
73 | # $(macroname:string1=string2) | |
74 | # In the words in the macro named 'macroname' replace 'string1' with 'string2' | |
75 | # Below we are replacing the suffix .java of all words in the macro CLASSES | |
76 | # with the .class suffix | |
77 | # | |
78 | ||
79 | classes: $(CLASSES:.java=.class) | |
80 | ||
81 | ||
82 | # Next two lines contain a target for running the program | |
83 | # Remember the tab in the second line. | |
84 | # $(JMV) y $(MAIN) are replaced by their values | |
85 | ||
86 | run: $(MAIN).class | |
87 | $(JVM) $(MAIN) | |
88 | ||
89 | # this line is to remove all unneeded files from | |
90 | # the directory when we are finished executing(saves space) | |
91 | # and "cleans up" the directory of unneeded .class files | |
92 | # RM is a predefined macro in make (RM = rm -f) | |
93 | # | |
94 | ||
95 | clean: | |
96 | $(RM) *.class |