Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Spack
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
eic_tools
Spack
Commits
e104592e
Commit
e104592e
authored
9 years ago
by
Todd Gamblin
Browse files
Options
Downloads
Plain Diff
Merge pull request #738 from eschnett/eschnett/cleanup-cc
Clean up cc script
parents
11771d9a
4ce03b75
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
lib/spack/env/cc
+47
-47
47 additions, 47 deletions
lib/spack/env/cc
with
47 additions
and
47 deletions
lib/spack/env/cc
+
47
−
47
View file @
e104592e
...
...
@@ -39,7 +39,7 @@
#
# This is the list of environment variables that need to be set before
# the script runs.
They are set by routines in spack.build_environment
# the script runs. They are set by routines in spack.build_environment
# as part of spack.package.Package.do_install().
parameters
=
"
SPACK_PREFIX
...
...
@@ -50,7 +50,7 @@ SPACK_SHORT_SPEC"
# The compiler input variables are checked for sanity later:
# SPACK_CC, SPACK_CXX, SPACK_F77, SPACK_FC
# Debug flag is optional; set to
true
for debug logging:
# Debug flag is optional; set to
"TRUE"
for debug logging:
# SPACK_DEBUG
# Test command is used to unit test the compiler script.
# SPACK_TEST_COMMAND
...
...
@@ -66,11 +66,10 @@ function die {
for
param
in
$parameters
;
do
if
[[
-z
${
!param
}
]]
;
then
die
"Spack compiler must be run from
s
pack!
Input
$param
wa
s missing
!
"
die
"Spack compiler must be run from
S
pack! Input
'
$param
' i
s missing
.
"
fi
done
#
# Figure out the type of compiler, the language, and the mode so that
# the compiler script knows what to do.
#
...
...
@@ -78,19 +77,18 @@ done
# 'command' is set based on the input command to $SPACK_[CC|CXX|F77|F90]
#
# 'mode' is set to one of:
# vcheck version check
# cpp preprocess
# cc compile
# as assemble
# ld link
# ccld compile & link
# vcheck version check
#
# Depending on the mode, we may or may not add extra rpaths.
# This variable controls whether they are added.
add_rpaths
=
true
command
=
$(
basename
"
$0
"
)
case
"
$command
"
in
cpp
)
mode
=
cpp
;;
cc|c89|c99|gcc|clang|icc|pgcc|xlc
)
command
=
"
$SPACK_CC
"
language
=
"C"
...
...
@@ -107,34 +105,20 @@ case "$command" in
command
=
"
$SPACK_F77
"
language
=
"Fortran 77"
;;
cpp
)
mode
=
cpp
;;
ld
)
mode
=
ld
# Darwin's linker has a -r argument that merges object files
# together. It doesn't work with -rpath.
if
[[
$OSTYPE
=
darwin
*
]]
;
then
for
arg
in
"
$@
"
;
do
if
[
"
$arg
"
=
-r
]
;
then
add_rpaths
=
false
break
fi
done
fi
;;
*
)
die
"Unkown compiler:
$command
"
;;
esac
# If any of the arguments below
is
present then the mode is vcheck.
In
# vcheck mode nothing is added in terms of extra search paths or
# libraries
if
[
-z
"
$mode
"
]
;
then
# If any of the arguments below
are
present
,
then the mode is vcheck.
#
In
vcheck mode
,
nothing is added in terms of extra search paths or
# libraries
.
if
[
[
-z
$mode
]
]
;
then
for
arg
in
"
$@
"
;
do
if
[
"
$arg
"
=
-v
-o
"
$arg
"
=
-V
-o
"
$arg
"
=
--version
-o
"
$arg
"
=
-dumpversion
]
;
then
if
[
[
$arg
=
=
-v
||
$arg
=
=
-V
||
$arg
=
=
--version
||
$arg
=
=
-dumpversion
]
]
;
then
mode
=
vcheck
break
fi
...
...
@@ -142,16 +126,16 @@ if [ -z "$mode" ]; then
fi
# Finish setting up the mode.
if
[
-z
"
$mode
"
]
;
then
if
[
[
-z
$mode
]
]
;
then
mode
=
ccld
for
arg
in
"
$@
"
;
do
if
[
"
$arg
"
=
-E
]
;
then
if
[
[
$arg
=
=
-E
]
]
;
then
mode
=
cpp
break
elif
[
"
$arg
"
=
-S
]
;
then
elif
[
[
$arg
=
=
-S
]
]
;
then
mode
=
as
break
elif
[
"
$arg
"
=
-c
]
;
then
elif
[
[
$arg
=
=
-c
]
]
;
then
mode
=
cc
break
fi
...
...
@@ -159,7 +143,7 @@ if [ -z "$mode" ]; then
fi
# Dump the version and exit if we're in testing mode.
if
[
"
$SPACK_TEST_COMMAND
"
=
"
dump-mode
"
]
;
then
if
[
[
$SPACK_TEST_COMMAND
=
=
dump-mode
]
]
;
then
echo
"
$mode
"
exit
fi
...
...
@@ -170,10 +154,23 @@ if [[ -z $command ]]; then
die
"ERROR: Compiler '
$SPACK_COMPILER_SPEC
' does not support compiling
$language
programs."
fi
if
[
"
$mode
"
==
vcheck
]
;
then
if
[
[
$mode
==
vcheck
]
]
;
then
exec
${
command
}
"
$@
"
fi
# Darwin's linker has a -r argument that merges object files together.
# It doesn't work with -rpath.
# This variable controls whether they are added.
add_rpaths
=
true
if
[[
mode
==
ld
&&
$OSTYPE
==
darwin
*
]]
;
then
for
arg
in
"
$@
"
;
do
if
[[
$arg
==
-r
]]
;
then
add_rpaths
=
false
break
fi
done
fi
# Save original command for debug logging
input_command
=
"
$@
"
args
=(
"
$@
"
)
...
...
@@ -183,17 +180,17 @@ IFS=':' read -ra deps <<< "$SPACK_DEPENDENCIES"
for
dep
in
"
${
deps
[@]
}
"
;
do
# Prepend include directories
if
[[
-d
$dep
/include
]]
;
then
if
[[
$mode
=
cpp
||
$mode
=
cc
||
$mode
=
as
||
$mode
=
ccld
]]
;
then
if
[[
$mode
=
=
cpp
||
$mode
=
=
cc
||
$mode
=
=
as
||
$mode
=
=
ccld
]]
;
then
args
=(
"-I
$dep
/include"
"
${
args
[@]
}
"
)
fi
fi
# Prepend lib and RPATH directories
if
[[
-d
$dep
/lib
]]
;
then
if
[[
$mode
=
ccld
]]
;
then
if
[[
$mode
=
=
ccld
]]
;
then
$add_rpaths
&&
args
=(
"-Wl,-rpath,
$dep
/lib"
"
${
args
[@]
}
"
)
args
=(
"-L
$dep
/lib"
"
${
args
[@]
}
"
)
elif
[[
$mode
=
ld
]]
;
then
elif
[[
$mode
=
=
ld
]]
;
then
$add_rpaths
&&
args
=(
"-rpath"
"
$dep
/lib"
"
${
args
[@]
}
"
)
args
=(
"-L
$dep
/lib"
"
${
args
[@]
}
"
)
fi
...
...
@@ -201,10 +198,10 @@ for dep in "${deps[@]}"; do
# Prepend lib64 and RPATH directories
if
[[
-d
$dep
/lib64
]]
;
then
if
[[
$mode
=
ccld
]]
;
then
if
[[
$mode
=
=
ccld
]]
;
then
$add_rpaths
&&
args
=(
"-Wl,-rpath,
$dep
/lib64"
"
${
args
[@]
}
"
)
args
=(
"-L
$dep
/lib64"
"
${
args
[@]
}
"
)
elif
[[
$mode
=
ld
]]
;
then
elif
[[
$mode
=
=
ld
]]
;
then
$add_rpaths
&&
args
=(
"-rpath"
"
$dep
/lib64"
"
${
args
[@]
}
"
)
args
=(
"-L
$dep
/lib64"
"
${
args
[@]
}
"
)
fi
...
...
@@ -212,9 +209,9 @@ for dep in "${deps[@]}"; do
done
# Include all -L's and prefix/whatever dirs in rpath
if
[[
$mode
=
ccld
]]
;
then
if
[[
$mode
=
=
ccld
]]
;
then
$add_rpaths
&&
args
=(
"-Wl,-rpath,
$SPACK_PREFIX
/lib"
"-Wl,-rpath,
$SPACK_PREFIX
/lib64"
"
${
args
[@]
}
"
)
elif
[[
$mode
=
ld
]]
;
then
elif
[[
$mode
=
=
ld
]]
;
then
$add_rpaths
&&
args
=(
"-rpath"
"
$SPACK_PREFIX
/lib"
"-rpath"
"
$SPACK_PREFIX
/lib64"
"
${
args
[@]
}
"
)
fi
...
...
@@ -234,11 +231,14 @@ IFS=':' read -ra spack_env_dirs <<< "$SPACK_ENV_PATH"
spack_env_dirs+
=(
""
"."
)
PATH
=
""
for
dir
in
"
${
env_path
[@]
}
"
;
do
remove
=
""
for
rm_dir
in
"
${
spack_env_dirs
[@]
}
"
;
do
if
[[
$dir
=
$rm_dir
]]
;
then
remove
=
True
;
fi
addpath
=
true
for
env_dir
in
"
${
spack_env_dirs
[@]
}
"
;
do
if
[[
$dir
==
$env_dir
]]
;
then
addpath
=
false
break
fi
done
if
[[
-z
$remove
]]
;
then
if
$addpath
;
then
PATH
=
"
${
PATH
:+
$PATH
:
}
$dir
"
fi
done
...
...
@@ -247,7 +247,7 @@ export PATH
full_command
=(
"
$command
"
"
${
args
[@]
}
"
)
# In test command mode, write out full command for Spack tests.
if
[[
$SPACK_TEST_COMMAND
=
dump-args
]]
;
then
if
[[
$SPACK_TEST_COMMAND
=
=
dump-args
]]
;
then
echo
"
${
full_command
[@]
}
"
exit
elif
[[
-n
$SPACK_TEST_COMMAND
]]
;
then
...
...
@@ -257,7 +257,7 @@ fi
#
# Write the input and output commands to debug logs if it's asked for.
#
if
[[
$SPACK_DEBUG
=
TRUE
]]
;
then
if
[[
$SPACK_DEBUG
=
=
TRUE
]]
;
then
input_log
=
"
$SPACK_DEBUG_LOG_DIR
/spack-cc-
$SPACK_SHORT_SPEC
.in.log"
output_log
=
"
$SPACK_DEBUG_LOG_DIR
/spack-cc-
$SPACK_SHORT_SPEC
.out.log"
echo
"[
$mode
]
$command
$input_command
"
>>
$input_log
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment