doc: Add serial to list of ci file reserved words
[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++ bigsim LIBS AMPI f90charm TSM SM PVM doc
29
30 all-test: bigsim AMPI
31         cd ../tests ; $(MAKE) all OPTS='$(OPTS)'
32         cd ../examples ; $(MAKE) all OPTS='$(OPTS)'
33
34 charm++: charm-target
35         @echo "$(OPTS)" > OPTS
36         touch charm++
37
38 bgampi: bigsim AMPI
39
40 TSM: converse $(L)/libtsm.a
41
42 SM: converse $(L)/libsm.a
43
44 PVM: converse $(L)/libpvmc.a
45
46 AMR: charm++ LIBS
47         cd libs/ck-libs/amr; make all OPTS='$(OPTS)'
48
49 FEM: charm++ LIBS
50 FEMC: FEM
51 FEMF: FEM
52 ParFUM: FEM
53
54 MBLOCK: AMPI MBLOCKC MBLOCKF
55
56 MBLOCKC: charm++ LIBS
57
58 MBLOCKF: MBLOCKC
59
60 AMPI:  charm++ LIBS
61 AMPIC AMPIF: AMPI
62
63 ARMCI: charm++ LIBS
64
65
66 f90charm: charm++ $(L)/libf90charm.a
67
68 default_libs: completion NDMeshStreamer multicast pythonCCS mpi-main
69
70 ChaNGa: charm++ cache liveViz
71
72 cache: charm++
73         cd libs/ck-libs/cache && $(MAKE)
74
75 liveViz: charm++
76         cd libs/ck-libs/liveViz && $(MAKE)
77
78 multicast: charmxi
79         cd libs/ck-libs/multicast && $(MAKE)
80
81 pythonCCS: charmxi
82         cd libs/ck-libs/pythonCCS && $(MAKE)
83
84 completion: charmxi
85         cd libs/ck-libs/completion && $(MAKE)
86
87 NDMeshStreamer: charm++ completion
88         cd libs/ck-libs/NDMeshStreamer && $(MAKE)
89
90 mpi-main: mpi-mainmodule.o
91         cp mpi-mainmodule.o ../lib
92
93 translators: charmxi conv-cpm
94
95 pose:  charm++
96         cd libs/ck-libs/pose && $(MAKE)
97
98 msa: charm++
99         cd libs/ck-libs/multiphaseSharedArrays && $(MAKE)
100
101 jade: charm++ msa
102 #       make the lib, include
103         cd langs/jade && $(MAKE)
104
105 fftlib: charm++
106         cd libs/ck-libs/fftlib && $(MAKE)
107
108 # This should be done offline, since the user does not need to compile
109 # parser files, etc.  All they need is the libjade + include files,
110 # antlr.jar, jade.jar, and a few scripts which the jade target takes
111 # care of.
112 #jadeall: jade
113 #       make parser.g -> .java files
114 #       cd langs/jade && $(MAKE) p
115 #       make the jade.jar file
116 #       cd ../java/charm/jade && $(MAKE)
117
118 #include TAU defs
119 TAU_MAKEFILE=Make.tau
120 include $(TAU_MAKEFILE) #stub-makefile
121
122 #builds TAU's trace library
123 Tau: 
124         echo "buliding charm trace library with support for TAU."
125         $(MAKE) $(L)/libtrace-Tau.a $(L)/libtrace-all.a TAU_TRACE_OBJ=libtrace-Tau.o
126
127 LIBS: CONVLIBS CHARMLIBS
128         cd libs; $(MAKE) otherlibs
129         echo "Built LIBS Successfully"
130
131 bgtest: bigsim AMPI
132         cd ../tests ; $(MAKE) bgtest OPTS='$(OPTS)'
133         cd ../examples ; $(MAKE) bgtest OPTS='$(OPTS)'
134
135 syncfttest causalfttest: charm++ AMPI
136         cd ../tests ; $(MAKE) $@ OPTS='$(OPTS)'
137
138 test: bigsim AMPI
139         cd ../tests ; $(MAKE) test OPTS='$(OPTS)'
140         cd ../examples ; $(MAKE) test OPTS='$(OPTS)'
141
142 test-converse: converse
143         cd ../tests ; $(MAKE) test-converse  OPTS='$(OPTS)'
144
145 test-charm: charm++ METIS
146         cd ../tests ; $(MAKE) test-charm  OPTS='$(OPTS)'
147
148 test-AMPI: AMPI
149         cd ../tests ; $(MAKE) test-AMPI  OPTS='$(OPTS)'
150
151 test-fem: FEM
152         cd ../tests ; $(MAKE) test-fem  OPTS='$(OPTS)'
153
154 ps-doc: basics
155         cd ../doc ; make ps
156
157 pdf-doc: basics
158         cd ../doc ; make pdf
159
160 html-doc: basics
161         cd ../doc ; make html
162
163 doc: basics
164         cd ../doc ; make doc
165
166 CHARMC=../bin/charmc $(CHARMOPTS) $(OPTS)
167
168 SEQCHARMC=../bin/charmc -seq $(CHARMOPTS)
169
170 NATIVECHARMC=../bin/charmc -host $(CHARMOPTS)
171
172 CHARMXI=../bin/charmc -intrinsic $(OPTS)
173
174 CIDEPENDFILE = Make.cidepends
175 DEPENDFILE = Make.depends
176
177 include $(CIDEPENDFILE)
178 include $(DEPENDFILE)
179
180 CIFILES = $(wildcard *.ci)
181
182 %.ci.stamp: %.ci ../bin/charmxi
183         $(CHARMXI) $< && touch $@
184
185 # Automatically generated by script Makefile_lb.sh
186 include Make.lb
187
188 # Build changes for external libraries
189 include Make.extlib
190
191 ###############################################################################
192 #
193 # The basics (bin, lib, include, headers, charmc, conv-mach.sh)
194 #
195 ###############################################################################
196
197 CVHEADERS=cpthreads.h converse.h conv-trace.h conv-random.h conv-qd.h \
198       queueing.h conv-cpath.h conv-cpm.h persistent.h\
199       trace.h trace-common.h trace-bluegene.h trace-projections.h  \
200       trace-simple.h trace-controlPoints.h charm-api.h \
201       conv-ccs.h ccs-client.c ccs-client.h \
202       ccs-server.h ccs-auth.c ccs-auth.h \
203       memory-isomalloc.h debug-conv.h debug-conv++.h conv-autoconfig.h \
204       conv-common.h conv-config.sh conv-config.h conv-mach.h conv-mach.sh \
205       blue.h blue-conv.h bgconverse.h cmipool.h mempool.h \
206       cmidirect.h cmidirectmanytomany.h
207
208 CONVCOMHEADERS= 3dgridrouter.h hypercuberouter.h hypercubetopology.h    \
209         routerstrategy.h convcomlibstrategy.h  convcomlib.h dummyconversestrategy.h  treerouter.h \
210         convcomlibmanager.h graphrouter.h petable.h gridrouter.h router.h \
211         prefixrouter.h pipebroadcastconverse.h pipelinestrategy.h
212
213 # The .c files are there to be #included by clients whole
214 # This is a bit unusual, but makes client linking simpler.
215 UTILHEADERS=pup.h pupf.h pup_c.h pup_stl.h pup_mpi.h pup_toNetwork.h pup_toNetwork4.h pup_paged.h pup_cmialloc.h\
216         ckimage.h ckdll.h ckhashtable.h ckbitvector.h cklists.h ckliststring.h \
217         cksequence.h ckstatistics.h ckvector3d.h conv-lists.h RTH.h ckcomplex.h \
218         sockRoutines.h sockRoutines.c ckpool.h BGLTorus.h BGPTorus.h BGQTorus.h \
219         TopoManager.h XT3Torus.h XTTorus.h cmimemcpy.h simd.h SSE-Double.h SSE-Float.h crc32.h
220
221 CKHEADERS=ck.h ckstream.h envelope.h init.h qd.h charm.h charm++.h \
222           ckfutures.h ckIgetControl.h cktiming.h debug-charm.h\
223           ckcallback.h CkCallback.decl.h ckcallback-ccs.h       \
224           ckarrayreductionmgr.h cksection.h \
225           ckarrayindex.h ckarray.h cklocation.h ckreduction.h \
226           ckcheckpoint.h ckmemcheckpoint.h ckevacuation.h\
227           ckmessagelogging.h ckcausalmlog.h ckobjid.h\
228           ckobjQ.h readonly.h charisma.h \
229           comlib.h ComlibArrayListener.h ComlibStrategy.h \
230           ComlibLearner.h $(UTILHEADERS) \
231           tempo.h waitqd.h LBDatabase.h MetaBalancer.h lbdb.h lbdb++.h LBProfit.h $(LBHEADERS) \
232           LBDBManager.h LBComm.h LBOM.h LBObj.h LBMachineUtil.h LBAgent.h \
233           Refiner.h RefinerApprox.h RefinerComm.h ckgraph.h ckheap.h \
234           elements.h CommLBHeap.h topology.h manager.h \
235           BaseLB.h CentralLB.h CentralLBMsg.h \
236           NborBaseLB.h HybridBaseLB.h HybridLBMsg.h \
237           NeighborLBMsg.h \
238           BlueGene.h middle.h middle-conv.h middle-blue.h \
239           CkMarshall.decl.h CkArray.decl.h CkLocation.decl.h    \
240           CkReduction.decl.h CkArrayReductionMgr.decl.h\
241           tempo.decl.h waitqd.decl.h \
242           CkFutures.decl.h CkCheckpoint.decl.h CkMemCheckpoint.decl.h \
243           LBDatabase.decl.h MetaBalancer.decl.h CentralLB.decl.h NullLB.decl.h \
244           BaseLB.decl.h \
245           NborBaseLB.decl.h \
246           HybridBaseLB.decl.h EveryLB.decl.h CommonLBs.decl.h \
247           charisma.decl.h TraceSummary.decl.h TraceProjections.decl.h \
248           TraceSimple.decl.h TraceControlPoints.decl.h TraceTau.decl.h \
249           TraceUtilization.decl.h BlueGene.decl.h \
250           comlib.decl.h ComlibManager.h DummyStrategy.h \
251           MulticastStrategy.h DirectMulticastStrategy.h RingMulticastStrategy.h \
252           ChunkMulticastStrategy.h OneTimeMulticastStrategy.h MultiRingMulticast.h \
253           EachToManyMulticastStrategy.h MsgPacker.h StreamingStrategy.h \
254           NodeMulticast.h PipeBroadcastStrategy.h MeshStreamingStrategy.h \
255           PrioStreaming.h MPIStrategy.h MsgPacker.h StreamingStrategy.h \
256           BroadcastStrategy.h ComlibSectionInfo.h AAPLearner.h \
257           AAMLearner.h ComlibStats.h \
258           RectMulticastStrategy.h ckdirect.h \
259           ControlPoints.decl.h PathHistory.decl.h \
260           pathHistory.h envelope-path.h \
261           controlPoints.h controlPointsf.h arrayRedistributor.h cp_effects.h register.h stats.h   \
262           cksequence_internal.h cksequence_factory.h random_sequence.h strided_sequence.h \
263                 mpi-interoperate.h \
264           $(CVHEADERS) $(CONVCOMHEADERS)
265
266 ALLHEADERS=$(CKHEADERS) \
267     simplemsg.h sm.h pvmc.h pvm3.h sdag.h vector2d.h \
268         graph.h bitvecset.h ckset.h LBSimulation.h  \
269         $(BLUE_HEADERS)
270
271 basics: headers
272         touch basics
273
274 # Headers is used only for the dependencies
275 headers: dirs+sources
276         $(MAKE) charmxi
277         $(MAKE) headerlinks
278
279 conv-autoconfig.h: configure config_opts.sh
280         @. ./config_opts.sh; echo ./configure $(QUIET) $$CONFIG_OPTS;  \
281         ./configure $(QUIET) $$CONFIG_OPTS && touch conv-autoconfig.h
282
283 .PHONY: clean veryclean VERSION.new
284
285 VERSION: VERSION.new
286         ./commitid.sh
287
288 commitid.c: VERSION
289         echo "const char * const CmiCommitID = \"`cat VERSION`\";" > $@
290 commitid.o: CC=$(CHARMC)
291
292 headerlinks: dirs+sources Makefile $(ALLHEADERS)
293         @[ "x$QUIET" = "x--quiet" ] || echo "Soft-linking headers..."
294         -for hdr in $(ALLHEADERS) ; do test ! -f "../include/$$hdr" && ./system_ln "../tmp/$$hdr" ../include ; done
295         touch headerlinks
296
297 dirs+sources:
298 #       rm -f .gdir
299 #       (cd .. ; basename "`pwd`" | sed -e 's@-.*@@')   > .gdir
300         pwd
301         find . -type l -exec rm {} \;
302         rm -rf QuickThreads
303         rm -rf libs
304         rm -rf ../bin ; mkdir ../bin
305         rm -rf ../lib ; mkdir ../lib
306         rm -rf ../lib_so ; mkdir ../lib_so; touch ../lib_so/.charmso
307         rm -rf ../examples
308         rm -rf ../tests
309         rm -rf ../doc ; ln -s ../doc ../doc
310         ../../src/scripts/gatherflat ../../src/scripts .
311         ./gatherflat ../../src/conv-core        .
312         ./gatherflat ../../src/conv-ldb         .
313         ./gatherflat ../../src/conv-ccs         .
314         ./gatherflat ../../src/conv-perf        .
315         ./gatherflat ../../src/ck-core          .
316         ./gatherflat ../../src/util             .
317         ./gatherflat ../../src/ck-perf          .
318         ./gatherflat ../../src/ck-ldb           .
319         ./gatherflat ../../src/ck-com           .
320         ./gatherflat ../../src/ck-cp           .
321         ./gatherflat ../../src/conv-com           .
322         ./gatherflat ../../src/langs/simplemsg  .
323         ./gatherflat ../../src/langs/pvmc       .
324         ./gatherflat ../../src/langs/bluegene   .
325         ./gatherflat ../../src/langs/f90charm   .
326         ./gatherflat ../../src/xlat-i           .
327         ./gatherflat ../../src/xlatcpm          .
328         ./gathertree ../../src/QuickThreads QuickThreads
329         ./gathertree ../../src/libs libs
330         ./gathertree ../../src/arch/util      .
331         ./gathertree ../../src/langs langs
332         ./gathertree ../../src/langs/jade langs/jade
333         ./gathertree ../../src/arch/common           .
334         ./gathertree ../../src/arch/`cat .gdir`      .
335         test -f ../../src/arch/`cat .gdir`/gdir_link && cat ../../src/arch/`cat .gdir`/gdir_link > .gdir.new && ./gathertree ../../src/arch/`cat .gdir.new`      . || true
336         ./gatherflat ../../src/arch/`cat .vdir`      .
337         ./gathertree ../../examples ../examples
338         ./gathertree ../../tests ../tests
339         rm -f ../bin/dep.pl ; cp dep.pl ../bin/
340         chmod +x charmc
341         -./system_ln  ../tmp/charmc ../bin/
342 #       -ln -s ../../java/bin charmjavabin
343 #       -ln -s ../../java/bin ../bin/charmjavabin
344 #       -ln -s charmjavabin/* ../bin/
345 #       -ln -s ../java ..
346 #       rm -f .gdir
347         rm -rf ../include ; mkdir ../include
348         -./system_ln  ../tmp/conv-*.*h ../include
349         -./system_ln  ../tmp/cc-*.*h ../include
350         -./system_ln  ../tmp/conv-mach-opt.sh ../include
351         if [ -x ./special.sh ] ; then ./special.sh ; fi
352         if [ ! -f conv-common.h ] ; then ( touch conv-common.h ) ; fi
353         touch dirs+sources
354
355 ###############################################################################
356 #
357 # Converse Libraries
358
359 ###############################################################################
360 CLBLIBS=$(L)/libldb-rand.o $(L)/libldb-spray.o   $(L)/libldb-workstealing.o  $(L)/libldb-neighbor.o $(L)/libldb-none.o $(L)/libldb-test.o $(L)/libldb-bluegene.o
361
362 TRACELIBS = $(L)/libtrace-converse.a $(L)/libtracef_f.a 
363
364 BUILD_TRACING=$(shell CHARMINC=.; if test -f ./conv-config.sh; then . ./conv-config.sh; echo $$CMK_TRACE_ENABLED; fi )
365
366 ifneq "$(BUILD_TRACING)" "0"
367 TRACELIBS += $(L)/libtrace-projections.a  $(L)/libtrace-summary.a  \
368              $(L)/libtrace-utilization.a  $(L)/libtrace-simple.a \
369              $(L)/libtrace-counter.a $(L)/libtrace-bluegene.a \
370              $(L)/libtrace-projector.a $(L)/libtrace-all.a  \
371              $(L)/libtrace-memory.a
372 endif
373
374 MEMLIBS=$(L)/libmemory-default.o $(L)/libmemory-os.o $(L)/libmemory-gnu.o \
375           $(L)/libmemory-gnuold.o $(L)/libmemory-verbose.o      \
376           $(L)/libmemory-paranoid.o \
377           $(L)/libmemory-leak.o $(L)/libmemory-isomalloc.o \
378           $(L)/libmemory-os-verbose.o $(L)/libmemory-os-isomalloc.o \
379           $(L)/libmemory-os-leak.o $(L)/libmemory-os-paranoid.o \
380           $(L)/libmemory-os-lock.o $(L)/libmemory-os-wrapper.o
381
382 BUILD_CHARMDEBUG=$(shell CHARMINC=.; if test -f ./conv-config.sh; then . ./conv-config.sh; echo $$CMK_CHARMDEBUG; fi )
383
384 ifneq "$(BUILD_CHARMDEBUG)" "0"
385 MEMLIBS += $(L)/libmemory-charmdebug.o $(L)/libmemory-charmdebug-mmap.o \
386           $(L)/libmemory-charmdebug-slot.o  \
387           $(L)/libmemory-charmdebug-mmap-slot.o \
388           $(L)/libmemory-os-charmdebug.o $(L)/libmemory-hooks-charmdebug.o
389 endif
390
391 THREADLIBS=$(L)/libthreads-default.o $(L)/libthreads-default-tls.o  \
392           $(L)/libthreads-qt.o  $(L)/libthreads-qt-tls.o  \
393           $(L)/libthreads-context.o $(L)/libthreads-context-tls.o  \
394           $(L)/libthreads-uJcontext.o  $(L)/libthreads-uJcontext-tls.o \
395           $(L)/libthreads-pthreads.o $(L)/libthreads-fibers.o \
396           $(L)/libthreads-stackcopy.o $(L)/libthreads-memoryalias.o \
397           $(L)/libthreads-qt-memoryalias.o      \
398           $(L)/libthreads-context-memoryalias.o \
399           $(L)/libthreads-uJcontext-memoryalias.o
400
401 CVLIBS=$(L)/libconv-core.a \
402         $(L)/libconv-cplus-y.a $(L)/libconv-cplus-n.a \
403         $(L)/libconv-util.a $(L)/libconv-utilf.a \
404         $(CLBLIBS) $(TRACELIBS) $(MEMLIBS) $(THREADLIBS) \
405         $(L)/libccs-client.a
406
407 LIBCONV_CORE= convcore.o conv-conds.o queueing.o msgmgr.o \
408         cpm.o cpthreads.o futures.o cldb.o topology.o random.o \
409         debug-conv.o debug-conv++.o generate.o edgelist.o conv-ccs.o ccs-builtins.o middle-ccs.o \
410         traceCore.o traceCoreCommon.o \
411         converseProjections.o machineProjections.o \
412         quiescence.o isomalloc.o mem-arena.o conv-counter.o \
413         global-nop.o cmipool.o cpuaffinity.o cputopology.o  \
414         cmitls.o memoryaffinity.o commitid.o
415
416 #############################################
417 #Comlib Core objects that go into libck.a
418 COMLIB_CORE_OBJS = ComlibModuleInterface.o 
419 ##############################################
420
421 LIBCONV_UTIL=pup_util.o pup_toNetwork.o pup_toNetwork4.o                \
422         pup_xlater.o pup_c.o pup_paged.o pup_cmialloc.o                 \
423         ckimage.o ckdll.o ckhashtable.o sockRoutines.o                  \
424         conv-lists.o RTH.o persist-comm.o mempool.o graph.o \
425         TopoManager.o CrayNid.o crc32.o
426
427 LIBCONV_UTILF=pup_f.o
428
429 converse: fmain-ok charmrun-target swapglobal-target conv-cpm
430
431 charmrun-target: sockRoutines.c sockRoutines.h ccs-server.c ccs-server.h sockRoutines-seq.o $(L)/libck.a $(CVLIBS)
432         if [ -d charmrun ] ; then ( cd charmrun ; $(MAKE) OPTS='$(OPTS) -Wno-error' -j1 ) ; fi
433         if [ -f charmrun ] ; then ( cp -f charmrun ../bin ) ; fi
434
435 fmain-ok: fmain.f90
436         -@$(CHARMC) -c fmain.f90
437         -@cp fmain.o ../lib
438         -@touch fmain-ok
439
440 QUICK_THREADS: $(CVHEADERS)
441         -( cd QuickThreads && $(MAKE) clean )
442         ( cd QuickThreads;./configure )
443         ( cd QuickThreads ; $(MAKE) qt  OPTS='$(OPTS) -Wno-error' ) || ( echo "Did you try to build net-linux on a 64-bit system? Try net-linux-x86_64" && false )
444         cp -f QuickThreads/libqt.a ../lib/libckqt.a
445         -(CHARMINC=.; . ./conv-config.sh; \
446           test -d ../lib_so && \
447           cp -f QuickThreads/libqt.$$CMK_SHARED_SUF ../lib_so && \
448           cp -f QuickThreads/libqt.$$CMK_SHARED_SUF ../lib_so/libckqt.$$CMK_SHARED_SUF)
449         touch QUICK_THREADS
450
451 METIS:  charm++
452         cd libs/ck-libs/parmetis/METISLib && $(MAKE) OPTS='$(OPTS)'
453
454 CONVLIBS: converse
455         cd libs; $(MAKE) convlibs OPTS='$(OPTS)'
456
457 $(L)/libconv-core.a: $(LIBCONV_CORE)
458         $(CHARMC) $(TAU_LIBS) -o $@ $(LIBCONV_CORE) 
459
460 $(L)/libconv-cplus-y.a: $(L)/libconv-cplus-n.a
461
462 include Makefile.machine
463
464 $(L)/libconv-cplus-n.a: machine.c $(CVHEADERS)
465         @-test -f $(INC)/mpi.h && mv -f $(INC)/mpi.h $(INC)/mpi.BAK || true
466         $(CHARMC) -o machine.o  -DFOR_CPLUS=1 machine.c
467         @-test -f ./bglmachine.C && $(CHARMC) -o machine.o  -DFOR_CPLUS=1 bglmachine.C || true
468         $(CHARMC) -o $(L)/libconv-cplus-y.a machine.o
469         $(CHARMC) -o $(L)/libconv-cplus-n.a -DFOR_CPLUS=0 machine.c
470         @-test -f $(INC)/mpi.BAK && mv -f $(INC)/mpi.BAK $(INC)/mpi.h || true
471
472 $(L)/libconv-util.a: $(LIBCONV_UTIL)
473         $(CHARMC) -o $@ $(LIBCONV_UTIL)
474
475 $(L)/libconv-utilf.a: $(LIBCONV_UTILF)
476         -$(CHARMC) -o $@ $(LIBCONV_UTILF) || touch $@
477
478 $(L)/libccs-client.a: ccs-client.o
479         $(CHARMC) -o $@ ccs-client.o
480
481 ccs-client.o: ccs-client.c $(CVHEADERS)
482         $(CHARMC) ccs-client.c
483
484 sockRoutines.o: sockRoutines.c $(CVHEADERS) $(UTILHEADERS)
485         $(CHARMC) -DCMK_USE_CONVERSE=1 sockRoutines.c
486
487 sockRoutines-seq.o: sockRoutines.c $(CVHEADERS) $(UTILHEADERS)
488         $(SEQCHARMC) -o sockRoutines-seq.o sockRoutines.c
489
490 pup_util.o: pup_util.C $(CVHEADERS) $(UTILHEADERS)
491         $(CHARMC) -o pup_util.o pup_util.C
492
493 pup_toNetwork.o: pup_toNetwork.C $(CVHEADERS) $(UTILHEADERS)
494         $(CHARMC) -I. -o pup_toNetwork.o pup_toNetwork.C
495
496 pup_toNetwork4.o: pup_toNetwork4.C $(CVHEADERS) $(UTILHEADERS)
497         $(CHARMC) -I. -o pup_toNetwork4.o pup_toNetwork4.C
498
499 pup_xlater.o: pup_xlater.C $(CVHEADERS) $(UTILHEADERS)
500         $(CHARMC) -I. -o pup_xlater.o pup_xlater.C
501
502 pup_c.o: pup_c.C $(CVHEADERS) $(UTILHEADERS)
503         $(CHARMC) -o pup_c.o pup_c.C
504
505 pup_paged.o: pup_paged.C $(CVHEADERS) $(UTILHEADERS)
506         $(CHARMC) -o pup_paged.o pup_paged.C
507
508 pup_f.f90: pup_f.f90.sh
509         ./pup_f.f90.sh
510
511 pup_f.o: pup_f.f90 $(CVHEADERS)
512         -$(CHARMC) -c pup_f.f90 && $(CHARMC) -cpmod ../include pupmod.M || touch pup_f.o
513
514 pup_cmialloc.o: pup_cmialloc.C $(CVHEADERS) $(UTILHEADERS)
515         $(CHARMC) -o pup_cmialloc.o pup_cmialloc.C
516
517 ckhashtable.o: ckhashtable.C ckhashtable.h $(CVHEADERS)
518         $(CHARMC) -o ckhashtable.o ckhashtable.C
519
520 TopoManager.o: TopoManager.C TopoManager.h BGLTorus.h BGPTorus.h BGQTorus.h XT3Torus.h XTTorus.h CrayNid.c $(CVHEADERS) $(UTILHEADERS)
521         $(CHARMC) -o TopoManager.o TopoManager.C
522
523 CrayNid.o: CrayNid.c $(CVHEADERS) $(UTILHEADERS)
524         $(CHARMC) -c -o CrayNid.o CrayNid.c
525
526 ckdll.o: ckdll.C ckdll.h $(CVHEADERS)
527         $(CHARMC) -o ckdll.o ckdll.C
528
529 ckimage.o: ckimage.C ckimage.h $(CVHEADERS)
530         $(CHARMC) -o ckimage.o ckimage.C
531
532 graph.o: graph.c $(CVHEADERS) $(UTILHEADERS)
533         $(CHARMC) -c -o graph.o graph.c
534
535 RTH.o: RTH.C RTH.h $(CVHEADERS)
536         $(CHARMC) -o RTH.o RTH.C
537
538 persist-comm.o: persist-comm.c $(CVHEADERS)
539         $(CHARMC) -o persist-comm.o persist-comm.c
540
541 mempool.o: mempool.c $(CVHEADERS)
542         $(CHARMC) -o mempool.o mempool.c
543
544 conv-lists.o: conv-lists.C $(UTILHEADERS) $(CVHEADERS)
545         $(CHARMC) -o conv-lists.o conv-lists.C
546
547 crc32.o: crc32.c crc32.h
548         $(CHARMC) -optimize -o crc32.o crc32.c
549
550 ## Converse load balancers (seed balancers, -balance)
551 $(L)/libldb-none.o: cldb.none.c $(CVHEADERS)
552         $(CHARMC) -o $@ cldb.none.c
553
554 $(L)/libldb-rand.o: cldb.rand.c cldb.h $(CVHEADERS)
555         $(CHARMC) -o $@ cldb.rand.c
556
557 $(L)/libldb-neighbor.o: cldb.neighbor.c cldb.neighbor.h graph.h $(CVHEADERS)
558         $(CHARMC) -o $@ cldb.neighbor.c
559
560 $(L)/libldb-workstealing.o: cldb.workstealing.c cldb.workstealing.h graph.h $(CVHEADERS)
561         $(CHARMC) -o $@ cldb.workstealing.c
562
563 $(L)/libldb-spray.o: cldb.spray.c $(CVHEADERS)
564         $(CHARMC) -o $@ cldb.spray.c
565
566
567 #$(L)/libldb-prioritycentralized.o: cldb.prioritycentralized.c cldb.prioritycentralized.h  $(CVHEADERS)
568 #       $(CHARMC) -o $@ cldb.prioritycentralized.c 
569
570 #//$(L)/libldb-prioritycentralizedopt.o: cldb.prioritycentralizedopt.c cldb.prioritycentralizedopt.h  $(CVHEADERS)
571 #//     $(CHARMC) -o $@ cldb.prioritycentralizedopt.c 
572
573 $(L)/libldb-test.o: cldb.test.c $(CVHEADERS)
574         $(CHARMC) -o $@ cldb.test.c
575
576 $(L)/libldb-bluegene.o: cldb.bluegene.c $(CVHEADERS)
577         $(CHARMC) -o $@ cldb.bluegene.c
578
579 ## Memory allocation libraries (-memory)
580 MEM_DEPS=memory.c memory-gnu.c memory-gnuold.c converse.h conv-mach.h $(CVHEADERS)
581 $(L)/libmemory-default.o: $(MEM_DEPS)
582         $(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_DEFAULT memory.c
583
584 $(L)/libmemory-os.o: $(MEM_DEPS)
585         $(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS memory.c
586
587 $(L)/libmemory-os-verbose.o: memory-verbose.c $(MEM_DEPS)
588         -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_VERBOSE memory.c || touch $@
589
590 $(L)/libmemory-os-paranoid.o: memory-paranoid.c $(MEM_DEPS)
591         -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_PARANOID memory.c || touch $@
592
593 $(L)/libmemory-os-leak.o: $(MEM_DEPS)
594         -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_LEAK memory.c || touch $@
595
596 $(L)/libmemory-os-isomalloc.o: memory-isomalloc.c $(MEM_DEPS)
597         -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_ISOMALLOC memory.c || touch $@
598
599 $(L)/libmemory-os-lock.o: memory-lock.c $(MEM_DEPS)
600         -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_LOCK memory.c || touch $@
601
602 $(L)/libmemory-os-charmdebug.o: memory-charmdebug.c $(MEM_DEPS)
603         -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_CHARMDEBUG memory.c || touch $@
604
605 $(L)/libmemory-os-wrapper.o: memory-os-wrapper.C $(MEM_DEPS)
606         -$(CHARMC) -o $@ memory-os-wrapper.C || touch $@
607
608 $(L)/libmemory-hooks-charmdebug.o: memory-charmdebug.c $(MEM_DEPS)
609         -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_GNU_HOOKS -DCMK_MEMORY_BUILD_CHARMDEBUG memory.c || touch $@
610
611 # If the system doesn't have sbrk, these compilations may fail.
612 #  This is OK, but then we can't use "-memory gnu" or friends.
613 $(L)/libmemory-gnu.o: $(MEM_DEPS)
614         -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_GNU memory.c || touch $@
615
616 $(L)/libmemory-gnuold.o: $(MEM_DEPS)
617         -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_GNUOLD memory.c || touch $@
618
619 $(L)/libmemory-verbose.o: memory-verbose.c $(MEM_DEPS)
620         -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_VERBOSE memory.c || touch $@
621
622 $(L)/libmemory-paranoid.o: memory-paranoid.c $(MEM_DEPS)
623         -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_PARANOID memory.c || touch $@
624
625 $(L)/libmemory-leak.o: memory-leak.c $(MEM_DEPS)
626         -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_LEAK memory.c || touch $@
627
628 $(L)/libmemory-cache.o: memory-cache.c $(MEM_DEPS)
629         -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_CACHE memory.c || touch $@
630
631 $(L)/libmemory-isomalloc.o: memory-isomalloc.c $(MEM_DEPS)
632         -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_ISOMALLOC memory.c || touch $@
633
634 $(L)/libmemory-charmdebug.o: memory-charmdebug.c $(MEM_DEPS)
635         -$(CHARMC) -I. -optimize -o $@ -DCMK_MEMORY_BUILD_CHARMDEBUG memory.c || touch $@
636
637 $(L)/libmemory-charmdebug-slot.o: memory-charmdebug.c $(MEM_DEPS)
638         -$(CHARMC) -I. -optimize -o $@ -DCMK_MEMORY_BUILD_CHARMDEBUG -DCMK_SEPARATE_SLOT memory.c || touch $@
639
640 $(L)/libmemory-charmdebug-mmap.o: memory-charmdebug.c $(MEM_DEPS)
641         -$(CHARMC) -I. -optimize -o $@ -DCMK_MEMORY_BUILD_CHARMDEBUG -DCPD_USE_MMAP memory.c || touch $@
642
643 $(L)/libmemory-charmdebug-mmap-slot.o: memory-charmdebug.c $(MEM_DEPS)
644         -$(CHARMC) -I. -optimize -o $@ -DCMK_MEMORY_BUILD_CHARMDEBUG -DCPD_USE_MMAP -DCMK_SEPARATE_SLOT memory.c || touch $@
645
646 ## Thread libraries (-thread)
647
648 LIBTHREADSDEPS = threads.c $(CVHEADERS) QUICK_THREADS
649
650 $(L)/libthreads-default.o: $(LIBTHREADSDEPS)
651         $(CHARMC) -o $@ -DCMK_THREADS_BUILD_DEFAULT=1 -IQuickThreads -I. threads.c
652
653 $(L)/libthreads-default-tls.o: $(LIBTHREADSDEPS)
654         -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_DEFAULT=1 -DCMK_THREADS_BUILD_TLS=1 -IQuickThreads -I. threads.c 2> /dev/null || touch $@
655
656 $(L)/libthreads-qt.o: $(LIBTHREADSDEPS) 
657         $(CHARMC) -o $@ -DCMK_THREADS_BUILD_QT=1 -IQuickThreads threads.c
658
659 $(L)/libthreads-qt-tls.o: $(LIBTHREADSDEPS) 
660         -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_QT=1 -DCMK_THREADS_BUILD_TLS=1 -IQuickThreads threads.c 2> /dev/null || touch $@
661
662 $(L)/libthreads-context.o: $(LIBTHREADSDEPS) 
663         -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_CONTEXT=1 -IQuickThreads threads.c || touch $@
664
665 $(L)/libthreads-context-tls.o: $(LIBTHREADSDEPS) 
666         -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_CONTEXT=1 -DCMK_THREADS_BUILD_TLS=1 -IQuickThreads threads.c 2> /dev/null || touch $@
667
668 $(L)/libthreads-uJcontext.o: $(LIBTHREADSDEPS) uJcontext.c
669         -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_JCONTEXT=1 -IQuickThreads -I. threads.c || touch $@
670
671 $(L)/libthreads-uJcontext-tls.o: $(LIBTHREADSDEPS) uJcontext.c
672         -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_JCONTEXT=1 -DCMK_THREADS_BUILD_TLS=1 -IQuickThreads -I. threads.c || touch $@
673
674 $(L)/libthreads-pthreads.o: $(LIBTHREADSDEPS) 
675         -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_PTHREADS=1 -IQuickThreads threads.c || touch $@
676
677 $(L)/libthreads-fibers.o: $(LIBTHREADSDEPS)
678         -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_FIBERS=1 -IQuickThreads threads.c 2> /dev/null || touch $@
679
680 $(L)/libthreads-stackcopy.o: $(LIBTHREADSDEPS) 
681         -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_STACKCOPY=1 -IQuickThreads threads.c || touch $@
682
683 $(L)/libthreads-memoryalias.o: $(LIBTHREADSDEPS) 
684         -$(CHARMC) -o $@ -DCMK_THREADS_ALIAS_STACK=1 -DCMK_THREADS_BUILD_DEFAULT=1 -IQuickThreads threads.c || touch $@
685
686 $(L)/libthreads-qt-memoryalias.o: $(LIBTHREADSDEPS) 
687         -$(CHARMC) -o $@ -DCMK_THREADS_ALIAS_STACK=1 -DCMK_THREADS_BUILD_QT=1 -IQuickThreads threads.c || touch $@
688
689 $(L)/libthreads-context-memoryalias.o: $(LIBTHREADSDEPS) 
690         -$(CHARMC) -o $@ -DCMK_THREADS_ALIAS_STACK=1 -DCMK_THREADS_BUILD_CONTEXT=1 -IQuickThreads threads.c || touch $@
691
692 $(L)/libthreads-uJcontext-memoryalias.o: $(LIBTHREADSDEPS) 
693         -$(CHARMC) -o $@ -DCMK_THREADS_ALIAS_STACK=1 -DCMK_THREADS_BUILD_JCONTEXT=1 -IQuickThreads -I. threads.c || touch $@
694
695 ## Global swapping (-swapglobal)
696 swapglobal-target: $(L)/libglobal-swap.o $(L)/libglobal-copy.o $(L)/loadsym.o
697
698 $(L)/libglobal-swap.o: global-elfgot.C $(CVHEADERS)
699         -$(CHARMC) -c global-elfgot.C -o $@ || touch $@
700
701 $(L)/libglobal-copy.o: global-elfcopy.C  $(CVHEADERS)
702         -$(CHARMC) -c global-elfcopy.C -o $@ || touch $@
703
704 $(L)/loadsym.o: loadsym.c  $(CVHEADERS)
705         -$(CHARMC) -c loadsym.c -o $@ || touch $@
706
707 ###############################################################################
708 #
709 # Charm Libraries
710 #
711 ###############################################################################
712
713 CK_LIBS_CORE=$(L)/libck.a
714
715 LIBCK_CORE=trace-common.o tracec.o tracef.o init.o register.o qd.o ck.o main.o \
716            msgalloc.o ckfutures.o ckIgetControl.o debug-message.o debug-charm.o ckcallback.o \
717            cklocation.o ckarray.o ckreduction.o ckarrayreductionmgr.o \
718            tempo.o waitqd.o LBDatabase.o MetaBalancer.o lbdb.o lbdbf.o charisma.o ckobjQ.o  \
719            LBAgent.o LBProfit.o ckcheckpoint.o ckmemcheckpoint.o ckevacuation.o ckmessagelogging.o ckcausalmlog.o ckobjid.o\
720            LBDBManager.o LBComm.o LBObj.o LBMachineUtil.o CentralPredictor.o \
721            BaseLB.o CentralLB.o HybridBaseLB.o NborBaseLB.o \
722            ckgraph.o LButil.o Refiner.o RefinerApprox.o  \
723            RefinerComm.o bitvecset.o ckset.o ckheap.o CommLBHeap.o \
724            NullLB.o LBSimulation.o $(COMLIB_CORE_OBJS) modifyScheduler.o \
725            charmProjections.o cktiming.o ckbitvector.o \
726            pathHistory.o controlPoints.o arrayRedistributor.o cp_effects.o \
727                                          trace-controlPoints.o mpi-interoperate.o
728
729 charm-target: converse $(L)/libck.a $(L)/libckf.a loadbalancers default_libs comlib_objs 
730
731 CHARMLIBS: charm++ CONVLIBS 
732         cd libs; $(MAKE) charmlibs OPTS='$(OPTS)'
733
734 $(L)/libck.a: $(LIBCK_CORE) 
735         $(CHARMC) -o $@ $(LIBCK_CORE)
736
737 ## Charm fortran AMPI
738
739 CK_FOR_LIBS_CORE=$(L)/libckf.a
740
741 LIBCKF_CORE=charmf.o charmmod.o
742
743 $(L)/libckf.a: $(LIBCKF_CORE)
744         -$(CHARMC) -o $@ $(LIBCKF_CORE) || touch $@
745
746 charmf.o:  charmf.C $(CKHEADERS) charmf.h
747         $(CHARMC) -c -I. charmf.C
748
749 charmmod.o: charmmod.f90
750         -$(CHARMC) -c charmmod.f90 || touch $@
751         -$(CHARMC) -cpmod ../include charm.M
752
753 ## Tracing libraries (profiling, -tracemode)
754 LIBTRACE_PROJ=trace-projections.o
755 $(L)/libtrace-projections.a: $(LIBTRACE_PROJ)
756         $(CHARMC) -o $@ $(LIBTRACE_PROJ)
757
758 LIBTRACE_SUMM=trace-summary.o
759 $(L)/libtrace-summary.a: $(LIBTRACE_SUMM)
760         $(CHARMC) -o $@ $(LIBTRACE_SUMM)
761  
762 LIBTRACE_UTIL=trace-utilization.o
763 $(L)/libtrace-utilization.a: $(LIBTRACE_UTIL)
764         $(CHARMC) -o $@ $(LIBTRACE_UTIL)
765
766 LIBTRACE_SIMPLE=trace-simple.o
767 $(L)/libtrace-simple.a: $(LIBTRACE_SIMPLE)
768         $(CHARMC) -o $@ $(LIBTRACE_SIMPLE)
769
770 libtrace-Tau.o: trace-Tau.C charm++.h charm.h converse.h conv-config.h \
771   conv-autoconfig.h conv-common.h conv-mach.h conv-mach-opt.h \
772   conv-mach-ifort.h pup_c.h conv-cpm.h conv-cpath.h conv-qd.h \
773   conv-random.h conv-lists.h conv-trace.h persistent.h debug-conv.h pup.h \
774   middle.h middle-conv.h cklists.h ckbitvector.h ckstream.h init.h \
775   ckhashtable.h debug-charm.h CkMarshall.decl.h cksection.h ckcallback.h \
776   conv-ccs.h sockRoutines.h ccs-server.h ckobjQ.h ckreduction.h \
777   CkReduction.decl.h CkArrayReductionMgr.decl.h \
778   ckmemcheckpoint.h CkMemCheckpoint.decl.h readonly.h ckarray.h \
779   cklocation.h LBDatabase.h MetaBalancer.h lbdb.h LBDBManager.h LBObj.h LBOM.h LBComm.h \
780   LBMachineUtil.h lbdb++.h LBDatabase.decl.h MetaBalancer.decl.h NullLB.decl.h BaseLB.decl.h \
781   CkLocation.decl.h CkArray.decl.h ComlibArrayListener.h ComlibStrategy.h \
782   convcomlibstrategy.h ComlibLearner.h envelope.h envelope-path.h CkFutures.decl.h \
783   charisma.h charisma.decl.h tempo.h tempo.decl.h waitqd.h waitqd.decl.h \
784   sdag.h ckcheckpoint.h CkCheckpoint.decl.h ckevacuation.h \
785   ckarrayreductionmgr.h trace.h trace-bluegene.h trace-simple.h \
786   register.h trace-common.h trace-simpleBOC.h TraceSimple.decl.h \
787   TraceSimple.def.h
788         $(CHARMC) -c -I. $(TAU_INCLUDE) $(TAU_DEFS) trace-Tau.C -o libtrace-Tau.o
789
790 tau_selective.o: $(TAUROOT)/utils/tau_selective.cpp 
791         $(CHARMC) -I$(TAUROOT)/utils -DTAU_DYNINST $(TAUROOT)/utils/tau_selective.cpp
792
793 $(L)/libtrace-Tau.a: $(TAU_TRACE_OBJ) tau_selective.o
794         $(CHARMC) $(TAU_LIBS) -o $@ $(TAU_TRACE_OBJ) tau_selective.o $(TAU_TRACE_OBJ)
795
796 LIBTRACE_COUNT=trace-counter.o
797 $(L)/libtrace-counter.a: $(LIBTRACE_COUNT)
798         $(CHARMC) -o $@ $(LIBTRACE_COUNT)
799
800 LIBTRACE_BG=trace-bluegene.o
801 $(L)/libtrace-bluegene.a:$(LIBTRACE_BG)
802         $(CHARMC) -o $@ $(LIBTRACE_BG)
803
804 LIBTRACE_MEMORY=trace-memory.o
805 $(L)/libtrace-memory.a: $(LIBTRACE_MEMORY)
806         $(CHARMC) -o $@ $(LIBTRACE_MEMORY)
807
808 LIBTRACE_ALL=trace-all.o trace-projections.o trace-summary.o trace-simple.o \
809 $(TAU_TRACE_OBJ) trace-projector.o traceCore.o traceCoreCommon.o charmProjections.o converseProjections.o machineProjections.o trace-memory.o trace-utilization.o
810
811 $(L)/libtrace-all.a: $(LIBTRACE_ALL)
812         $(CHARMC) -o $@ $(LIBTRACE_ALL)
813
814 LIBTRACE_PROJECTOR=trace-projector.o traceCore.o traceCoreCommon.o charmProjections.o converseProjections.o machineProjections.o
815 $(L)/libtrace-projector.a: $(LIBTRACE_PROJECTOR)
816         $(CHARMC) -o  $@ $(LIBTRACE_PROJECTOR)
817
818 LIBTRACE_CONVERSE=trace-converse.o
819 $(L)/libtrace-converse.a: $(LIBTRACE_CONVERSE)
820         $(CHARMC) -o  $@ $(LIBTRACE_CONVERSE)
821
822 LIBTRACE_FOR=tracef_f.o
823 $(L)/libtracef_f.a: $(LIBTRACE_FOR)
824         -$(CHARMC) -o $@ $(LIBTRACE_FOR) || touch $@
825
826 tracef_f.o: tracef_f.f90
827         -$(CHARMC) -o $@ -c tracef_f.f90 && $(CHARMC) -cpmod ../include tracemod.M  || touch $@
828
829 # used for make depends
830 TRACE_OBJS =  trace-projections.o  trace-summary.o  trace-simple.o \
831               trace-counter.o trace-utilization.o       \
832               trace-bluegene.o trace-projector.o trace-converse.o trace-all.o \
833           trace-memory.o
834
835 ###############################################################################
836 #
837 # Dynamic Load Balancers
838 #
839 ###############################################################################
840
841 loadbalancers: $(ALL_LDBS) $(L)/libmoduleEveryLB.a $(L)/libmoduleCommonLBs.a
842
843 ######################################################################
844 #
845 #Communication Optimization Library
846 #
847 ######################################################################
848
849 STRATEGY_OBJS = MPIStrategy.o StreamingStrategy.o \
850                 DummyStrategy.o NodeMulticast.o ChunkMulticastStrategy.o OneTimeMulticastStrategy.o \
851                 EachToManyMulticastStrategy.o ComlibSectionInfo.o \
852                 AAPLearner.o ComlibStats.o AAMLearner.o \
853                 MsgPacker.o MulticastStrategy.o DirectMulticastStrategy.o \
854                 RingMulticastStrategy.o MultiRingMulticast.o\
855                 PipeBroadcastStrategy.o MeshStreamingStrategy.o \
856                 PrioStreaming.o BroadcastStrategy.o RectMulticastStrategy.o \
857                 convcomlibstrategy.o ComlibManager.o ComlibStrategy.o 
858
859 CONVERSE_COM_OBJS = gridrouter.o hypercuberouter.o treerouter.o petable.o \
860                 3dgridrouter.o graphrouter.o hypercubetopology.o \
861                 routerstrategy.o convcomlibmanager.o pipebroadcastconverse.o \
862                 pipelinestrategy.o prefixrouter.o
863
864 COMLIB_OBJS = $(STRATEGY_OBJS) $(CONVERSE_COM_OBJS)
865
866 comlib_objs: $(L)/libmodulecomlib.a $(L)/libconvcom.a
867
868 $(L)/libconvcom.a: $(COMLIB_OBJS)
869         $(CHARMC) -o $(L)/libconvcom.a $(CONVERSE_COM_OBJS)
870
871 #for backward compatibility, keep libmodulecommlib.a with double m.
872 $(L)/libmodulecomlib.a: $(COMLIB_OBJS)
873         $(CHARMC) -o $(L)/libmodulecomlib.a $(COMLIB_OBJS)
874         cp -f $(L)/libmodulecomlib.a $(L)/libmodulecommlib.a
875
876
877 ###############################################################################
878 #
879 # BlueGene Emulator
880 #
881 ###############################################################################
882
883 bigsim:  bigsim-target
884
885 bigemulator: bigsim
886
887 bigsim-target: charm++ $(L)/libconv-bigsim.a $(L)/libconv-bigsim-logs.a $(L)/libconv-bluegene-stub.a $(L)/libblue-standalone.a METIS
888
889 $(L)/libbluegene.a: BlueGene.C BlueGene.h BlueGene.decl.h BlueGene.def.h
890         $(CHARMC) -c BlueGene.C
891         $(CHARMC) -o $@ BlueGene.o
892
893 # (Converse) Blue Gene emulator
894 BLUE_HEADERS = blue_types.h bigsim_timing.h blue_defs.h bigsim_logs.h blue.h blue_impl.h bigsim_network.h bigsim_record.h bigsim_ooc.h bigsim_debug.h shared-alloc.h
895 BLUE_OBJS = blue.o bigsim_node.o bigsim_proc.o bigsim_init.o bigsim_timing.o bigsim_record.o bigsim_ooc.o shared_alloc.o
896 BIGSIM_IO_OBJS = bigsim_read.o bigsim_logs.o bigsim_api.o
897
898 LIBBLUE_OBJS = $(BLUE_OBJS) $(BIGSIM_IO_OBJS) blue_stub.o blue_standalone.o
899
900 $(L)/libconv-bigsim.a: $(BLUE_OBJS)
901         $(CHARMC) -o $@  $(BLUE_OBJS)
902
903 $(L)/libconv-bigsim-logs.a: $(BIGSIM_IO_OBJS)
904         $(CHARMC) -o $@  $(BIGSIM_IO_OBJS)
905
906 $(L)/libconv-bluegene-stub.a:  blue_stub.o
907         $(CHARMC) -o $@  blue_stub.o
908
909 $(L)/libblue-standalone.a: blue_standalone.o
910         $(CHARMC) -o $@  blue_standalone.o
911
912 ###############################################################################
913 #
914 # The CPM scanner
915 #
916 ###############################################################################
917
918 conv-cpm: conv-cpm.o
919         $(NATIVECHARMC) -language c -o conv-cpm -cp ../bin/ conv-cpm.o
920
921 conv-cpm.o: conv-cpm.c $(CVHEADERS)
922         $(NATIVECHARMC) conv-cpm.c
923
924 ###############################################################################
925 #
926 # The interface translator
927 #
928 ###############################################################################
929
930 XIHEADERS=conv-autoconfig.h xi-symbol.h xi-util.h xi-grammar.tab.h
931 CHARMXIOBJ=xi-main.o xi-symbol.o xi-grammar.tab.o xi-scan.o xi-util.o
932 SDAGOBJ=sdag-globals.o CSdagConstruct.o CEntry.o CParsedFile.o
933 SDAGHEADERS= CToken.h EToken.h CParsedFile.h sdag-globals.h CEntry.h
934
935 charmxi: ../bin/charmxi
936
937 ../bin/charmxi: $(CHARMXIOBJ) $(SDAGOBJ)
938         $(NATIVECHARMC) -language c++ -cp ../bin/ -o charmxi $(CHARMXIOBJ) $(SDAGOBJ)
939
940 xi-main.o: xi-main.C $(XIHEADERS) $(SDAGHEADERS)
941         $(NATIVECHARMC) xi-main.C
942
943 xi-symbol.o: xi-symbol.C $(XIHEADERS) $(SDAGHEADERS)
944         $(NATIVECHARMC) xi-symbol.C
945
946 xi-util.o: xi-util.C $(XIHEADERS) $(SDAGHEADERS)
947         $(NATIVECHARMC) xi-util.C
948
949 xi-grammar.tab.o: xi-grammar.tab.C $(XIHEADERS) $(SDAGHEADERS)
950         $(NATIVECHARMC) xi-grammar.tab.C
951
952 xi-scan.o: xi-scan.C $(XIHEADERS) $(SDAGHEADERS)
953         $(NATIVECHARMC) -I. -DYY_NEVER_INTERACTIVE xi-scan.C
954
955 sdag-globals.o: sdag-globals.C $(XIHEADERS) $(SDAGHEADERS)
956         $(NATIVECHARMC) -c sdag-globals.C
957
958 CSdagConstruct.o: CSdagConstruct.C $(XIHEADERS) $(SDAGHEADERS)
959         $(NATIVECHARMC) -c CSdagConstruct.C
960
961 CEntry.o: CEntry.C $(XIHEADERS) $(SDAGHEADERS)
962         $(NATIVECHARMC) -c CEntry.C
963
964 CParsedFile.o: CParsedFile.C $(XIHEADERS) $(SDAGHEADERS)
965         $(NATIVECHARMC) -c $<
966
967 xi-clean:
968         rm $(CHARMXIOBJ) $(SDAGOBJ)
969
970 ###############################################################################
971 #
972 # Simple Messaging
973 #
974 ###############################################################################
975
976 $(L)/libtsm.a: converse simplemsg.c simplemsg.h
977         $(CHARMC) -o $@ simplemsg.c
978
979 $(L)/libsm.a: converse sm.c sm.h
980         $(CHARMC) -o $@ sm.c
981
982 ###############################################################################
983 #
984 # PVM
985 #
986 ###############################################################################
987
988 PVMC=pvmc_buf.o pvmc_comm.o pvmc_conv.o pvmc_main.o pvmc_pack.o pvmc_groups.o
989
990 $(L)/libpvmc.a: $(PVMC)
991         $(CHARMC) -o $@ $(PVMC)
992
993 pvmc_buf.o: pvmc_buf.c pvmc.h pvm3.h converse.h
994         $(CHARMC) -o $@ pvmc_buf.c
995
996 pvmc_conv.o: pvmc_conv.c pvmc.h pvm3.h converse.h
997         $(CHARMC) -o $@ pvmc_conv.c
998
999 pvmc_pack.o: pvmc_pack.c pvmc.h pvm3.h converse.h
1000         $(CHARMC) -o $@ pvmc_pack.c
1001
1002 pvmc_comm.o: pvmc_comm.c pvmc.h pvm3.h converse.h
1003         $(CHARMC) -o $@ pvmc_comm.c
1004
1005 pvmc_groups.o: pvmc_groups.c pvmc.h pvm3.h converse.h
1006         $(CHARMC) -o $@ pvmc_groups.c
1007
1008 pvmc_main.o: pvmc_main.c pvmc.h pvm3.h converse.h
1009         $(CHARMC) -o $@ pvmc_main.c
1010
1011 $(L)/libf90charm.a: charmxi f90main.ci f90main.h f90main.C futil.f90
1012         $(CHARMC) f90main.ci
1013         $(CHARMC) -c -DAMPI_FORTRAN=1 f90main.C
1014         -$(CHARMC) -c futil.f90
1015         -$(CHARMC) -o $@ f90main.o futil.o
1016
1017 ##############################################################################
1018 # adding this entry for files which do not belong to any of other locations
1019
1020 OTHER_OBJS= mpi-mainmodule.o
1021
1022 ##############################################################################
1023
1024 ###############################################################################
1025 #
1026 # Make clean
1027 #
1028 ###############################################################################
1029
1030 install:
1031         @test ! -d $(DESTDIR)/include && mkdir -p $(DESTDIR)/include || true
1032         @test ! -d $(DESTDIR)/lib && mkdir -p $(DESTDIR)/lib || true
1033         @test ! -d $(DESTDIR)/lib_so && mkdir -p $(DESTDIR)/lib_so || true
1034         @test ! -d $(DESTDIR)/bin && mkdir -p $(DESTDIR)/bin || true
1035         # cp -f ../include/*   $(DESTDIR)/include
1036         for f in ../include/*; do if test -f $$f; then cp -f $$f $(DESTDIR)/include; fi; done
1037         cp -f ../lib/*       $(DESTDIR)/lib
1038         cp -f ../lib_so/*    $(DESTDIR)/lib_so || true
1039 #       cp -f ../bin/*       $(DESTDIR)/bin
1040         for f in ../bin/*; do if test -f $$f; then cp -f $$f $(DESTDIR)/bin; fi; done
1041
1042
1043 clean:
1044         rm -f conv-autoconfig.h config.cache
1045         rm -f QuickThreads/libqt.a
1046         rm -f charmxi conv-cpm
1047         rm -f TAGS basics cmk_extras core
1048         rm -f core *.a
1049         rm -f core *.o
1050         rm -f core #*#
1051         rm -f core *~
1052         rm -f *.stamp
1053         if [ -d charmrun ] ; then ( cd charmrun; make clean ) ; fi
1054         -( cd doc && $(MAKE) clean )
1055         ( cd libs; $(MAKE) clean )
1056         ( cd ../examples && $(MAKE) clean )
1057         ( cd ../tests && $(MAKE) clean )
1058
1059 veryclean:
1060         rm -rf ../bin
1061         rm -rf ../lib
1062         rm -rf ../src
1063         rm -rf ../examples
1064         rm -rf ../tests
1065         rm -rf ../include
1066         rm -rf ../doc
1067         mv Makefile .Makefile
1068         mv Make.depends .Make.depends
1069         rm -rf [a-z]* [A-Z]*
1070         mv .Make.depends Make.depends
1071         rm -rf .[a-z]* .[A-Z]*
1072
1073
1074 config: configure.in
1075         autoconf && autoheader
1076
1077 cidepends: charmxi
1078         echo "Creating " $(CIDEPENDFILE) " ...";
1079         if [ -f $(CIDEPENDFILE) ]; then \
1080            /bin/cp -f $(CIDEPENDFILE) $(CIDEPENDFILE).old; \
1081         fi; \
1082         echo '#generated by make cidepends' > $(CIDEPENDFILE); \
1083         for cifile in $(wildcard *.ci); do \
1084               echo "checking generated modules for $$cifile" ; \
1085               $(CHARMXI) -M $$cifile | sed '/\.stamp:/a \\t $$(CHARMC) -intrinsic $$< && touch $$@' >> $(CIDEPENDFILE) ; \
1086         done
1087
1088 depends: cidepends commitid.c
1089         $(MAKE) basics
1090         echo "Creating " $(DEPENDFILE) " ...";
1091         if [ -f $(DEPENDFILE) ]; then \
1092            /bin/cp -f $(DEPENDFILE) $(DEPENDFILE).old; \
1093         fi; \
1094         echo '#generated by make depends' > $(DEPENDFILE); \
1095         touch metis.h scotch.h;   \
1096         processFiles='';        \
1097         for i in $(LIBCONV_CORE) $(TRACE_OBJS) $(LIBCK_CORE) $(ALL_LB_OBJS) $(LIBBLUE_OBJS) $(COMLIB_OBJS) $(OTHER_OBJS) ; do \
1098               processed='false';        \
1099               for f in $$processFiles; do       \
1100                 if test $$i = $$f ; then        \
1101                   processed=true;  break;       \
1102                 fi;     \
1103               done;     \
1104               test $$processed = 'true'  && continue;   \
1105               processFiles="$$processFiles $$i";        \
1106               SRCFILE=`basename $$i .o`.C ; \
1107               [ ! -f $$SRCFILE ] && SRCFILE=`basename $$i .o`.c ;       \
1108               echo "checking dependencies for $$SRCFILE" ; \
1109               if g++ -MM -Wno-deprecated -I. -I$(INC) $$SRCFILE  >> $(DEPENDFILE); then   echo '        $$(CHARMC) -c -I. '$$SRCFILE >> $(DEPENDFILE) ; else echo '' ; echo "Compilation of '$$SRCFILE' failed, please fix it first!!!!" ; exit; fi;  \
1110               echo '' >> $(DEPENDFILE) ; \
1111         done;  \
1112         rm -f metis.h  scotch.h
1113
1114
1115 dependsCaseSensitive: cidepends
1116         $(MAKE) basics
1117         @echo "Creating " $(DEPENDFILE) " ...";
1118         if [ -f $(DEPENDFILE) ]; then \
1119            /bin/cp -f $(DEPENDFILE) $(DEPENDFILE).old; \
1120         fi; \
1121         echo '#generated by make depends' > $(DEPENDFILE); \
1122         touch metis.h scotch.h;   \
1123         processFiles='';        \
1124         for i in $(LIBCONV_CORE) $(TRACE_OBJS) $(LIBCK_CORE) $(ALL_LB_OBJS) $(LIBBLUE_OBJS) $(COMLIB_OBJS) $(OTHER_OBJS); do \
1125               processed='false';        \
1126               for f in $$processFiles; do       \
1127                 if test $$i = $$f ; then        \
1128                   processed=true;  break;       \
1129                 fi;     \
1130               done;     \
1131               test $$processed = 'true'  && continue;   \
1132               processFiles="$$processFiles $$i";        \
1133               SRCFILE=`basename $$i .o`.C ; \
1134               SRCDIR=`dirname $$i` ; \
1135               found=`/usr/bin/find $$SRCDIR -depth 1 -name $$SRCFILE`; \
1136               [ ! $$found ] && SRCFILE=`basename $$i .o`.c ; \
1137               echo "checking dependencies for $$SRCFILE" ; \
1138               if g++ -MM -Wno-deprecated -I. -I$(INC) $$SRCFILE  >> $(DEPENDFILE); then   echo '        $$(CHARMC) -c -I. '$$SRCFILE >> $(DEPENDFILE) ; else echo '' ; echo "Compilation of '$$SRCFILE' failed, please fix it first!!!!" ; exit; fi;  \
1139               echo '' >> $(DEPENDFILE) ; \
1140         done;  \
1141         rm -f metis.h  scotch.h
1142
1143 # The build script should have spit out the build options into this makefile
1144 -include buildopts.mk
1145 # If OPTS was not defined, use the build time options
1146 OPTS ?= $(OPTSATBUILDTIME)
1147 ifeq ($(strip $(OPTS)),)
1148 $(warning Variable OPTS is defined to an empty string. Are you sure this is what you want?)
1149 endif
1150