Implement malloc_info to replace mall_info
[charm.git] / src / scripts / Makefile
blob498a4e424a11a9239ba1bc3dafc9891c5d357b16
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 include charmpath.mk
30 CC=$(CHARMC)
31 CXX=$(CHARMC)
32 CFLAGS=-I.
33 CXXFLAGS=-I.
35 all: charm++ bigsim LIBS AMPI f90charm TSM SM PVM doc everylb
37 all-test: bigsim LIBS
38 $(MAKE) -C ../tests all
39 $(MAKE) -C ../examples all
41 charm++: charm-target
42 @echo "$(OPTS)" > OPTS
43 touch charm++
45 bgampi: bigsim AMPI
47 TSM: converse $(L)/libtsm.a
49 SM: converse $(L)/libsm.a
51 PVM: converse $(L)/libpvmc.a
53 AMR: charm++ LIBS
54 $(MAKE) -C libs/ck-libs/amr all
56 FEM: ParFUM
58 ParFUM: charm++ AMPI
59 $(MAKE) -C libs/ck-libs/ ParFUM
61 MBLOCK: AMPI MBLOCKC MBLOCKF
63 MBLOCKC: charm++ LIBS
65 MBLOCKF: MBLOCKC
67 AMPI: charm++ $(BIGSIM)
68 $(MAKE) -C libs/ck-libs/ ampi
70 AMPIC AMPIF: AMPI
72 ARMCI: charm++ LIBS
75 f90charm: charm++ $(L)/libf90charm.a
77 DEFAULT_LIBS= completion NDMeshStreamer dummy pythonCCS io ckloop
79 default_libs: $(DEFAULT_LIBS)
81 $(DEFAULT_LIBS) cache pose fftlib liveViz metis:
82 $(MAKE) -C libs/ck-libs/$@
84 openmp_llvm:
85 $(MAKE) -C libs/conv-libs/$@
87 ChaNGa: charm++ cache liveViz everylb ckloop
89 cache: charm-core
90 liveViz: charm-core
91 io: charm-core
92 pose: charm-core
93 fftlib: charm-core
94 dummy: charmxi
95 pythonCCS: charmxi
96 completion: charmxi
97 NDMeshStreamer: charm-core completion
99 $(L)/libmpi-mainmodule.a: mpi-mainmodule.o
100 $(CHARMC) -o $@ $<
102 tmgr: $(L)/libtmgr.a
103 $(L)/libtmgr.a:
104 $(MAKE) -C topomanager -f Makefile_charm
106 $(L)/libckmain.a: main.o
107 $(CHARMC) -o $@ $^
109 translators: charmxi conv-cpm
111 msa: charm++
112 $(MAKE) -C libs/ck-libs/multiphaseSharedArrays
114 jade: charm++ msa
115 # make the lib, include
116 $(MAKE) -C langs/jade
119 # This should be done offline, since the user does not need to compile
120 # parser files, etc. All they need is the libjade + include files,
121 # antlr.jar, jade.jar, and a few scripts which the jade target takes
122 # care of.
123 #jadeall: jade
124 # make parser.g -> .java files
125 # $(MAKE) -C langs/jade p
126 # make the jade.jar file
127 # $(MAKE) -C ../java/charm/jade
129 #include TAU defs
130 TAU_MAKEFILE=Make.tau
131 include $(TAU_MAKEFILE) #stub-makefile
133 #builds TAU's trace library
134 Tau:
135 echo "buliding charm trace library with support for TAU."
136 $(MAKE) $(L)/libtrace-Tau.a $(L)/libtrace-all.a TAU_TRACE_OBJ=libtrace-Tau.o
138 LIBS: CONVLIBS CHARMLIBS everylb
139 $(MAKE) -C libs otherlibs
140 echo "Built LIBS Successfully"
142 bgtest: bigsim LIBS
143 $(MAKE) -C ../tests bgtest
144 $(MAKE) -C ../examples bgtest
146 syncfttest causalfttest mpisyncfttest mlogfttest: charm++ LIBS
147 $(MAKE) -C ../tests $@
149 test: bigsim LIBS
150 $(MAKE) -C ../tests test
151 $(MAKE) -C ../examples test
153 test-converse: converse
154 $(MAKE) -C ../tests test-converse
156 test-charm: charm++
157 $(MAKE) -C ../tests test-charm
159 test-AMPI: AMPI
160 $(MAKE) -C ../tests test-AMPI
162 ps-doc: basics
163 $(MAKE) -C ../doc ps
165 pdf-doc: basics
166 $(MAKE) -C ../doc pdf
168 html-doc: basics
169 $(MAKE) -C ../doc html
171 doc: basics
172 $(MAKE) -C ../doc doc
174 CHARMC=../bin/charmc $(CHARMOPTS) $(OPTS)
176 SEQCHARMC=../bin/charmc -seq $(CHARMOPTS)
178 NATIVECHARMC=../bin/charmc -host $(CHARMOPTS)
180 CHARMXI=../bin/charmc -intrinsic $(OPTS)
182 CIDEPENDFILE = Make.cidepends
183 DEPENDFILE = Make.depends
185 include $(CIDEPENDFILE)
186 include $(DEPENDFILE)
188 CIFILES = $(wildcard *.ci)
190 %.ci.stamp: %.ci ../bin/charmxi
191 $(CHARMXI) $< && touch $@
193 # Automatically generated by script Makefile_lb.sh
194 include Make.lb
196 # Build changes for external libraries
197 include Make.extlib
199 # GPU manager support
200 include Make.gpu
202 ###############################################################################
204 # The basics (bin, lib, include, headers, charmc, conv-mach.sh)
206 ###############################################################################
208 CVHEADERS=cpthreads.h converse.h conv-trace.h conv-random.h conv-qd.h \
209 msgq.h queueing.h conv-taskQ.h taskqueue.h conv-cpath.h conv-cpm.h persistent.h\
210 trace.h trace-common.h trace-bluegene.h trace-projections.h \
211 trace-simple.h trace-controlPoints.h charm-api.h \
212 conv-ccs.h ccs-client.c ccs-client.h \
213 ccs-server.h ccs-auth.c ccs-auth.h \
214 memory-isomalloc.h debug-conv.h debug-conv++.h conv-autoconfig.h \
215 conv-common.h conv-config.sh conv-config.h conv-mach.h conv-mach.sh \
216 blue.h blue-conv.h bgconverse.h cmipool.h mempool.h cmiqueue.h \
217 cmidirect.h cmidirectmanytomany.h cmitls.h lrtslock.h conv-rdma.h lrts-common.h
219 # The .c files are there to be #included by clients whole
220 # This is a bit unusual, but makes client linking simpler.
221 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\
222 ckimage.h ckdll.h ckhashtable.h ckbitvector.h cklists.h ckliststring.h \
223 cksequence.h ckstatistics.h ckvector3d.h conv-lists.h ckcomplex.h \
224 sockRoutines.h sockRoutines.c cmimemcpy.h simd.h SSE-Double.h SSE-Float.h \
225 crc32.h ckBIconfig.h rand48_replacement.h ckregex.h
227 CKHEADERS=ck.h ckstream.h objid.h envelope.h init.h qd.h charm.h charm++.h \
228 ckfutures.h ckIgetControl.h cktiming.h debug-charm.h\
229 ckcallback.h CkCallback.decl.h ckcallback-ccs.h \
230 cksection.h ckmessage.h cklocrec.h ckmigratable.h \
231 ckarrayindex.h ckarrayoptions.h ckarray.h cklocation.h ckmulticast.h ckreduction.h \
232 ckcheckpoint.h ckmemcheckpoint.h ckevacuation.h ckrdmawrapper.h ckrdma.h\
233 ckmessagelogging.h ckcausalmlog.h ckobjid.h\
234 ckobjQ.h readonly.h \
235 $(UTILHEADERS) \
236 waitqd.h LBDatabase.h MetaBalancer.h lbdb.h lbdb++.h LBProfit.h $(LBHEADERS) \
237 LBDBManager.h LBComm.h LBOM.h LBObj.h LBMachineUtil.h LBAgent.h \
238 RefinerTemp.h Refiner.h RefinerApprox.h RefinerComm.h ckgraphTemp.h ckgraph.h ckheap.h \
239 elements.h CommLBHeap.h topology.h manager.h \
240 BaseLB.h CentralLB.h CentralLBMsg.h \
241 NborBaseLB.h DistBaseLB.h HybridBaseLB.h HybridLBMsg.h \
242 NeighborLBMsg.h \
243 BlueGene.h middle.h middle-conv.h middle-blue.h \
244 CkMarshall.decl.h CkArray.decl.h CkLocation.decl.h CkMulticast.decl.h \
245 CkReduction.decl.h \
246 waitqd.decl.h \
247 CkFutures.decl.h CkCheckpoint.decl.h CkCheckpointStatus.decl.h CkMemCheckpoint.decl.h \
248 LBDatabase.decl.h MetaBalancer.decl.h CentralLB.decl.h NullLB.decl.h \
249 BaseLB.decl.h \
250 NborBaseLB.decl.h DistBaseLB.decl.h \
251 HybridBaseLB.decl.h EveryLB.decl.h CommonLBs.decl.h \
252 TraceSummary.decl.h TraceAutoPerf.decl.h TraceProjections.decl.h \
253 TraceSimple.decl.h TraceControlPoints.decl.h TraceTau.decl.h \
254 TraceUtilization.decl.h BlueGene.decl.h \
255 ckdirect.h \
256 ControlPoints.decl.h PathHistory.decl.h \
257 pathHistory.h envelope-path.h \
258 XArraySectionReducer.h \
259 controlPoints.h controlPointsf.h arrayRedistributor.h cp_effects.h register.h stats.h \
260 cksequence_internal.h cksequence_factory.h random_sequence.h strided_sequence.h \
261 mpi-interoperate.h mpi_main.decl.h \
262 trace-perf.h picsdefs.h picsautoperf.h picstreenode.h \
263 picsdecisiontree.h \
264 picsautoperfAPI.h picsautoperfAPIC.h \
265 $(CVHEADERS)
267 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
269 ALLHEADERS=$(CKHEADERS) \
270 simplemsg.h sm.h pvmc.h pvm3.h sdag.h vector2d.h \
271 graph.h bitvecset.h ckset.h LBSimulation.h \
272 $(BLUE_HEADERS)
274 basics: headers
275 touch basics
277 # Headers is used only for the dependencies
278 headers: dirs+sources
279 $(MAKE) -C topomanager -f Makefile_charm headers
280 $(MAKE) charmxi
281 $(MAKE) headerlinks
283 configure: Makefile.am configure.ac
284 autoreconf
286 conv-autoconfig.h.in: configure.ac
287 autoheader
289 conv-autoconfig.h: configure conv-autoconfig.h.in config_opts.sh
290 @. ./config_opts.sh; echo ./configure $(QUIET) $$CONFIG_OPTS; \
291 ./configure $(QUIET) $$CONFIG_OPTS && touch conv-autoconfig.h
293 .PHONY: clean veryclean VERSION.new config
295 VERSION: VERSION.new
296 SRCBASE=$(SRCBASE) ./commitid.sh
298 commitid.c: VERSION
299 echo "extern const char * const CmiCommitID;" > $@
300 echo "const char * const CmiCommitID = \"`cat VERSION`\";" >> $@
301 commitid.o: CC=$(CHARMC)
303 headerlinks: dirs+sources Makefile $(ALLHEADERS)
304 @[ "x$QUIET" = "x--quiet" ] || echo "Soft-linking headers..."
305 -for hdr in $(filter-out dirs+sources Makefile,$(sort $^)) ; do test ! -f "../include/`basename $$hdr`" && ./system_ln "../tmp/$$hdr" ../include ; done
306 touch headerlinks
308 dirs+sources:
309 # rm -f .gdir
310 # (cd .. ; basename "`pwd`" | sed -e 's@-.*@@') > .gdir
312 find . -type l -exec rm {} \;
313 rm -rf QuickThreads
314 rm -rf hwloc
315 rm -rf libs
316 rm -rf ../bin ; mkdir ../bin
317 if case `cat .vdir` in *win64*) true;; *-win-*) true;; *) false;; esac; then \
318 cp -f $(SRCBASE)/arch/win/unix2nt* ../bin; \
319 cp -f $(SRCBASE)/arch/win/createlink.exe ../bin; \
321 rm -rf ../lib ; mkdir ../lib
322 rm -rf ../lib_so ; mkdir ../lib_so; touch ../lib_so/.charmso
323 rm -rf ../examples
324 rm -rf ../tests
325 rm -rf ../doc ; ln -s ../doc ../doc
326 $(SRCBASE)/scripts/gatherflat $(SRCBASE)/scripts .
327 ./gatherflat $(SRCBASE)/conv-core .
328 ./gatherflat $(SRCBASE)/conv-ldb .
329 ./gatherflat $(SRCBASE)/conv-ccs .
330 ./gatherflat $(SRCBASE)/conv-perf .
331 ./gatherflat $(SRCBASE)/ck-core .
332 ./gatherflat $(SRCBASE)/ck-perf .
333 ./gatherflat $(SRCBASE)/ck-pics .
334 ./gatherflat $(SRCBASE)/ck-tune .
335 ./gatherflat $(SRCBASE)/ck-ldb .
336 ./gatherflat $(SRCBASE)/ck-cp .
337 ./gatherflat $(SRCBASE)/langs/simplemsg .
338 ./gatherflat $(SRCBASE)/langs/pvmc .
339 ./gatherflat $(SRCBASE)/langs/bluegene .
340 ./gatherflat $(SRCBASE)/langs/f90charm .
341 ./gatherflat $(SRCBASE)/xlatcpm .
342 ./gathertree $(SRCBASE)/QuickThreads QuickThreads
343 ./gathertree $(SRCBASE)/../contrib/hwloc hwloc
344 ./gathertree $(SRCBASE)/libs libs
345 ./gathertree $(SRCBASE)/arch/util .
346 ./gathertree $(SRCBASE)/util .
347 ./gathertree $(SRCBASE)/langs langs
348 ./gathertree $(SRCBASE)/langs/jade langs/jade
349 ./gathertree $(SRCBASE)/arch/common .
350 ./gathertree $(SRCBASE)/arch/`cat .gdir` .
351 test -f $(SRCBASE)/arch/`cat .gdir`/gdir_link && cat $(SRCBASE)/arch/`cat .gdir`/gdir_link > .gdir.new && ./gathertree $(SRCBASE)/arch/`cat .gdir.new` . || true
352 ./gatherflat $(SRCBASE)/arch/`cat .vdir` .
353 ./gathertree $(SRCBASE)/../examples ../examples
354 ./gathertree $(SRCBASE)/../tests ../tests
355 rm -f ../bin/dep.pl ; cp dep.pl ../bin/
356 chmod +x charmc
357 -./system_ln ../tmp/charmc ../bin/
358 -./system_ln $(SRCBASE)/scripts/testrun ../bin/
359 -./system_ln ../tmp/tree.txt ../bin/
360 -./system_ln ../tmp/fuzzytree.txt ../bin/
361 # -ln -s ../../java/bin charmjavabin
362 # -ln -s ../../java/bin ../bin/charmjavabin
363 # -ln -s charmjavabin/* ../bin/
364 # -ln -s ../java ..
365 # rm -f .gdir
366 rm -rf ../include ; mkdir ../include
367 -./system_ln ../tmp/conv-*.*h ../include
368 -./system_ln ../tmp/cc-*.*h ../include
369 -./system_ln ../tmp/conv-mach-opt.sh ../include
370 if [ -x ./special.sh ] ; then SRCBASE=$(SRCBASE) ./special.sh ; fi
371 if [ ! -f conv-common.h ] ; then ( touch conv-common.h ) ; fi
372 touch dirs+sources
374 ###############################################################################
376 # Converse Libraries
378 ###############################################################################
379 CLBLIBS=$(L)/libldb-rand.a $(L)/libldb-spray.a $(L)/libldb-workstealing.a $(L)/libldb-neighbor.a $(L)/libldb-none.a $(L)/libldb-test.a $(L)/libldb-bluegene.a
381 TRACELIBS = $(L)/libtrace-converse.a $(L)/libtracef_f.a
383 BUILD_TRACING=$(shell CHARMINC=.; if test -f ./conv-config.sh; then . ./conv-config.sh; echo $$CMK_TRACE_ENABLED; fi )
385 ifneq "$(BUILD_TRACING)" "0"
386 TRACELIBS += $(L)/libtrace-projections.a $(L)/libtrace-controlPoints.a $(L)/libtrace-summary.a \
387 $(L)/libtrace-utilization.a $(L)/libtrace-simple.a \
388 $(L)/libtrace-counter.a $(L)/libtrace-bluegene.a \
389 $(L)/libtrace-projector.a $(L)/libtrace-all.a \
390 $(L)/libtrace-memory.a $(L)/libtrace-perfReport.a
391 endif
393 MEMLIBS=$(L)/libmemory-default.a $(L)/libmemory-os.a $(L)/libmemory-gnu.a \
394 $(L)/libmemory-verbose.a $(L)/libmemory-paranoid.a \
395 $(L)/libmemory-leak.a $(L)/libmemory-isomalloc.a \
396 $(L)/libmemory-os-verbose.a $(L)/libmemory-os-isomalloc.a \
397 $(L)/libmemory-os-leak.a $(L)/libmemory-os-paranoid.a \
398 $(L)/libmemory-os-lock.a $(L)/libmemory-os-wrapper.a
400 BUILD_CHARMDEBUG=$(shell CHARMINC=.; if test -f ./conv-config.sh; then . ./conv-config.sh; echo $$CMK_CHARMDEBUG; fi )
402 ifneq "$(BUILD_CHARMDEBUG)" "0"
403 MEMLIBS += $(L)/libmemory-charmdebug.a $(L)/libmemory-charmdebug-mmap.a \
404 $(L)/libmemory-charmdebug-slot.a \
405 $(L)/libmemory-charmdebug-mmap-slot.a \
406 $(L)/libmemory-os-charmdebug.a $(L)/libmemory-hooks-charmdebug.a
407 endif
409 THREADLIBS=$(L)/libthreads-default.a $(L)/libthreads-default-tls.a \
410 $(L)/libthreads-qt.a $(L)/libthreads-qt-tls.a \
411 $(L)/libthreads-context.a $(L)/libthreads-context-tls.a \
412 $(L)/libthreads-uFcontext.a $(L)/libthreads-uFcontext-tls.a \
413 $(L)/libthreads-uJcontext.a $(L)/libthreads-uJcontext-tls.a \
414 $(L)/libthreads-pthreads.a $(L)/libthreads-fibers.a \
415 $(L)/libthreads-stackcopy.a $(L)/libthreads-memoryalias.a \
416 $(L)/libthreads-qt-memoryalias.a \
417 $(L)/libthreads-context-memoryalias.a \
418 $(L)/libthreads-uJcontext-memoryalias.a
420 CVLIBS=$(L)/libconv-core.a \
421 $(L)/libconv-machine.a \
422 $(L)/libconv-util.a $(L)/libconv-utilf.a \
423 $(CLBLIBS) $(TRACELIBS) $(MEMLIBS) $(THREADLIBS) \
424 $(L)/libccs-client.a $(L)/libconv-partition.a $(L)/libhwloc_embedded.a \
425 $(L)/libconv-ldb.a
427 LIBCONV_CORE=convcore.o conv-conds.o conv-taskQ.o queueing.o msgmgr.o \
428 cpm.o cpthreads.o futures.o cldb.o random.o \
429 debug-conv.o debug-conv++.o conv-ccs.o ccs-builtins.o middle-ccs.o \
430 traceCore.o traceCoreCommon.o \
431 converseProjections.o machineProjections.o \
432 quiescence.o isomalloc.o mem-arena.o conv-counter.o memory-darwin-clang.o \
433 global-nop.o cmipool.o cpuaffinity.o cputopology.o \
434 cmitls.o memoryaffinity.o commitid.o sdag.o conv-interoperate.o
436 LIBCONV_LDB = topology.o generate.o edgelist.o
438 LIBCONV_UTIL=pup_util.o pup_toNetwork.o pup_toNetwork4.o \
439 pup_xlater.o pup_c.o pup_paged.o pup_cmialloc.o \
440 ckimage.o ckdll.o ckhashtable.o sockRoutines.o \
441 conv-lists.o persist-comm.o mempool.o graph.o \
442 crc32.o lz4.o partitioning_strategies.o hilbert.o \
443 spanningTree.o ckregex.o
445 LIBCONV_UTILF=pup_f.o
447 converse: charmrun-target swapglobal-target conv-cpm tmgr hwloc-target
449 $(L)/libhwloc_embedded.a: hwloc-target
451 cpuaffinity.o: hwloc-target
453 hwloc-target: conv-autoconfig.h
454 ( $(MAKE) -C hwloc )
455 ( test -e hwloc/src/.libs/libhwloc_embedded.lib && cp -f hwloc/src/.libs/libhwloc_embedded.lib hwloc/src/.libs/libhwloc_embedded.a ) || true
456 ( cp -f hwloc/src/.libs/libhwloc_embedded.a $(L) )
457 ( cp -f hwloc/include/hwloc.h $(INC) )
458 ( cp -LRf hwloc/include/hwloc $(INC) )
459 (CHARMINC=.; . ./conv-config.sh; \
460 test -d ../lib_so && \
461 cp -f hwloc/src/.libs/libhwloc_embedded.*$$CMK_SHARED_SUF* ../lib_so/ ) || true
462 touch $@
464 charmrun-target: hwloc-target charmrun sockRoutines.c sockRoutines.h ccs-server.c ccs-server.h sockRoutines-seq.o $(L)/libck.a $(L)/libhwloc_embedded.a $(CVLIBS)
465 if [ -f charmrun ] ; then ( cp -f charmrun ../bin ) ; fi
467 QUICK_THREADS: $(CVHEADERS)
468 -( $(MAKE) -C QuickThreads clean )
469 ( cd QuickThreads;./configure )
470 ( $(MAKE) -C QuickThreads qt OPTS='$(OPTS) -Wno-error' ) || ( echo "Did you try to build netlrts-linux on a 64-bit system? Try netlrts-linux-x86_64" && false )
471 cp -f QuickThreads/libckqt.a ../lib/
472 -(CHARMINC=.; . ./conv-config.sh; \
473 test -d ../lib_so && \
474 cp -f QuickThreads/libckqt.$$CMK_SHARED_SUF ../lib_so/ ) || true
475 touch QUICK_THREADS
477 CONVLIBS: converse
478 $(MAKE) -C libs convlibs
480 $(L)/libconv-core.a: $(LIBCONV_CORE)
481 $(CHARMC) $(TAU_LIBS) -o $@ $(LIBCONV_CORE)
483 $(L)/libconv-partition.a: custom_partitioner.o set_partition_params.o
484 $(CHARMC) -o $@ $^
486 include Makefile.machine
488 $(L)/libconv-machine.a: machine.o
489 $(CHARMC) -o $@ $<
491 machine.o: machine.c $(CVHEADERS)
492 @-test -f $(INC)/mpi.h && mv -f $(INC)/mpi.h $(INC)/mpi.BAK || true
493 $(CHARMC) -I. -o $@ $<
494 @-test -f $(INC)/mpi.BAK && mv -f $(INC)/mpi.BAK $(INC)/mpi.h || true
496 $(L)/libconv-util.a: $(LIBCONV_UTIL)
497 $(CHARMC) -o $@ $(LIBCONV_UTIL)
499 $(L)/libconv-utilf.a: $(LIBCONV_UTILF)
500 -$(CHARMC) -o $@ $(LIBCONV_UTILF) || touch $@
502 $(L)/libconv-ldb.a: $(LIBCONV_LDB)
503 $(CHARMC) -o $@ $^
505 $(L)/libccs-client.a: ccs-client.o
506 $(CHARMC) -o $@ ccs-client.o
508 ccs-client.o: ccs-client.c $(CVHEADERS)
509 $(CHARMC) -DCMK_NOT_USE_CONVERSE=1 ccs-client.c
511 sockRoutines-seq.o: sockRoutines.c $(CVHEADERS) $(UTILHEADERS)
512 $(SEQCHARMC) -DCMK_NOT_USE_CONVERSE=1 -o sockRoutines-seq.o sockRoutines.c
514 pup_f.f90: pup_f.f90.sh
515 rm -f pup_f.f90 && ./pup_f.f90.sh
517 pup_f.o: pup_f.f90 $(CVHEADERS)
518 -$(CHARMC) -c pup_f.f90 && $(CHARMC) -cpmod ../include pupmod.M || touch pup_f.o
520 ## Converse load balancers (seed balancers, -balance)
521 $(L)/libldb-none.a: cldb.none.c $(CVHEADERS)
522 $(CHARMC) -o $@ cldb.none.c
524 $(L)/libldb-rand.a: cldb.rand.c cldb.h $(CVHEADERS)
525 $(CHARMC) -o $@ cldb.rand.c
527 $(L)/libldb-neighbor.a: cldb.neighbor.c cldb.neighbor.h graph.h $(CVHEADERS)
528 $(CHARMC) -o $@ cldb.neighbor.c
530 $(L)/libldb-workstealing.a: cldb.workstealing.c cldb.workstealing.h graph.h $(CVHEADERS)
531 $(CHARMC) -o $@ cldb.workstealing.c
533 $(L)/libldb-spray.a: cldb.spray.c $(CVHEADERS)
534 $(CHARMC) -o $@ cldb.spray.c
537 #$(L)/libldb-prioritycentralized.a: cldb.prioritycentralized.c cldb.prioritycentralized.h $(CVHEADERS)
538 # $(CHARMC) -o $@ cldb.prioritycentralized.c
540 #//$(L)/libldb-prioritycentralizedopt.a: cldb.prioritycentralizedopt.c cldb.prioritycentralizedopt.h $(CVHEADERS)
541 #// $(CHARMC) -o $@ cldb.prioritycentralizedopt.c
543 $(L)/libldb-test.a: cldb.test.c $(CVHEADERS)
544 $(CHARMC) -o $@ cldb.test.c
546 $(L)/libldb-bluegene.a: cldb.bluegene.c $(CVHEADERS)
547 $(CHARMC) -o $@ cldb.bluegene.c
549 ## Memory allocation libraries (-memory)
550 MEM_DEPS=memory-gnu.c memory-gnu-internal.c converse.h conv-mach.h $(CVHEADERS)
552 libmemory-%.c: memory.c
553 cp $< $@
555 # $1 is the name of the module, $2 is any additional dependency beyond memory.c and $(MEM_DEPS), $3 is extra arguments to charmc
556 define libmem
557 $(L)/libmemory-$1.a: libmemory-$1.c $(MEM_DEPS) $2
558 $(CHARMC) -I. -o $$@ $3 $$<
559 endef
561 $(eval $(call libmem,default, ,-DCMK_MEMORY_BUILD_DEFAULT))
562 $(eval $(call libmem,os, ,-DCMK_MEMORY_BUILD_OS))
563 $(eval $(call libmem,os-verbose, memory-verbose.c, -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_VERBOSE -touch-on-failure))
564 $(eval $(call libmem,os-paranoid, memory-paranoid.c, -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_PARANOID -touch-on-failure))
565 $(eval $(call libmem,os-leak, memory-leak.c, -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_LEAK -touch-on-failure))
566 $(eval $(call libmem,os-isomalloc, memory-isomalloc.c, -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_ISOMALLOC -touch-on-failure))
567 $(eval $(call libmem,os-lock, memory-lock.c, -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_LOCK -touch-on-failure))
568 $(eval $(call libmem,os-charmdebug, memory-charmdebug.c, -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_CHARMDEBUG -touch-on-failure))
569 $(L)/libmemory-os-wrapper.a: memory-os-wrapper.C $(MEM_DEPS)
570 -$(CHARMC) -o $@ memory-os-wrapper.C || touch $@
572 $(eval $(call libmem,hooks-charmdebug,,-DCMK_MEMORY_BUILD_GNU_HOOKS -DCMK_MEMORY_BUILD_CHARMDEBUG -touch-on-failure))
574 # If the system doesn't have sbrk, these compilations may fail.
575 # This is OK, but then we can't use "-memory gnu" or friends.
576 $(eval $(call libmem,gnu, ,-DCMK_MEMORY_BUILD_GNU -touch-on-failure))
577 $(eval $(call libmem,verbose, memory-verbose.c ,-DCMK_MEMORY_BUILD_VERBOSE -touch-on-failure))
578 $(eval $(call libmem,paranoid, memory-paranoid.c ,-DCMK_MEMORY_BUILD_PARANOID -touch-on-failure))
579 $(eval $(call libmem,leak, memory-leak.c ,-DCMK_MEMORY_BUILD_LEAK -touch-on-failure))
580 $(eval $(call libmem,cache, memory-cache.c ,-DCMK_MEMORY_BUILD_CACHE -touch-on-failure))
581 $(eval $(call libmem,isomalloc, memory-isomalloc.c ,-DCMK_MEMORY_BUILD_ISOMALLOC -touch-on-failure))
582 $(eval $(call libmem,charmdebug, memory-charmdebug.c,-DCMK_MEMORY_BUILD_CHARMDEBUG -optimize -touch-on-failure))
583 $(eval $(call libmem,charmdebug-slot, memory-charmdebug.c,-DCMK_MEMORY_BUILD_CHARMDEBUG -DCMK_SEPARATE_SLOT -optimize -touch-on-failure))
584 $(eval $(call libmem,charmdebug-mmap, memory-charmdebug.c,-DCMK_MEMORY_BUILD_CHARMDEBUG -DCPD_USE_MMAP -optimize -touch-on-failure))
585 $(eval $(call libmem,charmdebug-mmap-slot,memory-charmdebug.c,-DCMK_MEMORY_BUILD_CHARMDEBUG -DCPD_USE_MMAP -DCMK_SEPARATE_SLOT -optimize -touch-on-failure))
587 ## Thread libraries (-thread)
589 LIBTHREADSDEPS = $(CVHEADERS) QUICK_THREADS
591 libthreads-%.c: threads.c
592 cp $< $@
594 # $1 is the name of the module, $2 is any additional dependency beyond threads.c and $(LIBTHREADSDEPS), $3 is extra arguments to charmc, $4 is an option to include 'boost-context'
595 define libthreads
596 $(L)/libthreads-$1.a: libthreads-$1.c $(LIBTHREADSDEPS) $2
597 if [ `ls boost-context/*.o 2>/dev/null | wc -l` -gt 0 -a $4 -eq 1 ]; then \
598 $(CHARMC) -IQuickThreads -I. -o $$@ $3 boost-context/*.o $$<; \
599 else \
600 $(CHARMC) -IQuickThreads -I. -o $$@ $3 $$<; \
602 endef
604 uFcontext_asm:
605 $(MAKE) -C boost-context
607 $(eval $(call libthreads,default, uFcontext_asm,-DCMK_THREADS_BUILD_DEFAULT=1, 1 ))
608 $(eval $(call libthreads,default-tls, uFcontext_asm,-DCMK_THREADS_BUILD_DEFAULT -DCMK_THREADS_BUILD_TLS=1 -touch-on-failure, 1 ))
609 $(eval $(call libthreads,qt, ,-DCMK_THREADS_BUILD_QT=1, 0))
610 $(eval $(call libthreads,qt-tls, ,-DCMK_THREADS_BUILD_QT=1 -DCMK_THREADS_BUILD_TLS=1 -touch-on-failure, 0))
611 $(eval $(call libthreads,context, ,-DCMK_THREADS_BUILD_CONTEXT=1 -touch-on-failure, 0))
612 $(eval $(call libthreads,context-tls, ,-DCMK_THREADS_BUILD_CONTEXT=1 -DCMK_THREADS_BUILD_TLS=1 -touch-on-failure, 0))
613 $(eval $(call libthreads,uJcontext, uJcontext.c,-DCMK_THREADS_BUILD_JCONTEXT=1 -U_FORTIFY_SOURCE -touch-on-failure,0))
614 $(eval $(call libthreads,uJcontext-tls, uJcontext.c,-DCMK_THREADS_BUILD_JCONTEXT=1 -DCMK_THREADS_BUILD_TLS=1 -U_FORTIFY_SOURCE -touch-on-failure,0))
615 $(eval $(call libthreads,uFcontext, uFcontext_asm,-DCMK_THREADS_BUILD_FCONTEXT=1 -U_FORTIFY_SOURCE -touch-on-failure, 1))
616 $(eval $(call libthreads,uFcontext-tls, uFcontext_asm,-DCMK_THREADS_BUILD_FCONTEXT=1 -DCMK_THREADS_BUILD_TLS=1 -U_FORTIFY_SOURCE -touch-on-failure, 1))
617 $(eval $(call libthreads,pthreads, ,-DCMK_THREADS_BUILD_PTHREADS=1 -touch-on-failure,0))
618 $(eval $(call libthreads,fibers, ,-DCMK_THREADS_BUILD_FIBERS=1 -touch-on-failure,0))
619 $(eval $(call libthreads,stackcopy, ,-DCMK_THREADS_BUILD_STACKCOPY=1 -touch-on-failure,0))
620 $(eval $(call libthreads,memoryalias, ,-DCMK_THREADS_BUILD_DEFAULT=1 -DCMK_THREADS_ALIAS_STACK=1 -touch-on-failure,0))
621 $(eval $(call libthreads,qt-memoryalias, ,-DCMK_THREADS_BUILD_QT=1 -DCMK_THREADS_ALIAS_STACK=1 -touch-on-failure,0))
622 $(eval $(call libthreads,context-memoryalias, ,-DCMK_THREADS_BUILD_CONTEXT=1 -DCMK_THREADS_ALIAS_STACK=1 -touch-on-failure,0))
623 $(eval $(call libthreads,uJcontext-memoryalias,uJcontext.c,-DCMK_THREADS_BUILD_JCONTEXT=1 -DCMK_THREADS_ALIAS_STACK=1 -U_FORTIFY_SOURCE -touch-on-failure,0))
625 ## Global swapping (-swapglobal)
626 swapglobal-target: $(L)/libglobal-swap.a
628 $(L)/libglobal-swap.a: global-elfgot.C $(CVHEADERS)
629 -$(CHARMC) -c global-elfgot.C -o $@ || touch $@
631 ###############################################################################
633 # Charm Libraries
635 ###############################################################################
637 CK_LIBS_CORE=$(L)/libck.a
639 LIBCK_CORE=trace-common.o tracec.o tracef.o init.o register.o qd.o ck.o \
640 msgalloc.o ckfutures.o ckIgetControl.o debug-message.o debug-charm.o ckcallback.o \
641 cklocation.o ckmulticast.o ckarrayoptions.o ckarray.o ckreduction.o ckrdma.o\
642 waitqd.o LBDatabase.o MetaBalancer.o lbdb.o lbdbf.o ckobjQ.o \
643 LBAgent.o LBProfit.o ckcheckpoint.o ckmemcheckpoint.o ckevacuation.o ckmessagelogging.o ckcausalmlog.o ckobjid.o\
644 LBDBManager.o LBComm.o LBObj.o LBMachineUtil.o CentralPredictor.o \
645 BaseLB.o CentralLB.o HybridBaseLB.o NborBaseLB.o DistBaseLB.o \
646 ckgraphTemp.o ckgraph.o LButil.o RefinerTemp.o Refiner.o RefinerApprox.o \
647 manager.o RefinerComm.o bitvecset.o ckset.o ckheap.o CommLBHeap.o \
648 NullLB.o LBSimulation.o modifyScheduler.o \
649 charmProjections.o cktiming.o ckbitvector.o \
650 pathHistory.o controlPoints.o arrayRedistributor.o cp_effects.o \
651 trace-controlPoints.o mpi-interoperate.o
653 charm-core: converse $(L)/libck.a $(L)/libckf.a $(L)/libckmain.a
654 charm-target: loadbalancers default_libs $(L)/libmpi-mainmodule.a tmgr
656 CHARMLIBS: charm++ CONVLIBS $(BIGSIM)
657 $(MAKE) -C libs charmlibs
659 $(L)/libck.a: $(LIBCK_CORE)
660 $(CHARMC) -o $@ $(LIBCK_CORE)
662 ## Charm fortran AMPI
664 CK_FOR_LIBS_CORE=$(L)/libckf.a
666 LIBCKF_CORE=charmf.o charmmod.o
668 $(L)/libckf.a: $(LIBCKF_CORE)
669 -$(CHARMC) -o $@ $(LIBCKF_CORE) || touch $@
671 charmf.o: charmf.C $(CKHEADERS) charmf.h
672 $(CHARMC) -c -I. charmf.C
674 charmmod.o: charmmod.f90
675 -$(CHARMC) -c charmmod.f90 || touch $@
676 -$(CHARMC) -cpmod ../include charm.M
678 ## Tracing libraries (profiling, -tracemode)
679 LIBTRACE_PROJ=trace-projections.o
680 $(L)/libtrace-projections.a: $(LIBTRACE_PROJ)
681 $(CHARMC) -o $@ $(LIBTRACE_PROJ)
683 LIBTRACE_CP=trace-controlPoints.o
684 $(L)/libtrace-controlPoints.a: $(LIBTRACE_CP)
685 $(CHARMC) -o $@ $(LIBTRACE_CP)
687 LIBTRACE_AP=trace-perf.o picsautoperf.o picsautoperfAPI.o picstreenode.o picsdecisiontree.o
688 $(L)/libtrace-perfReport.a: $(LIBTRACE_AP)
689 $(CHARMC) -o $@ $(LIBTRACE_AP)
691 LIBTRACE_SUMM=trace-summary.o
692 $(L)/libtrace-summary.a: $(LIBTRACE_SUMM)
693 $(CHARMC) -o $@ $(LIBTRACE_SUMM)
695 LIBTRACE_UTIL=trace-utilization.o
696 $(L)/libtrace-utilization.a: $(LIBTRACE_UTIL)
697 $(CHARMC) -o $@ $(LIBTRACE_UTIL)
699 LIBTRACE_SIMPLE=trace-simple.o
700 $(L)/libtrace-simple.a: $(LIBTRACE_SIMPLE)
701 $(CHARMC) -o $@ $(LIBTRACE_SIMPLE)
703 libtrace-Tau.o: trace-Tau.C charm++.h charm.h converse.h conv-config.h \
704 conv-autoconfig.h conv-common.h conv-mach.h conv-mach-opt.h \
705 conv-mach-ifort.h pup_c.h conv-cpm.h conv-cpath.h conv-qd.h \
706 conv-random.h conv-lists.h conv-trace.h persistent.h debug-conv.h pup.h \
707 middle.h middle-conv.h cklists.h ckbitvector.h ckstream.h init.h \
708 ckhashtable.h debug-charm.h CkMarshall.decl.h cksection.h ckcallback.h \
709 conv-ccs.h sockRoutines.h ccs-server.h ckobjQ.h ckreduction.h \
710 CkReduction.decl.h \
711 ckmemcheckpoint.h CkMemCheckpoint.decl.h readonly.h ckarray.h cklocrec.h ckmigratable.h \
712 cklocation.h ckmulticast.h LBDatabase.h MetaBalancer.h lbdb.h LBDBManager.h LBObj.h LBOM.h LBComm.h \
713 LBMachineUtil.h lbdb++.h LBDatabase.decl.h MetaBalancer.decl.h NullLB.decl.h BaseLB.decl.h \
714 CkLocation.decl.h CkMulticast.decl.h CkArray.decl.h objid.h envelope.h envelope-path.h XArraySectionReducer.h CkFutures.decl.h \
715 waitqd.h waitqd.decl.h \
716 sdag.h ckcheckpoint.h CkCheckpoint.decl.h ckevacuation.h \
717 trace.h trace-bluegene.h trace-simple.h \
718 register.h trace-common.h trace-simpleBOC.h TraceSimple.decl.h \
719 TraceSimple.def.h ckregex.h
720 $(CHARMC) -c -I. $(TAU_INCLUDE) $(TAU_DEFS) trace-Tau.C -o libtrace-Tau.o
722 tau_selective.o: $(TAUROOT)/utils/tau_selective.cpp
723 $(CHARMC) -I$(TAUROOT)/utils -DTAU_DYNINST $(TAUROOT)/utils/tau_selective.cpp
725 $(L)/libtrace-Tau.a: $(TAU_TRACE_OBJ) tau_selective.o
726 $(CHARMC) $(TAU_LIBS) -o $@ $(TAU_TRACE_OBJ) tau_selective.o $(TAU_TRACE_OBJ)
728 LIBTRACE_COUNT=trace-counter.o
729 $(L)/libtrace-counter.a: $(LIBTRACE_COUNT)
730 $(CHARMC) -o $@ $(LIBTRACE_COUNT)
732 LIBTRACE_BG=trace-bluegene.o
733 $(L)/libtrace-bluegene.a:$(LIBTRACE_BG)
734 $(CHARMC) -o $@ $(LIBTRACE_BG)
736 LIBTRACE_MEMORY=trace-memory.o
737 $(L)/libtrace-memory.a: $(LIBTRACE_MEMORY)
738 $(CHARMC) -o $@ $(LIBTRACE_MEMORY)
740 LIBTRACE_ALL=trace-all.o trace-projections.o trace-controlPoints.o picstreenode.o picsdecisiontree.o picsautoperfAPI.o picsautoperf.o trace-perf.o trace-summary.o trace-simple.o \
741 $(TAU_TRACE_OBJ) trace-projector.o traceCore.o traceCoreCommon.o charmProjections.o converseProjections.o machineProjections.o trace-memory.o trace-utilization.o
743 $(L)/libtrace-all.a: $(LIBTRACE_ALL)
744 $(CHARMC) -o $@ $(LIBTRACE_ALL)
746 LIBTRACE_PROJECTOR=trace-projector.o traceCore.o traceCoreCommon.o charmProjections.o converseProjections.o machineProjections.o
747 $(L)/libtrace-projector.a: $(LIBTRACE_PROJECTOR)
748 $(CHARMC) -o $@ $(LIBTRACE_PROJECTOR)
750 LIBTRACE_CONVERSE=trace-converse.o
751 $(L)/libtrace-converse.a: $(LIBTRACE_CONVERSE)
752 $(CHARMC) -o $@ $(LIBTRACE_CONVERSE)
754 LIBTRACE_FOR=tracef_f.o
755 $(L)/libtracef_f.a: $(LIBTRACE_FOR)
756 -$(CHARMC) -o $@ $(LIBTRACE_FOR) || touch $@
758 tracef_f.o: tracef_f.f90
759 -$(CHARMC) -o $@ -c tracef_f.f90 && $(CHARMC) -cpmod ../include tracemod.M || touch $@
761 # used for make depends
762 TRACE_OBJS = trace-projections.o trace-controlPoints.o picstreenode.o picsdecisiontree.o trace-perf.o picsautoperfAPI.o picsautoperf.o trace-summary.o trace-simple.o \
763 trace-counter.o trace-utilization.o \
764 trace-bluegene.o trace-projector.o trace-converse.o trace-all.o \
765 trace-memory.o
767 ###############################################################################
769 # Dynamic Load Balancers
771 ###############################################################################
773 loadbalancers: $(COMMON_LDBS) $(L)/libmoduleCommonLBs.a
775 everylb: $(ALL_LDBS) $(L)/libmoduleEveryLB.a
776 MetisLB.o GridMetisLB.o: metis
778 %LB: $(L)/libmodule%LB.a
779 @true
780 $(L)/libmodule%LB.a: %LB.o
781 $(CHARMC) -o $@ $^
782 ( [ -r libmodule$*LB.dep ] && cp -f libmodule$*LB.dep $(L)/ ) || true
783 $(L)/libmoduleCommonLBs.a:
784 $(CHARMC) -o $@ $^
785 ( [ -r libmoduleCommonLBs.dep ] && cp -f libmoduleCommonLBs.dep $(L)/ ) || true
787 ###############################################################################
789 # BlueGene Emulator
791 ###############################################################################
793 bigsim: bigsim-target
795 bigemulator: bigsim
797 bigsim-target: charm++ $(L)/libconv-bigsim.a $(L)/libconv-bigsim-logs.a $(L)/libconv-bluegene-stub.a $(L)/libblue-standalone.a
799 $(L)/libbluegene.a: BlueGene.o
800 $(CHARMC) -o $@ $^
802 # (Converse) Blue Gene emulator
803 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
804 BIGSIM_IO_OBJS = bigsim_read.o bigsim_logs.o bigsim_api.o
806 LIBBLUE_OBJS = $(BLUE_OBJS) $(BIGSIM_IO_OBJS) blue_stub.o blue_standalone.o
808 $(L)/libconv-bigsim.a: $(BLUE_OBJS)
809 $(CHARMC) -o $@ $^
811 $(L)/libconv-bigsim-logs.a: $(BIGSIM_IO_OBJS)
812 $(CHARMC) -o $@ $^
814 $(L)/libconv-bluegene-stub.a: blue_stub.o
815 $(CHARMC) -o $@ $^
817 $(L)/libblue-standalone.a: blue_standalone.o
818 $(CHARMC) -o $@ $^
820 ###############################################################################
822 # The CPM scanner
824 ###############################################################################
826 conv-cpm: conv-cpm.o
827 $(NATIVECHARMC) -language c -o conv-cpm -cp ../bin/ conv-cpm.o
829 conv-cpm.o: conv-cpm.c $(CVHEADERS)
830 $(NATIVECHARMC) conv-cpm.c
832 ###############################################################################
834 # The interface translator
836 ###############################################################################
838 XIHEADERS=conv-autoconfig.h xi-AstNode.h xi-Construct.h xi-grammar.tab.h xi-Message.h xi-Parameter.h xi-SdagConstruct.h xi-BlockConstruct.h xi-Template.h xi-util.h xi-Chare.h xi-Entry.h xi-Member.h xi-Module.h xi-SdagCollection.h xi-symbol.h xi-Type.h xi-Value.h xi-main.h
839 CHARMXIOBJ=xi-main.o xi-grammar.tab.o xi-scan.o xi-Template.o xi-AstNode.o xi-Entry.o xi-Member.o xi-Parameter.o xi-SdagConstruct.o xi-BlockConstruct.o xi-Type.o xi-Chare.o xi-Message.o xi-Construct.o xi-Module.o xi-SdagCollection.o xi-Value.o xi-util.o
840 SDAGOBJ=sdag-globals.o CSdagConstruct.o CEntry.o CParsedFile.o CStateVar.o Serial.o Case.o CaseList.o Else.o Forall.o For.o If.o IntExpr.o OList.o Overlap.o SdagEntry.o SList.o Template.o When.o While.o
841 SDAGHEADERS= CToken.h EToken.h CParsedFile.h sdag-globals.h CEntry.h Serial.h Case.h CaseList.h Else.h Forall.h For.h If.h IntExpr.h OList.h Overlap.h SdagEntry.h SList.h Template.h When.h While.h Constructs.h
843 $(CHARMXIOBJ) $(SDAGOBJ): $(XIHEADERS) $(SDAGHEADERS)
844 $(CHARMXIOBJ) $(SDAGOBJ): CXX=$(NATIVECHARMC)
845 $(CHARMXIOBJ) $(SDAGOBJ): CXXFLAGS=-I$(SRCBASE)/xlat-i/ -I$(SRCBASE)/xlat-i/sdag/ -I.
846 xi-scan.o: CXXFLAGS+=-DYY_NEVER_INTERACTIVE
847 VPATH=$(SRCBASE)/xlat-i:$(SRCBASE)/xlat-i/sdag:$(SRCBASE)/xlat-i/sdag/constructs
849 charmxi: ../bin/charmxi
851 ../bin/charmxi: $(CHARMXIOBJ) $(SDAGOBJ)
852 $(NATIVECHARMC) -language c++ -cp ../bin/ -o charmxi $^
854 xi-clean:
855 rm $(CHARMXIOBJ) $(SDAGOBJ)
857 ###############################################################################
859 # Simple Messaging
861 ###############################################################################
863 $(L)/libtsm.a: converse simplemsg.c simplemsg.h
864 $(CHARMC) -o $@ simplemsg.c
866 $(L)/libsm.a: converse sm.c sm.h
867 $(CHARMC) -o $@ sm.c
869 ###############################################################################
871 # PVM
873 ###############################################################################
875 PVMC=pvmc_buf.o pvmc_comm.o pvmc_conv.o pvmc_main.o pvmc_pack.o pvmc_groups.o
877 $(L)/libpvmc.a: $(PVMC)
878 $(CHARMC) -o $@ $(PVMC)
880 pvmc_buf.o: pvmc_buf.c pvmc.h pvm3.h converse.h
881 $(CHARMC) -o $@ pvmc_buf.c
883 pvmc_conv.o: pvmc_conv.c pvmc.h pvm3.h converse.h
884 $(CHARMC) -o $@ pvmc_conv.c
886 pvmc_pack.o: pvmc_pack.c pvmc.h pvm3.h converse.h
887 $(CHARMC) -o $@ pvmc_pack.c
889 pvmc_comm.o: pvmc_comm.c pvmc.h pvm3.h converse.h
890 $(CHARMC) -o $@ pvmc_comm.c
892 pvmc_groups.o: pvmc_groups.c pvmc.h pvm3.h converse.h
893 $(CHARMC) -o $@ pvmc_groups.c
895 pvmc_main.o: pvmc_main.c pvmc.h pvm3.h converse.h
896 $(CHARMC) -o $@ pvmc_main.c
898 $(L)/libf90charm.a: charmxi f90main.ci f90main.h f90main.C futil.f90
899 $(CHARMC) f90main.ci
900 $(CHARMC) -c -DAMPI_FORTRAN=1 f90main.C
901 -$(CHARMC) -c futil.f90
902 -$(CHARMC) -o $@ f90main.o futil.o
904 ##############################################################################
905 # adding this entry for files which do not belong to any of other locations
907 OTHER_OBJS= mpi-mainmodule.o main.o custom_partitioner.o BlueGene.o set_partition_params.o
909 ##############################################################################
911 ###############################################################################
913 # Make clean
915 ###############################################################################
917 install:
918 @test ! -d $(DESTDIR)/include && mkdir -p $(DESTDIR)/include || true
919 @test ! -d $(DESTDIR)/lib && mkdir -p $(DESTDIR)/lib || true
920 @test ! -d $(DESTDIR)/lib_so && mkdir -p $(DESTDIR)/lib_so || true
921 @test ! -d $(DESTDIR)/bin && mkdir -p $(DESTDIR)/bin || true
922 # cp -f ../include/* $(DESTDIR)/include
923 for f in ../include/*; do if test -f $$f; then cp -f $$f $(DESTDIR)/include; fi; done
924 cp -f ../lib/* $(DESTDIR)/lib
925 cp -f ../lib_so/* $(DESTDIR)/lib_so || true
926 # cp -f ../bin/* $(DESTDIR)/bin
927 for f in ../bin/*; do if test -f $$f; then cp -f $$f $(DESTDIR)/bin; fi; done
930 clean:
931 rm -f conv-autoconfig.h config.cache
932 rm -f QuickThreads/libqt.a
933 rm -f charmxi conv-cpm
934 rm -f TAGS basics cmk_extras core
935 rm -f core *.a
936 rm -f core *.o
937 rm -f core #*#
938 rm -f core *~
939 rm -f *.stamp
940 if [ -d charmrun-src ] ; then ( $(MAKE) -C charmrun-src clean ) ; fi
941 -( $(MAKE) -C doc clean )
942 ( $(MAKE) -C libs clean )
943 ( $(MAKE) -C ../examples clean )
944 ( $(MAKE) -C ../tests clean )
946 veryclean:
947 rm -rf ../bin
948 rm -rf ../lib
949 rm -rf ../src
950 rm -rf ../examples
951 rm -rf ../tests
952 rm -rf ../include
953 rm -rf ../doc
954 mv Makefile .Makefile
955 mv Make.depends .Make.depends
956 rm -rf [a-z]* [A-Z]*
957 mv .Make.depends Make.depends
958 rm -rf .[a-z]* .[A-Z]*
961 config: configure conv-autoconfig.h.in
963 cidepends: charmxi
964 echo "Creating " $(CIDEPENDFILE) " ...";
965 if [ -f $(CIDEPENDFILE) ]; then \
966 /bin/cp -f $(CIDEPENDFILE) $(CIDEPENDFILE).old; \
967 fi; \
968 echo '#generated by make cidepends' > $(CIDEPENDFILE); \
969 for cifile in $(sort $(wildcard *.ci)); do \
970 echo "checking generated modules for $$cifile" ; \
971 $(CHARMXI) -M $$cifile | sed '/\.stamp:/a \\t $$(CHARMC) -intrinsic $$< && touch $$@' >> $(CIDEPENDFILE) ; \
972 done
974 depends: cidepends commitid.c
975 $(MAKE) basics
976 echo "Creating " $(DEPENDFILE) " ...";
977 if [ -f $(DEPENDFILE) ]; then \
978 /bin/cp -f $(DEPENDFILE) $(DEPENDFILE).old; \
979 fi; \
980 echo '#generated by make depends' > $(DEPENDFILE); \
981 processFiles=''; \
982 for i in $(sort $(LIBCONV_CORE) $(LIBCONV_LDB) $(LIBCONV_UTIL) $(TRACE_OBJS) $(LIBCK_CORE) $(ALL_LB_OBJS) $(LIBBLUE_OBJS) $(OTHER_OBJS)) ; do \
983 processed='false'; \
984 for f in $$processFiles; do \
985 if test $$i = $$f ; then \
986 processed=true; break; \
987 fi; \
988 done; \
989 test $$processed = 'true' && continue; \
990 processFiles="$$processFiles $$i"; \
991 SRCFILE=`basename $$i .o`.C ; \
992 [ ! -f $$SRCFILE ] && SRCFILE=`basename $$i .o`.c ; \
993 echo "checking dependencies for $$SRCFILE" ; \
994 if g++ -std=c++0x -MM -Wno-deprecated -I. -I$(INC) $$SRCFILE >> $(DEPENDFILE); then true ; else echo '' ; echo "Compilation of '$$SRCFILE' failed, please fix it first!!!!" ; exit; fi; \
995 echo '' >> $(DEPENDFILE) ; \
996 done; \
998 dependsCaseSensitive: cidepends
999 $(MAKE) basics
1000 @echo "Creating " $(DEPENDFILE) " ...";
1001 if [ -f $(DEPENDFILE) ]; then \
1002 /bin/cp -f $(DEPENDFILE) $(DEPENDFILE).old; \
1003 fi; \
1004 echo '#generated by make depends' > $(DEPENDFILE); \
1005 processFiles=''; \
1006 for i in $(sort $(LIBCONV_CORE) $(LIBCONV_UTIL) $(TRACE_OBJS) $(LIBCK_CORE) $(ALL_LB_OBJS) $(LIBBLUE_OBJS) $(OTHER_OBJS)); do \
1007 processed='false'; \
1008 for f in $$processFiles; do \
1009 if test $$i = $$f ; then \
1010 processed=true; break; \
1011 fi; \
1012 done; \
1013 test $$processed = 'true' && continue; \
1014 processFiles="$$processFiles $$i"; \
1015 SRCFILE=`basename $$i .o`.C ; \
1016 SRCDIR=`dirname $$i` ; \
1017 found=`/usr/bin/find $$SRCDIR -depth 1 -name $$SRCFILE`; \
1018 [ ! $$found ] && SRCFILE=`basename $$i .o`.c ; \
1019 echo "checking dependencies for $$SRCFILE" ; \
1020 if g++ -std=c++0x -MM -Wno-deprecated -I. -I$(INC) $$SRCFILE >> $(DEPENDFILE); then true ; else echo '' ; echo "Compilation of '$$SRCFILE' failed, please fix it first!!!!" ; exit; fi; \
1021 echo '' >> $(DEPENDFILE) ; \
1022 done; \
1024 # The build script should have spit out the build options into this makefile
1025 -include buildopts.mk
1026 # If OPTS was not defined, use the build time options
1027 export OPTS ?= $(OPTSATBUILDTIME)
1028 ifeq ($(strip $(OPTS)),)
1029 $(warning Variable OPTS is defined to an empty string. Are you sure this is what you want?)
1030 endif
1033 -include machine.d
1034 machine.o: machine.d
1035 machine.d: machine.c conv-autoconfig.h
1036 @set -e; \
1037 rm -f $@; \
1038 $(CHARMC) $(OPTS) -MM -I. -I$(INC) $< >$@.$$$$; \
1039 sed -e 's,\($*\)\.o[ :]*,\1.o $@ : ,g' -e 's,[Cc]:/,/cygdrive/c/,' < $@.$$$$ > $@; \
1040 rm -f $@.$$$$