Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
allow smpicc to survive to non-functionnal readlink on mac (by doing as if there...
[simgrid.git] / src / smpi / smpicc.in
1 #! /bin/bash
2 #FIXME: .. paths...
3 prefix="@prefix@"
4 exec_prefix="@exec_prefix@"
5
6 CC="gcc"
7
8 SEED="221238"
9
10 TMPDIR="$(mktemp -d tmpXXXXXXX)"
11
12 function modsource {
13   SOURCE="$1"
14   ## basename is not available on MAcOSX : SOURCEFILE="$(basename ${SOURCE})"
15   SOURCEFILE="`echo ${SOURCE} | egrep -o '[^/]+$'`"
16
17   SOURCEDIR="${SOURCE%${SOURCEFILE}}"
18   if [ -n "${SOURCEDIR}" ]; then
19     mkdir -p ${TMPDIR}${SOURCEDIR}
20   fi
21   TMPSOURCE="${TMPDIR}${SOURCE}"
22   cat > ${TMPSOURCE} <<HEADER
23 #define SEED ${SEED}
24 #include "smpi/smpi.h"
25 #include "xbt/sysdep.h"
26 #include "xbt/log.h"
27 #include "xbt/asserts.h"
28 #define sleep(x) smpi_sleep(x)
29 #define gettimeofday(x, y) smpi_gettimeofday(x, y)
30 int smpi_run_simulation(int *argc, char **argv);
31 HEADER
32   # very simplistic transform, will probably want full parser for next version
33   grep -v "mpi.h" < ${SOURCE} | perl -pe 's/main/smpi_simulated_main/;' >> ${TMPSOURCE}
34   grep -q "smpi_simulated_main" ${TMPSOURCE}
35   if [ $? -eq 0 ]; then
36     cat >> ${TMPSOURCE} <<FOOTER
37 int main(int argc, char **argv) {
38     return smpi_run_simulation(&argc, argv);
39 }
40 FOOTER
41   fi
42 }
43
44 INCLUDEARGS="-I @top_srcdir@/include "
45 LINKARGS="-L@top_builddir@/src/.libs -L@libdir@ -lsimgrid -lsmpi "
46
47 CMDLINE=""
48 while [ -n "$1" ]; do
49   ARG="$1"
50   shift
51   if [ "${ARG}" = "-c" ]; then
52       LINKARGS=""
53       CMDLINE="${CMDLINE} -c "
54   elif [ "${ARG%.c}" != "${ARG}" ]; then
55     INCLUDEARGS="${INCLUDEARGS} -I . -I .. -I ../include -I @includedir@ "
56 #    SRCFILE="$(realpath ${ARG})"
57     SRCFILE="$(readlink -f ${ARG} 2>/dev/null)"
58     if [ -z $SRCFILE ] ; then
59       SRCFILE="$ARG"
60     fi
61     modsource ${SRCFILE}
62     CMDLINE="${CMDLINE} ${TMPDIR}${SRCFILE} "
63   else
64     CMDLINE="${CMDLINE} ${ARG} "
65   fi
66 done
67
68 CMDLINE="${CC} ${INCLUDEARGS} ${CFLAGS} ${CMDLINE} ${LINKARGS}"
69
70 #echo "${CMDLINE}"
71 ${CMDLINE}
72 rm -rf ${TMPDIR}