{cc,bintools}-wrapper: use executable extension when set

On windows platforms we want links to executables to have the .exe
extension, but wrapper scripts shouldn't.
This commit is contained in:
David McFarland
2026-01-13 12:44:10 -04:00
parent 24d776dd47
commit df12a53d55
2 changed files with 22 additions and 20 deletions
@@ -92,6 +92,7 @@ let
# TODO(@Ericson2314) Make unconditional, or optional but always true by
# default.
targetPrefix = optionalString (targetPlatform != hostPlatform) (targetPlatform.config + "-");
exeSuffix = stdenvNoCC.hostPlatform.extensions.executable;
bintoolsVersion = getVersion bintools;
bintoolsName = removePrefix targetPrefix (getName bintools);
@@ -257,17 +258,17 @@ stdenvNoCC.mkDerivation {
+ ''
for binary in objdump objcopy size strings as ar nm gprof dwp c++filt addr2line \
ranlib readelf elfedit dlltool dllwrap windmc windres; do
if [ -e $ldPath/${targetPrefix}''${binary} ]; then
ln -s $ldPath/${targetPrefix}''${binary} $out/bin/${targetPrefix}''${binary}
if [ -e $ldPath/${targetPrefix}''${binary}${exeSuffix} ]; then
ln -s $ldPath/${targetPrefix}''${binary}${exeSuffix} $out/bin/${targetPrefix}''${binary}${exeSuffix}
fi
done
if [ -e ''${ld:-$ldPath/${targetPrefix}ld} ]; then
wrap ${targetPrefix}ld ${./ld-wrapper.sh} ''${ld:-$ldPath/${targetPrefix}ld}
if [ -e ''${ld:-$ldPath/${targetPrefix}ld}${exeSuffix} ]; then
wrap ${targetPrefix}ld ${./ld-wrapper.sh} ''${ld:-$ldPath/${targetPrefix}ld}${exeSuffix}
fi
for variant in $ldPath/${targetPrefix}ld.*; do
basename=$(basename "$variant")
for variant in $ldPath/${targetPrefix}ld.*${exeSuffix}; do
basename=$(basename "${if exeSuffix != "" then "\${variant%${exeSuffix}}" else "$variant"}")
wrap $basename ${./ld-wrapper.sh} $variant
done
'';
+15 -14
View File
@@ -118,6 +118,7 @@ let
#
# TODO(@Ericson2314) Make unconditional, or optional but always true by default.
targetPrefix = optionalString (targetPlatform != hostPlatform) (targetPlatform.config + "-");
exeSuffix = stdenvNoCC.hostPlatform.extensions.executable;
ccVersion = getVersion cc;
ccName = removePrefix targetPrefix (getName cc);
@@ -524,34 +525,34 @@ stdenvNoCC.mkDerivation {
export named_cc=${targetPrefix}cc
export named_cxx=${targetPrefix}c++
if [ -e $ccPath/${targetPrefix}gcc ]; then
wrap ${targetPrefix}gcc $wrapper $ccPath/${targetPrefix}gcc
if [ -e $ccPath/${targetPrefix}gcc${exeSuffix} ]; then
wrap ${targetPrefix}gcc $wrapper $ccPath/${targetPrefix}gcc${exeSuffix}
ln -s ${targetPrefix}gcc $out/bin/${targetPrefix}cc
export named_cc=${targetPrefix}gcc
export named_cxx=${targetPrefix}g++
elif [ -e $ccPath/clang ]; then
wrap ${targetPrefix}clang $wrapper $ccPath/clang
elif [ -e $ccPath/clang${exeSuffix} ]; then
wrap ${targetPrefix}clang $wrapper $ccPath/clang${exeSuffix}
ln -s ${targetPrefix}clang $out/bin/${targetPrefix}cc
export named_cc=${targetPrefix}clang
export named_cxx=${targetPrefix}clang++
elif [ -e $ccPath/arocc ]; then
wrap ${targetPrefix}arocc $wrapper $ccPath/arocc
elif [ -e $ccPath/arocc${exeSuffix} ]; then
wrap ${targetPrefix}arocc $wrapper $ccPath/arocc${exeSuffix}
ln -s ${targetPrefix}arocc $out/bin/${targetPrefix}cc
export named_cc=${targetPrefix}arocc
fi
if [ -e $ccPath/${targetPrefix}g++ ]; then
wrap ${targetPrefix}g++ $wrapper $ccPath/${targetPrefix}g++
if [ -e $ccPath/${targetPrefix}g++${exeSuffix} ]; then
wrap ${targetPrefix}g++ $wrapper $ccPath/${targetPrefix}g++${exeSuffix}
ln -s ${targetPrefix}g++ $out/bin/${targetPrefix}c++
elif [ -e $ccPath/clang++ ]; then
wrap ${targetPrefix}clang++ $wrapper $ccPath/clang++
elif [ -e $ccPath/clang++${exeSuffix} ]; then
wrap ${targetPrefix}clang++ $wrapper $ccPath/clang++${exeSuffix}
ln -s ${targetPrefix}clang++ $out/bin/${targetPrefix}c++
fi
if [ -e $ccPath/${targetPrefix}cpp ]; then
wrap ${targetPrefix}cpp $wrapper $ccPath/${targetPrefix}cpp
elif [ -e $ccPath/cpp ]; then
wrap ${targetPrefix}cpp $wrapper $ccPath/cpp
if [ -e $ccPath/${targetPrefix}cpp${exeSuffix} ]; then
wrap ${targetPrefix}cpp $wrapper $ccPath/${targetPrefix}cpp${exeSuffix}
elif [ -e $ccPath/cpp${exeSuffix} ]; then
wrap ${targetPrefix}cpp $wrapper $ccPath/cpp${exeSuffix}
fi
''