Compare commits

..

2 Commits

Author SHA1 Message Date
Harmen Stoppels
4c2dae308a Fix typo
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-06 13:08:51 +02:00
Harmen Stoppels
bb735478fe compiler-wrapper: respect -x and --language
To compile hip code, the clang++ is invoked with -x hip, so we should
derive the language from the -x flag.
2025-05-06 13:08:51 +02:00
24 changed files with 53 additions and 41 deletions

View File

@@ -216,16 +216,13 @@ def check_args_contents(cc, args, must_contain, must_not_contain):
assert a not in cc_modified_args
def check_env_var(executable, var, expected):
"""Check environment variables updated by the passed compiler wrapper
This assumes that cc will print debug output when it's environment
contains SPACK_TEST_COMMAND=dump-env-<variable-to-debug>
"""
executable = Executable(str(executable))
with set_env(SPACK_TEST_COMMAND="dump-env-" + var):
output = executable(*test_args, output=str).strip()
assert executable.path + ": " + var + ": " + expected == output
def check_wrapper_var(exe, *args, var, expected):
"""Check variables set by the compiler wrapper. This works by setting SPACK_TEST_COMMAND to
dump-var-<variable-to-debug>, which will print the variable and exit."""
executable = Executable(str(exe))
with set_env(SPACK_TEST_COMMAND=f"dump-var-{var}"):
output = executable(*args, output=str).strip()
assert f"{executable.path}: {var}: {expected}" == output
def dump_mode(cc, args):
@@ -749,11 +746,22 @@ def test_system_path_cleanup(wrapper_environment, wrapper_dir):
"""
cc = wrapper_dir / "cc"
system_path = "/bin:/usr/bin:/usr/local/bin"
with set_env(SPACK_COMPILER_WRAPPER_PATH=str(wrapper_dir), SPACK_CC="true"):
with set_env(SPACK_COMPILER_WRAPPER_PATH=str(wrapper_dir)):
with set_env(PATH=str(wrapper_dir) + ":" + system_path):
check_env_var(cc, "PATH", system_path)
check_wrapper_var(cc, *test_args, var="PATH", expected=system_path)
with set_env(PATH=str(wrapper_dir) + "/:" + system_path):
check_env_var(cc, "PATH", system_path)
check_wrapper_var(cc, *test_args, var="PATH", expected=system_path)
def test_language_from_flags(wrapper_environment, wrapper_dir):
"""Test that the compiler language mode is determined by -x/--language flags if present"""
cc = wrapper_dir / "cc"
for flag_value, lang in [("c", "CC"), ("c++", "CXX"), ("f77", "F77"), ("f95", "FC")]:
check_wrapper_var(cc, "-c", "file", "-x", flag_value, var="comp", expected=lang)
check_wrapper_var(cc, "-c", "file", f"-x{flag_value}", var="comp", expected=lang)
check_wrapper_var(cc, "-c", "file", f"--language={flag_value}", var="comp", expected=lang)
check_wrapper_var(cc, "-c", "file", "--language", flag_value, var="comp", expected=lang)
def test_ld_deps_partial(wrapper_environment, wrapper_dir):

View File

@@ -20,7 +20,6 @@ class Accfft(CMakePackage, CudaPackage):
variant("pnetcdf", default=True, description="Add support for parallel NetCDF")
variant("shared", default=True, description="Enables the build of shared libraries")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
# See: http://accfft.org/articles/install/#installing-dependencies

View File

@@ -23,7 +23,6 @@ class Brigand(CMakePackage):
version("1.1.0", sha256="afdcc6909ebff6994269d3039c31698c2b511a70280072f73382b26855221f64")
version("1.0.0", sha256="8daf7686ff39792f851ef1977323808b80aab31c5f38ef0ba4e6a8faae491f8d")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
def cmake_args(self):

View File

@@ -23,7 +23,6 @@ class Camellia(CMakePackage):
description="Compile with MOAB to include support for reading standard mesh formats",
)
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on(

View File

@@ -178,9 +178,10 @@ execute() {
unset IFS
exit
;;
dump-env-*)
var=${SPACK_TEST_COMMAND#dump-env-}
dump-var-*)
var=${SPACK_TEST_COMMAND#dump-var-}
eval "printf '%s\n' \"\$0: \$var: \$$var\""
exit
;;
*)
die "Unknown test command: '$SPACK_TEST_COMMAND'"
@@ -296,9 +297,36 @@ fi
# Note. SPACK_ALWAYS_XFLAGS are applied for all compiler invocations,
# including version checks (SPACK_XFLAGS variants are not applied
# for version checks).
command="${0##*/}"
command_from_argv0="${0##*/}"
command="$command_from_argv0"
comp="CC"
vcheck_flags=""
_command_from_flags() {
while [ $# -ne 0 ]; do
arg="$1"
shift
case "$arg" in
-x|--language)
_lang="$1"
shift ;;
-x*)
_lang="${arg#-x}" ;;
--language=*)
_lang="${arg#--language=}" ;;
*) continue ;;
esac
done
case "$_lang" in
c) command=cc ;;
c++|f77|f95) command="$_lang" ;;
*) command="$command_from_argv0" ;; # drop unknown languages
esac
}
_command_from_flags "$@"
case "$command" in
cpp)
mode=cpp

View File

@@ -43,7 +43,7 @@ class CompilerWrapper(Package):
if sys.platform != "win32":
version(
"1.0",
sha256="c65a9d2b2d4eef67ab5cb0684d706bb9f005bb2be94f53d82683d7055bdb837c",
sha256="db44e5898aa9b8605e3cfe53a51649b4df504066f0f13562432f584fc88a5038",
expand=False,
)
else:

View File

@@ -14,7 +14,6 @@ class Cotter(CMakePackage):
version("master", branch="master")
version("20190205", commit="b7b07f3298a8d57b9dfff0b72fc21e68b23a42da")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("erfa")

View File

@@ -21,5 +21,4 @@ class CppLogger(CMakePackage):
version("0.0.2", tag="v0.0.2", commit="329a48401033d2d2a1f1196141763cab029220ae")
version("0.0.1", tag="v0.0.1", commit="d48b38ab14477bb7c53f8189b8b4be2ea214c28a")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated

View File

@@ -19,7 +19,6 @@ class Digitrounding(CMakePackage):
version("2020-02-27", commit="7b18679aded7a85e6f221f7f5cd4f080f322bc33")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("zlib-api")

View File

@@ -46,7 +46,6 @@ class Ectrans(CMakePackage):
variant("transi", default=True, description="Compile TransI C-interface to trans")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("fortran", type="build") # generated
depends_on("ecbuild", type="build")

View File

@@ -22,7 +22,6 @@ class Flcl(CMakePackage):
version("0.4.0", sha256="0fe327906a991262866b126a7d58098eb48297148f117fd59a2dbcc14e76f394")
version("0.3", sha256="fc18c8fa3ae33db61203b647ad9025d894612b0faaf7fe07426aaa8bbfa9e703")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("fortran", type="build") # generated

View File

@@ -40,7 +40,6 @@ class Hipace(CMakePackage):
description="Floating point precision (single/double)",
)
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("cmake@3.18.0:", type="build", when="@23.05:")

View File

@@ -22,7 +22,4 @@ class JediCmake(CMakePackage):
)
version("1.3.0", commit="729a9b2ec97a7e93cbc58213493f28ca11f08754")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("cmake @3.10:", type=("build"))

View File

@@ -21,5 +21,4 @@ class Kumi(CMakePackage):
version("2.0", sha256="c9f2d2014d3513c57db4457c5a678c7adce1fa9bd061ee008847876f06dac355")
version("1.0", sha256="d28be244e326b1c9f1651b47728af74bb6be80a7accd39f07441a246d49220f5")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated

View File

@@ -26,7 +26,6 @@ class Libevpath(CMakePackage):
variant("enet_transport", default=False, description="Build an ENET transport for EVpath")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("gtkorvo-enet", when="@4.4.0: +enet_transport")
depends_on("gtkorvo-enet@1.3.13", when="@:4.2.4 +enet_transport")

View File

@@ -19,7 +19,6 @@ class Libfive(CMakePackage):
# and currently, all tags are from 2017:
version("master", branch="master")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("pkgconfig", type="build")

View File

@@ -31,8 +31,6 @@ class Mdspan(CMakePackage):
description="Whether to install headers to emulate standard library headers and namespace",
)
depends_on("cxx", type="build")
depends_on("benchmark", when="+benchmarks")
depends_on("googletest@1.14:1", when="+tests")

View File

@@ -21,7 +21,6 @@ class MelissaApi(CMakePackage):
version("develop", branch="develop")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("fortran", type="build") # generated
depends_on("cmake@3.7.2:", type="build")

View File

@@ -38,7 +38,6 @@ class Mpiwrapper(CMakePackage):
version("2.0.0", sha256="cdc81f3fae459569d4073d99d068810689a19cf507d9c4e770fa91e93650dbe4")
version("1.0.1", sha256="29d5499a1a7a358d69dd744c581e57cac9223ebde94b52fa4a2b98c730ad47ff")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("fortran", type="build") # generated

View File

@@ -32,7 +32,6 @@ def url_for_version(self, version):
variant("tbb", default=False, description="Builds with Intel TBB support")
variant("openmp", default=False, description="Builds with OpenMP support")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("cmake@2.8.6:", type="build")

View File

@@ -25,7 +25,6 @@ class Parsplice(CMakePackage):
version("multisplice", branch="multisplice")
version("1.1", sha256="a011c4d14f66e7cdbc151cc74b5d40dfeae19ceea033ef48185d8f3b1bc2f86b")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("cmake@3.1:", type="build")

View File

@@ -46,7 +46,6 @@ class Parthenon(CMakePackage):
# Dependencies
# ------------------------------------------------------------#
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("cmake@3.16:", type="build")

View File

@@ -15,7 +15,6 @@ class SrcmlIdentifierGetterTool(CMakePackage):
version("2022-10-17", commit="01394c247ae6f61cc5864a9697e72e3623d8e7fb", submodules=True)
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("libxml2")

View File

@@ -15,7 +15,6 @@ class TemplightTools(CMakePackage):
version("develop", branch="master")
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("cmake @2.8.7:", type="build")