bf02bbb114aa2c2883b42cd2f33bafa3324227f8
[charm.git] / src / scripts / Makefile
1 #############################################################################"
2 #
3 # This one Makefile serves all of converse and charm.  It includes
4 # rules for building:
5 #
6 #     * The CONVERSE libraries
7 #     * Charm++ runtime
8 #     * ITC++ Translator
9 #     * Languages
10 #     * Documentation
11
12 # This Makefile is common to all machines.  This works because the charmc
13 # is smart enough to "conceal" the differences between machines.  charmc
14 # gets its smarts by reading the conv-mach.sh configuration file.
15 #
16 # If you wish to compile with debugging, optimization, or some other charm
17 # option, you can do so by setting OPTS.  For example, if you need a lot
18 # of debugging information, you could type:
19 #
20 #     make charm++ OPTS="-g -save -verbose"
21 #
22 ###############################################################################
23
24 SHELL=/bin/sh
25
26 all: charm++ bluegene LIBS ampi f90charm tsm sm pvm sdag doc
27
28 charm++: converse libck.a charmxi
29
30 bluegene: charm++ libbluegene.a
31
32 for-namd: charm++ pvm AMPIC
33
34 tsm: converse libtsm.a
35
36 sm: converse libsm.a
37
38 pvm: converse libpvmc.a
39
40 sdag: charm++ sdagx libsdag.a
41
42 FEM: FEMC FEMF
43
44 FEMC: charm++ LIBS
45
46 FEMF: FEMC libconv-utilf.a
47
48 AMPI: AMPIC AMPIF
49
50 AMPIC: charm++ LIBS libampi.a
51
52 AMPIF: charm++ libconv-utilf.a LIBS libampif.a
53
54 f90charm: charm++ libf90charm.a
55
56 translators: sdagx charmxi conv-cpm
57
58 LIBS: CONVLIBS CHARMLIBS
59         cd libs; make otherlibs OPTS='$(OPTS)'
60
61 test-all: all
62         cd ../pgms ; make test-all  OPTS='$(OPTS)'
63
64 test-converse: converse
65         cd ../pgms ; make test-converse  OPTS='$(OPTS)'
66
67 test-charm: charm++
68         cd ../pgms ; make test-charm  OPTS='$(OPTS)'
69
70 test-ampi: AMPI
71         cd ../pgms ; make test-ampi  OPTS='$(OPTS)'
72
73 test-fem: FEM
74         cd ../pgms ; make test-fem  OPTS='$(OPTS)'
75
76 ps-doc: basics
77         cd doc ; make ps
78
79 pdf-doc: basics
80         cd doc ; make pdf
81
82 html-doc: basics
83         cd doc ; make html
84
85 doc: basics
86         cd doc ; make all
87
88 CHARMC=../bin/charmc $(CHARMOPTS) $(OPTS)
89
90 SEQCHARMC=../bin/charmc -seq $(CHARMOPTS)
91
92
93 ###############################################################################
94 #
95 # The basics (bin, lib, include, headers, charmc, conv-mach.sh)
96 #
97 ###############################################################################
98
99 CVHEADERS=cpthreads.h converse.h conv-trace.h trace.h conv-ccs.h \
100       conv-autoconfig.h conv-mach.h conv-mach.sh \
101       CkFutures.decl.h CkArray.decl.h CkReduction.decl.h \
102       LBDatabase.decl.h CentralLB.decl.h \
103       RandCentLB.decl.h RecBisectBfLB.decl.h \
104       MetisLB.decl.h RefineLB.decl.h \
105       HeapCentLB.decl.h NborBaseLB.decl.h NeighborLB.decl.h \
106       WSLB.decl.h GreedyRefLB.decl.h RandRefLB.decl.h \
107       tempo.decl.h waitqd.decl.h \
108           CommLB.decl.h Comm1LB.decl.h  \
109           ampi.decl.h ampimain.decl.h BlueGene.decl.h
110
111 # The .c files are there to be #included by clients whole
112 # This is a bit unusual, but makes client linking simpler.
113 UTILHEADERS=pup.h pup_c.h ckhashtable.h cklists.h conv-lists.h \
114         sockRoutines.h sockRoutines.c
115
116 CKHEADERS=ck.h ckstream.h envelope.h init.h qd.h charm.h charm++.h \
117           ckfutures.h ckarray.h ckreduction.h $(UTILHEADERS) \
118           tempo.h waitqd.h LBDatabase.h lbdb.h \
119           LBDBManager.h LBComm.h LBOM.h LBObj.h LBMachineUtil.h \
120           Refiner.h ObjGraph.h heap.h elements.h CommLBHeap.h \
121           CentralLB.h RandCentLB.h RecBisectBfLB.h \
122           RefineLB.h HeapCentLB.h CommLB.h Comm1LB.h \
123           MetisLB.h NborBaseLB.h \
124           NeighborLB.h WSLB.h GreedyRefLB.h RandRefLB.h \
125           ampi.h BlueGene.h \
126           $(CVHEADERS)
127
128 ALLHEADERS=$(CKHEADERS) \
129     simplemsg.h sm.h pvmc.h pvm3.h sdag.h \
130     CDep.h CCounter.h CMsgBuffer.h CWhenTrigger.h TList.h \
131         graph.h bitvecset.h Set.h ampiimpl.h
132
133 basics: headers
134         touch basics
135
136 # Headers is used only for the dependencies
137 headers: dirs+sources headerlinks $(ALLHEADERS)
138
139 conv-autoconfig.h:
140         ./charmconfig
141
142 headerlinks: dirs+sources Makefile $(ALLHEADERS)
143         @echo "Soft-linking headers..."
144         -@for hdr in $(ALLHEADERS) ; do test ! -f "../include/$$hdr" && ./system_ln "../tmp/$$hdr" ../include ; done
145         touch headerlinks       
146
147 dirs+sources:
148         rm -f .vdir .gdir
149         (cd .. ; basename `pwd`)                        > .vdir
150         (cd .. ; basename `pwd` | sed -e 's@-.*@@')     > .gdir
151         find . -type l -exec rm {} \;
152         rm -rf QuickThreads
153         rm -rf libs
154         rm -rf ../bin ; mkdir ../bin
155         rm -rf ../lib ; mkdir ../lib
156         rm -rf ../pgms
157         rm -rf ../doc ; mkdir ../doc
158         ../../src/Common/scripts/gatherflat ../../src/Common/scripts .
159         ./gatherflat ../../src/Common/conv-core        .
160         ./gatherflat ../../src/Common/conv-ldb         .
161         ./gatherflat ../../src/Common/ck-core          .
162         ./gatherflat ../../src/Common/util             .
163         ./gatherflat ../../src/Common/ck-perf          .
164         ./gatherflat ../../src/Common/ck-ldb           .
165         ./gatherflat ../../src/Common/langs/simplemsg  .
166         ./gatherflat ../../src/Common/langs/pvmc       .
167         ./gatherflat ../../src/Common/langs/ampi       .
168         ./gatherflat ../../src/Common/langs/bluegene   .
169         ./gatherflat ../../src/Common/langs/sdag/xlator       .
170         ./gatherflat ../../src/Common/langs/sdag/runtime      .
171         ./gatherflat ../../src/Common/langs/f90charm      .
172         ./gatherflat ../../src/Common/xlat-i           .
173         ./gatherflat ../../src/Common/xlatcpm          .
174         ./gathertree ../../src/QuickThreads QuickThreads
175         ./gathertree ../../src/Common/libs libs
176         ./gathertree ../../src/Common.`cat .gdir`      .
177         ./gatherflat ../../src/`cat .vdir`             .
178         ./gathertree ../../pgms ../pgms
179         ./gathertree ../../doc doc
180         rm -f ../bin/charmc ; cp charmc ../bin/
181         chmod +x ../bin/charmc
182         rm -f .vdir .gdir
183         rm -rf ../include ; mkdir ../include
184         cp -f conv-mach.sh ../include
185         touch dirs+sources
186
187
188 ###############################################################################
189 #
190 # Converse Libraries
191 #
192 ###############################################################################
193
194 TRACELIBS=libtrace-none.a libtrace-projections.a libtrace-summary.a
195
196 CVLIBS=libconv-core.a libconv-cplus-n.a libconv-cplus-y.a libconv-util.a libldb-rand.o libldb-spray.o libldb-graph.o libldb-test.o $(TRACELIBS)
197
198 LIBCONV_CORE=threads.o convcore.o conv-conds.o queueing.o msgmgr.o memory.o cpm.o cpthreads.o futures.o cldb.o random.o debug-message.o debug-object.o info.o generate.o edgelist.o conv-ccs.o quiescence.o 
199
200 LIBCONV_UTIL=pup_util.o pup_xlater.o pup_c.o ckhashtable.o sockRoutines.o conv-lists.o
201
202 LIBCONV_UTILF=pup_f.o
203
204 converse: basics QuickThreads/libckqt.a $(CVLIBS) charmrun-target conv-cpm
205
206 charmrun-target: daemon-target
207         if [ -d charmrun ] ; then ( cd charmrun ; make OPTS='$(OPTS)' ) ; fi
208         if [ -f charmrun ] ; then ( cp charmrun ../bin ) ; fi
209
210 daemon-target: sockRoutines.o
211         if test -f daemon.c ; then $(CHARMC) -seq daemon.c \
212                 sockRoutines.o -o ../bin/charmd; fi 
213         if test -f daemon.c ; then $(CHARMC) -DFACELESS -seq daemon.c \
214                 sockRoutines.o -o ../bin/charmd_faceless; fi 
215         touch daemon-target
216
217 QuickThreads/libckqt.a:
218         . ./conv-mach.sh;cd QuickThreads;./configure $$CMK_QT
219         rm -f QuickThreads/libqt.a
220         cd QuickThreads ; make qt  OPTS='$(OPTS)'
221         cp QuickThreads/libqt.a ../lib/libckqt.a
222
223 CONVLIBS: converse
224         cd libs; make convlibs OPTS='$(OPTS)'
225
226 libconv-core.a: $(LIBCONV_CORE)
227         $(CHARMC) -cp ../lib/ -o $@ $(LIBCONV_CORE)
228
229 libconv-cplus-y.a: machine.c $(CVHEADERS)       
230         $(CHARMC) -cp ../lib/ -o $@ -DFOR_CPLUS=1 machine.c
231
232 libconv-cplus-n.a: machine.c $(CVHEADERS)
233         $(CHARMC) -cp ../lib/ -o $@ -DFOR_CPLUS=0 machine.c
234
235 libconv-util.a: $(LIBCONV_UTIL)
236         $(CHARMC) -cp ../lib/ -o $@ $(LIBCONV_UTIL)
237
238 libconv-utilf.a: $(LIBCONV_UTILF)
239         $(CHARMC) -cp ../lib/ -o $@ $(LIBCONV_UTILF)
240
241 cpm.o: cpm.c $(CVHEADERS)
242         $(CHARMC) cpm.c
243
244 threads.o: threads.c $(CVHEADERS)
245         $(CHARMC) -IQuickThreads threads.c
246
247 convcore.o: convcore.c $(CVHEADERS)
248         $(CHARMC) convcore.c
249
250 conv-ccs.o: conv-ccs.c $(CVHEADERS)
251         $(CHARMC) conv-ccs.c
252
253 sockRoutines.o: sockRoutines.c $(CVHEADERS) $(UTILHEADERS)
254         $(CHARMC) sockRoutines.c
255
256 random.o: random.c $(CVHEADERS)
257         $(CHARMC) random.c
258
259 queueing.o: queueing.c $(CVHEADERS)
260         $(CHARMC) queueing.c
261
262 conv-conds.o: conv-conds.c $(CVHEADERS)
263         $(CHARMC) conv-conds.c
264
265 futures.o: futures.c $(CVHEADERS)
266         $(CHARMC) futures.c
267
268 msgmgr.o: msgmgr.c $(CVHEADERS)
269         $(CHARMC) msgmgr.c
270
271 cpthreads.o: cpthreads.c $(CVHEADERS)
272         $(CHARMC) cpthreads.c
273
274 memory.o: memory.c $(CVHEADERS)
275         $(CHARMC) memory.c
276
277 edgelist.o : edgelist.c ../../src/Common/conv-ldb/typedefs.h $(CVHEADERS)
278         $(CHARMC) -I../../src/Common/conv-ldb/ edgelist.c
279
280 generate.o : generate.c ../../src/Common/conv-ldb/typedefs.h $(CVHEADERS)
281         $(CHARMC) -I../../src/Common/conv-ldb/ generate.c
282
283 cldb.o: cldb.c ../../src/Common/conv-ldb/cldb.h $(CVHEADERS)
284         $(CHARMC) -I../../src/Common/conv-ldb/ cldb.c
285
286 quiescence.o: quiescence.h $(CVHEADERS)
287         $(CHARMC) quiescence.c
288
289 libldb-rand.o: cldb.rand.c ../../src/Common/conv-ldb/cldb.h $(CVHEADERS)
290         $(CHARMC) -I../../src/Common/conv-ldb/ -cp ../lib/ -o $@ cldb.rand.c
291
292 libldb-graph.o: cldb.graph.c ../../src/Common/conv-ldb/cldb.graph.h $(CVHEADERS)
293         $(CHARMC) -I../../src/Common/conv-ldb/ -cp ../lib/ -o $@ cldb.graph.c 
294
295 libldb-spray.o: cldb.spray.c $(CVHEADERS)
296         $(CHARMC) -cp ../lib/ -o $@ cldb.spray.c
297
298 libldb-test.o: cldb.test.c $(CVHEADERS)
299         $(CHARMC) -cp ../lib/ -o $@ cldb.test.c
300
301 pup_util.o: pup_util.C $(UTILHEADERS)
302         $(CHARMC) -o pup_util.o pup_util.C
303
304 pup_xlater.o: pup_xlater.C $(UTILHEADERS)
305         $(CHARMC) -o pup_xlater.o pup_xlater.C
306
307 pup_c.o: pup_c.C $(UTILHEADERS)
308         $(CHARMC) -o pup_c.o pup_c.C
309
310 pup_f.o: pup_f.f90
311         $(CHARMC) -c pup_f.f90
312         $(CHARMC) -cpmod ../include pupmod.M
313
314 ckhashtable.o: ckhashtable.C ckhashtable.h
315         $(CHARMC) -o ckhashtable.o ckhashtable.C
316
317 conv-lists.o: conv-lists.C $(UTILHEADERS)
318         $(CHARMC) -o conv-lists.o conv-lists.C
319
320 ###############################################################################
321 #
322 # Charm Libraries
323 #
324 ###############################################################################
325
326 CK_LIBS_CORE=libck.a
327
328 LIBCK_CORE=init.o register.o qd.o ck.o main.o msgalloc.o ckfutures.o \
329            ckarray.o ckreduction.o \
330            tempo.o waitqd.o LBDatabase.o lbdb.o \
331            LBDBManager.o LBComm.o LBObj.o LBMachineUtil.o Refiner.o \
332            ObjGraph.o \
333            CentralLB.o RandCentLB.o \
334            RecBisectBfLB.o graph.o bitvecset.o \
335            MetisLB.o RefineLB.o Set.o CommLB.o Comm1LB.o\
336            HeapCentLB.o heap.o NborBaseLB.o NeighborLB.o WSLB.o \
337            GreedyRefLB.o RandRefLB.o CommLBHeap.o
338
339 CHARMLIBS: charm++
340         cd libs; make charmlibs OPTS='$(OPTS)'
341
342 libck.a: $(LIBCK_CORE)
343         $(CHARMC) -cp ../lib/ -o $@ $(LIBCK_CORE)
344
345 LIBTRACE_NONE=trace-none.o
346 libtrace-none.a: $(LIBTRACE_NONE)
347         $(CHARMC) -cp ../lib/ -o $@ $(LIBTRACE_NONE)
348
349 LIBTRACE_PROJ=trace-projections.o
350 libtrace-projections.a: $(LIBTRACE_PROJ)
351         $(CHARMC) -cp ../lib/ -o $@ $(LIBTRACE_PROJ)
352
353 LIBTRACE_SUMM=trace-summary.o
354 libtrace-summary.a: $(LIBTRACE_SUMM)
355         $(CHARMC) -cp ../lib/ -o $@ $(LIBTRACE_SUMM)
356
357 ampi.decl.h ampi.def.h : ampi.ci charmxi
358         $(CHARMC) ampi.ci
359
360 ampimain.decl.h ampimain.def.h : ampimain.ci charmxi
361         $(CHARMC) ampimain.ci
362
363 CkFutures.decl.h CkFutures.def.h : ckfutures.ci charmxi
364         $(CHARMC) ckfutures.ci
365
366 tempo.decl.h tempo.def.h : tempo.ci charmxi
367         $(CHARMC) tempo.ci
368
369 waitqd.decl.h waitqd.def.h : waitqd.ci charmxi
370         $(CHARMC) waitqd.ci
371
372 CentralLB.decl.h CentralLB.def.h : CentralLB.ci charmxi
373         $(CHARMC) CentralLB.ci
374
375 LBDatabase.decl.h LBDatabase.def.h : LBDatabase.ci charmxi
376         $(CHARMC) LBDatabase.ci
377
378 RandCentLB.decl.h RandCentLB.def.h : RandCentLB.ci charmxi
379         $(CHARMC) RandCentLB.ci
380
381 RecBisectBfLB.decl.h RecBisectBfLB.def.h : RecBisectBfLB.ci charmxi
382         $(CHARMC) RecBisectBfLB.ci
383
384 MetisLB.decl.h MetisLB.def.h : MetisLB.ci charmxi
385         $(CHARMC) MetisLB.ci
386
387 RefineLB.decl.h RefineLB.def.h : RefineLB.ci charmxi
388         $(CHARMC) RefineLB.ci
389
390 CommLB.decl.h CommLB.def.h : CommLB.ci charmxi
391         $(CHARMC) CommLB.ci
392
393 Comm1LB.decl.h Comm1LB.def.h : Comm1LB.ci charmxi
394         $(CHARMC) Comm1LB.ci
395
396 HeapCentLB.decl.h HeapCentLB.def.h : HeapCentLB.ci charmxi
397         $(CHARMC) HeapCentLB.ci
398
399 NborBaseLB.decl.h NborBaseLB.def.h : NborBaseLB.ci charmxi
400         $(CHARMC) NborBaseLB.ci
401
402 NeighborLB.decl.h NeighborLB.def.h : NeighborLB.ci charmxi
403         $(CHARMC) NeighborLB.ci
404
405 WSLB.decl.h WSLB.def.h : WSLB.ci charmxi
406         $(CHARMC) WSLB.ci
407
408 GreedyRefLB.decl.h GreedyRefLB.def.h : GreedyRefLB.ci charmxi
409         $(CHARMC) GreedyRefLB.ci
410
411 RandRefLB.decl.h RandRefLB.def.h : RandRefLB.ci charmxi
412         $(CHARMC) RandRefLB.ci
413
414 init.o: init.C $(CKHEADERS)
415         $(CHARMC) -o init.o init.C
416
417 msgalloc.o: msgalloc.C $(CKHEADERS)
418         $(CHARMC) -o msgalloc.o msgalloc.C
419
420 register.o: register.C $(CKHEADERS)
421         $(CHARMC) -o register.o register.C
422
423 ckfutures.o: ckfutures.C $(CKHEADERS)
424         $(CHARMC) -o ckfutures.o ckfutures.C
425
426 tempo.o: tempo.C $(CKHEADERS)
427         $(CHARMC) -o tempo.o tempo.C
428
429 waitqd.o: waitqd.C $(CKHEADERS)
430         $(CHARMC) -o waitqd.o waitqd.C
431
432 CkReduction.decl.h CkReduction.def.h: ckreduction.ci charmxi
433         $(CHARMC) ckreduction.ci
434
435 ckreduction.o: ckreduction.C $(CKHEADERS)
436         $(CHARMC) -o ckreduction.o ckreduction.C
437
438 CkArray.decl.h CkArray.def.h : ckarray.ci charmxi
439         $(CHARMC) ckarray.ci
440
441 ckarray.o: ckarray.C $(CKHEADERS)
442         $(CHARMC) -o ckarray.o ckarray.C
443
444 lbdb.o: lbdb.C $(CKHEADERS)
445         $(CHARMC) -o lbdb.o lbdb.C
446
447 LBDBManager.o:  LBDBManager.C $(CKHEADERS)
448         $(CHARMC) -o LBDBManager.o LBDBManager.C
449
450 LBComm.o:       LBComm.C $(CKHEADERS)
451         $(CHARMC) -o LBComm.o LBComm.C
452
453 LBObj.o: LBObj.C $(CKHEADERS)
454         $(CHARMC) -o LBObj.o LBObj.C
455
456 LBMachineUtil.o: LBMachineUtil.C $(CKHEADERS)
457         $(CHARMC) -o LBMachineUtil.o LBMachineUtil.C
458
459 LBDatabase.o: LBDatabase.C $(CKHEADERS)
460         $(CHARMC) -o LBDatabase.o LBDatabase.C
461
462 Refiner.o: Refiner.C $(CKHEADERS)
463         $(CHARMC) -o Refiner.o Refiner.C
464
465 ObjGraph.o: ObjGraph.C $(CKHEADERS)
466         $(CHARMC) -o ObjGraph.o ObjGraph.C
467
468 CentralLB.o: CentralLB.C $(CKHEADERS)
469         $(CHARMC) -o CentralLB.o CentralLB.C
470
471 RandCentLB.o: RandCentLB.C $(CKHEADERS)
472         $(CHARMC) -o RandCentLB.o RandCentLB.C
473
474 RecBisectBfLB.o: RecBisectBfLB.C $(CKHEADERS) graph.h bitvecset.h
475         $(CHARMC) -o RecBisectBfLB.o RecBisectBfLB.C
476
477 graph.o: graph.c 
478         $(CHARMC) -o graph.o graph.c
479
480 bitvecset.o: bitvecset.c bitvecset.h
481         $(CHARMC) -o bitvecset.o bitvecset.c
482
483 MetisLB.o: MetisLB.C $(CKHEADERS)
484         $(CHARMC) -o MetisLB.o MetisLB.C
485
486 RefineLB.o: RefineLB.C $(CKHEADERS)
487         $(CHARMC) -o RefineLB.o RefineLB.C
488
489 CommLB.o: CommLB.C $(CKHEADERS)
490         $(CHARMC) -o CommLB.o CommLB.C
491
492 Comm1LB.o: Comm1LB.C $(CKHEADERS)
493         $(CHARMC) -o Comm1LB.o Comm1LB.C
494
495 HeapCentLB.o: HeapCentLB.C $(CKHEADERS)
496         $(CHARMC) -o HeapCentLB.o HeapCentLB.C
497
498 Set.o: Set.C $(CKHEADERS) Set.h elements.h 
499         $(CHARMC) -o Set.o Set.C
500
501 heap.o: heap.C $(CKHEADERS) elements.h heap.h
502         $(CHARMC) -o heap.o heap.C
503
504 CommLBHeap.o: CommLBHeap.C $(CKHEADERS) CommLBHeap.h
505         $(CHARMC) -o CommLBHeap.o CommLBHeap.C
506
507 NborBaseLB.o: NborBaseLB.C $(CKHEADERS)
508         $(CHARMC) -o NborBaseLB.o NborBaseLB.C
509
510 NeighborLB.o: NeighborLB.C $(CKHEADERS)
511         $(CHARMC) -o NeighborLB.o NeighborLB.C
512
513 WSLB.o: WSLB.C $(CKHEADERS)
514         $(CHARMC) -o WSLB.o WSLB.C
515
516 GreedyRefLB.o: GreedyRefLB.C $(CKHEADERS)
517         $(CHARMC) -o GreedyRefLB.o GreedyRefLB.C
518
519 RandRefLB.o: RandRefLB.C $(CKHEADERS)
520         $(CHARMC) -o RandRefLB.o RandRefLB.C
521
522 qd.o: qd.C $(CKHEADERS)
523         $(CHARMC) -o qd.o qd.C
524
525 main.o: main.C $(CKHEADERS)
526         $(CHARMC) -o main.o main.C
527
528 debug-object.o: debug-object.h debug-object.C $(CKHEADERS)
529         $(CHARMC) -o debug-object.o debug-object.C
530
531 debug-message.o: debug-message.C $(CKHEADERS)
532         $(CHARMC) -o debug-message.o debug-message.C
533
534 info.o: info.C $(CKHEADERS)
535         $(CHARMC) -o info.o info.C
536
537 ck.o: ck.C $(CKHEADERS)
538         $(CHARMC) -o ck.o ck.C
539
540 trace-none.o : trace-none.C trace.h $(CKHEADERS)
541         $(CHARMC) -o trace-none.o trace-none.C
542
543 trace-projections.o:trace-projections.C trace-projections.h trace.h $(CKHEADERS)
544         $(CHARMC) -o trace-projections.o trace-projections.C
545
546 trace-summary.o:trace-summary.C trace-summary.h trace.h $(CKHEADERS)
547         $(CHARMC) -o trace-summary.o trace-summary.C
548
549
550 ###############################################################################
551 #
552 # BlueGene Emulator
553 #
554 ###############################################################################
555
556 BlueGene.decl.h BlueGene.def.h : BlueGene.ci charmxi
557         $(CHARMC) BlueGene.ci
558
559 libbluegene.a: BlueGene.C BlueGene.h BlueGene.decl.h BlueGene.def.h
560         $(CHARMC) -c BlueGene.C
561         $(CHARMC) -cp ../lib -o libbluegene.a BlueGene.o
562
563
564 ###############################################################################
565 #
566 # The CPM scanner
567 #
568 ###############################################################################
569
570 conv-cpm: conv-cpm.o
571         $(SEQCHARMC) -o conv-cpm -cp ../bin/ conv-cpm.o
572
573 conv-cpm.o: conv-cpm.c
574         $(SEQCHARMC) conv-cpm.c
575
576 ###############################################################################
577 #
578 # The interface translator
579 #
580 ###############################################################################
581
582 XIHEADERS=xi-symbol.h xi-util.h xi-grammar.tab.h
583 CHARMXI=xi-main.o xi-symbol.o xi-grammar.tab.o xi-scan.o xi-util.o
584
585 charmxi: $(CHARMXI)
586         $(SEQCHARMC) -language c++ -cp ../bin/ -o charmxi $(CHARMXI)
587
588 xi-main.o: xi-main.C $(XIHEADERS)
589         $(SEQCHARMC) xi-main.C
590
591 xi-symbol.o: xi-symbol.C $(XIHEADERS)
592         $(SEQCHARMC) xi-symbol.C
593
594 xi-util.o: xi-util.C $(XIHEADERS)
595         $(SEQCHARMC) xi-util.C
596
597 xi-grammar.tab.o: xi-grammar.tab.C $(XIHEADERS)
598         $(SEQCHARMC) xi-grammar.tab.C
599
600 xi-scan.o: xi-scan.C $(XIHEADERS)
601         $(SEQCHARMC) -DYY_NEVER_INTERACTIVE xi-scan.C
602
603 ###############################################################################
604 #
605 # Simple Messaging
606 #
607 ###############################################################################
608
609 libtsm.a: converse simplemsg.c simplemsg.h
610         $(CHARMC) -cp ../lib/ -o $@ simplemsg.c
611
612 libsm.a: converse sm.c sm.h
613         $(CHARMC) -cp ../lib/ -o $@ sm.c
614
615 ###############################################################################
616 #
617 # PVM
618 #
619 ###############################################################################
620
621 PVMC=pvmc_buf.o pvmc_comm.o pvmc_conv.o pvmc_main.o pvmc_pack.o pvmc_groups.o
622
623 libpvmc.a: $(PVMC)
624         $(CHARMC) -cp ../lib -o libpvmc.a $(PVMC)
625
626 pvmc_buf.o: pvmc_buf.c pvmc.h pvm3.h
627         $(CHARMC) -o $@ pvmc_buf.c
628
629 pvmc_conv.o: pvmc_conv.c pvmc.h pvm3.h
630         $(CHARMC) -o $@ pvmc_conv.c
631
632 pvmc_pack.o: pvmc_pack.c pvmc.h pvm3.h
633         $(CHARMC) -o $@ pvmc_pack.c
634
635 pvmc_comm.o: pvmc_comm.c pvmc.h pvm3.h
636         $(CHARMC) -o $@ pvmc_comm.c
637
638 pvmc_groups.o: pvmc_groups.c pvmc.h pvm3.h
639         $(CHARMC) -o $@ pvmc_groups.c
640
641 pvmc_main.o: pvmc_main.c pvmc.h pvm3.h
642         $(CHARMC) -o $@ pvmc_main.c
643
644 libampi.a: ampi.C ampi.h ampiimpl.h ampi-defmain.C \
645            ampi.decl.h ampi.def.h ampimain.decl.h \
646            ampimain.def.h
647         $(CHARMC) -DAMPI_FORTRAN=0 -c ampi.C
648         $(CHARMC) -DAMPI_FORTRAN=0 -c ampi-defmain.C
649         $(CHARMC) -cp ../lib -o libampi.a ampi.o ampi-defmain.o
650
651 libampif.a: ampi.C ampimain.C ampif.C ampimod.f90 ampi.h ampiimpl.h \
652             ampi-defmain.C ampi.decl.h ampi.def.h \
653             ampimain.decl.h ampimain.def.h
654         $(CHARMC) -DAMPI_FORTRAN=1 -c ampi.C
655         $(CHARMC) -DAMPI_FORTRAN=1 -c ampimain.C
656         $(CHARMC) -DAMPI_FORTRAN=1 -c ampif.C
657         $(CHARMC) -DAMPI_FORTRAN=1 -c ampi-defmain.C
658         $(CHARMC) -c ampimod.f90
659         $(CHARMC) -cpmod ../include ampi.M
660         $(CHARMC) -cp ../lib -o libampif.a ampimain.o ampi.o ampif.o ampimod.o ampi-defmain.o
661
662 libf90charm.a: f90main.ci f90main.h f90main.C charmf.h charmf.C futil.f90
663         $(CHARMC) f90main.ci
664         $(CHARMC) -c -DAMPI_FORTRAN=1 f90main.C
665         $(CHARMC) -c -DAMPI_FORTRAN=1 charmf.C
666         $(CHARMC) -c futil.f90
667         $(CHARMC) -cp ../lib -o libf90charm.a f90main.o charmf.o futil.o
668
669 libsdag.a: CDep.o
670         $(CHARMC) -cp ../lib -o libsdag.a CDep.o
671
672 CDep.o: CDep.C CDep.h CMsgBuffer.h CWhenTrigger.h
673         $(CHARMC) -c CDep.C
674
675 SDAGOBJ=sdag-main.o trans.o CLexer.o CParser.o CParsedFile.o CParseNode.o \
676         sdag-globals.o CParseNodeProcess.o CEntry.o
677
678 sdagx: $(SDAGOBJ)
679         $(SEQCHARMC) -cp ../bin -o sdagx -language c++ $(SDAGOBJ)
680
681 sdag-main.o: sdag-main.C CLexer.h CToken.h
682         $(SEQCHARMC) -c sdag-main.C
683
684 trans.o: trans.c EToken.h
685         $(SEQCHARMC) -c trans.c
686
687 CLexer.o: CLexer.C CLexer.h
688         $(SEQCHARMC) -c CLexer.C
689
690 CParser.o: CParser.C CParser.h
691         $(SEQCHARMC) -c CParser.C
692
693 CParsedFile.o: CParsedFile.C CParsedFile.h
694         $(SEQCHARMC) -c CParsedFile.C
695
696 CParseNode.o: CParseNode.C CParseNode.h
697         $(SEQCHARMC) -c CParseNode.C
698
699 sdag-globals.o: sdag-globals.C sdag-globals.h
700         $(SEQCHARMC) -c sdag-globals.C
701
702 CParseNodeProcess.o: CParseNodeProcess.C CParseNode.h
703         $(SEQCHARMC) -c CParseNodeProcess.C
704
705 CEntry.o: CEntry.C CEntry.h
706         $(SEQCHARMC) -c CEntry.C
707
708 ###############################################################################
709 #
710 # Make clean
711 #
712 ###############################################################################
713
714 clean:
715         rm -f charmxi conv-cpm
716         rm -f TAGS basics cmk_extras core
717         rm -f core *.a
718         rm -f core *.o
719         rm -f core #*#
720         rm -f core *~
721         if [ -d charmrun ] ; then ( cd charmrun; make clean ) ; fi
722         ( cd doc; make clean )
723         ( cd libs; make clean )
724         ( cd ../pgms; make clean )
725
726 veryclean:
727         rm -rf ../bin
728         rm -rf ../lib
729         rm -rf ../src
730         rm -rf ../pgms
731         rm -rf ../include
732         rm -rf ../doc
733         mv Makefile .Makefile
734         rm -rf [a-z]* [A-Z]*
735         mv .Makefile Makefile
736         rm -rf .[a-z]* .[A-Z]*
737
738
739 charmconfig: configure.in
740         autoconf && autoheader && /bin/mv -f configure charmconfig