diff options
author | Manuel Mendez <github@i.m.mmlb.dev> | 2022-06-13 14:24:52 -0400 |
---|---|---|
committer | Manuel Mendez <github@i.m.mmlb.dev> | 2022-06-15 11:34:53 -0400 |
commit | 0fdc72b7e94f121943b4c03bc97c6b7bdabc28d9 (patch) | |
tree | e16973430a32e76b7f46c5a52ed1d509d0c3a4e2 /pkgs/build-support/cc-wrapper | |
parent | 19b6ccd9acb89585cb9df7fae22e68baacda3534 (diff) |
cc-wrapper: Add clang specific options to clang specific file
This way gcc doesn't need to be rebuilt because of clang. This also avoids rebuilding clang when only the wrapper needs to be tweaked.
Diffstat (limited to 'pkgs/build-support/cc-wrapper')
-rw-r--r-- | pkgs/build-support/cc-wrapper/add-clang-cc-cflags-before.sh | 11 | ||||
-rw-r--r-- | pkgs/build-support/cc-wrapper/cc-wrapper.sh | 6 | ||||
-rw-r--r-- | pkgs/build-support/cc-wrapper/default.nix | 14 |
3 files changed, 22 insertions, 9 deletions
diff --git a/pkgs/build-support/cc-wrapper/add-clang-cc-cflags-before.sh b/pkgs/build-support/cc-wrapper/add-clang-cc-cflags-before.sh new file mode 100644 index 0000000000000..f943b8504683b --- /dev/null +++ b/pkgs/build-support/cc-wrapper/add-clang-cc-cflags-before.sh @@ -0,0 +1,11 @@ +needsTarget=true + +for p in "${params[@]}"; do + case "$p" in + -target | --target=*) needsTarget=false ;; + esac +done + +if $needsTarget; then + extraBefore+=(-target @defaultTarget@) +fi diff --git a/pkgs/build-support/cc-wrapper/cc-wrapper.sh b/pkgs/build-support/cc-wrapper/cc-wrapper.sh index b8049dafb9830..651519490aa4f 100644 --- a/pkgs/build-support/cc-wrapper/cc-wrapper.sh +++ b/pkgs/build-support/cc-wrapper/cc-wrapper.sh @@ -29,7 +29,6 @@ cc1=0 cxxInclude=1 cxxLibrary=1 cInclude=1 -needsTarget=@needsTarget@ expandResponseParams "$@" linkType=$(checkLinkType "${params[@]}") @@ -47,7 +46,6 @@ while (( "$n" < "$nParams" )); do -nostdinc) cInclude=0 cxxInclude=0 ;; -nostdinc++) cxxInclude=0 ;; -nostdlib) cxxLibrary=0 ;; - -target|--target=*) needsTarget=0;; -x) case "$p2" in *-header) dontLink=1 ;; @@ -161,8 +159,8 @@ if [ "$dontLink" != 1 ]; then export NIX_LINK_TYPE_@suffixSalt@=$linkType fi -if [ $needsTarget == 1 ]; then - extraAfter+=(-target @defaultTarget@) +if [[ -e @out@/nix-support/add-local-cc-cflags-before.sh ]]; then + source @out@/nix-support/add-local-cflags-before.sh fi # As a very special hack, if the arguments are just `-v', then don't diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index 1fc0491cbec7f..5be2589088ba3 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -208,7 +208,6 @@ stdenv.mkDerivation { + '' export named_cc=${targetPrefix}cc export named_cxx=${targetPrefix}c++ - export needsTarget=0 if [ -e $ccPath/${targetPrefix}gcc ]; then wrap ${targetPrefix}gcc $wrapper $ccPath/${targetPrefix}gcc @@ -216,8 +215,6 @@ stdenv.mkDerivation { export named_cc=${targetPrefix}gcc export named_cxx=${targetPrefix}g++ elif [ -e $ccPath/clang ]; then - needsTarget=1 - export defaultTarget=${targetPlatform.config} wrap ${targetPrefix}clang $wrapper $ccPath/clang ln -s ${targetPrefix}clang $out/bin/${targetPrefix}cc export named_cc=${targetPrefix}clang @@ -228,8 +225,6 @@ stdenv.mkDerivation { wrap ${targetPrefix}g++ $wrapper $ccPath/${targetPrefix}g++ ln -s ${targetPrefix}g++ $out/bin/${targetPrefix}c++ elif [ -e $ccPath/clang++ ]; then - needsTarget=1 - export defaultTarget=${targetPlatform.config} wrap ${targetPrefix}clang++ $wrapper $ccPath/clang++ ln -s ${targetPrefix}clang++ $out/bin/${targetPrefix}c++ fi @@ -520,6 +515,15 @@ stdenv.mkDerivation { '' ## + ## General Clang support + ## Needs to go after ^ because the for loop eats \n and makes this file an invalid script + ## + + optionalString isClang '' + export defaultTarget=${targetPlatform.config} + substituteAll ${./add-clang-cc-cflags-before.sh} $out/nix-support/add-local-cc-cflags-before.sh + '' + + ## ## Extra custom steps ## + extraBuildCommands |