diff --git a/lib/spack/env/cc b/lib/spack/env/cc index 5efe015c9e..3300d6781a 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -320,9 +320,13 @@ while [ -n "$1" ]; do if [ -z "$arg" ]; then shift; arg="$1"; fi if [[ "$arg" = -rpath=* ]]; then rp="${arg#-rpath=}" + elif [[ "$arg" = --rpath=* ]]; then + rp="${arg#--rpath=}" elif [[ "$arg" = -rpath,* ]]; then rp="${arg#-rpath,}" - elif [[ "$arg" = -rpath ]]; then + elif [[ "$arg" = --rpath,* ]]; then + rp="${arg#--rpath,}" + elif [[ "$arg" =~ ^-?-rpath$ ]]; then shift; arg="$1" if [[ "$arg" != -Wl,* ]]; then die "-Wl,-rpath was not followed by -Wl,*" @@ -339,7 +343,9 @@ while [ -n "$1" ]; do if [ -z "$arg" ]; then shift; arg="$1"; fi if [[ "$arg" = -rpath=* ]]; then rp="${arg#-rpath=}" - elif [[ "$arg" = -rpath ]]; then + elif [[ "$arg" = --rpath=* ]]; then + rp="${arg#--rpath=}" + elif [[ "$arg" = -rpath ]] || [[ "$arg" = --rpath ]]; then shift; arg="$1" if [[ "$arg" != -Xlinker,* ]]; then die "-Xlinker,-rpath was not followed by -Xlinker,*" diff --git a/lib/spack/spack/test/cc.py b/lib/spack/spack/test/cc.py index 7b8d34fbde..b719286f84 100644 --- a/lib/spack/spack/test/cc.py +++ b/lib/spack/spack/test/cc.py @@ -28,6 +28,7 @@ '-Wl,--end-group', '-Xlinker', '-rpath', '-Xlinker', '/third/rpath', '-Xlinker', '-rpath', '-Xlinker', '/fourth/rpath', + '-Wl,--rpath,/fifth/rpath', '-Wl,--rpath', '-Wl,/sixth/rpath', '-llib3', '-llib4', 'arg5', 'arg6'] @@ -45,11 +46,13 @@ test_wl_rpaths = [ '-Wl,-rpath,/first/rpath', '-Wl,-rpath,/second/rpath', - '-Wl,-rpath,/third/rpath', '-Wl,-rpath,/fourth/rpath'] + '-Wl,-rpath,/third/rpath', '-Wl,-rpath,/fourth/rpath', + '-Wl,-rpath,/fifth/rpath', '-Wl,-rpath,/sixth/rpath'] test_rpaths = [ '-rpath', '/first/rpath', '-rpath', '/second/rpath', - '-rpath', '/third/rpath', '-rpath', '/fourth/rpath'] + '-rpath', '/third/rpath', '-rpath', '/fourth/rpath', + '-rpath', '/fifth/rpath', '-rpath', '/sixth/rpath'] test_args_without_paths = [ 'arg1',