a new build option --enable-tracing-commthread
[charm.git] / src / scripts / Makefile
blobf2f291ba52c7fefe7785d9a7c1be25affd38a955
1 #############################################################################"
3 # This one Makefile serves all of converse and charm. It includes
4 # rules for building:
6 # * The CONVERSE libraries
7 # * Charm++ runtime
8 # * ITC++ Translator
9 # * Languages
10 # * Documentation
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.
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:
20 # make charm++ OPTS="-g -save -verbose"
22 ###############################################################################
24 SHELL=/bin/sh
25 L=../lib
26 INC=../include
28 all: charm++ bigsim LIBS AMPI f90charm TSM SM PVM doc
30 all-test: bigsim AMPI
31 cd ../tests ; $(MAKE) all OPTS='$(OPTS)'
32 cd ../examples ; $(MAKE) all OPTS='$(OPTS)'
34 charm++: charm-target
35 @echo "$(OPTS)" > OPTS
36 touch charm++
38 bgampi: bigsim AMPI
40 TSM: converse $(L)/libtsm.a
42 SM: converse $(L)/libsm.a
44 PVM: converse $(L)/libpvmc.a
46 AMR: charm++ LIBS
47 cd libs/ck-libs/amr; make all OPTS='$(OPTS)'
49 FEM: charm++ LIBS
50 FEMC: FEM
51 FEMF: FEM
52 ParFUM: FEM
54 MBLOCK: AMPI MBLOCKC MBLOCKF
56 MBLOCKC: charm++ LIBS
58 MBLOCKF: MBLOCKC
60 AMPI: charm++ LIBS
61 AMPIC AMPIF: AMPI
63 ARMCI: charm++ LIBS
66 f90charm: charm++ $(L)/libf90charm.a
68 default_libs: completion multicast pythonCCS
70 ChaNGa: charm++ cache liveViz
72 cache: charm++
73 cd libs/ck-libs/cache && $(MAKE)
75 liveViz: charm++
76 cd libs/ck-libs/liveViz && $(MAKE)
78 multicast: charmxi
79 cd libs/ck-libs/multicast && $(MAKE)
81 pythonCCS: charmxi
82 cd libs/ck-libs/pythonCCS && $(MAKE)
84 completion: charmxi
85 cd libs/ck-libs/completion && $(MAKE)
87 translators: charmxi conv-cpm
89 pose: charm++
90 cd libs/ck-libs/pose && $(MAKE)
92 msa: charm++
93 cd libs/ck-libs/multiphaseSharedArrays && $(MAKE)
95 jade: charm++ msa
96 # make the lib, include
97 cd langs/jade && $(MAKE)
99 fftlib: charm++
100 cd libs/ck-libs/fftlib && $(MAKE)
102 # This should be done offline, since the user does not need to compile
103 # parser files, etc. All they need is the libjade + include files,
104 # antlr.jar, jade.jar, and a few scripts which the jade target takes
105 # care of.
106 #jadeall: jade
107 # make parser.g -> .java files
108 # cd langs/jade && $(MAKE) p
109 # make the jade.jar file
110 # cd ../java/charm/jade && $(MAKE)
112 #include TAU defs
113 TAU_MAKEFILE=Make.tau
114 include $(TAU_MAKEFILE) #stub-makefile
116 #builds TAU's trace library
117 Tau:
118 echo "buliding charm trace library with support for TAU."
119 $(MAKE) $(L)/libtrace-Tau.a $(L)/libtrace-all.a TAU_TRACE_OBJ=libtrace-Tau.o
121 LIBS: CONVLIBS CHARMLIBS
122 cd libs; $(MAKE) otherlibs
123 echo "Built LIBS Successfully"
125 bgtest: bigsim AMPI
126 cd ../tests ; $(MAKE) bgtest OPTS='$(OPTS)'
127 cd ../examples ; $(MAKE) bgtest OPTS='$(OPTS)'
129 test: bigsim AMPI
130 cd ../tests ; $(MAKE) test OPTS='$(OPTS)'
131 cd ../examples ; $(MAKE) test OPTS='$(OPTS)'
133 test-converse: converse
134 cd ../tests ; $(MAKE) test-converse OPTS='$(OPTS)'
136 test-charm: charm++ METIS
137 cd ../tests ; $(MAKE) test-charm OPTS='$(OPTS)'
139 test-AMPI: AMPI
140 cd ../tests ; $(MAKE) test-AMPI OPTS='$(OPTS)'
142 test-fem: FEM
143 cd ../tests ; $(MAKE) test-fem OPTS='$(OPTS)'
145 ps-doc: basics
146 cd ../doc ; make ps
148 pdf-doc: basics
149 cd ../doc ; make pdf
151 html-doc: basics
152 cd ../doc ; make html
154 doc: basics
155 cd ../doc ; make doc
157 CHARMC=../bin/charmc $(CHARMOPTS) $(OPTS)
159 SEQCHARMC=../bin/charmc -seq $(CHARMOPTS)
161 NATIVECHARMC=../bin/charmc -host $(CHARMOPTS)
163 CHARMXI=../bin/charmc -intrinsic $(OPTS)
165 CIDEPENDFILE = Make.cidepends
166 DEPENDFILE = Make.depends
168 include $(CIDEPENDFILE)
169 include $(DEPENDFILE)
171 CIFILES = $(wildcard *.ci)
173 %.ci.stamp: %.ci ../bin/charmxi
174 $(CHARMXI) $< && touch $@
176 # Automatically generated by script Makefile_lb.sh
177 include Make.lb
179 # Build changes for external libraries
180 include Make.extlib
182 ###############################################################################
184 # The basics (bin, lib, include, headers, charmc, conv-mach.sh)
186 ###############################################################################
188 CVHEADERS=cpthreads.h converse.h conv-trace.h conv-random.h conv-qd.h \
189 queueing.h conv-cpath.h conv-cpm.h persistent.h\
190 trace.h trace-common.h trace-bluegene.h trace-projections.h \
191 trace-simple.h trace-controlPoints.h charm-api.h \
192 conv-ccs.h ccs-client.c ccs-client.h \
193 ccs-server.h ccs-auth.c ccs-auth.h \
194 memory-isomalloc.h debug-conv.h debug-conv++.h conv-autoconfig.h \
195 conv-common.h conv-config.sh conv-config.h conv-mach.h conv-mach.sh \
196 blue.h blue-conv.h bgconverse.h cmipool.h mempool.h \
197 cmidirect.h cmidirectmanytomany.h
199 CONVCOMHEADERS= 3dgridrouter.h hypercuberouter.h hypercubetopology.h \
200 routerstrategy.h convcomlibstrategy.h convcomlib.h dummyconversestrategy.h treerouter.h \
201 convcomlibmanager.h graphrouter.h petable.h gridrouter.h router.h \
202 prefixrouter.h pipebroadcastconverse.h pipelinestrategy.h
204 # The .c files are there to be #included by clients whole
205 # This is a bit unusual, but makes client linking simpler.
206 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\
207 ckimage.h ckdll.h ckhashtable.h ckbitvector.h cklists.h ckliststring.h \
208 cksequence.h ckstatistics.h ckvector3d.h conv-lists.h RTH.h ckcomplex.h \
209 sockRoutines.h sockRoutines.c ckpool.h BGLTorus.h BGPTorus.h \
210 TopoManager.h XT3Torus.h XTTorus.h cmimemcpy.h simd.h SSE-Double.h SSE-Float.h crc32.h
212 CKHEADERS=ck.h ckstream.h envelope.h init.h qd.h charm.h charm++.h \
213 ckfutures.h ckIgetControl.h cktiming.h debug-charm.h\
214 ckcallback.h CkCallback.decl.h ckcallback-ccs.h \
215 ckarrayreductionmgr.h cksection.h \
216 ckarrayindex.h ckarray.h cklocation.h ckreduction.h \
217 ckcheckpoint.h ckmemcheckpoint.h ckevacuation.h\
218 ckmessagelogging.h ckobjid.h\
219 ckobjQ.h readonly.h charisma.h \
220 comlib.h ComlibArrayListener.h ComlibStrategy.h \
221 ComlibLearner.h $(UTILHEADERS) \
222 tempo.h waitqd.h LBDatabase.h lbdb.h lbdb++.h LBProfit.h $(LBHEADERS) \
223 LBDBManager.h LBComm.h LBOM.h LBObj.h LBMachineUtil.h LBAgent.h \
224 Refiner.h RefinerApprox.h RefinerComm.h ckgraph.h ckheap.h \
225 elements.h CommLBHeap.h topology.h manager.h \
226 BaseLB.h CentralLB.h CentralLBMsg.h \
227 NborBaseLB.h HybridBaseLB.h HybridLBMsg.h \
228 NeighborLBMsg.h \
229 BlueGene.h middle.h middle-conv.h middle-blue.h \
230 CkMarshall.decl.h CkArray.decl.h CkLocation.decl.h \
231 CkReduction.decl.h CkArrayReductionMgr.decl.h\
232 tempo.decl.h waitqd.decl.h \
233 CkFutures.decl.h CkCheckpoint.decl.h CkMemCheckpoint.decl.h \
234 LBDatabase.decl.h CentralLB.decl.h NullLB.decl.h \
235 BaseLB.decl.h \
236 NborBaseLB.decl.h \
237 HybridBaseLB.decl.h EveryLB.decl.h CommonLBs.decl.h \
238 charisma.decl.h TraceSummary.decl.h TraceProjections.decl.h \
239 TraceSimple.decl.h TraceControlPoints.decl.h TraceTau.decl.h \
240 TraceUtilization.decl.h BlueGene.decl.h \
241 comlib.decl.h ComlibManager.h DummyStrategy.h \
242 MulticastStrategy.h DirectMulticastStrategy.h RingMulticastStrategy.h \
243 ChunkMulticastStrategy.h OneTimeMulticastStrategy.h MultiRingMulticast.h \
244 EachToManyMulticastStrategy.h MsgPacker.h StreamingStrategy.h \
245 NodeMulticast.h PipeBroadcastStrategy.h MeshStreamingStrategy.h \
246 PrioStreaming.h MPIStrategy.h MsgPacker.h StreamingStrategy.h \
247 BroadcastStrategy.h ComlibSectionInfo.h AAPLearner.h \
248 AAMLearner.h ComlibStats.h \
249 RectMulticastStrategy.h ckdirect.h \
250 ControlPoints.decl.h PathHistory.decl.h \
251 pathHistory.h envelope-path.h \
252 controlPoints.h controlPointsf.h arrayRedistributor.h cp_effects.h register.h stats.h \
253 cksequence_internal.h cksequence_factory.h random_sequence.h strided_sequence.h \
254 $(CVHEADERS) $(CONVCOMHEADERS)
256 ALLHEADERS=$(CKHEADERS) \
257 simplemsg.h sm.h pvmc.h pvm3.h sdag.h vector2d.h \
258 graph.h bitvecset.h ckset.h LBSimulation.h \
259 $(BLUE_HEADERS)
261 basics: headers
262 touch basics
264 # Headers is used only for the dependencies
265 headers: dirs+sources
266 $(MAKE) charmxi
267 $(MAKE) headerlinks
269 conv-autoconfig.h: configure config_opts.sh
270 @. ./config_opts.sh; echo ./configure $(QUIET) $$CONFIG_OPTS; \
271 ./configure $(QUIET) $$CONFIG_OPTS && touch conv-autoconfig.h
273 .PHONY: clean veryclean VERSION.new
275 VERSION: VERSION.new
276 ./commitid.sh
278 commitid.c: VERSION
279 echo "const char * const CmiCommitID = \"`cat VERSION`\";" > $@
280 commitid.o: CC=$(CHARMC)
282 headerlinks: dirs+sources Makefile $(ALLHEADERS)
283 @[ "x$QUIET" = "x--quiet" ] || echo "Soft-linking headers..."
284 -for hdr in $(ALLHEADERS) ; do test ! -f "../include/$$hdr" && ./system_ln "../tmp/$$hdr" ../include ; done
285 touch headerlinks
287 dirs+sources:
288 # rm -f .gdir
289 # (cd .. ; basename "`pwd`" | sed -e 's@-.*@@') > .gdir
291 find . -type l -exec rm {} \;
292 rm -rf QuickThreads
293 rm -rf libs
294 rm -rf ../bin ; mkdir ../bin
295 rm -rf ../lib ; mkdir ../lib
296 rm -rf ../lib_so ; mkdir ../lib_so; touch ../lib_so/.charmso
297 rm -rf ../examples
298 rm -rf ../tests
299 rm -rf ../doc ; ln -s ../doc ../doc
300 ../../src/scripts/gatherflat ../../src/scripts .
301 ./gatherflat ../../src/conv-core .
302 ./gatherflat ../../src/conv-ldb .
303 ./gatherflat ../../src/conv-ccs .
304 ./gatherflat ../../src/conv-perf .
305 ./gatherflat ../../src/ck-core .
306 ./gatherflat ../../src/util .
307 ./gatherflat ../../src/ck-perf .
308 ./gatherflat ../../src/ck-ldb .
309 ./gatherflat ../../src/ck-com .
310 ./gatherflat ../../src/ck-cp .
311 ./gatherflat ../../src/conv-com .
312 ./gatherflat ../../src/langs/simplemsg .
313 ./gatherflat ../../src/langs/pvmc .
314 ./gatherflat ../../src/langs/bluegene .
315 ./gatherflat ../../src/langs/f90charm .
316 ./gatherflat ../../src/xlat-i .
317 ./gatherflat ../../src/xlatcpm .
318 ./gathertree ../../src/QuickThreads QuickThreads
319 ./gathertree ../../src/libs libs
320 ./gathertree ../../src/arch/util .
321 ./gathertree ../../src/langs langs
322 ./gathertree ../../src/langs/jade langs/jade
323 ./gathertree ../../src/arch/common .
324 ./gathertree ../../src/arch/`cat .gdir` .
325 test -f ../../src/arch/`cat .gdir`/gdir_link && cat ../../src/arch/`cat .gdir`/gdir_link > .gdir.new && ./gathertree ../../src/arch/`cat .gdir.new` . || true
326 ./gatherflat ../../src/arch/`cat .vdir` .
327 ./gathertree ../../examples ../examples
328 ./gathertree ../../tests ../tests
329 rm -f ../bin/dep.pl ; cp dep.pl ../bin/
330 chmod +x charmc
331 -./system_ln ../tmp/charmc ../bin/
332 # -ln -s ../../java/bin charmjavabin
333 # -ln -s ../../java/bin ../bin/charmjavabin
334 # -ln -s charmjavabin/* ../bin/
335 # -ln -s ../java ..
336 # rm -f .gdir
337 rm -rf ../include ; mkdir ../include
338 -./system_ln ../tmp/conv-*.*h ../include
339 -./system_ln ../tmp/cc-*.*h ../include
340 -./system_ln ../tmp/conv-mach-opt.sh ../include
341 if [ -x ./special.sh ] ; then ./special.sh ; fi
342 if [ ! -f conv-common.h ] ; then ( touch conv-common.h ) ; fi
343 touch dirs+sources
345 ###############################################################################
347 # Converse Libraries
349 ###############################################################################
350 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
352 TRACELIBS = $(L)/libtrace-converse.a $(L)/libtracef_f.a
354 BUILD_TRACING=$(shell CHARMINC=.; if test -f ./conv-config.sh; then . ./conv-config.sh; echo $$CMK_TRACE_ENABLED; fi )
356 ifneq "$(BUILD_TRACING)" "0"
357 TRACELIBS += $(L)/libtrace-projections.a $(L)/libtrace-summary.a \
358 $(L)/libtrace-utilization.a $(L)/libtrace-simple.a \
359 $(L)/libtrace-counter.a $(L)/libtrace-bluegene.a \
360 $(L)/libtrace-projector.a $(L)/libtrace-all.a \
361 $(L)/libtrace-memory.a
362 endif
364 MEMLIBS=$(L)/libmemory-default.o $(L)/libmemory-os.o $(L)/libmemory-gnu.o \
365 $(L)/libmemory-gnuold.o $(L)/libmemory-verbose.o \
366 $(L)/libmemory-paranoid.o \
367 $(L)/libmemory-leak.o $(L)/libmemory-isomalloc.o \
368 $(L)/libmemory-os-verbose.o $(L)/libmemory-os-isomalloc.o \
369 $(L)/libmemory-os-leak.o $(L)/libmemory-os-paranoid.o \
370 $(L)/libmemory-os-lock.o $(L)/libmemory-os-wrapper.o
372 BUILD_CHARMDEBUG=$(shell CHARMINC=.; if test -f ./conv-config.sh; then . ./conv-config.sh; echo $$CMK_CHARMDEBUG; fi )
374 ifneq "$(BUILD_CHARMDEBUG)" "0"
375 MEMLIBS += $(L)/libmemory-charmdebug.o $(L)/libmemory-charmdebug-mmap.o \
376 $(L)/libmemory-charmdebug-slot.o \
377 $(L)/libmemory-charmdebug-mmap-slot.o \
378 $(L)/libmemory-os-charmdebug.o $(L)/libmemory-hooks-charmdebug.o
379 endif
381 THREADLIBS=$(L)/libthreads-default.o $(L)/libthreads-default-tls.o \
382 $(L)/libthreads-qt.o $(L)/libthreads-qt-tls.o \
383 $(L)/libthreads-context.o $(L)/libthreads-context-tls.o \
384 $(L)/libthreads-uJcontext.o $(L)/libthreads-uJcontext-tls.o \
385 $(L)/libthreads-pthreads.o $(L)/libthreads-fibers.o \
386 $(L)/libthreads-stackcopy.o $(L)/libthreads-memoryalias.o \
387 $(L)/libthreads-qt-memoryalias.o \
388 $(L)/libthreads-context-memoryalias.o \
389 $(L)/libthreads-uJcontext-memoryalias.o
391 CVLIBS=$(L)/libconv-core.a \
392 $(L)/libconv-cplus-y.a $(L)/libconv-cplus-n.a \
393 $(L)/libconv-util.a $(L)/libconv-utilf.a \
394 $(CLBLIBS) $(TRACELIBS) $(MEMLIBS) $(THREADLIBS) \
395 $(L)/libccs-client.a
397 LIBCONV_CORE= convcore.o conv-conds.o queueing.o msgmgr.o \
398 cpm.o cpthreads.o futures.o cldb.o topology.o random.o \
399 debug-conv.o debug-conv++.o generate.o edgelist.o conv-ccs.o ccs-builtins.o middle-ccs.o \
400 traceCore.o traceCoreCommon.o \
401 converseProjections.o machineProjections.o \
402 quiescence.o isomalloc.o mem-arena.o conv-counter.o \
403 global-nop.o cmipool.o cpuaffinity.o cputopology.o \
404 cmitls.o memoryaffinity.o commitid.o
406 #############################################
407 #Comlib Core objects that go into libck.a
408 COMLIB_CORE_OBJS = ComlibModuleInterface.o
409 ##############################################
411 LIBCONV_UTIL=pup_util.o pup_toNetwork.o pup_toNetwork4.o \
412 pup_xlater.o pup_c.o pup_paged.o pup_cmialloc.o \
413 ckimage.o ckdll.o ckhashtable.o sockRoutines.o \
414 conv-lists.o RTH.o persist-comm.o mempool.o graph.o \
415 TopoManager.o CrayNid.o crc32.o
417 LIBCONV_UTILF=pup_f.o
419 converse: fmain-ok charmrun-target swapglobal-target conv-cpm
421 charmrun-target: sockRoutines.c sockRoutines.h ccs-server.c ccs-server.h sockRoutines-seq.o $(L)/libck.a $(CVLIBS)
422 if [ -d charmrun ] ; then ( cd charmrun ; $(MAKE) OPTS='$(OPTS)' -j1 ) ; fi
423 if [ -f charmrun ] ; then ( cp -f charmrun ../bin ) ; fi
425 fmain-ok: fmain.f90
426 -@$(CHARMC) -c fmain.f90
427 -@cp fmain.o ../lib
428 -@touch fmain-ok
430 QUICK_THREADS: $(CVHEADERS)
431 -( cd QuickThreads && $(MAKE) clean )
432 ( cd QuickThreads;./configure )
433 ( cd QuickThreads ; $(MAKE) qt OPTS='$(OPTS)' ) || ( echo "Did you try to build net-linux on a 64-bit system? Try net-linux-x86_64" && false )
434 cp -f QuickThreads/libqt.a ../lib/libckqt.a
435 -(CHARMINC=.; . ./conv-config.sh; \
436 test -d ../lib_so && \
437 cp -f QuickThreads/libqt.$$CMK_SHARED_SUF ../lib_so && \
438 cp -f QuickThreads/libqt.$$CMK_SHARED_SUF ../lib_so/libckqt.$$CMK_SHARED_SUF)
439 touch QUICK_THREADS
441 METIS: charm++
442 cd libs/ck-libs/parmetis/METISLib && $(MAKE) OPTS='$(OPTS)'
444 CONVLIBS: converse
445 cd libs; $(MAKE) convlibs OPTS='$(OPTS)'
447 $(L)/libconv-core.a: $(LIBCONV_CORE)
448 $(CHARMC) $(TAU_LIBS) -o $@ $(LIBCONV_CORE)
450 $(L)/libconv-cplus-y.a: $(L)/libconv-cplus-n.a
452 include Makefile.machine
454 $(L)/libconv-cplus-n.a: machine.c $(CVHEADERS)
455 @-test -f $(INC)/mpi.h && mv -f $(INC)/mpi.h $(INC)/mpi.BAK || true
456 $(CHARMC) -o machine.o -DFOR_CPLUS=1 machine.c
457 @-test -f ./bglmachine.C && $(CHARMC) -o machine.o -DFOR_CPLUS=1 bglmachine.C || true
458 $(CHARMC) -o $(L)/libconv-cplus-y.a machine.o
459 $(CHARMC) -o $(L)/libconv-cplus-n.a -DFOR_CPLUS=0 machine.c
460 @-test -f $(INC)/mpi.BAK && mv -f $(INC)/mpi.BAK $(INC)/mpi.h || true
462 $(L)/libconv-util.a: $(LIBCONV_UTIL)
463 $(CHARMC) -o $@ $(LIBCONV_UTIL)
465 $(L)/libconv-utilf.a: $(LIBCONV_UTILF)
466 -$(CHARMC) -o $@ $(LIBCONV_UTILF) || touch $@
468 $(L)/libccs-client.a: ccs-client.o
469 $(CHARMC) -o $@ ccs-client.o
471 ccs-client.o: ccs-client.c $(CVHEADERS)
472 $(CHARMC) ccs-client.c
474 sockRoutines.o: sockRoutines.c $(CVHEADERS) $(UTILHEADERS)
475 $(CHARMC) -DCMK_USE_CONVERSE=1 sockRoutines.c
477 sockRoutines-seq.o: sockRoutines.c $(CVHEADERS) $(UTILHEADERS)
478 $(SEQCHARMC) -o sockRoutines-seq.o sockRoutines.c
480 pup_util.o: pup_util.C $(CVHEADERS) $(UTILHEADERS)
481 $(CHARMC) -o pup_util.o pup_util.C
483 pup_toNetwork.o: pup_toNetwork.C $(CVHEADERS) $(UTILHEADERS)
484 $(CHARMC) -I. -o pup_toNetwork.o pup_toNetwork.C
486 pup_toNetwork4.o: pup_toNetwork4.C $(CVHEADERS) $(UTILHEADERS)
487 $(CHARMC) -I. -o pup_toNetwork4.o pup_toNetwork4.C
489 pup_xlater.o: pup_xlater.C $(CVHEADERS) $(UTILHEADERS)
490 $(CHARMC) -I. -o pup_xlater.o pup_xlater.C
492 pup_c.o: pup_c.C $(CVHEADERS) $(UTILHEADERS)
493 $(CHARMC) -o pup_c.o pup_c.C
495 pup_paged.o: pup_paged.C $(CVHEADERS) $(UTILHEADERS)
496 $(CHARMC) -o pup_paged.o pup_paged.C
498 pup_f.f90: pup_f.f90.sh
499 ./pup_f.f90.sh
501 pup_f.o: pup_f.f90 $(CVHEADERS)
502 -$(CHARMC) -c pup_f.f90 && $(CHARMC) -cpmod ../include pupmod.M || touch pup_f.o
504 pup_cmialloc.o: pup_cmialloc.C $(CVHEADERS) $(UTILHEADERS)
505 $(CHARMC) -o pup_cmialloc.o pup_cmialloc.C
507 ckhashtable.o: ckhashtable.C ckhashtable.h $(CVHEADERS)
508 $(CHARMC) -o ckhashtable.o ckhashtable.C
510 TopoManager.o: TopoManager.C TopoManager.h BGLTorus.h BGPTorus.h XT3Torus.h XTTorus.h CrayNid.c $(CVHEADERS) $(UTILHEADERS)
511 $(CHARMC) -o TopoManager.o TopoManager.C
513 CrayNid.o: CrayNid.c $(CVHEADERS) $(UTILHEADERS)
514 $(CHARMC) -c -o CrayNid.o CrayNid.c
516 ckdll.o: ckdll.C ckdll.h $(CVHEADERS)
517 $(CHARMC) -o ckdll.o ckdll.C
519 ckimage.o: ckimage.C ckimage.h $(CVHEADERS)
520 $(CHARMC) -o ckimage.o ckimage.C
522 graph.o: graph.c $(CVHEADERS) $(UTILHEADERS)
523 $(CHARMC) -c -o graph.o graph.c
525 RTH.o: RTH.C RTH.h $(CVHEADERS)
526 $(CHARMC) -o RTH.o RTH.C
528 persist-comm.o: persist-comm.c $(CVHEADERS)
529 $(CHARMC) -o persist-comm.o persist-comm.c
531 mempool.o: mempool.c $(CVHEADERS)
532 $(CHARMC) -o mempool.o mempool.c
534 conv-lists.o: conv-lists.C $(UTILHEADERS) $(CVHEADERS)
535 $(CHARMC) -o conv-lists.o conv-lists.C
537 crc32.o: crc32.c crc32.h
538 $(CHARMC) -optimize -o crc32.o crc32.c
540 ## Converse load balancers (seed balancers, -balance)
541 $(L)/libldb-none.o: cldb.none.c $(CVHEADERS)
542 $(CHARMC) -o $@ cldb.none.c
544 $(L)/libldb-rand.o: cldb.rand.c cldb.h $(CVHEADERS)
545 $(CHARMC) -o $@ cldb.rand.c
547 $(L)/libldb-neighbor.o: cldb.neighbor.c cldb.neighbor.h graph.h $(CVHEADERS)
548 $(CHARMC) -o $@ cldb.neighbor.c
550 $(L)/libldb-workstealing.o: cldb.workstealing.c cldb.workstealing.h graph.h $(CVHEADERS)
551 $(CHARMC) -o $@ cldb.workstealing.c
553 $(L)/libldb-spray.o: cldb.spray.c $(CVHEADERS)
554 $(CHARMC) -o $@ cldb.spray.c
557 #$(L)/libldb-prioritycentralized.o: cldb.prioritycentralized.c cldb.prioritycentralized.h $(CVHEADERS)
558 # $(CHARMC) -o $@ cldb.prioritycentralized.c
560 #//$(L)/libldb-prioritycentralizedopt.o: cldb.prioritycentralizedopt.c cldb.prioritycentralizedopt.h $(CVHEADERS)
561 #// $(CHARMC) -o $@ cldb.prioritycentralizedopt.c
563 $(L)/libldb-test.o: cldb.test.c $(CVHEADERS)
564 $(CHARMC) -o $@ cldb.test.c
566 $(L)/libldb-bluegene.o: cldb.bluegene.c $(CVHEADERS)
567 $(CHARMC) -o $@ cldb.bluegene.c
569 ## Memory allocation libraries (-memory)
570 MEM_DEPS=memory.c memory-gnu.c memory-gnuold.c converse.h conv-mach.h $(CVHEADERS)
571 $(L)/libmemory-default.o: $(MEM_DEPS)
572 $(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_DEFAULT memory.c
574 $(L)/libmemory-os.o: $(MEM_DEPS)
575 $(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS memory.c
577 $(L)/libmemory-os-verbose.o: memory-verbose.c $(MEM_DEPS)
578 -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_VERBOSE memory.c || touch $@
580 $(L)/libmemory-os-paranoid.o: memory-paranoid.c $(MEM_DEPS)
581 -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_PARANOID memory.c || touch $@
583 $(L)/libmemory-os-leak.o: $(MEM_DEPS)
584 -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_LEAK memory.c || touch $@
586 $(L)/libmemory-os-isomalloc.o: memory-isomalloc.c $(MEM_DEPS)
587 -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_ISOMALLOC memory.c || touch $@
589 $(L)/libmemory-os-lock.o: memory-lock.c $(MEM_DEPS)
590 -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_LOCK memory.c || touch $@
592 $(L)/libmemory-os-charmdebug.o: memory-charmdebug.c $(MEM_DEPS)
593 -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_CHARMDEBUG memory.c || touch $@
595 $(L)/libmemory-os-wrapper.o: memory-os-wrapper.C $(MEM_DEPS)
596 -$(CHARMC) -o $@ memory-os-wrapper.C || touch $@
598 $(L)/libmemory-hooks-charmdebug.o: memory-charmdebug.c $(MEM_DEPS)
599 -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_GNU_HOOKS -DCMK_MEMORY_BUILD_CHARMDEBUG memory.c || touch $@
601 # If the system doesn't have sbrk, these compilations may fail.
602 # This is OK, but then we can't use "-memory gnu" or friends.
603 $(L)/libmemory-gnu.o: $(MEM_DEPS)
604 -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_GNU memory.c || touch $@
606 $(L)/libmemory-gnuold.o: $(MEM_DEPS)
607 -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_GNUOLD memory.c || touch $@
609 $(L)/libmemory-verbose.o: memory-verbose.c $(MEM_DEPS)
610 -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_VERBOSE memory.c || touch $@
612 $(L)/libmemory-paranoid.o: memory-paranoid.c $(MEM_DEPS)
613 -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_PARANOID memory.c || touch $@
615 $(L)/libmemory-leak.o: memory-leak.c $(MEM_DEPS)
616 -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_LEAK memory.c || touch $@
618 $(L)/libmemory-cache.o: memory-cache.c $(MEM_DEPS)
619 -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_CACHE memory.c || touch $@
621 $(L)/libmemory-isomalloc.o: memory-isomalloc.c $(MEM_DEPS)
622 -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_ISOMALLOC memory.c || touch $@
624 $(L)/libmemory-charmdebug.o: memory-charmdebug.c $(MEM_DEPS)
625 -$(CHARMC) -I. -optimize -o $@ -DCMK_MEMORY_BUILD_CHARMDEBUG memory.c || touch $@
627 $(L)/libmemory-charmdebug-slot.o: memory-charmdebug.c $(MEM_DEPS)
628 -$(CHARMC) -I. -optimize -o $@ -DCMK_MEMORY_BUILD_CHARMDEBUG -DCMK_SEPARATE_SLOT memory.c || touch $@
630 $(L)/libmemory-charmdebug-mmap.o: memory-charmdebug.c $(MEM_DEPS)
631 -$(CHARMC) -I. -optimize -o $@ -DCMK_MEMORY_BUILD_CHARMDEBUG -DCPD_USE_MMAP memory.c || touch $@
633 $(L)/libmemory-charmdebug-mmap-slot.o: memory-charmdebug.c $(MEM_DEPS)
634 -$(CHARMC) -I. -optimize -o $@ -DCMK_MEMORY_BUILD_CHARMDEBUG -DCPD_USE_MMAP -DCMK_SEPARATE_SLOT memory.c || touch $@
636 ## Thread libraries (-thread)
638 LIBTHREADSDEPS = threads.c $(CVHEADERS) QUICK_THREADS
640 $(L)/libthreads-default.o: $(LIBTHREADSDEPS)
641 $(CHARMC) -o $@ -DCMK_THREADS_BUILD_DEFAULT=1 -IQuickThreads -I. threads.c
643 $(L)/libthreads-default-tls.o: $(LIBTHREADSDEPS)
644 -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_DEFAULT=1 -DCMK_THREADS_BUILD_TLS=1 -IQuickThreads -I. threads.c 2> /dev/null || touch $@
646 $(L)/libthreads-qt.o: $(LIBTHREADSDEPS)
647 $(CHARMC) -o $@ -DCMK_THREADS_BUILD_QT=1 -IQuickThreads threads.c
649 $(L)/libthreads-qt-tls.o: $(LIBTHREADSDEPS)
650 -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_QT=1 -DCMK_THREADS_BUILD_TLS=1 -IQuickThreads threads.c 2> /dev/null || touch $@
652 $(L)/libthreads-context.o: $(LIBTHREADSDEPS)
653 -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_CONTEXT=1 -IQuickThreads threads.c || touch $@
655 $(L)/libthreads-context-tls.o: $(LIBTHREADSDEPS)
656 -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_CONTEXT=1 -DCMK_THREADS_BUILD_TLS=1 -IQuickThreads threads.c 2> /dev/null || touch $@
658 $(L)/libthreads-uJcontext.o: $(LIBTHREADSDEPS) uJcontext.c
659 -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_JCONTEXT=1 -IQuickThreads -I. threads.c || touch $@
661 $(L)/libthreads-uJcontext-tls.o: $(LIBTHREADSDEPS) uJcontext.c
662 -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_JCONTEXT=1 -DCMK_THREADS_BUILD_TLS=1 -IQuickThreads -I. threads.c || touch $@
664 $(L)/libthreads-pthreads.o: $(LIBTHREADSDEPS)
665 -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_PTHREADS=1 -IQuickThreads threads.c || touch $@
667 $(L)/libthreads-fibers.o: $(LIBTHREADSDEPS)
668 -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_FIBERS=1 -IQuickThreads threads.c 2> /dev/null || touch $@
670 $(L)/libthreads-stackcopy.o: $(LIBTHREADSDEPS)
671 -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_STACKCOPY=1 -IQuickThreads threads.c || touch $@
673 $(L)/libthreads-memoryalias.o: $(LIBTHREADSDEPS)
674 -$(CHARMC) -o $@ -DCMK_THREADS_ALIAS_STACK=1 -DCMK_THREADS_BUILD_DEFAULT=1 -IQuickThreads threads.c || touch $@
676 $(L)/libthreads-qt-memoryalias.o: $(LIBTHREADSDEPS)
677 -$(CHARMC) -o $@ -DCMK_THREADS_ALIAS_STACK=1 -DCMK_THREADS_BUILD_QT=1 -IQuickThreads threads.c || touch $@
679 $(L)/libthreads-context-memoryalias.o: $(LIBTHREADSDEPS)
680 -$(CHARMC) -o $@ -DCMK_THREADS_ALIAS_STACK=1 -DCMK_THREADS_BUILD_CONTEXT=1 -IQuickThreads threads.c || touch $@
682 $(L)/libthreads-uJcontext-memoryalias.o: $(LIBTHREADSDEPS)
683 -$(CHARMC) -o $@ -DCMK_THREADS_ALIAS_STACK=1 -DCMK_THREADS_BUILD_JCONTEXT=1 -IQuickThreads -I. threads.c || touch $@
685 ## Global swapping (-swapglobal)
686 swapglobal-target: $(L)/libglobal-swap.o $(L)/libglobal-copy.o $(L)/loadsym.o
688 $(L)/libglobal-swap.o: global-elfgot.C $(CVHEADERS)
689 -$(CHARMC) -c global-elfgot.C -o $@ || touch $@
691 $(L)/libglobal-copy.o: global-elfcopy.C $(CVHEADERS)
692 -$(CHARMC) -c global-elfcopy.C -o $@ || touch $@
694 $(L)/loadsym.o: loadsym.c $(CVHEADERS)
695 -$(CHARMC) -c loadsym.c -o $@ || touch $@
697 ###############################################################################
699 # Charm Libraries
701 ###############################################################################
703 CK_LIBS_CORE=$(L)/libck.a
705 LIBCK_CORE=trace-common.o tracec.o tracef.o init.o register.o qd.o ck.o main.o \
706 msgalloc.o ckfutures.o ckIgetControl.o debug-message.o debug-charm.o ckcallback.o \
707 cklocation.o ckarray.o ckreduction.o ckarrayreductionmgr.o \
708 tempo.o waitqd.o LBDatabase.o lbdb.o lbdbf.o charisma.o ckobjQ.o \
709 LBAgent.o LBProfit.o ckcheckpoint.o ckmemcheckpoint.o ckevacuation.o ckmessagelogging.o\
710 LBDBManager.o LBComm.o LBObj.o LBMachineUtil.o CentralPredictor.o \
711 BaseLB.o CentralLB.o HybridBaseLB.o NborBaseLB.o \
712 ckgraph.o LButil.o Refiner.o RefinerApprox.o \
713 RefinerComm.o bitvecset.o ckset.o ckheap.o CommLBHeap.o \
714 NullLB.o LBSimulation.o $(COMLIB_CORE_OBJS) modifyScheduler.o \
715 charmProjections.o cktiming.o ckbitvector.o \
716 pathHistory.o controlPoints.o arrayRedistributor.o cp_effects.o trace-controlPoints.o
718 charm-target: converse $(L)/libck.a $(L)/libckf.a loadbalancers default_libs comlib_objs
720 CHARMLIBS: charm++ CONVLIBS
721 cd libs; $(MAKE) charmlibs OPTS='$(OPTS)'
723 $(L)/libck.a: $(LIBCK_CORE)
724 $(CHARMC) -o $@ $(LIBCK_CORE)
726 ## Charm fortran AMPI
728 CK_FOR_LIBS_CORE=$(L)/libckf.a
730 LIBCKF_CORE=charmf.o charmmod.o
732 $(L)/libckf.a: $(LIBCKF_CORE)
733 -$(CHARMC) -o $@ $(LIBCKF_CORE) || touch $@
735 charmf.o: charmf.C $(CKHEADERS) charmf.h
736 $(CHARMC) -c -I. charmf.C
738 charmmod.o: charmmod.f90
739 -$(CHARMC) -c charmmod.f90 || touch $@
740 -$(CHARMC) -cpmod ../include charm.M
742 ## Tracing libraries (profiling, -tracemode)
743 LIBTRACE_PROJ=trace-projections.o
744 $(L)/libtrace-projections.a: $(LIBTRACE_PROJ)
745 $(CHARMC) -o $@ $(LIBTRACE_PROJ)
747 LIBTRACE_SUMM=trace-summary.o
748 $(L)/libtrace-summary.a: $(LIBTRACE_SUMM)
749 $(CHARMC) -o $@ $(LIBTRACE_SUMM)
751 LIBTRACE_UTIL=trace-utilization.o
752 $(L)/libtrace-utilization.a: $(LIBTRACE_UTIL)
753 $(CHARMC) -o $@ $(LIBTRACE_UTIL)
755 LIBTRACE_SIMPLE=trace-simple.o
756 $(L)/libtrace-simple.a: $(LIBTRACE_SIMPLE)
757 $(CHARMC) -o $@ $(LIBTRACE_SIMPLE)
759 libtrace-Tau.o: trace-Tau.C charm++.h charm.h converse.h conv-config.h \
760 conv-autoconfig.h conv-common.h conv-mach.h conv-mach-opt.h \
761 conv-mach-ifort.h pup_c.h conv-cpm.h conv-cpath.h conv-qd.h \
762 conv-random.h conv-lists.h conv-trace.h persistent.h debug-conv.h pup.h \
763 middle.h middle-conv.h cklists.h ckbitvector.h ckstream.h init.h \
764 ckhashtable.h debug-charm.h CkMarshall.decl.h cksection.h ckcallback.h \
765 conv-ccs.h sockRoutines.h ccs-server.h ckobjQ.h ckreduction.h \
766 CkReduction.decl.h CkArrayReductionMgr.decl.h \
767 ckmemcheckpoint.h CkMemCheckpoint.decl.h readonly.h ckarray.h \
768 cklocation.h LBDatabase.h lbdb.h LBDBManager.h LBObj.h LBOM.h LBComm.h \
769 LBMachineUtil.h lbdb++.h LBDatabase.decl.h NullLB.decl.h BaseLB.decl.h \
770 CkLocation.decl.h CkArray.decl.h ComlibArrayListener.h ComlibStrategy.h \
771 convcomlibstrategy.h ComlibLearner.h envelope.h envelope-path.h CkFutures.decl.h \
772 charisma.h charisma.decl.h tempo.h tempo.decl.h waitqd.h waitqd.decl.h \
773 sdag.h ckcheckpoint.h CkCheckpoint.decl.h ckevacuation.h \
774 ckarrayreductionmgr.h trace.h trace-bluegene.h trace-simple.h \
775 register.h trace-common.h trace-simpleBOC.h TraceSimple.decl.h \
776 TraceSimple.def.h
777 $(CHARMC) -c -I. $(TAU_INCLUDE) $(TAU_DEFS) trace-Tau.C -o libtrace-Tau.o
779 tau_selective.o: $(TAUROOT)/utils/tau_selective.cpp
780 $(CHARMC) -I$(TAUROOT)/utils -DTAU_DYNINST $(TAUROOT)/utils/tau_selective.cpp
782 $(L)/libtrace-Tau.a: $(TAU_TRACE_OBJ) tau_selective.o
783 $(CHARMC) $(TAU_LIBS) -o $@ $(TAU_TRACE_OBJ) tau_selective.o $(TAU_TRACE_OBJ)
785 LIBTRACE_COUNT=trace-counter.o
786 $(L)/libtrace-counter.a: $(LIBTRACE_COUNT)
787 $(CHARMC) -o $@ $(LIBTRACE_COUNT)
789 LIBTRACE_BG=trace-bluegene.o
790 $(L)/libtrace-bluegene.a:$(LIBTRACE_BG)
791 $(CHARMC) -o $@ $(LIBTRACE_BG)
793 LIBTRACE_MEMORY=trace-memory.o
794 $(L)/libtrace-memory.a: $(LIBTRACE_MEMORY)
795 $(CHARMC) -o $@ $(LIBTRACE_MEMORY)
797 LIBTRACE_ALL=trace-all.o trace-projections.o trace-summary.o trace-simple.o \
798 $(TAU_TRACE_OBJ) trace-projector.o traceCore.o traceCoreCommon.o charmProjections.o converseProjections.o machineProjections.o trace-memory.o trace-utilization.o
800 $(L)/libtrace-all.a: $(LIBTRACE_ALL)
801 $(CHARMC) -o $@ $(LIBTRACE_ALL)
803 LIBTRACE_PROJECTOR=trace-projector.o traceCore.o traceCoreCommon.o charmProjections.o converseProjections.o machineProjections.o
804 $(L)/libtrace-projector.a: $(LIBTRACE_PROJECTOR)
805 $(CHARMC) -o $@ $(LIBTRACE_PROJECTOR)
807 LIBTRACE_CONVERSE=trace-converse.o
808 $(L)/libtrace-converse.a: $(LIBTRACE_CONVERSE)
809 $(CHARMC) -o $@ $(LIBTRACE_CONVERSE)
811 LIBTRACE_FOR=tracef_f.o
812 $(L)/libtracef_f.a: $(LIBTRACE_FOR)
813 -$(CHARMC) -o $@ $(LIBTRACE_FOR) || touch $@
815 tracef_f.o: tracef_f.f90
816 -$(CHARMC) -o $@ -c tracef_f.f90 && $(CHARMC) -cpmod ../include tracemod.M || touch $@
818 # used for make depends
819 TRACE_OBJS = trace-projections.o trace-summary.o trace-simple.o \
820 trace-counter.o trace-utilization.o \
821 trace-bluegene.o trace-projector.o trace-converse.o trace-all.o \
822 trace-memory.o
825 ###############################################################################
827 # Dynamic Load Balancers
829 ###############################################################################
831 loadbalancers: $(ALL_LDBS) $(L)/libmoduleEveryLB.a $(L)/libmoduleCommonLBs.a
833 ######################################################################
835 #Communication Optimization Library
837 ######################################################################
839 STRATEGY_OBJS = MPIStrategy.o StreamingStrategy.o \
840 DummyStrategy.o NodeMulticast.o ChunkMulticastStrategy.o OneTimeMulticastStrategy.o \
841 EachToManyMulticastStrategy.o ComlibSectionInfo.o \
842 AAPLearner.o ComlibStats.o AAMLearner.o \
843 MsgPacker.o MulticastStrategy.o DirectMulticastStrategy.o \
844 RingMulticastStrategy.o MultiRingMulticast.o\
845 PipeBroadcastStrategy.o MeshStreamingStrategy.o \
846 PrioStreaming.o BroadcastStrategy.o RectMulticastStrategy.o \
847 convcomlibstrategy.o ComlibManager.o ComlibStrategy.o
849 CONVERSE_COM_OBJS = gridrouter.o hypercuberouter.o treerouter.o petable.o \
850 3dgridrouter.o graphrouter.o hypercubetopology.o \
851 routerstrategy.o convcomlibmanager.o pipebroadcastconverse.o \
852 pipelinestrategy.o prefixrouter.o
854 COMLIB_OBJS = $(STRATEGY_OBJS) $(CONVERSE_COM_OBJS)
856 comlib_objs: $(L)/libmodulecomlib.a $(L)/libconvcom.a
858 $(L)/libconvcom.a: $(COMLIB_OBJS)
859 $(CHARMC) -o $(L)/libconvcom.a $(CONVERSE_COM_OBJS)
861 #for backward compatibility, keep libmodulecommlib.a with double m.
862 $(L)/libmodulecomlib.a: $(COMLIB_OBJS)
863 $(CHARMC) -o $(L)/libmodulecomlib.a $(COMLIB_OBJS)
864 cp -f $(L)/libmodulecomlib.a $(L)/libmodulecommlib.a
867 ###############################################################################
869 # BlueGene Emulator
871 ###############################################################################
873 bigsim: bigsim-target
875 bigemulator: bigsim
877 bigsim-target: charm++ $(L)/libconv-bigsim.a $(L)/libconv-bigsim-logs.a $(L)/libconv-bluegene-stub.a $(L)/libblue-standalone.a METIS
879 $(L)/libbluegene.a: BlueGene.C BlueGene.h BlueGene.decl.h BlueGene.def.h
880 $(CHARMC) -c BlueGene.C
881 $(CHARMC) -o $@ BlueGene.o
883 # (Converse) Blue Gene emulator
884 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
885 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
886 BIGSIM_IO_OBJS = bigsim_read.o bigsim_logs.o bigsim_api.o
888 LIBBLUE_OBJS = $(BLUE_OBJS) $(BIGSIM_IO_OBJS) blue_stub.o blue_standalone.o
890 $(L)/libconv-bigsim.a: $(BLUE_OBJS)
891 $(CHARMC) -o $@ $(BLUE_OBJS)
893 $(L)/libconv-bigsim-logs.a: $(BIGSIM_IO_OBJS)
894 $(CHARMC) -o $@ $(BIGSIM_IO_OBJS)
896 $(L)/libconv-bluegene-stub.a: blue_stub.o
897 $(CHARMC) -o $@ blue_stub.o
899 $(L)/libblue-standalone.a: blue_standalone.o
900 $(CHARMC) -o $@ blue_standalone.o
902 ###############################################################################
904 # The CPM scanner
906 ###############################################################################
908 conv-cpm: conv-cpm.o
909 $(NATIVECHARMC) -language c -o conv-cpm -cp ../bin/ conv-cpm.o
911 conv-cpm.o: conv-cpm.c $(CVHEADERS)
912 $(NATIVECHARMC) conv-cpm.c
914 ###############################################################################
916 # The interface translator
918 ###############################################################################
920 XIHEADERS=conv-autoconfig.h xi-symbol.h xi-util.h xi-grammar.tab.h
921 CHARMXIOBJ=xi-main.o xi-symbol.o xi-grammar.tab.o xi-scan.o xi-util.o
922 SDAGOBJ=sdag-globals.o CSdagConstruct.o CEntry.o
923 SDAGHEADERS= CToken.h EToken.h CParsedFile.h \
924 sdag-globals.h CEntry.h
926 charmxi: ../bin/charmxi
928 ../bin/charmxi: $(CHARMXIOBJ) $(SDAGOBJ)
929 $(NATIVECHARMC) -language c++ -cp ../bin/ -o charmxi $(CHARMXIOBJ) $(SDAGOBJ)
931 xi-main.o: xi-main.C $(XIHEADERS) $(SDAGHEADERS)
932 $(NATIVECHARMC) xi-main.C
934 xi-symbol.o: xi-symbol.C $(XIHEADERS) $(SDAGHEADERS)
935 $(NATIVECHARMC) xi-symbol.C
937 xi-util.o: xi-util.C $(XIHEADERS) $(SDAGHEADERS)
938 $(NATIVECHARMC) xi-util.C
940 xi-grammar.tab.o: xi-grammar.tab.C $(XIHEADERS) $(SDAGHEADERS)
941 $(NATIVECHARMC) xi-grammar.tab.C
943 xi-scan.o: xi-scan.C $(XIHEADERS) $(SDAGHEADERS)
944 $(NATIVECHARMC) -I. -DYY_NEVER_INTERACTIVE xi-scan.C
946 sdag-globals.o: sdag-globals.C $(XIHEADERS) $(SDAGHEADERS)
947 $(NATIVECHARMC) -c sdag-globals.C
949 CSdagConstruct.o: CSdagConstruct.C $(XIHEADERS) $(SDAGHEADERS)
950 $(NATIVECHARMC) -c CSdagConstruct.C
952 CEntry.o: CEntry.C $(XIHEADERS) $(SDAGHEADERS)
953 $(NATIVECHARMC) -c CEntry.C
955 ###############################################################################
957 # Simple Messaging
959 ###############################################################################
961 $(L)/libtsm.a: converse simplemsg.c simplemsg.h
962 $(CHARMC) -o $@ simplemsg.c
964 $(L)/libsm.a: converse sm.c sm.h
965 $(CHARMC) -o $@ sm.c
967 ###############################################################################
969 # PVM
971 ###############################################################################
973 PVMC=pvmc_buf.o pvmc_comm.o pvmc_conv.o pvmc_main.o pvmc_pack.o pvmc_groups.o
975 $(L)/libpvmc.a: $(PVMC)
976 $(CHARMC) -o $@ $(PVMC)
978 pvmc_buf.o: pvmc_buf.c pvmc.h pvm3.h converse.h
979 $(CHARMC) -o $@ pvmc_buf.c
981 pvmc_conv.o: pvmc_conv.c pvmc.h pvm3.h converse.h
982 $(CHARMC) -o $@ pvmc_conv.c
984 pvmc_pack.o: pvmc_pack.c pvmc.h pvm3.h converse.h
985 $(CHARMC) -o $@ pvmc_pack.c
987 pvmc_comm.o: pvmc_comm.c pvmc.h pvm3.h converse.h
988 $(CHARMC) -o $@ pvmc_comm.c
990 pvmc_groups.o: pvmc_groups.c pvmc.h pvm3.h converse.h
991 $(CHARMC) -o $@ pvmc_groups.c
993 pvmc_main.o: pvmc_main.c pvmc.h pvm3.h converse.h
994 $(CHARMC) -o $@ pvmc_main.c
996 $(L)/libf90charm.a: charmxi f90main.ci f90main.h f90main.C futil.f90
997 $(CHARMC) f90main.ci
998 $(CHARMC) -c -DAMPI_FORTRAN=1 f90main.C
999 -$(CHARMC) -c futil.f90
1000 -$(CHARMC) -o $@ f90main.o futil.o
1002 ###############################################################################
1004 # Make clean
1006 ###############################################################################
1008 install:
1009 @test ! -d $(DESTDIR)/include && mkdir -p $(DESTDIR)/include || true
1010 @test ! -d $(DESTDIR)/lib && mkdir -p $(DESTDIR)/lib || true
1011 @test ! -d $(DESTDIR)/lib_so && mkdir -p $(DESTDIR)/lib_so || true
1012 @test ! -d $(DESTDIR)/bin && mkdir -p $(DESTDIR)/bin || true
1013 cp -f ../include/* $(DESTDIR)/include
1014 cp -f ../lib/* $(DESTDIR)/lib
1015 cp -f ../lib_so/* $(DESTDIR)/lib_so
1016 # cp -f ../bin/* $(DESTDIR)/bin
1017 for f in ../bin/*; do if test -f $$f; then cp -f $$f $(DESTDIR)/bin; fi; done
1020 clean:
1021 rm -f conv-autoconfig.h config.cache
1022 rm -f QuickThreads/libqt.a
1023 rm -f charmxi conv-cpm
1024 rm -f TAGS basics cmk_extras core
1025 rm -f core *.a
1026 rm -f core *.o
1027 rm -f core #*#
1028 rm -f core *~
1029 rm -f *.stamp
1030 if [ -d charmrun ] ; then ( cd charmrun; make clean ) ; fi
1031 -( cd doc && $(MAKE) clean )
1032 ( cd libs; $(MAKE) clean )
1033 ( cd ../examples && $(MAKE) clean )
1034 ( cd ../tests && $(MAKE) clean )
1036 veryclean:
1037 rm -rf ../bin
1038 rm -rf ../lib
1039 rm -rf ../src
1040 rm -rf ../examples
1041 rm -rf ../tests
1042 rm -rf ../include
1043 rm -rf ../doc
1044 mv Makefile .Makefile
1045 mv Make.depends .Make.depends
1046 rm -rf [a-z]* [A-Z]*
1047 mv .Make.depends Make.depends
1048 rm -rf .[a-z]* .[A-Z]*
1051 config: configure.in
1052 autoconf && autoheader
1054 cidepends: charmxi
1055 echo "Creating " $(CIDEPENDFILE) " ...";
1056 if [ -f $(CIDEPENDFILE) ]; then \
1057 /bin/cp -f $(CIDEPENDFILE) $(CIDEPENDFILE).old; \
1058 fi; \
1059 echo '#generated by make cidepends' > $(CIDEPENDFILE); \
1060 for cifile in $(wildcard *.ci); do \
1061 echo "checking generated modules for $$cifile" ; \
1062 $(CHARMXI) -M $$cifile | sed '/\.stamp:/a \\t $$(CHARMC) -intrinsic $$< && touch $$@' >> $(CIDEPENDFILE) ; \
1063 done
1065 depends: cidepends
1066 $(MAKE) basics
1067 echo "Creating " $(DEPENDFILE) " ...";
1068 if [ -f $(DEPENDFILE) ]; then \
1069 /bin/cp -f $(DEPENDFILE) $(DEPENDFILE).old; \
1070 fi; \
1071 echo '#generated by make depends' > $(DEPENDFILE); \
1072 touch metis.h scotch.h; \
1073 processFiles=''; \
1074 for i in $(LIBCONV_CORE) $(TRACE_OBJS) $(LIBCK_CORE) $(ALL_LB_OBJS) $(LIBBLUE_OBJS) $(COMLIB_OBJS) ; do \
1075 processed='false'; \
1076 for f in $$processFiles; do \
1077 if test $$i = $$f ; then \
1078 processed=true; break; \
1079 fi; \
1080 done; \
1081 test $$processed = 'true' && continue; \
1082 processFiles="$$processFiles $$i"; \
1083 SRCFILE=`basename $$i .o`.C ; \
1084 [ ! -f $$SRCFILE ] && SRCFILE=`basename $$i .o`.c ; \
1085 echo "checking dependencies for $$SRCFILE" ; \
1086 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; \
1087 echo '' >> $(DEPENDFILE) ; \
1088 done; \
1089 rm -f metis.h scotch.h
1092 dependsCaseSensitive: cidepends
1093 $(MAKE) basics
1094 @echo "Creating " $(DEPENDFILE) " ...";
1095 if [ -f $(DEPENDFILE) ]; then \
1096 /bin/cp -f $(DEPENDFILE) $(DEPENDFILE).old; \
1097 fi; \
1098 echo '#generated by make depends' > $(DEPENDFILE); \
1099 touch metis.h scotch.h; \
1100 processFiles=''; \
1101 for i in $(LIBCONV_CORE) $(TRACE_OBJS) $(LIBCK_CORE) $(ALL_LB_OBJS) $(LIBBLUE_OBJS) $(COMLIB_OBJS); do \
1102 processed='false'; \
1103 for f in $$processFiles; do \
1104 if test $$i = $$f ; then \
1105 processed=true; break; \
1106 fi; \
1107 done; \
1108 test $$processed = 'true' && continue; \
1109 processFiles="$$processFiles $$i"; \
1110 SRCFILE=`basename $$i .o`.C ; \
1111 SRCDIR=`dirname $$i` ; \
1112 found=`/usr/bin/find $$SRCDIR -depth 1 -name $$SRCFILE`; \
1113 [ ! $$found ] && SRCFILE=`basename $$i .o`.c ; \
1114 echo "checking dependencies for $$SRCFILE" ; \
1115 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; \
1116 echo '' >> $(DEPENDFILE) ; \
1117 done; \
1118 rm -f metis.h scotch.h