Added "conv-config.sh", which wraps "conv-mach.sh" and adds default
[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 L=../lib
26
27 all: charm++ bluegene LIBS AMPI f90charm TSM SM PVM doc
28
29 charm++: converse libck.a loadbalancers charmxi
30
31 bluegene: charm++ libconv-bluegene.a METIS multicast
32
33 for-namd: charm++ pvm AMPIC
34
35 TSM: converse libtsm.a
36
37 SM: converse libsm.a
38
39 PVM: converse libpvmc.a
40
41 AMR: charm++ LIBS
42         cd libs/ck-libs/amr; make all OPTS='$(OPTS)'
43
44 FEM: charm++ CONVLIBS FEMC LIBS FEMF
45
46 FEMC: charm++ LIBS
47
48 FEMF: FEMC
49
50 MBLOCK: AMPI MBLOCKC MBLOCKF
51
52 MBLOCKC: charm++ LIBS
53
54 MBLOCKF: MBLOCKC
55
56 AMPI: charm++ CONVLIBS AMPIC AMPIF
57
58 AMPIC: charm++ LIBS
59
60 AMPIF: AMPIC
61
62 f90charm: charm++ libf90charm.a
63
64 multicast: charm++
65         cd libs/ck-libs/multicast && make
66
67 translators: charmxi conv-cpm
68
69 LIBS: CONVLIBS CHARMLIBS
70         cd libs; make otherlibs OPTS='$(OPTS)'
71
72 test-all: test
73
74 test: test-charm test-AMPI test-fem
75         @echo "--- All tests passed ---"
76
77 test-converse: converse
78         cd ../pgms ; make test-converse  OPTS='$(OPTS)'
79
80 test-charm: charm++
81         cd ../pgms ; make test-charm  OPTS='$(OPTS)'
82
83 test-AMPI: AMPI
84         cd ../pgms ; make test-AMPI  OPTS='$(OPTS)'
85
86 test-fem: FEM
87         cd ../pgms ; make test-fem  OPTS='$(OPTS)'
88
89 ps-doc: basics
90         cd ../doc ; make ps
91
92 pdf-doc: basics
93         cd ../doc ; make pdf
94
95 html-doc: basics
96         cd ../doc ; make html
97
98 doc: basics
99         cd ../doc ; make doc
100
101 CHARMC=../bin/charmc $(CHARMOPTS) $(OPTS)
102
103 SEQCHARMC=../bin/charmc -seq $(CHARMOPTS)
104
105
106 ###############################################################################
107 #
108 # The basics (bin, lib, include, headers, charmc, conv-mach.sh)
109 #
110 ###############################################################################
111
112 CVHEADERS=cpthreads.h converse.h conv-trace.h conv-random.h conv-qd.h queueing.h \
113       conv-cpath.h conv-cpm.h persistent.h\
114       trace.h charm-api.h conv-ccs.h ccs-client.c ccs-client.h CcsServer.java\
115       ccs-server.h ccs-auth.c ccs-auth.h \
116       memory-isomalloc.h debug-conv.h debug-charm.h conv-autoconfig.h \
117       conv-common.h conv-config.sh conv-config.h conv-mach.h conv-mach.sh \
118       CkMarshall.decl.h CkArray.decl.h CkLocation.decl.h CkReduction.decl.h CkArrayReductionMgr.decl.h\
119       CkFutures.decl.h LBDatabase.decl.h CentralLB.decl.h NullLB.decl.h CkCheckpoint.decl.h\
120       RandCentLB.decl.h RecBisectBfLB.decl.h BaseLB.decl.h \
121       MetisLB.decl.h DummyLB.decl.h RefineLB.decl.h OrbLB.decl.h \
122       HeapCentLB.decl.h NborBaseLB.decl.h NeighborLB.decl.h \
123       WSLB.decl.h GreedyRefLB.decl.h RandRefLB.decl.h \
124       tempo.decl.h waitqd.decl.h \
125       CommLB.decl.h Comm1LB.decl.h  \
126       charisma.decl.h \
127       TraceSummary.decl.h       \
128       BlueGene.decl.h blue.h
129
130 # The .c files are there to be #included by clients whole
131 # This is a bit unusual, but makes client linking simpler.
132 UTILHEADERS=pup.h pupf.h pup_c.h pup_stl.h pup_toNetwork4.h \
133         ckimage.h ckdll.h ckhashtable.h ckbitvector.h cklists.h \
134         ckstatistics.h ckvector3d.h conv-lists.h \
135         sockRoutines.h sockRoutines.c
136
137 CKHEADERS=ck.h ckstream.h envelope.h init.h qd.h charm.h charm++.h \
138           ckfutures.h \
139           ckcallback.h CkCallback.decl.h ckcallback-ccs.h ckarrayreductionmgr.h \
140           ckarray.h cklocation.h ckreduction.h ckcheckpoint.h\
141           readonly.h charisma.h \
142           $(UTILHEADERS) \
143           tempo.h waitqd.h LBDatabase.h lbdb.h \
144           LBDBManager.h LBComm.h LBOM.h LBObj.h LBMachineUtil.h \
145           Refiner.h ObjGraph.h heap.h elements.h CommLBHeap.h \
146           BaseLB.h CentralLB.h RandCentLB.h RecBisectBfLB.h \
147           RefineLB.h OrbLB.h HeapCentLB.h CommLB.h Comm1LB.h manager.h \
148           MetisLB.h NborBaseLB.h \
149           NeighborLB.h WSLB.h GreedyRefLB.h RandRefLB.h \
150           BlueGene.h middle.h middle-conv.h middle-blue.h \
151           $(CVHEADERS)
152
153 ALLHEADERS=$(CKHEADERS) \
154     simplemsg.h sm.h pvmc.h pvm3.h sdag.h \
155         graph.h bitvecset.h Set.h SimResults.h
156
157 basics: headers
158         touch basics
159
160 # Headers is used only for the dependencies
161 headers: dirs+sources headerlinks $(ALLHEADERS)
162
163 conv-autoconfig.h: configure
164         ./configure
165
166 headerlinks: dirs+sources Makefile $(ALLHEADERS)
167         @echo "Soft-linking headers..."
168         -@for hdr in $(ALLHEADERS) ; do test ! -f "../include/$$hdr" && ./system_ln "../tmp/$$hdr" ../include ; done
169         touch headerlinks
170
171 dirs+sources:
172         rm -f .gdir
173         (cd .. ; basename "`pwd`" | sed -e 's@-.*@@')   > .gdir
174         pwd
175         find . -type l -exec rm {} \;
176         rm -rf QuickThreads
177         rm -rf libs
178         rm -rf ../bin ; mkdir ../bin
179         rm -rf ../lib ; mkdir ../lib
180         rm -rf ../pgms
181         rm -rf ../doc ; ln -s ../doc ../doc
182         ../../src/scripts/gatherflat ../../src/scripts .
183         ./gatherflat ../../src/conv-core        .
184         ./gatherflat ../../src/conv-ldb         .
185         ./gatherflat ../../src/conv-ccs         .
186         ./gatherflat ../../src/conv-perf        .
187         ./gatherflat ../../src/ck-core          .
188         ./gatherflat ../../src/util             .
189         ./gatherflat ../../src/ck-perf          .
190         ./gatherflat ../../src/ck-ldb           .
191         ./gatherflat ../../src/langs/simplemsg  .
192         ./gatherflat ../../src/langs/pvmc       .
193         ./gatherflat ../../src/langs/bluegene   .
194         ./gatherflat ../../src/langs/f90charm   .
195         ./gatherflat ../../src/xlat-i           .
196         ./gatherflat ../../src/xlatcpm          .
197         ./gathertree ../../src/QuickThreads QuickThreads
198         ./gathertree ../../src/libs libs
199         ./gathertree ../../src/arch/util      .
200         ./gathertree ../../src/langs langs
201         ./gathertree ../../src/arch/common           .
202         ./gathertree ../../src/arch/`cat .gdir`      .
203         ./gatherflat ../../src/arch/`cat .vdir`      .
204         ./gathertree ../../pgms ../pgms
205         cat .gdir
206         cat .vdir
207         rm -f ../bin/charmc ; cp charmc ../bin/
208         chmod +x ../bin/charmc
209         rm -f .gdir
210         rm -rf ../include ; mkdir ../include
211         -./system_ln  ../tmp/conv-*.*h ../include
212         -./system_ln  ../tmp/cc-*.*h ../include
213         if [ ! -f conv-common.h ] ; then ( touch conv-common.h ) ; fi
214         touch dirs+sources
215         
216
217 ###############################################################################
218 #
219 # Converse Libraries
220 #
221 ###############################################################################
222 CLBLIBS=$(L)/libldb-rand.o $(L)/libldb-spray.o $(L)/libldb-graph.o $(L)/libldb-test.o $(L)/libldb-bluegene.o
223 TRACELIBS=$(L)/libtrace-projections.a $(L)/libtrace-summary.a $(L)/libtrace-counter.a \
224         $(L)/libtrace-projector.a $(L)/libtrace-all.a
225 MEMLIBS=$(L)/libmemory-default.o $(L)/libmemory-os.o $(L)/libmemory-gnu.o \
226    $(L)/libmemory-verbose.o $(L)/libmemory-paranoid.o $(L)/libmemory-isomalloc.o
227
228 CVLIBS=libconv-core.a \
229         libconv-cplus-n.a libconv-cplus-y.a libconv-util.a libconv-utilf.a \
230         $(CLBLIBS) $(TRACELIBS) $(MEMLIBS) \
231         libccs-client.a
232
233 LIBCONV_CORE=threads.o convcore.o conv-conds.o queueing.o msgmgr.o \
234         cpm.o cpthreads.o futures.o cldb.o random.o trace-common.o traceCore.o traceCoreCommon.o \
235         charmProjections.o converseProjections.o machineProjections.o ampiProjections.o\
236         debug-conv.o generate.o edgelist.o conv-ccs.o ccs-builtins.o \
237         quiescence.o isomalloc.o
238
239 LIBCONV_UTIL=pup_util.o pup_xlater.o pup_c.o \
240         ckimage.o ckdll.o ckhashtable.o ckbitvector.o sockRoutines.o \
241         conv-lists.o
242
243 LIBCONV_UTILF=pup_f.o
244
245 converse: basics QuickThreads/libqt.a $(CVLIBS) fmain-ok charmrun-target conv-cpm
246
247 charmrun-target: daemon-target sockRoutines.c sockRoutines.h ccs-server.c ccs-server.h
248         if [ -d charmrun ] ; then ( cd charmrun ; make OPTS='$(OPTS)' ) ; fi
249         if [ -f charmrun ] ; then ( cp charmrun ../bin ) ; fi
250
251 daemon-target: sockRoutines-seq.o
252         if test -f daemon.c ; then $(CHARMC) -seq daemon.c \
253                 sockRoutines-seq.o -o ../bin/charmd; fi
254         if test -f daemon.c ; then $(CHARMC) -DFACELESS -seq daemon.c \
255                 sockRoutines-seq.o -o ../bin/charmd_faceless; fi
256         touch daemon-target
257
258 fmain-ok: fmain.f90
259         -@$(CHARMC) -c fmain.f90
260         -@cp fmain.o ../lib
261         -@touch fmain-ok
262
263 QuickThreads/libqt.a:
264         cd QuickThreads;./configure
265         rm -f QuickThreads/libqt.a
266         cd QuickThreads ; make qt  OPTS='$(OPTS)'
267         cp QuickThreads/libqt.a ../lib/libckqt.a
268
269 METIS:
270         cd libs/conv-libs/metis; make OPTS='$(OPTS)'
271
272 CONVLIBS: converse
273         cd libs; make convlibs OPTS='$(OPTS)'
274
275 libconv-core.a: $(LIBCONV_CORE)
276         $(CHARMC) -cp ../lib/ -o $@ $(LIBCONV_CORE)
277
278 libconv-cplus-y.a: machine.c $(CVHEADERS)
279         $(CHARMC) -cp ../lib/ -o $@ -DFOR_CPLUS=1 machine.c
280
281 libconv-cplus-n.a: machine.c $(CVHEADERS)
282         $(CHARMC) -cp ../lib/ -o $@ -DFOR_CPLUS=0 machine.c
283
284 libconv-util.a: $(LIBCONV_UTIL)
285         $(CHARMC) -cp ../lib/ -o $@ $(LIBCONV_UTIL)
286
287 libconv-utilf.a: $(LIBCONV_UTILF)
288         -@$(CHARMC) -cp ../lib/ -o $@ $(LIBCONV_UTILF)
289
290 libccs-client.a: ccs-client.o
291         $(CHARMC) -cp ../lib/ -o $@ ccs-client.o
292
293 cpm.o: cpm.c $(CVHEADERS)
294         $(CHARMC) cpm.c
295
296 isomalloc.o: isomalloc.c $(CVHEADERS)
297         $(CHARMC) isomalloc.c
298
299 threads.o: threads.c $(CVHEADERS)
300         $(CHARMC) -IQuickThreads threads.c
301
302 convcore.o: convcore.c $(CVHEADERS)
303         $(CHARMC) convcore.c
304
305
306
307 conv-ccs.o: conv-ccs.c $(CVHEADERS)
308         $(CHARMC) conv-ccs.c
309
310 ccs-builtins.o: ccs-builtins.C $(CVHEADERS)
311         $(CHARMC) ccs-builtins.C
312
313 ccs-client.o: ccs-client.c
314         $(CHARMC) ccs-client.c
315
316 sockRoutines.o: sockRoutines.c $(CVHEADERS) $(UTILHEADERS)
317         $(CHARMC) -DCMK_USE_CONVERSE=1 sockRoutines.c
318
319 sockRoutines-seq.o: sockRoutines.c $(CVHEADERS) $(UTILHEADERS)
320         $(CHARMC) -seq -o sockRoutines-seq.o sockRoutines.c
321
322 random.o: random.c $(CVHEADERS)
323         $(CHARMC) random.c
324
325 queueing.o: queueing.c $(CVHEADERS)
326         $(CHARMC) queueing.c
327
328 conv-conds.o: conv-conds.c $(CVHEADERS)
329         $(CHARMC) conv-conds.c
330
331 futures.o: futures.c $(CVHEADERS)
332         $(CHARMC) futures.c
333
334 msgmgr.o: msgmgr.c $(CVHEADERS)
335         $(CHARMC) msgmgr.c
336
337 cpthreads.o: cpthreads.c $(CVHEADERS)
338         $(CHARMC) cpthreads.c
339
340 debug-conv.o: debug-conv.c $(CVHEADERS)
341         $(CHARMC) debug-conv.c
342
343 edgelist.o : edgelist.c typedefs.h $(CVHEADERS)
344         $(CHARMC) edgelist.c
345
346 generate.o : generate.c typedefs.h $(CVHEADERS)
347         $(CHARMC) generate.c
348
349 cldb.o: cldb.c cldb.h $(CVHEADERS)
350         $(CHARMC) cldb.c
351
352 quiescence.o: quiescence.c $(CVHEADERS)
353         $(CHARMC) quiescence.c
354
355 pup_util.o: pup_util.C $(UTILHEADERS)
356         $(CHARMC) -o pup_util.o pup_util.C
357
358 pup_xlater.o: pup_xlater.C $(UTILHEADERS)
359         $(CHARMC) -o pup_xlater.o pup_xlater.C
360
361 pup_c.o: pup_c.C $(UTILHEADERS)
362         $(CHARMC) -o pup_c.o pup_c.C
363
364 pup_f.o: pup_f.f90
365         -@$(CHARMC) -c pup_f.f90
366         -@$(CHARMC) -cpmod ../include pupmod.M
367
368 ckhashtable.o: ckhashtable.C ckhashtable.h
369         $(CHARMC) -o ckhashtable.o ckhashtable.C
370
371 ckbitvector.o: ckbitvector.C ckbitvector.h
372         $(CHARMC) -o ckbitvector.o ckbitvector.C
373
374 ckdll.o: ckdll.C ckdll.h
375         $(CHARMC) -o ckdll.o ckdll.C
376
377 ckimage.o: ckimage.C ckimage.h
378         $(CHARMC) -o ckimage.o ckimage.C
379
380 conv-lists.o: conv-lists.C $(UTILHEADERS)
381         $(CHARMC) -o conv-lists.o conv-lists.C
382
383 ## Converse load balancers (seed balancers, -balance)
384 $(L)/libldb-rand.o: cldb.rand.c cldb.h $(CVHEADERS)
385         $(CHARMC) -o $@ cldb.rand.c
386
387 $(L)/libldb-graph.o: cldb.graph.c graph.h $(CVHEADERS)
388         $(CHARMC) -o $@ cldb.graph.c
389
390 $(L)/libldb-spray.o: cldb.spray.c $(CVHEADERS)
391         $(CHARMC) -o $@ cldb.spray.c
392
393 $(L)/libldb-test.o: cldb.test.c $(CVHEADERS)
394         $(CHARMC) -o $@ cldb.test.c
395
396 $(L)/libldb-bluegene.o: cldb.bluegene.c $(CVHEADERS)
397         $(CHARMC) -o $@ cldb.bluegene.c
398
399 ## Memory allocation libraries (-memory)
400 MEM_DEPS=memory.c memory-gnu.c converse.h conv-mach.h
401 $(L)/libmemory-default.o: $(MEM_DEPS)
402         $(CHARMC) -o $@ -DCMK_MEMORY_BUILD_DEFAULT memory.c
403
404 $(L)/libmemory-os.o: $(MEM_DEPS)
405         $(CHARMC) -o $@ -DCMK_MEMORY_BUILD_OS memory.c
406
407 # If the system doesn't have sbrk, these compilations may fail.
408 #  This is OK, but then we can't use "-memory gnu" or friends.
409 $(L)/libmemory-gnu.o: $(MEM_DEPS)
410         -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_GNU memory.c
411
412 $(L)/libmemory-verbose.o: memory-verbose.c $(MEM_DEPS)
413         -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_VERBOSE memory.c
414
415 $(L)/libmemory-paranoid.o: memory-paranoid.c $(MEM_DEPS)
416         -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_PARANOID memory.c
417
418 $(L)/libmemory-cache.o: memory-cache.c $(MEM_DEPS)
419         -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_CACHE memory.c
420
421 $(L)/libmemory-isomalloc.o: memory-isomalloc.c $(MEM_DEPS)
422         -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_ISOMALLOC memory.c
423
424 ###############################################################################
425 #
426 # Charm Libraries
427 #
428 ###############################################################################
429
430 CK_LIBS_CORE=libck.a
431
432 LIBCK_CORE=init.o register.o qd.o ck.o main.o msgalloc.o ckfutures.o \
433            debug-message.o ckcallback.o cklocation.o ckarray.o ckreduction.o ckarrayreductionmgr.o\
434            tempo.o waitqd.o LBDatabase.o lbdb.o charisma.o ckcheckpoint.o\
435            LBDBManager.o LBComm.o LBObj.o LBMachineUtil.o \
436            BaseLB.o CentralLB.o NborBaseLB.o WSLB.o ObjGraph.o graph.o  \
437            Refiner.o bitvecset.o Set.o heap.o CommLBHeap.o NullLB.o \
438            SimResults.o
439
440 CHARMLIBS: charm++
441         cd libs; make charmlibs OPTS='$(OPTS)'
442
443 libck.a: $(LIBCK_CORE)
444         $(CHARMC) -cp ../lib/ -o $@ $(LIBCK_CORE)
445
446 CkFutures.decl.h CkFutures.def.h : ckfutures.ci charmxi
447         $(CHARMC) ckfutures.ci
448
449 tempo.decl.h tempo.def.h : tempo.ci charmxi
450         $(CHARMC) tempo.ci
451
452 waitqd.decl.h waitqd.def.h : waitqd.ci charmxi
453         $(CHARMC) waitqd.ci
454
455 LBDatabase.decl.h LBDatabase.def.h : LBDatabase.ci charmxi
456         $(CHARMC) LBDatabase.ci
457
458 NullLB.decl.h NullLB.def.h : NullLB.ci charmxi
459         $(CHARMC) NullLB.ci
460
461 BaseLB.decl.h BaseLB.def.h : BaseLB.ci charmxi
462         $(CHARMC) BaseLB.ci
463
464 TraceSummary.decl.h TraceSummary.def.h: trace-summary.ci charmxi
465         $(CHARMC) trace-summary.ci
466
467 init.o: init.C $(CKHEADERS)
468         $(CHARMC) -o init.o init.C
469
470 msgalloc.o: msgalloc.C $(CKHEADERS)
471         $(CHARMC) -o msgalloc.o msgalloc.C
472
473 register.o: register.C $(CKHEADERS)
474         $(CHARMC) -o register.o register.C
475
476 ckfutures.o: ckfutures.C $(CKHEADERS)
477         $(CHARMC) -o ckfutures.o ckfutures.C
478
479 tempo.o: tempo.C $(CKHEADERS)
480         $(CHARMC) -o tempo.o tempo.C
481
482 qd.o: qd.C $(CKHEADERS)
483         $(CHARMC) -o qd.o qd.C
484
485 main.o: main.C $(CKHEADERS)
486         $(CHARMC) -o main.o main.C
487
488 debug-message.o: debug-message.C $(CKHEADERS)
489         $(CHARMC) -I. debug-message.C
490
491 ck.o: ck.C $(CKHEADERS)
492         $(CHARMC) -o ck.o ck.C
493
494 waitqd.o: waitqd.C $(CKHEADERS)
495         $(CHARMC) -o waitqd.o waitqd.C
496
497 CkReduction.decl.h CkReduction.def.h: ckreduction.ci charmxi
498         $(CHARMC) ckreduction.ci
499
500 ckreduction.o: ckreduction.C $(CKHEADERS)
501         $(CHARMC) -o ckreduction.o ckreduction.C
502
503 CkCheckpoint.decl.h CkCheckpoint.def.h: ckcheckpoint.ci charmxi
504         $(CHARMC) ckcheckpoint.ci
505
506 ckcheckpoint.o: ckcheckpoint.C $(CKHEADERS)
507         $(CHARMC) -o ckcheckpoint.o ckcheckpoint.C
508
509 CkMarshall.decl.h CkMarshall.def.h : ckmarshall.ci charmxi
510         $(CHARMC) ckmarshall.ci
511
512 CkArrayReductionMgr.decl.h CkArrayReductionMgr.def.h : ckarrayreductionmgr.ci charmxi
513         $(CHARMC) ckarrayreductionmgr.ci
514
515 ckarrayreductionmgr.o : ckarrayreductionmgr.C $(CKHEADERS)
516         $(CHARMC) -o ckarrayreductionmgr.o ckarrayreductionmgr.C
517
518
519 CkArray.decl.h CkArray.def.h : ckarray.ci charmxi
520         $(CHARMC) ckarray.ci
521
522 ckarray.o: ckarray.C $(CKHEADERS)
523         $(CHARMC) -o ckarray.o ckarray.C
524
525
526
527 CkLocation.decl.h: cklocation.ci charmxi
528         $(CHARMC) cklocation.ci
529
530 cklocation.o: cklocation.C $(CKHEADERS)
531         $(CHARMC) -c cklocation.C
532
533 ckcallback.o: ckcallback.C $(CKHEADERS) CkCallback.decl.h
534         $(CHARMC) -c ckcallback.C
535
536 CkCallback.decl.h: ckcallback.ci charmxi
537         $(CHARMC) ckcallback.ci
538
539 charisma.decl.h charisma.def.h : charisma.ci charmxi
540         $(CHARMC) charisma.ci
541
542 charisma.o: charisma.C $(CKHEADERS)
543         $(CHARMC) -o charisma.o charisma.C
544
545 ## Charm++ Load balancer (Dynamic load balancer)
546
547 BaseLB.o: BaseLB.C $(CKHEADERS)
548         $(CHARMC) -c BaseLB.C
549
550 lbdb.o: lbdb.C $(CKHEADERS)
551         $(CHARMC) -o lbdb.o lbdb.C
552
553 LBDBManager.o:  LBDBManager.C $(CKHEADERS)
554         $(CHARMC) -o LBDBManager.o LBDBManager.C
555
556 LBComm.o:       LBComm.C $(CKHEADERS)
557         $(CHARMC) -o LBComm.o LBComm.C
558
559 LBObj.o: LBObj.C $(CKHEADERS)
560         $(CHARMC) -o LBObj.o LBObj.C
561
562 LBMachineUtil.o: LBMachineUtil.C $(CKHEADERS)
563         $(CHARMC) -o LBMachineUtil.o LBMachineUtil.C
564
565 LBDatabase.o: LBDatabase.C $(CKHEADERS)
566         $(CHARMC) -o LBDatabase.o LBDatabase.C
567
568 NullLB.o: NullLB.C $(CKHEADERS)
569         $(CHARMC) -c NullLB.C
570
571 Refiner.o: Refiner.C $(CKHEADERS)
572         $(CHARMC) -o Refiner.o Refiner.C
573
574 ObjGraph.o: ObjGraph.C $(CKHEADERS)
575         $(CHARMC) -o ObjGraph.o ObjGraph.C
576
577 graph.o: graph.c 
578         $(CHARMC) -o graph.o graph.c
579
580 bitvecset.o: bitvecset.c bitvecset.h
581         $(CHARMC) -o bitvecset.o bitvecset.c
582
583 Set.o: Set.C $(CKHEADERS) Set.h elements.h
584         $(CHARMC) -o Set.o Set.C
585
586 heap.o: heap.C $(CKHEADERS) elements.h heap.h
587         $(CHARMC) -o heap.o heap.C
588
589 CentralLB.decl.h: CentralLB.ci charmxi
590         $(CHARMC) CentralLB.ci
591
592 CentralLB.o: CentralLB.C CentralLB.decl.h $(CKHEADERS)
593         $(CHARMC) -c CentralLB.C
594
595 NborBaseLB.decl.h: NborBaseLB.ci charmxi
596         $(CHARMC) NborBaseLB.ci
597
598 NborBaseLB.o: NborBaseLB.C NborBaseLB.decl.h $(CKHEADERS)
599         $(CHARMC) -c NborBaseLB.C
600
601 CommLBHeap.o: CommLBHeap.C $(CKHEADERS)
602         $(CHARMC) -c CommLBHeap.C
603
604 SimResults.o : SimResults.h SimResults.C
605         $(CHARMC) -c SimResults.C
606
607 ## Tracing libraries (profiling, -tracemode)
608 LIBTRACE_PROJ=trace-projections.o trace-common.o 
609 $(L)/libtrace-projections.a: $(LIBTRACE_PROJ)
610         $(CHARMC) -o $@ $(LIBTRACE_PROJ)
611
612 LIBTRACE_SUMM=trace-summary.o trace-common.o
613 $(L)/libtrace-summary.a: $(LIBTRACE_SUMM)
614         $(CHARMC) -o $@ $(LIBTRACE_SUMM)
615
616 LIBTRACE_COUNT=trace-counter.o trace-common.o
617 $(L)/libtrace-counter.a: $(LIBTRACE_COUNT)
618         $(CHARMC) -o $@ $(LIBTRACE_COUNT)
619
620 LIBTRACE_ALL=trace-all.o trace-projections.o trace-summary.o trace-common.o trace-projector.o traceCore.o traceCoreCommon.o charmProjections.o converseProjections.o machineProjections.o ampiProjections.o
621 $(L)/libtrace-all.a: $(LIBTRACE_ALL)
622         $(CHARMC) -o $@ $(LIBTRACE_ALL)
623         
624 LIBTRACE_PROJECTOR=trace-projector.o trace-common.o traceCore.o traceCoreCommon.o charmProjections.o converseProjections.o machineProjections.o ampiProjections.o
625 $(L)/libtrace-projector.a: $(LIBTRACE_PROJECTOR)
626         $(CHARMC) -o  $@ $(LIBTRACE_PROJECTOR)
627         
628 trace-common.o: trace-common.C $(CKHEADERS)
629         $(CHARMC) trace-common.C
630
631 trace-projections.o: trace-projections.C trace-projections.h trace-common.h  $(CKHEADERS)
632         $(CHARMC) -o trace-projections.o trace-projections.C
633
634 trace-projector.o: trace-projector.C trace-projector.h $(CKHEADERS) 
635         $(CHARMC) -o trace-projector.o trace-projector.C
636         
637 trace-summary.o:trace-summary.C trace-summary.h trace-common.h trace-summaryBOC.h $(CKHEADERS)
638         $(CHARMC) -o trace-summary.o trace-summary.C
639
640 trace-counter.o:trace-counter.C trace-counter.h trace-common.h $(CKHEADERS)
641         $(CHARMC) -o trace-counter.o trace-counter.C
642
643 traceCore.o: traceCore.C $(CVHEADERS)
644         $(CHARMC) traceCore.C
645
646 traceCoreCommon.o: traceCoreCommon.C $(CVHEADERS)
647         $(CHARMC) traceCoreCommon.C
648
649 charmProjections.o: charmProjections.C $(CVHEADERS)
650         $(CHARMC) charmProjections.C
651         
652 ampiProjections.o: ampiProjections.C $(CVHEADERS)
653         $(CHARMC) ampiProjections.C
654
655 converseProjections.o: converseProjections.C $(CVHEADERS)
656         $(CHARMC) converseProjections.C
657
658 machineProjections.o: machineProjections.C $(CVHEADERS)
659         $(CHARMC) machineProjections.C
660
661
662
663 trace-all.o:trace-all.C 
664         $(CHARMC) -o trace-all.o trace-all.C
665
666 ###############################################################################
667 #
668 # Dynamic Load Balancers
669 #
670 ###############################################################################
671
672 # Automatically generated by script Makefile_lb.sh
673 #  on Sun Feb 16 13:16:07 EST 2003
674 LOADBALANCERS=\
675    $(L)/libmoduleDummyLB.a \
676    $(L)/libmoduleRandCentLB.a \
677    $(L)/libmoduleRecBisectBfLB.a \
678    $(L)/libmoduleMetisLB.a \
679    $(L)/libmoduleRefineLB.a \
680    $(L)/libmoduleCommLB.a \
681    $(L)/libmoduleComm1LB.a \
682    $(L)/libmoduleHeapCentLB.a \
683    $(L)/libmoduleNeighborLB.a \
684    $(L)/libmoduleGreedyRefLB.a \
685    $(L)/libmoduleOrbLB.a \
686    $(L)/libmoduleRandRefLB.a \
687    $(L)/libmoduleWSLB.a \
688    manager.o
689
690 manager.o: manager.C manager.h
691         $(CHARMC) -c manager.C
692
693 DummyLB.decl.h: DummyLB.ci charmxi
694         $(CHARMC) DummyLB.ci
695
696 DummyLB.o: DummyLB.C DummyLB.decl.h $(CKHEADERS)
697         $(CHARMC) -c DummyLB.C
698
699 $(L)/libmoduleDummyLB.a: DummyLB.o 
700         $(CHARMC) -o $(L)/libmoduleDummyLB.a DummyLB.o 
701         
702
703 RandCentLB.decl.h: RandCentLB.ci charmxi
704         $(CHARMC) RandCentLB.ci
705
706 RandCentLB.o: RandCentLB.C RandCentLB.decl.h $(CKHEADERS)
707         $(CHARMC) -c RandCentLB.C
708
709 $(L)/libmoduleRandCentLB.a: RandCentLB.o 
710         $(CHARMC) -o $(L)/libmoduleRandCentLB.a RandCentLB.o 
711         
712
713 RecBisectBfLB.decl.h: RecBisectBfLB.ci charmxi
714         $(CHARMC) RecBisectBfLB.ci
715
716 RecBisectBfLB.o: RecBisectBfLB.C RecBisectBfLB.decl.h $(CKHEADERS)
717         $(CHARMC) -c RecBisectBfLB.C
718
719 $(L)/libmoduleRecBisectBfLB.a: RecBisectBfLB.o 
720         $(CHARMC) -o $(L)/libmoduleRecBisectBfLB.a RecBisectBfLB.o 
721         
722
723 MetisLB.decl.h: MetisLB.ci charmxi
724         $(CHARMC) MetisLB.ci
725
726 MetisLB.o: MetisLB.C MetisLB.decl.h $(CKHEADERS)
727         $(CHARMC) -c MetisLB.C
728
729 $(L)/libmoduleMetisLB.a: MetisLB.o 
730         $(CHARMC) -o $(L)/libmoduleMetisLB.a MetisLB.o 
731         cp libmoduleMetisLB.dep $(L)/
732
733 RefineLB.decl.h: RefineLB.ci charmxi
734         $(CHARMC) RefineLB.ci
735
736 RefineLB.o: RefineLB.C RefineLB.decl.h $(CKHEADERS)
737         $(CHARMC) -c RefineLB.C
738
739 $(L)/libmoduleRefineLB.a: RefineLB.o 
740         $(CHARMC) -o $(L)/libmoduleRefineLB.a RefineLB.o 
741         
742 CommLB.decl.h: CommLB.ci charmxi
743         $(CHARMC) CommLB.ci
744
745 CommLB.o: CommLB.C CommLB.decl.h manager.h $(CKHEADERS)
746         $(CHARMC) -c CommLB.C 
747
748 $(L)/libmoduleCommLB.a: CommLB.o manager.o
749         $(CHARMC) -o $(L)/libmoduleCommLB.a CommLB.o manager.o
750         
751
752 Comm1LB.decl.h: Comm1LB.ci charmxi
753         $(CHARMC) Comm1LB.ci
754
755 Comm1LB.o: Comm1LB.C Comm1LB.decl.h $(CKHEADERS)
756         $(CHARMC) -c Comm1LB.C
757
758 $(L)/libmoduleComm1LB.a: Comm1LB.o 
759         $(CHARMC) -o $(L)/libmoduleComm1LB.a Comm1LB.o 
760         
761
762 HeapCentLB.decl.h: HeapCentLB.ci charmxi
763         $(CHARMC) HeapCentLB.ci
764
765 HeapCentLB.o: HeapCentLB.C HeapCentLB.decl.h $(CKHEADERS)
766         $(CHARMC) -c HeapCentLB.C
767
768 $(L)/libmoduleHeapCentLB.a: HeapCentLB.o 
769         $(CHARMC) -o $(L)/libmoduleHeapCentLB.a HeapCentLB.o 
770         
771
772 NeighborLB.decl.h: NeighborLB.ci charmxi
773         $(CHARMC) NeighborLB.ci
774
775 NeighborLB.o: NeighborLB.C NeighborLB.decl.h $(CKHEADERS)
776         $(CHARMC) -c NeighborLB.C
777
778 $(L)/libmoduleNeighborLB.a: NeighborLB.o 
779         $(CHARMC) -o $(L)/libmoduleNeighborLB.a NeighborLB.o 
780         
781
782 GreedyRefLB.decl.h: GreedyRefLB.ci charmxi
783         $(CHARMC) GreedyRefLB.ci
784
785 GreedyRefLB.o: GreedyRefLB.C GreedyRefLB.decl.h $(CKHEADERS)
786         $(CHARMC) -c GreedyRefLB.C
787
788 $(L)/libmoduleGreedyRefLB.a: GreedyRefLB.o 
789         $(CHARMC) -o $(L)/libmoduleGreedyRefLB.a GreedyRefLB.o 
790         
791
792 OrbLB.decl.h: OrbLB.ci charmxi
793         $(CHARMC) OrbLB.ci
794
795 OrbLB.o: OrbLB.C OrbLB.decl.h $(CKHEADERS)
796         $(CHARMC) -c OrbLB.C
797
798 $(L)/libmoduleOrbLB.a: OrbLB.o 
799         $(CHARMC) -o $(L)/libmoduleOrbLB.a OrbLB.o 
800         
801
802 RandRefLB.decl.h: RandRefLB.ci charmxi
803         $(CHARMC) RandRefLB.ci
804
805 RandRefLB.o: RandRefLB.C RandRefLB.decl.h $(CKHEADERS)
806         $(CHARMC) -c RandRefLB.C
807
808 $(L)/libmoduleRandRefLB.a: RandRefLB.o 
809         $(CHARMC) -o $(L)/libmoduleRandRefLB.a RandRefLB.o 
810         
811
812 WSLB.decl.h: WSLB.ci charmxi
813         $(CHARMC) WSLB.ci
814
815 WSLB.o: WSLB.C WSLB.decl.h $(CKHEADERS)
816         $(CHARMC) -c WSLB.C
817
818 $(L)/libmoduleWSLB.a: WSLB.o 
819         $(CHARMC) -o $(L)/libmoduleWSLB.a WSLB.o 
820         
821
822 LB_OBJ=EveryLB.o \
823     DummyLB.o \
824     RandCentLB.o \
825     RecBisectBfLB.o \
826     MetisLB.o \
827     RefineLB.o \
828     CommLB.o \
829     Comm1LB.o \
830     HeapCentLB.o \
831     NeighborLB.o \
832     GreedyRefLB.o \
833     OrbLB.o \
834     RandRefLB.o \
835     WSLB.o \
836     manager.o
837
838 EveryLB.o: EveryLB.C EveryLB.decl.h
839         $(CHARMC) -c EveryLB.C
840
841 EveryLB.decl.h: EveryLB.ci
842         $(CHARMC) EveryLB.ci
843
844 $(L)/libmoduleEveryLB.a: $(LB_OBJ)
845         $(CHARMC) -o $(L)/libmoduleEveryLB.a $(LB_OBJ)
846         cp libmoduleEveryLB.dep $(L)/
847 # end of from script Makefile_lb.sh
848 loadbalancers: $(LOADBALANCERS) $(L)/libmoduleEveryLB.a
849
850 ###############################################################################
851 #
852 # BlueGene Emulator
853 #
854 ###############################################################################
855
856 # old (Charm++) Blue Gene emulator
857 BlueGene.decl.h BlueGene.def.h : BlueGene.ci charmxi
858         $(CHARMC) BlueGene.ci
859
860 libbluegene.a: BlueGene.C BlueGene.h BlueGene.decl.h BlueGene.def.h
861         $(CHARMC) -c BlueGene.C
862         $(CHARMC) -cp ../lib -o libbluegene.a BlueGene.o
863
864 # (Converse) Blue Gene emulator
865 blue.o:  blue_impl.h blue_timing.h blue.C $(CVHEADERS)
866         $(CHARMC) -c blue.C
867
868 blue_timing.o:  blue_impl.h blue_timing.C blue_timing.h $(CVHEADERS)
869         $(CHARMC) -c blue_timing.C
870
871 libconv-bluegene.a:   blue.o blue_timing.o
872         $(CHARMC) -cp ../lib -o libconv-bluegene.a blue.o blue_timing.o
873
874 ###############################################################################
875 #
876 # The CPM scanner
877 #
878 ###############################################################################
879
880 conv-cpm: conv-cpm.o
881         $(SEQCHARMC) -o conv-cpm -cp ../bin/ conv-cpm.o
882
883 conv-cpm.o: conv-cpm.c
884         $(SEQCHARMC) conv-cpm.c
885
886 ###############################################################################
887 #
888 # The interface translator
889 #
890 ###############################################################################
891
892 XIHEADERS=xi-symbol.h xi-util.h xi-grammar.tab.h
893 CHARMXI=xi-main.o xi-symbol.o xi-grammar.tab.o xi-scan.o xi-util.o
894 SDAGOBJ=sdag-main.o sdag-trans.o CLexer.o CParser.o CParsedFile.o CParseNode.o \
895         sdag-globals.o CParseNodeProcess.o CEntry.o COverlap.o
896 SDAGHEADERS=CLexer.h CToken.h EToken.h CParser.h CParsedFile.h CParseNode.h \
897         sdag-globals.h CEntry.h COverlap.h
898
899 charmxi: $(CHARMXI) $(SDAGOBJ)
900         $(SEQCHARMC) -language c++ -cp ../bin/ -o charmxi $(CHARMXI) $(SDAGOBJ)
901
902 xi-main.o: xi-main.C $(XIHEADERS) $(SDAGHEADERS)
903         $(SEQCHARMC) xi-main.C
904
905 xi-symbol.o: xi-symbol.C $(XIHEADERS) $(SDAGHEADERS)
906         $(SEQCHARMC) xi-symbol.C
907
908 xi-util.o: xi-util.C $(XIHEADERS) $(SDAGHEADERS)
909         $(SEQCHARMC) xi-util.C
910
911 xi-grammar.tab.o: xi-grammar.tab.C $(XIHEADERS) $(SDAGHEADERS)
912         $(SEQCHARMC) xi-grammar.tab.C
913
914 xi-scan.o: xi-scan.C $(XIHEADERS) $(SDAGHEADERS)
915         $(SEQCHARMC) -I. -DYY_NEVER_INTERACTIVE xi-scan.C
916
917 sdag-main.o: sdag-main.C $(XIHEADERS) $(SDAGHEADERS)
918         $(SEQCHARMC) -c sdag-main.C
919
920 sdag-trans.o: sdag-trans.c $(XIHEADERS) $(SDAGHEADERS)
921         $(SEQCHARMC) -I. -c sdag-trans.c
922
923 CLexer.o: CLexer.C $(XIHEADERS) $(SDAGHEADERS)
924         $(SEQCHARMC) -c CLexer.C
925
926 CParser.o: CParser.C $(XIHEADERS) $(SDAGHEADERS)
927         $(SEQCHARMC) -c CParser.C
928
929 CParsedFile.o: CParsedFile.C $(XIHEADERS) $(SDAGHEADERS)
930         $(SEQCHARMC) -c CParsedFile.C
931
932 CParseNode.o: CParseNode.C $(XIHEADERS) $(SDAGHEADERS)
933         $(SEQCHARMC) -c CParseNode.C
934
935 sdag-globals.o: sdag-globals.C $(XIHEADERS) $(SDAGHEADERS)
936         $(SEQCHARMC) -c sdag-globals.C
937
938 CParseNodeProcess.o: CParseNodeProcess.C $(XIHEADERS) $(SDAGHEADERS)
939         $(SEQCHARMC) -c CParseNodeProcess.C
940
941 CEntry.o: CEntry.C $(XIHEADERS) $(SDAGHEADERS)
942         $(SEQCHARMC) -c CEntry.C
943
944 COverlap.o: COverlap.C $(XIHEADERS) $(SDAGHEADERS)
945         $(SEQCHARMC) -c COverlap.C
946
947 ###############################################################################
948 #
949 # Simple Messaging
950 #
951 ###############################################################################
952
953 libtsm.a: converse simplemsg.c simplemsg.h
954         $(CHARMC) -cp ../lib/ -o $@ simplemsg.c
955
956 libsm.a: converse sm.c sm.h
957         $(CHARMC) -cp ../lib/ -o $@ sm.c
958
959 ###############################################################################
960 #
961 # PVM
962 #
963 ###############################################################################
964
965 PVMC=pvmc_buf.o pvmc_comm.o pvmc_conv.o pvmc_main.o pvmc_pack.o pvmc_groups.o
966
967 libpvmc.a: $(PVMC)
968         $(CHARMC) -cp ../lib -o libpvmc.a $(PVMC)
969
970 pvmc_buf.o: pvmc_buf.c pvmc.h pvm3.h
971         $(CHARMC) -o $@ pvmc_buf.c
972
973 pvmc_conv.o: pvmc_conv.c pvmc.h pvm3.h
974         $(CHARMC) -o $@ pvmc_conv.c
975
976 pvmc_pack.o: pvmc_pack.c pvmc.h pvm3.h
977         $(CHARMC) -o $@ pvmc_pack.c
978
979 pvmc_comm.o: pvmc_comm.c pvmc.h pvm3.h
980         $(CHARMC) -o $@ pvmc_comm.c
981
982 pvmc_groups.o: pvmc_groups.c pvmc.h pvm3.h
983         $(CHARMC) -o $@ pvmc_groups.c
984
985 pvmc_main.o: pvmc_main.c pvmc.h pvm3.h
986         $(CHARMC) -o $@ pvmc_main.c
987
988 libf90charm.a: f90main.ci f90main.h f90main.C charmf.h charmf.C futil.f90
989         $(CHARMC) f90main.ci
990         $(CHARMC) -c -DAMPI_FORTRAN=1 f90main.C
991         $(CHARMC) -c -DAMPI_FORTRAN=1 charmf.C
992         -$(CHARMC) -c futil.f90
993         -$(CHARMC) -cp ../lib -o libf90charm.a f90main.o charmf.o futil.o
994
995 ###############################################################################
996 #
997 # Make clean
998 #
999 ###############################################################################
1000
1001 clean:
1002         rm -f conv-autoconfig.h config.cache
1003         rm -f QuickThreads/libqt.a
1004         rm -f charmxi conv-cpm
1005         rm -f TAGS basics cmk_extras core
1006         rm -f core *.a
1007         rm -f core *.o
1008         rm -f core #*#
1009         rm -f core *~
1010         if [ -d charmrun ] ; then ( cd charmrun; make clean ) ; fi
1011         -( cd doc && make clean )
1012         ( cd libs; make clean )
1013         ( cd ../pgms; make clean )
1014
1015 veryclean:
1016         rm -rf ../bin
1017         rm -rf ../lib
1018         rm -rf ../src
1019         rm -rf ../pgms
1020         rm -rf ../include
1021         rm -rf ../doc
1022         mv Makefile .Makefile
1023         rm -rf [a-z]* [A-Z]*
1024         mv .Makefile Makefile
1025         rm -rf .[a-z]* .[A-Z]*
1026
1027
1028 configure: configure.in
1029         autoconf && autoheader