128 lines
3.8 KiB
Plaintext
128 lines
3.8 KiB
Plaintext
# $Id: ParGNUmakefile,v 1.6 2007/05/25 17:27:20 cooperma Exp $
|
|
# --------------------------------------------------------------
|
|
#This file should be included in GNUmakefile of local directory.
|
|
|
|
#Usage: make [ to compile parallel version ]
|
|
# make run [ to compile and run it ]
|
|
# make run-debug [ to compile and run in gdb ]
|
|
# make parclean [ remove intermediate and executable files ]
|
|
# See `run' target for parameters by which executable is called.
|
|
# This assumes Geant4 environment vars have been defined.
|
|
# See ../info/NEW_APP_INSTALL (number 10) for an example of setting up
|
|
# the Geant4 environment variables.
|
|
|
|
# MEM_MODEL can be --seq, --mpi, or --pthread in current version of TOP-C.
|
|
MEM_MODEL=--seq
|
|
MEM_MODEL=--mpi
|
|
|
|
ifndef REMOTE_SHELL
|
|
REMOTE_SHELL=ssh
|
|
endif
|
|
|
|
MACROFILE=ParN02.in
|
|
|
|
# DATAFILE=pythia_event.data
|
|
DATAFILE=
|
|
|
|
# Everything below here should be set automatically based on
|
|
# your environment variables, the G4TARGET of GNUmakefile, etc.
|
|
# G4TARGET set in the makefile that includes this one.
|
|
|
|
ifndef PARTARGET
|
|
PARTARGET = ${G4TARGET}
|
|
endif
|
|
|
|
ifndef G4INSTALL
|
|
G4INSTALL = _Environment_variable_G4INSTALL_must_be_defined_
|
|
endif
|
|
|
|
ifndef G4WORKDIR
|
|
G4WORKDIR = ${G4INSTALL}
|
|
endif
|
|
|
|
ifndef G4BIN
|
|
G4BIN = $$G4WORKDIR/bin
|
|
endif
|
|
ifndef G4BINDIR
|
|
G4BINDIR = ${G4BIN}/$$G4SYSTEM
|
|
endif
|
|
|
|
EXECUTABLE=${G4BIN}/$$G4SYSTEM/${PARTARGET}
|
|
|
|
G4DEBUG = 1
|
|
|
|
TOPC_LIBS = $(shell topc-config ${MEM_MODEL} --libs)
|
|
TOPC_CFLAGS = -DG4USE_TOPC $(shell topc-config ${MEM_MODEL} --cflags)
|
|
# optionally add: -DTOPC_DEBUG to TOPC_CFLAGS for debugging details.
|
|
TOPC_OPTIONS = --TOPC-verbose
|
|
|
|
EXTRALIBS=${TOPC_LIBS}
|
|
CPPFLAGS=${TOPC_CFLAGS}
|
|
|
|
TIMESTAMP=${G4BINDIR}/ParN02.timestamp
|
|
|
|
# Unfortunately, .../geant4.x.x/config/binmake.gmk has target:
|
|
# $(G4BINDIR)/$(G4TARGET)
|
|
# (for example: ${G4BIN}/$$G4SYSTEM/ParN02)
|
|
# And that rule always triggers due to dependency on .../exe/obj.last
|
|
# Also, G4BINDIR uses shell variables, that are guaranteed to expand
|
|
# only after recursive make.
|
|
compile:
|
|
@ if [ "$$G4SYSTEM" = "" ]; then \
|
|
echo '***' Environment variable G4SYSTEM not defined; \
|
|
echo '***' Make sure G4INSTALL and G4SYSTEM are set; \
|
|
exit 1; \
|
|
fi
|
|
${MAKE} G4BINDIR=${G4BINDIR} ${TIMESTAMP}
|
|
@ if which topc-config > /dev/null; then :; \
|
|
else \
|
|
echo '***' topc-config is not in your path; \
|
|
exit 1; \
|
|
fi
|
|
@ echo ""
|
|
@ echo 'To run, now type "make run"'
|
|
@ echo 'To remove built files, type "make parclean"'
|
|
|
|
${TIMESTAMP}: *.cc *.icc src/*.cc include/*.hh ParGNUmakefile
|
|
@ if which topc-config > /dev/null; then :; \
|
|
else \
|
|
echo ''; \
|
|
echo '***' topc-config is not in your path; \
|
|
exit 1; \
|
|
fi
|
|
${MAKE} all
|
|
rm -f ${TIMESTAMP}
|
|
echo "" > ${TIMESTAMP}
|
|
make -t ${EXECUTABLE}
|
|
|
|
run: compile
|
|
pwd
|
|
echo ${EXECUTABLE}
|
|
cp -f ${MACROFILE} ${DATAFILE} procgroup `dirname ${EXECUTABLE}`/
|
|
# ${EXECUTABLE} will use procgroup file in current directory.
|
|
( cd `dirname ${EXECUTABLE}`; RSH=${REMOTE_SHELL}; export RSH; \
|
|
${EXECUTABLE} ${TOPC_OPTIONS} ${MACROFILE} )
|
|
|
|
run-debug: compile
|
|
@ if [ "$$G4DEBUG" = "" ]; then \
|
|
echo '***' Environment variable G4DEBUG not defined; \
|
|
echo '***' Set it, make parclean, and re-compile using GDEBUG; \
|
|
fi
|
|
# exit 1; \
|
|
echo ${EXECUTABLE}
|
|
cp -f ${MACROFILE} ${DATAFILE} procgroup `dirname ${EXECUTABLE}`/
|
|
rm -f `dirname ${EXECUTABLE}`/tmp.gdb
|
|
echo 'set args ${TOPC_OPTIONS} ${MACROFILE}' \
|
|
> `dirname ${EXECUTABLE}`/tmp.gdb
|
|
echo 'break main' >> `dirname ${EXECUTABLE}`/tmp.gdb
|
|
echo 'run' >> `dirname ${EXECUTABLE}`/tmp.gdb
|
|
# ${EXECUTABLE} will use procgroup file in current directory.
|
|
( cd `dirname ${EXECUTABLE}`; RSH=${REMOTE_SHELL}; export RSH; \
|
|
gdb -x tmp.gdb ${EXECUTABLE} )
|
|
parclean:
|
|
rm -f ${TIMESTAMP}
|
|
${MAKE} clean
|
|
pardist: parclean
|
|
( dir=`basename $$PWD`; cd ..; tar cvf $$dir.tar ./$$dir; \
|
|
gzip $$dir.tar && (cd $$dir; ls -l ../$$dir.tar.gz) )
|