3 SIMGRID_INCLUDE="${SIMGRID_HOME}/include"
4 SIMGRID_LIB="${SIMGRID_HOME}/lib"
7 SMPI_INCLUDE="${SMPI_HOME}/include"
8 SMPI_LIB="${SMPI_HOME}/lib"
11 TMPDIR="$(mktemp -d tmpXXXXXXX)"
15 SOURCEFILE="$(basename ${SOURCE})"
16 SOURCEDIR="${SOURCE%${SOURCEFILE}}"
17 if [ -n "${SOURCEDIR}" ]; then
18 mkdir -p ${TMPDIR}${SOURCEDIR}
20 TMPSOURCE="${TMPDIR}${SOURCE}"
21 cat > ${TMPSOURCE} <<HEADER
25 #include "xbt/sysdep.h"
27 #include "xbt/asserts.h"
28 #define sleep(x) smpi_sleep(x)
29 #define gettimeofday(x, y) smpi_gettimeofday(x, y)
31 # very simplistic transform, will probably want full parser for next version
32 grep -v "mpi.h" < ${SOURCE} | perl -pe 's/main/smpi_main/;' >> ${TMPSOURCE}
33 grep -q "smpi_main" ${TMPSOURCE}
35 cat >> ${TMPSOURCE} <<FOOTER
36 XBT_LOG_NEW_DEFAULT_CATEGORY(msg_simulation, "Messages specific to this simulation");
37 int main(int argc, char *argv[]) {
40 MSG_global_init(&argc, argv);
41 MSG_set_channel_number(MAX_CHANNEL);
42 MSG_function_register("smpi_main", smpi_main);
43 MSG_function_register("smpi_sender", smpi_sender);
44 MSG_function_register("smpi_receiver", smpi_receiver);
45 MSG_create_environment(argv[1]);
46 MSG_launch_application(argv[2]);
48 INFO1("simulation time %g", MSG_get_clock());
50 return (MSG_OK != result);
57 LINKARGS="-L${SMPI_LIB} -lsmpi -L${SIMGRID_LIB} -lsimgrid"
63 if [ "${ARG}" = "-c" ]; then
65 CMDLINE="${CMDLINE} -c "
66 elif [ "${ARG%.c}" != "${ARG}" ]; then
67 INCLUDEARGS="-I${SMPI_INCLUDE} -I${SIMGRID_INCLUDE} "
68 SRCFILE="$(realpath ${ARG})"
70 CMDLINE="${CMDLINE} ${TMPDIR}${SRCFILE} "
72 CMDLINE="${CMDLINE} ${ARG} "
76 CMDLINE="${CC} ${INCLUDEARGS}${CMDLINE}${LINKARGS}"