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