summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2015-11-23 16:51:16 -0500
committerErik Schnetter <schnetter@gmail.com>2015-12-17 10:13:39 -0500
commit5d618886570e98e6745593701246b877998a5367 (patch)
tree920b8657830602eb3d92c8d6480530abea1266e3 /lib
parent6b6a82c14711e9cc889e9c7453b5a25db078ef29 (diff)
downloadspack-5d618886570e98e6745593701246b877998a5367.tar.gz
spack-5d618886570e98e6745593701246b877998a5367.tar.bz2
spack-5d618886570e98e6745593701246b877998a5367.tar.xz
spack-5d618886570e98e6745593701246b877998a5367.zip
Correct Spack cc script
Diffstat (limited to 'lib')
-rwxr-xr-xlib/spack/env/cc34
1 files changed, 33 insertions, 1 deletions
diff --git a/lib/spack/env/cc b/lib/spack/env/cc
index 75a63f6fac..f3fadfcf45 100755
--- a/lib/spack/env/cc
+++ b/lib/spack/env/cc
@@ -126,6 +126,11 @@ if [ -z "$mode" ]; then
elif [ "$arg" = -c ]; then
mode=cc
break
+ elif [ "$arg" = -S ]; then
+ mode=as
+ echo "spac cc mode as" "$@"
+ exit 1
+ break
fi
done
fi
@@ -155,6 +160,7 @@ libraries=()
libs=()
rpaths=()
other_args=()
+all_args=("$@")
while [ -n "$1" ]; do
case "$1" in
@@ -178,6 +184,8 @@ while [ -n "$1" ]; do
if [ -z "$arg" ]; then shift; arg="$1"; fi
if [[ "$arg" = -rpath=* ]]; then
rpaths+=("${arg#-rpath=}")
+ elif [[ "$arg" = -rpath,* ]]; then
+ rpaths+=("${arg#-rpath,}")
elif [[ "$arg" = -rpath ]]; then
shift; arg="$1"
if [[ "$arg" != -Wl,* ]]; then
@@ -193,6 +201,8 @@ while [ -n "$1" ]; do
if [ -z "$arg" ]; then shift; arg="$1"; fi
if [[ "$arg" = -rpath=* ]]; then
rpaths+=("${arg#-rpath=}")
+ elif [[ "$arg" = -rpath,* ]]; then
+ rpaths+=("${arg#-rpath,}")
elif [[ "$arg" = -rpath ]]; then
shift; arg="$1"
if [[ "$arg" != -Xlinker,* ]]; then
@@ -247,25 +257,46 @@ IFS=':' read -ra deps <<< "$SPACK_DEPENDENCIES"
for dep in "${deps[@]}"; do
if [ -d "$dep/include" ]; then
includes+=("$dep/include")
+ all_args=("-I$dep/include" ${all_args[@]})
fi
if [ -d "$dep/lib" ]; then
libraries+=("$dep/lib")
rpaths+=("$dep/lib")
+ if [ "$mode" = ccld ]; then
+ all_args=("-L$dep/lib" "-Wl,-rpath,$dep/lib" ${all_args[@]})
+ elif [ "$mode" = ld ]; then
+ all_args=("-L$dep/lib" "-rpath" "$dep/lib" ${all_args[@]})
+ fi
fi
if [ -d "$dep/lib64" ]; then
libraries+=("$dep/lib64")
rpaths+=("$dep/lib64")
+ if [ "$mode" = ccld ]; then
+ all_args=("-L$dep/lib" "-Wl,-rpath,$dep/lib" ${all_args[@]})
+ elif [ "$mode" = ld ]; then
+ all_args=("-L$dep/lib" "-rpath" "$dep/lib" ${all_args[@]})
+ fi
fi
done
# Include all -L's and prefix/whatever dirs in rpath
for dir in "${libraries[@]}"; do
[[ dir = $SPACK_INSTALL* ]] && rpaths+=("$dir")
+ if [ "$mode" = ccld ]; then
+ [[ dir = $SPACK_INSTALL* ]] && all_args=("-Wl,-rpath,$dir" ${all_args[@]})
+ elif [ "$mode" = ld ]; then
+ [[ dir = $SPACK_INSTALL* ]] && all_args=("-rpath" "$dir" ${all_args[@]})
+ fi
done
rpaths+=("$SPACK_PREFIX/lib")
rpaths+=("$SPACK_PREFIX/lib64")
+if [ "$mode" = ccld ]; then
+ all_args=("-Wl,-rpath,$SPACK_PREFIX/lib" "-Wl,-rpath,$SPACK_PREFIX/lib64" ${all_args[@]})
+elif [ "$mode" = ld ]; then
+ all_args=("-rpath" "$SPACK_PREFIX/lib" "-rpath" "$SPACK_PREFIX/lib64" ${all_args[@]})
+fi
# Put the arguments together
args=()
@@ -317,7 +348,8 @@ done
export PATH
full_command=("$command")
-full_command+=("${args[@]}")
+# full_command+=("${args[@]}")
+full_command+=("${all_args[@]}")
#
# Write the input and output commands to debug logs if it's asked for.