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