-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
340 lines (297 loc) · 14.1 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
#
# Totally hacky special purpose Makefile that probably won't work
# for you.
#
# Sticking points:
# - weak reference doesn't exist in 1.1... is it of any use to me then??
# TODO: versions should be command line params I think
# TODO: find automatic way to find all failures to declare @Override
# To find all places where I forgot to mark something public or private or protected:
# javap `find . -name '*.prejava' | sed 's/.prejava//' | sed 's/^\.\///'` | grep -v "\bpublic " | grep -v '\bprotected ' | fgrep -v ' access$' | grep -v ' static {};' | grep -v '^}$' | fgrep -v ' class$' | fgrep -v ' array$'
# To use cookies, need netscape.javascript.JSObject
# which is in /usr/java/jdk1.3.1_18/jre/lib/javaplugin.jar
# That's needed at runtime but not compile time (since
# we use reflection to get at the API).
# Uncomment one of the following sections.
# To find rt.jar: locate -r '/rt.jar$'
##JAVAROOT=/usr/java/jdk1.2.2
#JAVAROOT=/usr/java/jdk1.3.1_18
#JAVAC=${JAVAROOT}/bin/javac -target 1.1
#JAR=${JAVAROOT}/bin/jar
#JAVADOC=${JAVADOCROOT}/bin/javadoc
##JAVAROOT=/usr/java/j2sdk1.4.2
##JAVAROOT=/usr/java/jdk1.5.0
##JAVAROOT=/usr/java/jdk1.5.0_01
#JAVAROOT=/usr/java/jdk1.6.0
#JAVAC=${JAVAROOT}/bin/javac -source 1.2 -target 1.1 -g
##JAVAC=${JAVAROOT}/bin/javac -source 1.4 -target 1.4 -g
#JAR=${JAVAROOT}/bin/jar
#JAVADOC=${JAVADOCROOT}/bin/javadoc
##JAVAROOT=/usr/java/jdk1.2.2
#JAVAROOT=/usr/java/jdk1.3.1_18
##JAVAROOT=/usr/java/j2sdk1.4.2
## there is no -source 1.2 or -source 1.1 for jikes
#JAVAC=jikes +P -source 1.3 -target 1.1 -classpath ${JAVAROOT}/jre/lib/rt.jar
#JAR=${JAVAROOT}/bin/jar
#JAVADOC=${JAVADOCROOT}/bin/javadoc
# cygwin on my laptop
# with fake renumbering (so it's not quite fair):
# javac1.2: 1:08
# javac1.6: 1:42
# jikes with 1.2: 53 seconds
##JAVAC=javac1.6
##JAVAROOT=c:/jdk1.3.1_20
#JAVAC=javac1.2
#JAVAROOT=c:/jdk1.2.2
## use 1.6 javadoc, since it produces nicer package summaries from the package.html files
#JAVADOCROOT="c:/Program Files (x86)/Java/jdk1.6.0_17"
## there is no -source 1.2 or -source 1.1 for jikes
##JAVAC=jikes +P -source 1.3 -target 1.1 -classpath ${JAVAROOT}/jre/lib/rt.jar
## hmm, if I do it that way, with jikes 1.22, and run it using java1.2, I get a "monitor is in illegal state" error in the jikes-compiled code... specifically, on exiting from any synchronized(someObject) {...} block. So it seems I have to use javac1.2 instead of jikes.
#JAR=${JAVAROOT}/bin/jar
#JAVADOC=${JAVADOCROOT}/bin/javadoc
# XXX TODO: deal with warning "warning: [options] bootstrap class path not set in conjunction with -source 1.2" (or whatever). what does it mean?
# ubuntu or macbook, java 1.7 or 1.8, compiling for 1.2, which allows any -target >= 1.1. As backwards-compatible as possible; use this for releases.
#JAVACPPFLAGS=-DOVERRIDE=
#JAVAC=javac -source 1.2 -target 1.1
#JAR=jar
#JAVADOC=javadoc
# ubuntu or macbook, java 1.7 or 1.8, compiling for 1.3, which allows any -target >= 1.1
#JAVACPPFLAGS=-DOVERRIDE=
#JAVAC=javac -source 1.3 -target 1.1
#JAR=jar
#JAVADOC=javadoc
# ubuntu or macbook, java 1.7 or 1.8, compiling for 1.4 which is last version in which @Override doesn't exist, and requires -target >=1.4
#JAVACPPFLAGS=-DOVERRIDE=
#JAVAC=javac -source 1.4 -target 1.4
#JAR=jar
#JAVADOC=javadoc
# ubuntu or macbook, java 1.7 or 1.8, compiling for 1.5 which is first version in which @Override exists, and requires -target >= 1.5
#JAVACPPFLAGS=-DOVERRIDE=@Override
#JAVAC=javac -source 1.5 -target 1.5
#JAR=jar
#JAVADOC=javadoc
# ubuntu or macbook, java 1.7 or 1.8, compiling for 1.6 which requires -target >= 1.6
#JAVACPPFLAGS=-DOVERRIDE=@Override
#JAVAC=javac -source 1.6 -target 1.6
#JAR=jar
#JAVADOC=javadoc
# ubuntu or macbook, java 1.7 or 1.8, compiling for 1.7 which requires -target >= 1.7
#JAVACPPFLAGS=-DOVERRIDE=@Override
#JAVAC=javac -source 1.7 -target 1.7 -bootclasspath /usr/local/buildtools/java/jdk7-google-v6-64/jre/lib/rt.jar
#JAR=jar
#JAVADOC=javadoc
# ubuntu or macbook, java 1.7 or 1.8, compiling for 1.7 which requires -target >= 1.7
#JAVACPPFLAGS=-DOVERRIDE=@Override
#JAVAC=javac -source 1.7 -target 1.7 -bootclasspath /usr/local/buildtools/java/jdk7-google-v6-64/jre/lib/rt.jar -deprecation
#JAR=jar
#JAVADOC=javadoc
# ubuntu or macbook, java 1.7 or 1.8, compiling for 1.8 which requires -target >= 1.8
#JAVACPPFLAGS=-DOVERRIDE=@Override
#JAVAC=javac -source 1.8 -target 1.8 -bootclasspath /usr/local/buildtools/java/jdk8-google-v7-64/jre/lib/rt.jar
#JAR=jar
#JAVADOC=javadoc
# ubuntu or macbook, java 1.7 or 1.8, compiling for 1.8 which requires -target >= 1.8
#JAVACPPFLAGS=-DOVERRIDE=@Override
#JAVAC=javac -source 1.8 -target 1.8 -bootclasspath /usr/local/buildtools/java/jdk8-google-v7-64/jre/lib/rt.jar -deprecation
#JAR=jar
#JAVADOC=javadoc
# ubuntu, /usr/bin/javac seems to have more recent java versions than what's in my PATH. need to run using /usr/bin/java, though.
#JAVACPPFLAGS=-DOVERRIDE=@Override
#JAVAC=/usr/bin/javac -source 1.10 -target 1.10 -deprecation
#JAR=/usr/bin/jar
#JAVADOC=/usr/bin/javadoc
# ubuntu, using alternative older compiler, from package openjdk-8-jdk
#JAVAROOT=/usr/lib/jvm/java-1.8.0-openjdk-amd64
#JAVACPPFLAGS=-DOVERRIDE=@Override
#JAVAC=${JAVAROOT}/bin/javac -source 1.6 -target 1.6 -deprecation -Xlint:all -Xlint:-options -bootclasspath ${JAVAROOT}/jre/lib/rt.jar
#JAR=${JAVAROOT}/bin/jar
#JAVADOC=${JAVAROOT}/bin/javadoc
# ubuntu, oldest at the moment using default installed (11) compiler, from package openjdk-11-jdk. -Xlint:-options suppresses warning about old version (and also about bootpath. argh! I DO want to see that!)
#JAVACPPFLAGS=-DOVERRIDE=@Override
#JAVAC=/usr/bin/javac -source 8 -target 8 -deprecation -Xlint:all -Xlint:-options
#JAR=/usr/bin/jar
#JAVADOC=/usr/bin/javadoc
# ubuntu, newest at the moment using default installed (11) compiler, from package openjdk-11-jdk
JAVAROOT=/usr/lib/jvm/java-1.11.0-openjdk-amd64
JAVACPPFLAGS=-DOVERRIDE=@Override
JAVAC=${JAVAROOT}/bin/javac -source 6 -target 6 -deprecation -Xlint:all -Xlint:-options
JAR=${JAVAROOT}/bin/jar
JAVADOC=${JAVAROOT}/bin/javadoc
# ubuntu or macbook, java 1.7 or 1.8, compiling as modern as possible, whatever that means
#JAVACPPFLAGS=-DOVERRIDE=@Override
#JAVAC=javac
#JAR=jar
#JAVADOC=javadoc
# Pattern rule for making a .class file out of a .prejava file.
# Note: for the class files associated with Foo.prejava,
# what we really want is the regular expression Foo($.*)?\.class,
# but I don't think there's any way to express that using a glob pattern,
# so we use a slightly more general glob pattern which will also remove
# some non-.class file names such as Foo.barclass, Foo$class, and Foo$barclass
# (all of which are unlikely to be legitimate precious files,
# so this seems pretty safe).
%.class : %.prejava
rm -f $*[.$$]*class
./javacpp ${JAVACPPFLAGS} ${JAVAC} $<
./javarenumber -v 0 $*[.$$]*class
# Pattern rule for making a .class file out of a .java file
%.class : %.java
${JAVAC} $<
# Arrows currently must come before UndoTreeViewer but I should get rid of this dependency, it's for the justified labels
# SmoothlyVaryingViewingParameter demo depends on MyGraphics
# And UndoTreeViewer depends on SmoothlyVaryingViewingParameter
# default target
donhatchsw.jar: \
Makefile \
META-INF/MANIFEST.MF \
com/donhatchsw/javacpp/ExpressionParser.class \
com/donhatchsw/javacpp/Cpp.class \
com/donhatchsw/javacpp/javacpp.class \
com/donhatchsw/compat/ArrayList.class \
com/donhatchsw/compat/IntArrayList.class \
com/donhatchsw/compat/DoubleArrayList.class \
com/donhatchsw/util/SortStuff.class \
com/donhatchsw/util/MyMath.class \
com/donhatchsw/util/Complex.class \
com/donhatchsw/util/Arrays.class \
com/donhatchsw/util/VecMath.class \
com/donhatchsw/util/LinearProgramming.class \
com/donhatchsw/compat/regex.class \
com/donhatchsw/compat/Format.class \
com/donhatchsw/util/SpecializedHashMap.class \
com/donhatchsw/util/Minimizer.class \
com/donhatchsw/util/FuzzyPointHashTable.class \
com/donhatchsw/util/FuzzyPointHashSet.class \
com/donhatchsw/util/MergeFind.class \
com/donhatchsw/util/IndexBinaryHeap.class \
com/donhatchsw/util/IndexBinaryHeapKeyed.class \
com/donhatchsw/util/TopSorter.class \
com/donhatchsw/util/ConvexHull.class \
com/donhatchsw/util/Listenable.class \
com/donhatchsw/util/Arrows.class \
com/donhatchsw/util/TriangulationOptimizer.class \
com/donhatchsw/util/Triangulator.class \
com/donhatchsw/util/Poly.class \
com/donhatchsw/util/CSG.class \
com/donhatchsw/util/PolyCSG.class \
com/donhatchsw/util/MiniBall.class \
com/donhatchsw/util/BlueNoise.class \
com/donhatchsw/awt/MyGraphics.class \
com/donhatchsw/awt/GridBagLayoutInWhichRELATIVEMeansSomethingUseful.class \
com/donhatchsw/awt/TableLayout.class \
com/donhatchsw/awt/RowLayout.class \
com/donhatchsw/awt/ColLayout.class \
com/donhatchsw/awt/TablePanel.class \
com/donhatchsw/awt/Row.class \
com/donhatchsw/awt/Col.class \
com/donhatchsw/awt/JTablePanel.class \
com/donhatchsw/awt/JRow.class \
com/donhatchsw/awt/JCol.class \
com/donhatchsw/awt/LayoutExample.class \
com/donhatchsw/awt/MainWindowCount.class \
com/donhatchsw/util/NewtonSolver.class \
com/donhatchsw/util/GoldenSectionSearch.class \
com/donhatchsw/util/Catenary.class \
com/donhatchsw/util/CatenaryRotated.class \
com/donhatchsw/util/SmoothlyVaryingViewingParameter.class \
com/donhatchsw/util/UndoTreeSquirrel.class \
com/donhatchsw/util/UndoTreeViewer.class \
com/donhatchsw/applet/DoubleBufferedCanvas.class \
com/donhatchsw/applet/AppletUtils.class \
com/donhatchsw/applet/CookieUtils.class \
com/donhatchsw/shims_for_deprecated/java_applet_AppletContext.class \
com/donhatchsw/shims_for_deprecated/java_applet_AppletStub.class \
com/donhatchsw/shims_for_deprecated/java_applet_Applet.class \
com/donhatchsw/shims_for_deprecated/javax_swing_JApplet.class \
com/donhatchsw/shims_for_deprecated/com_donhatchsw_applet_AppletViewer.class \
com/donhatchsw/shims_for_deprecated/com_donhatchsw_applet_ExampleApplet.class \
com/donhatchsw/mc4d/GenericPuzzleDescription.class \
com/donhatchsw/mc4d/GenericPuzzleFactory.class \
com/donhatchsw/mc4d/PolytopePuzzleDescription.class \
com/donhatchsw/mc4d/VeryCleverPaintersSortingOfStickers.class \
com/donhatchsw/mc4d/GenericPipelineUtils.class \
com/donhatchsw/mc4d/MC4DModel.class \
com/donhatchsw/mc4d/GenericGlue.class \
com/donhatchsw/mc4d/MC4DViewGuts.class \
com/donhatchsw/mc4d/MC4DControlPanelInterface.class \
com/donhatchsw/mc4d/MC4DLegacyControlPanel.class \
com/donhatchsw/mc4d/MC4DSwingControlPanel.class \
com/donhatchsw/mc4d/MC4DApplet.class \
com/donhatchsw/mc4d/MC4DJApplet.class \
${NULL}
/bin/rm -rf scratch
mkdir scratch
cp -a Makefile com scratch
(cd scratch; ${JAR} -cfm ../donhatchsw.jar ../META-INF/MANIFEST.MF \
com/donhatchsw/javacpp/*.class \
com/donhatchsw/javacpp/*.java \
com/donhatchsw/shims_for_deprecated/*.class \
com/donhatchsw/shims_for_deprecated/*.prejava \
com/donhatchsw/shims_for_deprecated/*.java \
com/donhatchsw/shims_for_deprecated/macros.h \
com/donhatchsw/util/*.class \
com/donhatchsw/util/*.prejava \
com/donhatchsw/util/*.java \
com/donhatchsw/util/macros.h \
com/donhatchsw/awt/*.class \
com/donhatchsw/awt/*.prejava \
com/donhatchsw/awt/*.java \
com/donhatchsw/awt/macros.h \
com/donhatchsw/compat/*.class \
com/donhatchsw/compat/*.prejava \
com/donhatchsw/compat/*.java \
com/donhatchsw/compat/macros.h \
com/donhatchsw/applet/*.class \
com/donhatchsw/applet/*.prejava \
com/donhatchsw/applet/*.java \
com/donhatchsw/applet/macros.h \
com/donhatchsw/mc4d/*.class \
com/donhatchsw/mc4d/*.java \
Makefile)
/bin/rm -rf scratch
clean:
# do NOT remove the .java files in javacpp or mc4d !!!
# ASSUMPTION: everything named .html or .css is automatically generated.
# If you have a real .html file, put it into a .prehtml file to get around this.
/bin/rm -rf \
*.jar \
com/donhatchsw/*/*.class \
com/donhatchsw/*/*.html \
scratch \
com/donhatchsw/util/*.java{,.lines} \
com/donhatchsw/compat/*.java{,.lines} \
com/donhatchsw/applet/*.java{,.lines} \
com/donhatchsw/awt/*.java{,.lines} \
com/donhatchsw/shims_for_deprecated/*.java{,.lines} \
*.html \
*.css \
resources/ \
package-list \
doc: donhatchsw.jar
# Copy .prehtml files to .html files
# (they are in .prehtml files just so that make clean won't remove them)
# XXX should check for writability of the .html file before clobbering! only clobber a read-only one!
for f in `find . -name package.prehtml -print`; do \
echo " found $$f"; \
g=`echo $$f | sed s/.prehtml/.html/`; \
echo " converting to $$g"; \
rm -f $$g; \
(tcsh -f -c 'repeat 100 echo "<!-- THIS FILE IS AUTOMATICALLY GENERATED-- DO NOT EDIT -->"'; cat $$f) > $$g; \
chmod a-w $$g; \
done
${JAVADOC} com/donhatchsw/*/*.java
sendMinimal: donhatchsw.jar
scp donhatchsw.jar [email protected]:public_html/donhatchsw/.
send: doc
scp donhatchsw.jar [email protected]:public_html/donhatchsw/.
(cd ..; scp -r donhatchsw [email protected]:public_html/private/.)
senddoc: doc
scp -r *.html *.css package-list resources com [email protected]:public_html/donhatchsw/.
# XXX temporary? for expedience, so these get recompiled properly when I change macros.h since I'm working on them. Would be good if we could do something more genuine.
# Note that we don't make anything depend on Makefile. This is arguably
# wrong, but a dependency on Makefile would cause a lot of pain.
com/donhatchsw/util/SmoothlyVaryingViewingParameter.class: com/donhatchsw/util/macros.h
com/donhatchsw/util/MyMath.class: com/donhatchsw/util/macros.h
com/donhatchsw/util/Catenary.class: com/donhatchsw/util/macros.h
com/donhatchsw/util/CatenaryRotated.class: com/donhatchsw/util/macros.h