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