Wrap all RTS functions exposed to AMPI programs in special macros
[charm.git] / src / scripts / Makefile
bloba4f3e0f3f6767d8290e43da71495c7b5b62f8542
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
11 # This Makefile is common to all machines. This works because the charmc
12 # is smart enough to "conceal" the differences between machines. charmc
13 # gets its smarts by reading the conv-mach.sh configuration file.
15 # If you wish to compile with debugging, optimization, or some other charm
16 # option, you can do so by setting OPTS. For example, if you need a lot
17 # of debugging information, you could type:
19 # make charm++ OPTS="-g -save -verbose"
21 ###############################################################################
23 SHELL=/bin/sh
24 L=../lib
25 INC=../include
27 include charmpath.mk
28 include conv-mach-opt.mak
30 CC=$(CHARMC)
31 CXX=$(CHARMC)
32 CFLAGS=-I.
33 CXXFLAGS=-I.
35 all: charm++ bigsim LIBS AMPI f90charm TSM SM PVM everylb
37 all-test: all-test-tests all-test-examples all-test-benchmarks
39 all-test-tests: bigsim LIBS
40 $(MAKE) -C ../tests all
42 all-test-examples: bigsim LIBS
43 $(MAKE) -C ../examples all
45 all-test-benchmarks: bigsim LIBS
46 $(MAKE) -C ../benchmarks all
48 charm++: charm-target
49 @echo "$(OPTS)" > OPTS
50 touch charm++
52 bgampi: bigsim AMPI
54 TSM: converse $(L)/libtsm.a
56 SM: converse $(L)/libsm.a
58 PVM: converse $(L)/libpvmc.a
60 AMR: charm++ LIBS
61 $(MAKE) -C libs/ck-libs/amr all
63 FEM: ParFUM
65 ParFUM: charm++ AMPI
66 $(MAKE) -C libs/ck-libs/ ParFUM
68 MBLOCK: AMPI MBLOCKC MBLOCKF
70 MBLOCKC: charm++ LIBS
72 MBLOCKF: MBLOCKC
74 AMPI: charm++ $(BIGSIM)
75 $(MAKE) -C libs/ck-libs/ ampi
77 AMPIC AMPIF: AMPI
79 ARMCI: charm++ LIBS
82 f90charm: charm++ $(L)/libf90charm.a
84 libcharm: charm++
85 cd $(L) ; $(CHARMC) -standalone -whole-archive -c++stl -shared -o libcharm.so $(LIBCHARM_LIBS)
87 charmpy: libcharm
89 charm4py: libcharm
91 LIBCHARM_LIBS= libck.a libconv-core.a libconv-util.a libmemory-default.a libconv-machine.a \
92 libthreads-default.a libconv-partition.a libtmgr.a libhwloc_embedded.a \
93 libldb-rand.a libconv-ldb.a libmoduleGreedyRefineLB.a
95 DEFAULT_LIBS= completion NDMeshStreamer dummy pythonCCS io ckloop
97 default_libs: $(DEFAULT_LIBS)
99 $(DEFAULT_LIBS) cache pose fftlib liveViz metis:
100 $(MAKE) -C libs/ck-libs/$@
102 openmp_llvm:
103 $(MAKE) -C libs/conv-libs/$@
105 ChaNGa: charm++ cache liveViz everylb ckloop
107 cache: charm-core
108 liveViz: charm-core
109 io: charm-core
110 pose: charm-core
111 fftlib: charm-core
112 dummy: charmxi
113 pythonCCS: charmxi
114 completion: charmxi
115 NDMeshStreamer: charm-core completion
117 $(L)/libmpi-mainmodule.a: mpi-mainmodule.o
118 $(CHARMC) -o $@ $<
120 tmgr: $(L)/libtmgr.a
121 $(L)/libtmgr.a:
122 $(MAKE) -C topomanager -f Makefile_charm
124 $(L)/libckmain.a: main.o
125 $(CHARMC) -o $@ $^
127 $(L)/libckmainf.a: mainf.o
128 -$(CHARMC) -o $@ $^ || touch $@
130 translators: charmxi conv-cpm
132 msa: charm++
133 $(MAKE) -C libs/ck-libs/multiphaseSharedArrays
135 jade: charm++ msa
136 # make the lib, include
137 $(MAKE) -C langs/jade
140 # This should be done offline, since the user does not need to compile
141 # parser files, etc. All they need is the libjade + include files,
142 # antlr.jar, jade.jar, and a few scripts which the jade target takes
143 # care of.
144 #jadeall: jade
145 # make parser.g -> .java files
146 # $(MAKE) -C langs/jade p
147 # make the jade.jar file
148 # $(MAKE) -C ../java/charm/jade
150 #include TAU defs
151 TAU_MAKEFILE=Make.tau
152 include $(TAU_MAKEFILE) #stub-makefile
154 #builds TAU's trace library
155 Tau:
156 echo "buliding charm trace library with support for TAU."
157 $(MAKE) $(L)/libtrace-Tau.a $(L)/libtrace-all.a TAU_TRACE_OBJ=libtrace-Tau.o
159 LIBS: CONVLIBS CHARMLIBS everylb
160 $(MAKE) -C libs otherlibs
161 echo "Built LIBS Successfully"
163 bgtest: bigsim LIBS
164 $(MAKE) -C ../tests bgtest
165 $(MAKE) -C ../examples bgtest
166 $(MAKE) -C ../benchmarks bgtest
168 syncfttest causalfttest mpisyncfttest mlogfttest: charm++ LIBS
169 $(MAKE) -C ../tests $@
171 test: bigsim LIBS
172 $(MAKE) -C ../tests test
173 $(MAKE) -C ../examples test
174 $(MAKE) -C ../benchmarks test
176 test-tests: bigsim LIBS
177 $(MAKE) -C ../tests test
179 test-examples: bigsim LIBS
180 $(MAKE) -C ../examples test
182 test-benchmarks: bigsim LIBS
183 $(MAKE) -C ../benchmarks test
185 test-converse: converse
186 $(MAKE) -C ../tests test-converse
187 $(MAKE) -C ../benchmarks test-converse
189 test-charm: charm++
190 $(MAKE) -C ../tests test-charm
191 $(MAKE) -C ../benchmarks test-charm
193 test-AMPI: AMPI
194 $(MAKE) -C ../tests test-AMPI
195 $(MAKE) -C ../benchmarks test-AMPI
197 test-tests-converse: converse
198 $(MAKE) -C ../tests test-converse
200 test-tests-charm: charm++
201 $(MAKE) -C ../tests test-charm
203 test-tests-AMPI: AMPI
204 $(MAKE) -C ../tests test-AMPI
206 test-benchmarks-converse: converse
207 $(MAKE) -C ../benchmarks test-converse
209 test-benchmarks-charm: charm++
210 $(MAKE) -C ../benchmarks test-charm
212 test-benchmarks-AMPI: AMPI
213 $(MAKE) -C ../benchmarks test-AMPI
216 CHARMC=../bin/charmc $(CHARMOPTS) $(OPTS)
218 SEQCHARMC=../bin/charmc -seq $(CHARMOPTS)
220 NATIVECHARMC=../bin/charmc -host $(CHARMOPTS)
222 CHARMXI=../bin/charmc -intrinsic $(OPTS)
224 CIDEPENDFILE = Make.cidepends
225 DEPENDFILE = Make.depends
227 include $(CIDEPENDFILE)
228 include $(DEPENDFILE)
230 CIFILES = $(wildcard *.ci)
232 %.ci.stamp: %.ci ../bin/charmxi
233 $(CHARMXI) $< && touch $@
235 # Automatically generated by script Makefile_lb.sh
236 include Make.lb
238 # Build changes for external libraries
239 include Make.extlib
241 # GPU manager support
242 include Make.gpu
244 ###############################################################################
246 # The basics (bin, lib, include, headers, charmc, conv-mach.sh)
248 ###############################################################################
250 CVHEADERS=cpthreads.h converse.h conv-trace.h conv-random.h conv-qd.h \
251 msgq.h queueing.h conv-taskQ.h taskqueue.h conv-cpath.h conv-cpm.h persistent.h\
252 trace.h trace-common.h trace-bluegene.h trace-projections.h \
253 trace-simple.h trace-controlPoints.h charm-api.h \
254 conv-ccs.h ccs-client.C ccs-client.h \
255 ccs-server.h ccs-auth.C ccs-auth.h \
256 memory-isomalloc.h debug-conv.h debug-conv++.h conv-autoconfig.h \
257 conv-common.h conv-config.sh conv-config.h conv-mach.h conv-mach.sh conv-mach-common.h \
258 blue.h blue-conv.h bgconverse.h cmipool.h mempool.h cmiqueue.h \
259 cmitls.h lrtslock.h conv-rdma.h lrts-common.h conv-header.h
261 # The .c files are there to be #included by clients whole
262 # This is a bit unusual, but makes client linking simpler.
263 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\
264 pup_c_functions.h \
265 ckimage.h ckdll.h ckhashtable.h ckbitvector.h cklists.h ckliststring.h \
266 cksequence.h ckstatistics.h ckvector3d.h conv-lists.h ckcomplex.h \
267 sockRoutines.h sockRoutines.C cmimemcpy.h simd.h SSE-Double.h SSE-Float.h \
268 crc32.h ckBIconfig.h rand48_replacement.h ckregex.h spanningTree.h cmirdmautils.h
270 CKHEADERS=ck.h ckstream.h objid.h envelope.h init.h qd.h charm.h charm++.h \
271 ckfutures.h ckIgetControl.h cktiming.h debug-charm.h\
272 ckcallback.h CkCallback.decl.h ckcallback-ccs.h \
273 cksection.h ckmessage.h cklocrec.h ckmigratable.h \
274 ckarrayindex.h ckarrayoptions.h ckarray.h cklocation.h ckmulticast.h ckreduction.h \
275 ckcheckpoint.h ckmemcheckpoint.h ckevacuation.h ckrdma.h\
276 ckmessagelogging.h ckcausalmlog.h ckobjid.h\
277 ckobjQ.h readonly.h charm++_type_traits.h \
278 $(UTILHEADERS) \
279 waitqd.h LBDatabase.h MetaBalancer.h RandomForestModel.h lbdb.h lbdb++.h LBProfit.h $(LBHEADERS) \
280 LBDBManager.h LBComm.h LBOM.h LBObj.h LBMachineUtil.h LBAgent.h \
281 RefinerTemp.h Refiner.h RefinerApprox.h RefinerComm.h ckgraphTemp.h ckgraph.h ckheap.h \
282 elements.h CommLBHeap.h topology.h manager.h \
283 BaseLB.h CentralLB.h CentralLBMsg.h \
284 NborBaseLB.h DistBaseLB.h HybridBaseLB.h HybridLBMsg.h \
285 NeighborLBMsg.h \
286 BlueGene.h middle.h middle-conv.h middle-blue.h \
287 CkMarshall.decl.h CkArray.decl.h CkLocation.decl.h CkMulticast.decl.h \
288 CkReduction.decl.h \
289 waitqd.decl.h \
290 CkFutures.decl.h CkCheckpoint.decl.h CkCheckpointStatus.decl.h CkMemCheckpoint.decl.h \
291 LBDatabase.decl.h MetaBalancer.decl.h CentralLB.decl.h NullLB.decl.h \
292 BaseLB.decl.h \
293 NborBaseLB.decl.h DistBaseLB.decl.h \
294 HybridBaseLB.decl.h EveryLB.decl.h CommonLBs.decl.h \
295 TraceSummary.decl.h TraceAutoPerf.decl.h TraceProjections.decl.h \
296 TraceSimple.decl.h TraceControlPoints.decl.h TraceTau.decl.h \
297 TraceUtilization.decl.h BlueGene.decl.h \
298 ControlPoints.decl.h PathHistory.decl.h \
299 pathHistory.h envelope-path.h \
300 XArraySectionReducer.h \
301 controlPoints.h controlPointsf.h arrayRedistributor.h cp_effects.h register.h stats.h \
302 cksequence_internal.h cksequence_factory.h random_sequence.h strided_sequence.h \
303 mpi-interoperate.h mpi_main.decl.h \
304 trace-perf.h picsdefs.h picsautoperf.h picstreenode.h \
305 picsdecisiontree.h \
306 picsautoperfAPI.h picsautoperfAPIC.h \
307 $(CVHEADERS)
309 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
311 ALLHEADERS=$(CKHEADERS) \
312 simplemsg.h sm.h pvmc.h pvm3.h sdag.h vector2d.h \
313 bitvecset.h ckset.h LBSimulation.h \
314 $(BLUE_HEADERS)
316 basics: headers
317 touch basics
319 # Headers is used only for the dependencies
320 headers: dirs+sources
321 $(MAKE) -C topomanager -f Makefile_charm headers
322 $(MAKE) charmxi
323 $(MAKE) headerlinks
325 configure: Makefile.am configure.ac
326 autoreconf
328 conv-autoconfig.h.in: configure.ac
329 autoheader
331 conv-autoconfig.h: configure conv-autoconfig.h.in config_opts.sh
332 @. ./config_opts.sh; echo ./configure $(QUIET) $$CONFIG_OPTS; \
333 ./configure $(QUIET) $$CONFIG_OPTS && touch conv-autoconfig.h
335 .PHONY: clean veryclean VERSION.new config
337 VERSION: VERSION.new
338 SRCBASE=$(SRCBASE) ./commitid.sh
340 commitid.C: VERSION
341 echo "extern const char * const CmiCommitID;" > $@
342 echo "const char * const CmiCommitID = \"`cat VERSION`\";" >> $@
343 commitid.o: CC=$(CHARMC)
345 headerlinks: dirs+sources Makefile $(ALLHEADERS)
346 @[ "x$QUIET" = "x--quiet" ] || echo "Soft-linking headers..."
347 -for hdr in $(filter-out dirs+sources Makefile,$(sort $^)) ; do test ! -f "../include/`basename $$hdr`" && ./system_ln "../tmp/$$hdr" ../include ; done
348 touch headerlinks
350 dirs+sources:
352 find . -type l -exec rm {} \;
353 rm -rf QuickThreads
354 rm -rf hwloc
355 rm -rf libs
356 rm -rf ../bin ; mkdir ../bin
357 if case $(CMK_VDIR) in *win64*) true;; *-win-*) true;; *) false;; esac; then \
358 cp -f $(SRCBASE)/arch/win/unix2nt* ../bin; \
359 cp -f $(SRCBASE)/arch/win/createlink.exe ../bin; \
361 rm -rf ../lib ; mkdir ../lib
362 ifeq (false,$(CMK_NO_BUILD_SHARED))
363 rm -rf ../lib_so ; mkdir ../lib_so; touch ../lib_so/.charmso
364 endif
365 rm -rf ../benchmarks
366 rm -rf ../examples
367 rm -rf ../tests
368 $(SRCBASE)/scripts/gatherflat $(SRCBASE)/scripts .
369 ./gatherflat $(SRCBASE)/conv-core .
370 ./gatherflat $(SRCBASE)/conv-ldb .
371 ./gatherflat $(SRCBASE)/conv-ccs .
372 ./gatherflat $(SRCBASE)/conv-perf .
373 ./gatherflat $(SRCBASE)/ck-core .
374 ./gatherflat $(SRCBASE)/ck-perf .
375 ./gatherflat $(SRCBASE)/ck-pics .
376 ./gatherflat $(SRCBASE)/ck-ldb .
377 ./gatherflat $(SRCBASE)/ck-cp .
378 ./gatherflat $(SRCBASE)/langs/simplemsg .
379 ./gatherflat $(SRCBASE)/langs/pvmc .
380 ./gatherflat $(SRCBASE)/langs/bluegene .
381 ./gatherflat $(SRCBASE)/langs/f90charm .
382 ./gatherflat $(SRCBASE)/xlatcpm .
383 ./gathertree $(SRCBASE)/QuickThreads QuickThreads
384 ./gathertree $(SRCBASE)/../contrib/hwloc hwloc
385 ./gathertree $(SRCBASE)/libs libs
386 ./gathertree $(SRCBASE)/arch/util .
387 ./gathertree $(SRCBASE)/util .
388 ./gathertree $(SRCBASE)/langs langs
389 ./gathertree $(SRCBASE)/langs/jade langs/jade
390 ./gathertree $(SRCBASE)/arch/common .
391 ./gathertree $(SRCBASE)/arch/$(CMK_GDIR) .
392 test -f $(SRCBASE)/arch/$(CMK_GDIR)/gdir_link && cat $(SRCBASE)/arch/$(CMK_GDIR)/gdir_link > .gdir.new && ./gathertree $(SRCBASE)/arch/`cat .gdir.new` . || true
393 ./gatherflat $(SRCBASE)/arch/$(CMK_VDIR) .
394 ./gathertree $(SRCBASE)/../benchmarks ../benchmarks
395 ./gathertree $(SRCBASE)/../examples ../examples
396 ./gathertree $(SRCBASE)/../tests ../tests
397 rm -f ../bin/dep.pl ; cp dep.pl ../bin/
398 chmod +x charmc
399 -./system_ln ../tmp/charmc ../bin/
400 -./system_ln $(SRCBASE)/scripts/testrun ../bin/
401 -./system_ln ../tmp/tree.txt ../bin/
402 -./system_ln ../tmp/fuzzytree.txt ../bin/
403 # -ln -s ../../java/bin charmjavabin
404 # -ln -s ../../java/bin ../bin/charmjavabin
405 # -ln -s charmjavabin/* ../bin/
406 # -ln -s ../java ..
407 rm -rf ../include ; mkdir ../include
408 -./system_ln ../tmp/conv-*.*h ../include
409 -./system_ln ../tmp/cc-*.*h ../include
410 -./system_ln ../tmp/conv-mach-opt.sh ../include
411 -./system_ln ../tmp/conv-mach-opt.mak ../include
412 if [ -x ./special.sh ] ; then SRCBASE=$(SRCBASE) ./special.sh ; fi
413 if [ ! -f conv-common.h ] ; then ( touch conv-common.h ) ; fi
414 touch dirs+sources
416 ###############################################################################
418 # Converse Libraries
420 ###############################################################################
421 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
423 TRACELIBS = $(L)/libtrace-converse.a $(L)/libtracef_f.a
425 BUILD_TRACING := $(CMK_TRACE_ENABLED)
427 ifneq ($(BUILD_TRACING),0)
429 TRACELIBS += \
430 $(L)/libtrace-projections.a \
431 $(L)/libtrace-controlPoints.a \
432 $(L)/libtrace-summary.a \
433 $(L)/libtrace-utilization.a \
434 $(L)/libtrace-simple.a \
435 $(L)/libtrace-counter.a \
436 $(L)/libtrace-bluegene.a \
437 $(L)/libtrace-projector.a \
438 $(L)/libtrace-all.a \
439 $(L)/libtrace-memory.a \
440 $(L)/libtrace-perfReport.a \
442 endif
444 MEMLIBS = \
445 $(L)/libmemory-default.a \
446 $(L)/libmemory-os.a \
447 $(L)/libmemory-os-verbose.a \
448 $(L)/libmemory-os-isomalloc.a \
449 $(L)/libmemory-os-leak.a \
450 $(L)/libmemory-os-paranoid.a \
451 $(L)/libmemory-os-lock.a \
452 $(L)/libmemory-os-wrapper.a \
454 ifneq ($(CMK_HAS_MMAP),0)
456 MEMLIBS += \
457 $(L)/libmemory-gnu.a \
458 $(L)/libmemory-gnu-verbose.a \
459 $(L)/libmemory-gnu-paranoid.a \
460 $(L)/libmemory-gnu-leak.a \
461 $(L)/libmemory-gnu-isomalloc.a \
463 endif
465 ifneq ($(CMK_CHARMDEBUG),0)
466 ifneq ($(CMK_HAS_MMAP),0)
468 MEMLIBS += \
469 $(L)/libmemory-gnu-charmdebug.a \
470 $(L)/libmemory-gnu-charmdebug-mmap.a \
471 $(L)/libmemory-gnu-charmdebug-slot.a \
472 $(L)/libmemory-gnu-charmdebug-mmap-slot.a \
473 $(L)/libmemory-os-charmdebug.a \
475 ifneq ($(CMK_HAS_MALLOC_HOOK),0)
477 MEMLIBS += \
478 $(L)/libmemory-hooks-charmdebug.a \
480 endif
482 endif
483 endif
485 ifneq ($(findstring -win64,$(CMK_VDIR))$(findstring -win-,$(CMK_VDIR)),)
486 IS_WINDOWS := 1
487 else
488 IS_WINDOWS := 0
489 endif
491 THREADLIBS = \
492 $(L)/libthreads-default.a \
493 $(L)/libthreads-default-tls.a \
494 $(L)/libthreads-qt.a \
495 $(L)/libthreads-qt-tls.a \
496 $(L)/libthreads-uFcontext.a \
497 $(L)/libthreads-uFcontext-tls.a \
498 $(L)/libthreads-stackcopy.a \
500 ifneq ($(IS_WINDOWS),0)
502 THREADLIBS += \
503 $(L)/libthreads-fibers.a \
505 else
507 THREADLIBS += \
508 $(L)/libthreads-context.a \
509 $(L)/libthreads-context-tls.a \
510 $(L)/libthreads-uJcontext.a \
511 $(L)/libthreads-uJcontext-tls.a \
512 $(L)/libthreads-pthreads.a \
513 $(L)/libthreads-memoryalias.a \
514 $(L)/libthreads-qt-memoryalias.a \
515 $(L)/libthreads-context-memoryalias.a \
516 $(L)/libthreads-uJcontext-memoryalias.a \
518 endif
520 CVLIBS=$(L)/libconv-core.a \
521 $(L)/conv-static.o \
522 $(L)/libconv-machine.a \
523 $(L)/libconv-util.a $(L)/libconv-utilf.a \
524 $(CLBLIBS) $(TRACELIBS) $(MEMLIBS) $(THREADLIBS) \
525 $(L)/libccs-client.a $(L)/libconv-partition.a $(L)/libhwloc_embedded.a \
526 $(L)/libconv-ldb.a
528 LIBCONV_CORE=convcore.o hrctimer.o conv-conds.o conv-taskQ.o queueing.o msgmgr.o \
529 cpm.o cpthreads.o futures.o cldb.o random.o \
530 debug-conv.o debug-conv++.o conv-ccs.o ccs-builtins.o middle-ccs.o \
531 traceCore.o traceCoreCommon.o \
532 converseProjections.o machineProjections.o \
533 quiescence.o isomalloc.o mem-arena.o conv-counter.o memory-darwin-clang.o \
534 global-nop.o cmipool.o cpuaffinity.o cputopology.o \
535 cmitls.o memoryaffinity.o commitid.o conv-interoperate.o conv-rdma.o \
537 LIBCONV_LDB = topology.o generate.o edgelist.o
539 LIBCONV_UTIL=pup_util.o pup_toNetwork.o pup_toNetwork4.o \
540 pup_xlater.o pup_c.o pup_paged.o pup_cmialloc.o \
541 ckimage.o ckdll.o ckhashtable.o sockRoutines.o \
542 conv-lists.o persist-comm.o mempool.o \
543 crc32.o lz4.o partitioning_strategies.o hilbert.o \
544 spanningTree.o cmirdmautils.o
546 LIBCONV_UTILF=pup_f.o
548 include Makefile.machine
550 converse: charmrun-target swapglobal-target conv-cpm tmgr hwloc-target
552 cpuaffinity.o $(L)/libhwloc_embedded.a $(INC)/hwloc.h $(INC)/hwloc/autogen/config.h $(INC)/hwloc/rename.h $(INC)/hwloc/bitmap.h $(INC)/hwloc/helper.h $(INC)/hwloc/inlines.h $(INC)/hwloc/diff.h $(INC)/hwloc/deprecated.h: hwloc-target
554 hwloc-target: conv-autoconfig.h
555 ( $(MAKE) -C hwloc )
556 ( test -e hwloc/src/.libs/libhwloc_embedded.lib && cp -f hwloc/src/.libs/libhwloc_embedded.lib hwloc/src/.libs/libhwloc_embedded.a ) || true
557 ( cp -f hwloc/src/.libs/libhwloc_embedded.a $(L) )
558 ( cp -f hwloc/include/hwloc.h $(INC) )
559 ( cp -LRf hwloc/include/hwloc $(INC) )
560 ifeq (false,$(CMK_NO_BUILD_SHARED))
561 ( test -d ../lib_so && cp -f hwloc/src/.libs/libhwloc_embedded.*$(CMK_SHARED_SUF)* ../lib_so/ ) || true
562 endif
563 touch $@
565 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) conv-static.o
566 if [ -f charmrun ] ; then ( cp -f charmrun ../bin ) ; fi
568 QUICK_THREADS: $(CVHEADERS)
569 -( $(MAKE) -C QuickThreads clean )
570 ( cd QuickThreads;./configure )
571 ( $(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 )
572 cp -f QuickThreads/libckqt.a ../lib/
573 ifeq (false,$(CMK_NO_BUILD_SHARED))
574 -( test -d ../lib_so && cp -f QuickThreads/libckqt.$(CMK_SHARED_SUF) ../lib_so/ ) || true
575 endif
576 touch QUICK_THREADS
578 CONVLIBS: converse
579 $(MAKE) -C libs convlibs
581 $(L)/libconv-core.a: $(LIBCONV_CORE)
582 $(CHARMC) $(TAU_LIBS) -o $@ $(LIBCONV_CORE)
584 $(L)/libconv-partition.a: custom_partitioner.o set_partition_params.o
585 $(CHARMC) -o $@ $^
587 $(L)/conv-static.o: conv-static.o
588 cp -f $< $@
590 $(L)/libconv-machine.a: machine.o
591 $(CHARMC) -o $@ $<
593 machine.o: machine.C $(CVHEADERS)
594 $(CHARMC) -I. -o $@ $<
596 $(L)/libconv-util.a: $(LIBCONV_UTIL)
597 $(CHARMC) -o $@ $(LIBCONV_UTIL)
599 $(L)/libconv-utilf.a: $(LIBCONV_UTILF)
600 -$(CHARMC) -o $@ $(LIBCONV_UTILF) || touch $@
602 $(L)/libconv-ldb.a: $(LIBCONV_LDB)
603 $(CHARMC) -o $@ $^
605 $(L)/libccs-client.a: ccs-client.o
606 $(CHARMC) -o $@ ccs-client.o
608 ccs-client.o: ccs-client.C $(CVHEADERS)
609 $(CHARMC) -DCMK_NOT_USE_CONVERSE=1 ccs-client.C
611 sockRoutines-seq.o: sockRoutines.C $(CVHEADERS) $(UTILHEADERS)
612 $(SEQCHARMC) -DCMK_NOT_USE_CONVERSE=1 -o sockRoutines-seq.o sockRoutines.C
614 pup_f.f90: pup_f.f90.sh
615 rm -f pup_f.f90 && ./pup_f.f90.sh
617 pup_f.o: pup_f.f90 $(CVHEADERS)
618 -$(CHARMC) -c pup_f.f90 && $(CHARMC) -cpmod ../include pupmod.M || touch pup_f.o
620 ## Converse load balancers (seed balancers, -balance)
621 $(L)/libldb-none.a: cldb.none.C $(CVHEADERS)
622 $(CHARMC) -o $@ cldb.none.C
624 $(L)/libldb-rand.a: cldb.rand.C cldb.h $(CVHEADERS)
625 $(CHARMC) -o $@ cldb.rand.C
627 $(L)/libldb-neighbor.a: cldb.neighbor.C cldb.neighbor.h $(CVHEADERS)
628 $(CHARMC) -o $@ cldb.neighbor.C
630 $(L)/libldb-workstealing.a: cldb.workstealing.C cldb.workstealing.h $(CVHEADERS)
631 $(CHARMC) -o $@ cldb.workstealing.C
633 $(L)/libldb-spray.a: cldb.spray.C $(CVHEADERS)
634 $(CHARMC) -o $@ cldb.spray.C
637 #$(L)/libldb-prioritycentralized.a: cldb.prioritycentralized.C cldb.prioritycentralized.h $(CVHEADERS)
638 # $(CHARMC) -o $@ cldb.prioritycentralized.C
640 #//$(L)/libldb-prioritycentralizedopt.a: cldb.prioritycentralizedopt.c cldb.prioritycentralizedopt.h $(CVHEADERS)
641 #// $(CHARMC) -o $@ cldb.prioritycentralizedopt.c
643 $(L)/libldb-test.a: cldb.test.C $(CVHEADERS)
644 $(CHARMC) -o $@ cldb.test.C
646 $(L)/libldb-bluegene.a: cldb.bluegene.C $(CVHEADERS)
647 $(CHARMC) -o $@ cldb.bluegene.C
649 ## Memory allocation libraries (-memory)
650 MEM_DEPS=memory-gnu.C memory-gnu-internal.C converse.h conv-mach.h $(CVHEADERS)
652 # $1 is the name of the module, $2 is any additional dependency beyond memory.C and $(MEM_DEPS), $3 is extra arguments to charmc
653 define libmem
654 $(L)/libmemory-$1.a: memory.C $(MEM_DEPS) $2
655 $(CHARMC) -I. -o libmemory-$1.o $3 $$<
656 $(CHARMC) -I. -o $$@ $3 libmemory-$1.o
657 endef
659 $(eval $(call libmem,default, ,-DCMK_MEMORY_BUILD_DEFAULT))
660 $(eval $(call libmem,os, ,-DCMK_MEMORY_BUILD_OS))
661 $(eval $(call libmem,os-verbose, memory-verbose.C, -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_VERBOSE -touch-on-failure))
662 $(eval $(call libmem,os-paranoid, memory-paranoid.C, -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_PARANOID -touch-on-failure))
663 $(eval $(call libmem,os-leak, memory-leak.C, -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_LEAK -touch-on-failure))
664 $(eval $(call libmem,os-isomalloc, memory-isomalloc.C, -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_ISOMALLOC -touch-on-failure))
665 $(eval $(call libmem,os-lock, memory-lock.C, -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_LOCK -touch-on-failure))
666 $(eval $(call libmem,os-charmdebug, memory-charmdebug.C, -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_CHARMDEBUG -touch-on-failure))
667 $(L)/libmemory-os-wrapper.a: memory-os-wrapper.C $(MEM_DEPS)
668 -$(CHARMC) -o $@ memory-os-wrapper.C || touch $@
670 $(eval $(call libmem,hooks-charmdebug,,-DCMK_MEMORY_BUILD_GNU_HOOKS -DCMK_MEMORY_BUILD_CHARMDEBUG -touch-on-failure))
672 # If the system doesn't have sbrk, these compilations may fail.
673 # This is OK, but then we can't use "-memory gnu" or friends.
674 $(eval $(call libmem,gnu, ,-DCMK_MEMORY_BUILD_GNU -touch-on-failure))
675 $(eval $(call libmem,gnu-verbose, memory-verbose.C ,-DCMK_MEMORY_BUILD_VERBOSE -touch-on-failure))
676 $(eval $(call libmem,gnu-paranoid, memory-paranoid.C ,-DCMK_MEMORY_BUILD_PARANOID -touch-on-failure))
677 $(eval $(call libmem,gnu-leak, memory-leak.C ,-DCMK_MEMORY_BUILD_LEAK -touch-on-failure))
678 $(eval $(call libmem,gnu-isomalloc, memory-isomalloc.C ,-DCMK_MEMORY_BUILD_ISOMALLOC -touch-on-failure))
679 $(eval $(call libmem,gnu-charmdebug, memory-charmdebug.C,-DCMK_MEMORY_BUILD_CHARMDEBUG -optimize -touch-on-failure))
680 $(eval $(call libmem,gnu-charmdebug-slot, memory-charmdebug.C,-DCMK_MEMORY_BUILD_CHARMDEBUG -DCMK_SEPARATE_SLOT -optimize -touch-on-failure))
681 $(eval $(call libmem,gnu-charmdebug-mmap, memory-charmdebug.C,-DCMK_MEMORY_BUILD_CHARMDEBUG -DCPD_USE_MMAP -optimize -touch-on-failure))
682 $(eval $(call libmem,gnu-charmdebug-mmap-slot,memory-charmdebug.C,-DCMK_MEMORY_BUILD_CHARMDEBUG -DCPD_USE_MMAP -DCMK_SEPARATE_SLOT -optimize -touch-on-failure))
684 ## Thread libraries (-thread)
686 LIBTHREADSDEPS = $(CVHEADERS) QUICK_THREADS
688 # $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'
689 define libthreads
690 $(L)/libthreads-$1.a: threads.C $(LIBTHREADSDEPS) $2
691 $(CHARMC) -IQuickThreads -I. -o libthreads-$1.o $3 $$<
692 ifeq (1,$$(strip $4))
693 $(CHARMC) -IQuickThreads -I. -o $$@ $3 $$(wildcard boost-context/*.o) libthreads-$1.o
694 else
695 $(CHARMC) -IQuickThreads -I. -o $$@ $3 libthreads-$1.o
696 endif
697 endef
699 uFcontext_asm:
700 $(MAKE) -C boost-context
701 touch uFcontext_asm
703 $(eval $(call libthreads,default, uFcontext_asm,-DCMK_THREADS_BUILD_DEFAULT=1, 1 ))
704 $(eval $(call libthreads,default-tls, uFcontext_asm,-DCMK_THREADS_BUILD_DEFAULT -DCMK_THREADS_BUILD_TLS=1 -touch-on-failure, 1 ))
705 $(eval $(call libthreads,qt, ,-DCMK_THREADS_BUILD_QT=1, 0))
706 $(eval $(call libthreads,qt-tls, ,-DCMK_THREADS_BUILD_QT=1 -DCMK_THREADS_BUILD_TLS=1 -touch-on-failure, 0))
707 $(eval $(call libthreads,context, ,-DCMK_THREADS_BUILD_CONTEXT=1 -touch-on-failure, 0))
708 $(eval $(call libthreads,context-tls, ,-DCMK_THREADS_BUILD_CONTEXT=1 -DCMK_THREADS_BUILD_TLS=1 -touch-on-failure, 0))
709 $(eval $(call libthreads,uJcontext, uJcontext.C,-DCMK_THREADS_BUILD_JCONTEXT=1 -U_FORTIFY_SOURCE -touch-on-failure,0))
710 $(eval $(call libthreads,uJcontext-tls, uJcontext.C,-DCMK_THREADS_BUILD_JCONTEXT=1 -DCMK_THREADS_BUILD_TLS=1 -U_FORTIFY_SOURCE -touch-on-failure,0))
711 $(eval $(call libthreads,uFcontext, uFcontext_asm,-DCMK_THREADS_BUILD_FCONTEXT=1 -U_FORTIFY_SOURCE -touch-on-failure, 1))
712 $(eval $(call libthreads,uFcontext-tls, uFcontext_asm,-DCMK_THREADS_BUILD_FCONTEXT=1 -DCMK_THREADS_BUILD_TLS=1 -U_FORTIFY_SOURCE -touch-on-failure, 1))
713 $(eval $(call libthreads,pthreads, ,-DCMK_THREADS_BUILD_PTHREADS=1 -touch-on-failure,0))
714 $(eval $(call libthreads,fibers, ,-DCMK_THREADS_BUILD_FIBERS=1 -touch-on-failure,0))
715 $(eval $(call libthreads,stackcopy, ,-DCMK_THREADS_BUILD_STACKCOPY=1 -touch-on-failure,0))
716 $(eval $(call libthreads,memoryalias, ,-DCMK_THREADS_BUILD_DEFAULT=1 -DCMK_THREADS_ALIAS_STACK=1 -touch-on-failure,0))
717 $(eval $(call libthreads,qt-memoryalias, ,-DCMK_THREADS_BUILD_QT=1 -DCMK_THREADS_ALIAS_STACK=1 -touch-on-failure,0))
718 $(eval $(call libthreads,context-memoryalias, ,-DCMK_THREADS_BUILD_CONTEXT=1 -DCMK_THREADS_ALIAS_STACK=1 -touch-on-failure,0))
719 $(eval $(call libthreads,uJcontext-memoryalias,uJcontext.C,-DCMK_THREADS_BUILD_JCONTEXT=1 -DCMK_THREADS_ALIAS_STACK=1 -U_FORTIFY_SOURCE -touch-on-failure,0))
721 ## Global swapping (-swapglobal)
722 swapglobal-target: $(L)/libglobal-swap.a
724 $(L)/libglobal-swap.a: global-elfgot.C $(CVHEADERS)
725 -$(CHARMC) -c global-elfgot.C -o $@ || touch $@
727 ###############################################################################
729 # Charm Libraries
731 ###############################################################################
733 CK_LIBS_CORE=$(L)/libck.a
735 LIBCK_CORE=trace-common.o tracec.o tracef.o init.o register.o qd.o ck.o \
736 msgalloc.o ckfutures.o ckIgetControl.o debug-message.o debug-charm.o ckcallback.o \
737 cklocation.o ckmulticast.o ckarrayoptions.o ckarray.o ckreduction.o ckrdma.o\
738 waitqd.o LBDatabase.o MetaBalancer.o weakTest.o treeTest.o forestTest.o readmodel.o lbdb.o lbdbf.o ckobjQ.o \
739 LBAgent.o LBProfit.o ckcheckpoint.o ckmemcheckpoint.o ckevacuation.o ckmessagelogging.o ckcausalmlog.o ckobjid.o\
740 LBDBManager.o LBComm.o LBObj.o LBMachineUtil.o CentralPredictor.o \
741 BaseLB.o CentralLB.o HybridBaseLB.o NborBaseLB.o DistBaseLB.o \
742 ckgraphTemp.o ckgraph.o LButil.o RefinerTemp.o Refiner.o RefinerApprox.o \
743 manager.o RefinerComm.o bitvecset.o ckset.o ckheap.o CommLBHeap.o \
744 NullLB.o LBSimulation.o modifyScheduler.o \
745 charmProjections.o cktiming.o ckbitvector.o \
746 pathHistory.o controlPoints.o arrayRedistributor.o cp_effects.o \
747 trace-controlPoints.o mpi-interoperate.o ckregex.o sdag.o \
749 charm-core: converse $(L)/libck.a $(L)/libckf.a $(L)/libckmain.a $(L)/libckmainf.a
750 charm-target: loadbalancers default_libs $(L)/libmpi-mainmodule.a tmgr
752 CHARMLIBS: charm++ CONVLIBS $(BIGSIM)
753 $(MAKE) -C libs charmlibs
755 $(L)/libck.a: $(LIBCK_CORE)
756 $(CHARMC) -o $@ $(LIBCK_CORE)
758 ## Charm fortran AMPI
760 CK_FOR_LIBS_CORE=$(L)/libckf.a
762 LIBCKF_CORE=charmf.o charmmod.o
764 $(L)/libckf.a: $(LIBCKF_CORE)
765 -$(CHARMC) -o $@ $(LIBCKF_CORE) || touch $@
767 charmf.o: charmf.C $(CKHEADERS) charmf.h
768 $(CHARMC) -c -I. charmf.C
770 charmmod.o: charmmod.f90
771 -$(CHARMC) -c charmmod.f90 || touch $@
772 -$(CHARMC) -cpmod ../include charm.M
774 mainf.o: mainf.f90
775 -$(CHARMC) -o $@ -c $< || touch $@
777 ## Tracing libraries (profiling, -tracemode)
778 LIBTRACE_PROJ=trace-projections.o
779 $(L)/libtrace-projections.a: $(LIBTRACE_PROJ)
780 $(CHARMC) -o $@ $(LIBTRACE_PROJ)
782 LIBTRACE_CP=trace-controlPoints.o
783 $(L)/libtrace-controlPoints.a: $(LIBTRACE_CP)
784 $(CHARMC) -o $@ $(LIBTRACE_CP)
786 LIBTRACE_AP=trace-perf.o picsautoperf.o picsautoperfAPI.o picstreenode.o picsdecisiontree.o
787 $(L)/libtrace-perfReport.a: $(LIBTRACE_AP)
788 $(CHARMC) -o $@ $(LIBTRACE_AP)
790 LIBTRACE_SUMM=trace-summary.o
791 $(L)/libtrace-summary.a: $(LIBTRACE_SUMM)
792 $(CHARMC) -o $@ $(LIBTRACE_SUMM)
794 LIBTRACE_UTIL=trace-utilization.o
795 $(L)/libtrace-utilization.a: $(LIBTRACE_UTIL)
796 $(CHARMC) -o $@ $(LIBTRACE_UTIL)
798 LIBTRACE_SIMPLE=trace-simple.o
799 $(L)/libtrace-simple.a: $(LIBTRACE_SIMPLE)
800 $(CHARMC) -o $@ $(LIBTRACE_SIMPLE)
802 libtrace-Tau.o: trace-Tau.C charm++.h charm.h converse.h conv-config.h \
803 conv-autoconfig.h conv-common.h conv-mach.h conv-mach-opt.h \
804 conv-mach-ifort.h pup_c.h conv-cpm.h conv-cpath.h conv-qd.h \
805 pup_c_functions.h \
806 conv-random.h conv-lists.h conv-trace.h persistent.h debug-conv.h pup.h \
807 middle.h middle-conv.h cklists.h ckbitvector.h ckstream.h init.h \
808 ckhashtable.h debug-charm.h CkMarshall.decl.h cksection.h ckcallback.h \
809 conv-ccs.h sockRoutines.h ccs-server.h ckobjQ.h ckreduction.h \
810 CkReduction.decl.h \
811 ckmemcheckpoint.h CkMemCheckpoint.decl.h readonly.h ckarray.h cklocrec.h ckmigratable.h \
812 cklocation.h ckmulticast.h LBDatabase.h MetaBalancer.h RandomForestModel.h lbdb.h LBDBManager.h LBObj.h LBOM.h LBComm.h \
813 LBMachineUtil.h lbdb++.h LBDatabase.decl.h MetaBalancer.decl.h NullLB.decl.h BaseLB.decl.h \
814 CkLocation.decl.h CkMulticast.decl.h CkArray.decl.h objid.h envelope.h envelope-path.h XArraySectionReducer.h CkFutures.decl.h \
815 waitqd.h waitqd.decl.h \
816 sdag.h ckcheckpoint.h CkCheckpoint.decl.h ckevacuation.h \
817 trace.h trace-bluegene.h trace-simple.h \
818 register.h trace-common.h trace-simpleBOC.h TraceSimple.decl.h \
819 TraceSimple.def.h ckregex.h
820 $(CHARMC) -c -I. $(TAU_INCLUDE) $(TAU_DEFS) trace-Tau.C -o libtrace-Tau.o
822 tau_selective.o: $(TAUROOT)/utils/tau_selective.cpp
823 $(CHARMC) -I$(TAUROOT)/utils -DTAU_DYNINST $(TAUROOT)/utils/tau_selective.cpp
825 $(L)/libtrace-Tau.a: $(TAU_TRACE_OBJ) tau_selective.o
826 $(CHARMC) $(TAU_LIBS) -o $@ $(TAU_TRACE_OBJ) tau_selective.o $(TAU_TRACE_OBJ)
828 LIBTRACE_COUNT=trace-counter.o
829 $(L)/libtrace-counter.a: $(LIBTRACE_COUNT)
830 $(CHARMC) -o $@ $(LIBTRACE_COUNT)
832 LIBTRACE_BG=trace-bluegene.o
833 $(L)/libtrace-bluegene.a:$(LIBTRACE_BG)
834 $(CHARMC) -o $@ $(LIBTRACE_BG)
836 LIBTRACE_MEMORY=trace-memory.o
837 $(L)/libtrace-memory.a: $(LIBTRACE_MEMORY)
838 $(CHARMC) -o $@ $(LIBTRACE_MEMORY)
840 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 \
841 $(TAU_TRACE_OBJ) trace-projector.o traceCore.o traceCoreCommon.o charmProjections.o converseProjections.o machineProjections.o trace-memory.o trace-utilization.o
843 $(L)/libtrace-all.a: $(LIBTRACE_ALL)
844 $(CHARMC) -o $@ $(LIBTRACE_ALL)
846 LIBTRACE_PROJECTOR=trace-projector.o traceCore.o traceCoreCommon.o charmProjections.o converseProjections.o machineProjections.o
847 $(L)/libtrace-projector.a: $(LIBTRACE_PROJECTOR)
848 $(CHARMC) -o $@ $(LIBTRACE_PROJECTOR)
850 LIBTRACE_CONVERSE=trace-converse.o
851 $(L)/libtrace-converse.a: $(LIBTRACE_CONVERSE)
852 $(CHARMC) -o $@ $(LIBTRACE_CONVERSE)
854 LIBTRACE_FOR=tracef_f.o
855 $(L)/libtracef_f.a: $(LIBTRACE_FOR)
856 -$(CHARMC) -o $@ $(LIBTRACE_FOR) || touch $@
858 tracef_f.o: tracef_f.f90
859 -$(CHARMC) -o $@ -c tracef_f.f90 && $(CHARMC) -cpmod ../include tracemod.M || touch $@
861 # used for make depends
862 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 \
863 trace-counter.o trace-utilization.o \
864 trace-bluegene.o trace-projector.o trace-converse.o trace-all.o \
865 trace-memory.o
867 ###############################################################################
869 # Dynamic Load Balancers
871 ###############################################################################
873 loadbalancers: $(COMMON_LDBS) $(L)/libmoduleCommonLBs.a
875 everylb: $(ALL_LDBS) $(L)/libmoduleEveryLB.a
876 MetisLB.o GridMetisLB.o: metis
878 %LB: $(L)/libmodule%LB.a
879 @true
880 $(L)/libmodule%LB.a: %LB.o
881 $(CHARMC) -o $@ $^
882 ( [ -r libmodule$*LB.dep ] && cp -f libmodule$*LB.dep $(L)/ ) || true
883 $(L)/libmoduleCommonLBs.a:
884 $(CHARMC) -o $@ $^
885 ( [ -r libmoduleCommonLBs.dep ] && cp -f libmoduleCommonLBs.dep $(L)/ ) || true
887 ###############################################################################
889 # BlueGene Emulator
891 ###############################################################################
893 bigsim: bigsim-target
895 bigemulator: bigsim
897 bigsim-target: charm++ $(L)/libconv-bigsim.a $(L)/libconv-bigsim-logs.a $(L)/libconv-bluegene-stub.a $(L)/libblue-standalone.a
899 $(L)/libbluegene.a: BlueGene.o
900 $(CHARMC) -o $@ $^
902 # (Converse) Blue Gene emulator
903 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
904 BIGSIM_IO_OBJS = bigsim_read.o bigsim_logs.o bigsim_api.o
906 LIBBLUE_OBJS = $(BLUE_OBJS) $(BIGSIM_IO_OBJS) blue_stub.o blue_standalone.o
908 $(L)/libconv-bigsim.a: $(BLUE_OBJS)
909 $(CHARMC) -o $@ $^
911 $(L)/libconv-bigsim-logs.a: $(BIGSIM_IO_OBJS)
912 $(CHARMC) -o $@ $^
914 $(L)/libconv-bluegene-stub.a: blue_stub.o
915 $(CHARMC) -o $@ $^
917 $(L)/libblue-standalone.a: blue_standalone.o
918 $(CHARMC) -o $@ $^
920 ###############################################################################
922 # The CPM scanner
924 ###############################################################################
926 conv-cpm: conv-cpm.o
927 $(NATIVECHARMC) -language c++ -o conv-cpm -cp ../bin/ conv-cpm.o
929 conv-cpm.o: conv-cpm.C $(CVHEADERS)
930 $(NATIVECHARMC) conv-cpm.C
932 ###############################################################################
934 # The interface translator
936 ###############################################################################
938 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
939 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
940 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
941 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
943 $(CHARMXIOBJ) $(SDAGOBJ): $(XIHEADERS) $(SDAGHEADERS)
944 $(CHARMXIOBJ) $(SDAGOBJ): CXX=$(NATIVECHARMC)
945 $(CHARMXIOBJ) $(SDAGOBJ): CXXFLAGS=-I$(SRCBASE)/xlat-i/ -I$(SRCBASE)/xlat-i/sdag/ -I.
946 xi-scan.o: CXXFLAGS+=-DYY_NEVER_INTERACTIVE
947 VPATH=$(SRCBASE)/xlat-i:$(SRCBASE)/xlat-i/sdag:$(SRCBASE)/xlat-i/sdag/constructs
949 charmxi: ../bin/charmxi
951 ../bin/charmxi: $(CHARMXIOBJ) $(SDAGOBJ)
952 $(NATIVECHARMC) -language c++ -cp ../bin/ -o charmxi $^
954 xi-clean:
955 rm $(CHARMXIOBJ) $(SDAGOBJ)
957 ###############################################################################
959 # Simple Messaging
961 ###############################################################################
963 $(L)/libtsm.a: converse simplemsg.C simplemsg.h
964 $(CHARMC) -o $@ simplemsg.C
966 $(L)/libsm.a: converse sm.C sm.h
967 $(CHARMC) -o $@ sm.C
969 ###############################################################################
971 # PVM
973 ###############################################################################
975 PVMC=pvmc_buf.o pvmc_comm.o pvmc_conv.o pvmc_main.o pvmc_pack.o pvmc_groups.o
977 $(L)/libpvmc.a: $(PVMC)
978 $(CHARMC) -o $@ $(PVMC)
980 pvmc_buf.o: pvmc_buf.C pvmc.h pvm3.h converse.h
981 $(CHARMC) -o $@ pvmc_buf.C
983 pvmc_conv.o: pvmc_conv.C pvmc.h pvm3.h converse.h
984 $(CHARMC) -o $@ pvmc_conv.C
986 pvmc_pack.o: pvmc_pack.C pvmc.h pvm3.h converse.h
987 $(CHARMC) -o $@ pvmc_pack.C
989 pvmc_comm.o: pvmc_comm.C pvmc.h pvm3.h converse.h
990 $(CHARMC) -o $@ pvmc_comm.C
992 pvmc_groups.o: pvmc_groups.C pvmc.h pvm3.h converse.h
993 $(CHARMC) -o $@ pvmc_groups.C
995 pvmc_main.o: pvmc_main.C pvmc.h pvm3.h converse.h
996 $(CHARMC) -o $@ pvmc_main.C
998 $(L)/libf90charm.a: charmxi f90main.ci f90main.h f90main.C
999 $(CHARMC) f90main.ci
1000 $(CHARMC) -c -DAMPI_FORTRAN=1 f90main.C
1001 -$(CHARMC) -o $@ f90main.o
1003 ##############################################################################
1004 # adding this entry for files which do not belong to any of other locations
1006 OTHER_OBJS= mpi-mainmodule.o main.o custom_partitioner.o BlueGene.o set_partition_params.o
1008 ##############################################################################
1010 ###############################################################################
1012 # Make clean
1014 ###############################################################################
1016 install:
1017 @test ! -d $(DESTDIR)/include && mkdir -p $(DESTDIR)/include || true
1018 @test ! -d $(DESTDIR)/lib && mkdir -p $(DESTDIR)/lib || true
1019 ifeq (false,$(CMK_NO_BUILD_SHARED))
1020 @test ! -d $(DESTDIR)/lib_so && mkdir -p $(DESTDIR)/lib_so || true
1021 endif
1022 @test ! -d $(DESTDIR)/bin && mkdir -p $(DESTDIR)/bin || true
1023 # cp -f ../include/* $(DESTDIR)/include
1024 for f in ../include/*; do if test -f $$f; then cp -f $$f $(DESTDIR)/include; fi; done
1025 cp -f ../lib/* $(DESTDIR)/lib
1026 ifeq (false,$(CMK_NO_BUILD_SHARED))
1027 cp -f ../lib_so/* $(DESTDIR)/lib_so || true
1028 endif
1029 # cp -f ../bin/* $(DESTDIR)/bin
1030 for f in ../bin/*; do if test -f $$f; then cp -f $$f $(DESTDIR)/bin; fi; done
1033 clean:
1034 rm -f conv-autoconfig.h config.cache
1035 rm -f QuickThreads/libckqt.a
1036 rm -f charmxi conv-cpm
1037 rm -f TAGS basics cmk_extras core
1038 rm -f core *.a
1039 rm -f core *.o
1040 rm -f core #*#
1041 rm -f core *~
1042 rm -f *.stamp
1043 if [ -d charmrun-src ] ; then ( $(MAKE) -C charmrun-src clean ) ; fi
1044 ( $(MAKE) -C libs clean )
1045 ( $(MAKE) -C ../benchmarks clean )
1046 ( $(MAKE) -C ../examples clean )
1047 ( $(MAKE) -C ../tests clean )
1049 veryclean:
1050 rm -rf ../bin ../lib ../src ../benchmarks ../examples ../tests ../include
1051 mv Makefile .Makefile
1052 mv Make.depends .Make.depends
1053 rm -rf [a-z]* [A-Z]*
1054 mv .Make.depends Make.depends
1055 rm -rf .[a-z]* .[A-Z]*
1058 config: configure conv-autoconfig.h.in
1060 cidepends: charmxi
1061 echo "Creating " $(CIDEPENDFILE) " ...";
1062 if [ -f $(CIDEPENDFILE) ]; then \
1063 /bin/cp -f $(CIDEPENDFILE) $(CIDEPENDFILE).old; \
1064 fi; \
1065 echo '#generated by make cidepends' > $(CIDEPENDFILE); \
1066 for cifile in $(sort $(wildcard *.ci)); do \
1067 echo "checking generated modules for $$cifile" ; \
1068 $(CHARMXI) -M $$cifile | sed '/\.stamp:/a \\t $$(CHARMC) -intrinsic $$< && touch $$@' >> $(CIDEPENDFILE) ; \
1069 done
1071 depends: cidepends commitid.C
1072 $(MAKE) basics
1073 echo "Creating " $(DEPENDFILE) " ...";
1074 if [ -f $(DEPENDFILE) ]; then \
1075 /bin/cp -f $(DEPENDFILE) $(DEPENDFILE).old; \
1076 fi; \
1077 echo '#generated by make depends' > $(DEPENDFILE); \
1078 processFiles=''; \
1079 for i in $(sort $(LIBCONV_CORE) $(LIBCONV_LDB) $(LIBCONV_UTIL) $(TRACE_OBJS) $(LIBCK_CORE) $(ALL_LB_OBJS) $(LIBBLUE_OBJS) $(OTHER_OBJS)) ; do \
1080 processed='false'; \
1081 for f in $$processFiles; do \
1082 if test $$i = $$f ; then \
1083 processed=true; break; \
1084 fi; \
1085 done; \
1086 test $$processed = 'true' && continue; \
1087 processFiles="$$processFiles $$i"; \
1088 SRCFILE=`basename $$i .o`.C ; \
1089 [ ! -f $$SRCFILE ] && SRCFILE=`basename $$i .o`.c ; \
1090 echo "checking dependencies for $$SRCFILE" ; \
1091 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; \
1092 echo '' >> $(DEPENDFILE) ; \
1093 done; \
1095 dependsCaseSensitive: cidepends
1096 $(MAKE) basics
1097 @echo "Creating " $(DEPENDFILE) " ...";
1098 if [ -f $(DEPENDFILE) ]; then \
1099 /bin/cp -f $(DEPENDFILE) $(DEPENDFILE).old; \
1100 fi; \
1101 echo '#generated by make depends' > $(DEPENDFILE); \
1102 processFiles=''; \
1103 for i in $(sort $(LIBCONV_CORE) $(LIBCONV_UTIL) $(TRACE_OBJS) $(LIBCK_CORE) $(ALL_LB_OBJS) $(LIBBLUE_OBJS) $(OTHER_OBJS)); do \
1104 processed='false'; \
1105 for f in $$processFiles; do \
1106 if test $$i = $$f ; then \
1107 processed=true; break; \
1108 fi; \
1109 done; \
1110 test $$processed = 'true' && continue; \
1111 processFiles="$$processFiles $$i"; \
1112 SRCFILE=`basename $$i .o`.C ; \
1113 SRCDIR=`dirname $$i` ; \
1114 found=`/usr/bin/find $$SRCDIR -depth 1 -name $$SRCFILE`; \
1115 [ ! $$found ] && SRCFILE=`basename $$i .o`.c ; \
1116 echo "checking dependencies for $$SRCFILE" ; \
1117 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; \
1118 echo '' >> $(DEPENDFILE) ; \
1119 done; \
1121 # If OPTS was not defined, use the build time options
1122 export OPTS ?= $(OPTSATBUILDTIME)
1123 ifeq ($(strip $(OPTS)),)
1124 $(warning Variable OPTS is defined to an empty string. Are you sure this is what you want?)
1125 endif
1128 -include machine.d
1129 machine.o: machine.d
1130 machine.d: machine.C conv-autoconfig.h $(CKHEADERS)
1131 @set -e; \
1132 rm -f $@; \
1133 $(CHARMC) $(OPTS) -M -I. -I$(INC) $< >$@.$$$$; \
1134 sed -e 's,\($*\)\.o[ :]*,\1.o $@ : ,g' -e "s,[Cc]:/,`command -v cygpath >/dev/null 2>&1 && cygpath -u 'C:/' || echo '/c'`/," < $@.$$$$ > $@; \
1135 rm -f $@.$$$$