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