Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge pull request #259 from simgrid/configfix
[simgrid.git] / src / smpi / smpicc.in
1 #!/usr/bin/env sh
2
3 # Copyright (c) 2007-2017. The SimGrid Team.
4 # All rights reserved.
5
6 # This program is free software; you can redistribute it and/or modify it
7 # under the terms of the license (GNU LGPL) which comes with this package.
8
9 SIMGRID_VERSION="@SIMGRID_VERSION_STRING@"
10 SIMGRID_GITHASH="@SIMGRID_GITHASH@"
11
12 CC=@CMAKE_C_COMPILER@
13
14 INCLUDEARGS="@includeflag@"
15 CMAKE_LINKARGS="-L@libdir@"
16
17 @SMPITOOLS_SH@
18
19 list_set CFLAGS
20 list_set LINKARGS
21 if [ "x@WIN32@" = "x1" ]; then
22     list_add CFLAGS "-include" "@includedir@/smpi/smpi_main.h"
23     list_add LINKARGS "@libdir@\libsimgrid.dll"
24 elif [ "x@APPLE@" = "x1" ]; then
25     list_add CFLAGS "-fpic"
26     if [ "x${SMPI_PRETEND_CC}" = "x" ]; then
27        list_add LINKARGS "-shared"
28     else
29        echo "Warning: smpicc pretends to be a regular compiler (SMPI_PRETEND_CC is set). Produced binaries will not be usable in SimGrid."
30     fi
31     list_add LINKARGS "-lsimgrid" "-Wl,-undefined,error"
32 else
33     list_add CFLAGS "-fpic"
34     if [ "x${SMPI_PRETEND_CC}" = "x" ]; then
35        list_add LINKARGS "-shared"
36     else
37        echo "Warning: smpicc pretends to be a regular compiler (SMPI_PRETEND_CC is set). Produced binaries will not be usable in SimGrid."
38     fi
39     list_add LINKARGS "-lsimgrid" "-Wl,-z,defs"
40 fi
41
42
43 list_set CMDARGS
44 while [ $# -gt 0 ]; do
45     ARG="$1"
46     shift
47     case "${ARG}" in
48         -c)
49             CMAKE_LINKARGS=""
50             LINKARGS=""
51             list_add CMDARGS "-c"
52             ;;
53         *.c)
54             SRCFILE="$(readlink -f ${ARG} 2>/dev/null)"
55             if [ -z "$SRCFILE" ] ; then
56                 SRCFILE="$ARG"
57             fi
58             list_add CMDARGS "${SRCFILE}"
59             ;;
60         '-version' | '--version')
61             printf '%b\n' "$SIMGRID_VERSION"
62             exit 0
63             ;;
64         "-git-version" | "--git-version")
65             printf '%b\n' "$SIMGRID_GITHASH"
66             exit 0
67             ;;
68         '-trace-call-location')
69             list_add_not_empty CMDARGS "-DTRACE_CALL_LOCATION"
70             ;;
71         '-compiler-version' | '--compiler-version')
72             ${CC} --version
73             ;;
74         *)
75             list_add CMDARGS "${ARG}"
76             ;;
77     esac
78 done
79
80 list_set CMDLINE "${CC}"
81 list_add_not_empty CMDLINE "${CFLAGS}"
82 list_add_not_empty CMDLINE ${INCLUDEARGS}
83 list_add_not_empty CMDLINE ${CMAKE_LINKARGS}
84 list_add_not_empty CMDLINE "${CMDARGS}"
85 list_add_not_empty CMDLINE "${LINKARGS}"
86
87 eval $(list_get CMDLINE)
88 "$@"