@ -32,8 +32,8 @@ let
#
# TODO(@Ericson2314) Make unconditional, or optional but always true by
# default.
p refix = stdenv . lib . optionalString ( targetPlatform != hostPlatform )
( targetPlatform . config + " - " ) ;
targetP refix = stdenv . lib . optionalString ( targetPlatform != hostPlatform )
( targetPlatform . config + " - " ) ;
ccVersion = ( builtins . parseDrvName cc . name ) . version ;
ccName = ( builtins . parseDrvName cc . name ) . name ;
@ -81,7 +81,7 @@ let
in
stdenv . mkDerivation {
name = p refix
name = targetP refix
+ ( if name != " " then name else " ${ ccName } - w r a p p e r " )
+ ( stdenv . lib . optionalString ( cc != null && ccVersion != " " ) " - ${ ccVersion } " ) ;
@ -91,8 +91,7 @@ stdenv.mkDerivation {
shell = getBin shell + shell . shellPath or " " ;
gnugrep_bin = if nativeTools then " " else gnugrep ;
binPrefix = prefix ;
inherit infixSalt ;
inherit targetPrefix infixSalt ;
outputs = [ " o u t " " m a n " ] ;
@ -102,8 +101,7 @@ stdenv.mkDerivation {
# Binutils, and Apple's "cctools"; "binutils" as an attempt to find an
# unused middle-ground name that evokes both.
bintools = binutils_bin ;
inherit libc nativeTools nativeLibc nativePrefix isGNU isClang default_cxx_stdlib_compile
prefix ;
inherit libc nativeTools nativeLibc nativePrefix isGNU isClang default_cxx_stdlib_compile ;
emacsBufferSetup = pkgs : ''
; We should handle propagation here too
@ -154,7 +152,7 @@ stdenv.mkDerivation {
+ optionalString ( targetPlatform . isSunOS && nativePrefix != " " ) ''
# Solaris needs an additional ld wrapper.
ldPath = " ${ nativePrefix } / b i n "
exec = " $ l d P a t h / ${ p refix} l d "
exec = " $ l d P a t h / ${ targetP refix} l d "
wrap ld-solaris $ { ./ld-solaris-wrapper.sh }
'' )
@ -162,83 +160,83 @@ stdenv.mkDerivation {
# Create a symlink to as (the assembler). This is useful when a
# cc-wrapper is installed in a user environment, as it ensures that
# the right assembler is called.
if [ - e $ ldPath / $ { p refix} as ] ; then
ln - s $ ldPath / $ { p refix} as $ out/bin / $ { p refix} as
if [ - e $ ldPath / $ { targetP refix} as ] ; then
ln - s $ ldPath / $ { targetP refix} as $ out/bin / $ { targetP refix} as
fi
'' + ( i f ! u s e M a c o s R e e x p o r t H a c k t h e n ''
wrap $ { p refix} ld $ { ./ld-wrapper.sh } '' ${ ld:-$ldPath/$ { p refix} ld }
wrap $ { targetP refix} ld $ { ./ld-wrapper.sh } '' ${ ld:-$ldPath/$ { targetP refix} ld }
'' e l s e ''
ldInner = " ${ p refix} l d - r e e x p o r t - d e l e g a t e "
wrap " $ l d I n n e r " $ { ./macos-sierra-reexport-hack.bash } '' ${ ld:-$ldPath/$ { p refix} ld }
wrap " ${ p refix} l d " $ { ./ld-wrapper.sh } " $ o u t / b i n / $ l d I n n e r "
ldInner = " ${ targetP refix} l d - r e e x p o r t - d e l e g a t e "
wrap " $ l d I n n e r " $ { ./macos-sierra-reexport-hack.bash } '' ${ ld:-$ldPath/$ { targetP refix} ld }
wrap " ${ targetP refix} l d " $ { ./ld-wrapper.sh } " $ o u t / b i n / $ l d I n n e r "
unset ldInner
'' ) + ''
if [ - e $ { binutils_bin } /bin / $ { p refix} ld . gold ] ; then
wrap $ { p refix} ld . gold $ { ./ld-wrapper.sh } $ { binutils_bin } /bin / $ { p refix} ld . gold
if [ - e $ { binutils_bin } /bin / $ { targetP refix} ld . gold ] ; then
wrap $ { targetP refix} ld . gold $ { ./ld-wrapper.sh } $ { binutils_bin } /bin / $ { targetP refix} ld . gold
fi
if [ - e $ { binutils_bin } /bin/ld.bfd ] ; then
wrap $ { p refix} ld . bfd $ { ./ld-wrapper.sh } $ { binutils_bin } /bin / $ { p refix} ld . bfd
wrap $ { targetP refix} ld . bfd $ { ./ld-wrapper.sh } $ { binutils_bin } /bin / $ { targetP refix} ld . bfd
fi
# We export environment variables pointing to the wrapped nonstandard
# cmds, lest some lousy configure script use those to guess compiler
# version.
export named_cc = $ { p refix} cc
export named_cxx = $ { p refix} c ++
export named_cc = $ { targetP refix} cc
export named_cxx = $ { targetP refix} c ++
export default_cxx_stdlib_compile = " ${ default_cxx_stdlib_compile } "
if [ - e $ ccPath / $ { p refix} gcc ] ; then
wrap $ { p refix} gcc $ { ./cc-wrapper.sh } $ ccPath / $ { p refix} gcc
ln - s $ { p refix} gcc $ out/bin / $ { p refix} cc
export named_cc = $ { p refix} gcc
export named_cxx = $ { p refix} g ++
if [ - e $ ccPath / $ { targetP refix} gcc ] ; then
wrap $ { targetP refix} gcc $ { ./cc-wrapper.sh } $ ccPath / $ { targetP refix} gcc
ln - s $ { targetP refix} gcc $ out/bin / $ { targetP refix} cc
export named_cc = $ { targetP refix} gcc
export named_cxx = $ { targetP refix} g ++
elif [ - e $ ccPath/clang ] ; then
wrap $ { p refix} clang $ { ./cc-wrapper.sh } $ ccPath/clang
ln - s $ { p refix} clang $ out/bin / $ { p refix} cc
export named_cc = $ { p refix} clang
export named_cxx = $ { p refix} clang ++
wrap $ { targetP refix} clang $ { ./cc-wrapper.sh } $ ccPath/clang
ln - s $ { targetP refix} clang $ out/bin / $ { targetP refix} cc
export named_cc = $ { targetP refix} clang
export named_cxx = $ { targetP refix} clang ++
fi
if [ - e $ ccPath / $ { p refix} g ++ ] ; then
wrap $ { p refix} g ++ $ { ./cc-wrapper.sh } $ ccPath / $ { p refix} g ++
ln - s $ { p refix} g ++ $ out/bin / $ { p refix} c ++
if [ - e $ ccPath / $ { targetP refix} g ++ ] ; then
wrap $ { targetP refix} g ++ $ { ./cc-wrapper.sh } $ ccPath / $ { targetP refix} g ++
ln - s $ { targetP refix} g ++ $ out/bin / $ { targetP refix} c ++
elif [ - e $ ccPath/clang++ ] ; then
wrap $ { p refix} clang ++ $ { ./cc-wrapper.sh } $ ccPath/clang++
ln - s $ { p refix} clang ++ $ out/bin / $ { p refix} c ++
wrap $ { targetP refix} clang ++ $ { ./cc-wrapper.sh } $ ccPath/clang++
ln - s $ { targetP refix} clang ++ $ out/bin / $ { targetP refix} c ++
fi
if [ - e $ ccPath/cpp ] ; then
wrap $ { p refix} cpp $ { ./cc-wrapper.sh } $ ccPath/cpp
wrap $ { targetP refix} cpp $ { ./cc-wrapper.sh } $ ccPath/cpp
fi
''
+ optionalString cc . langFortran or false ''
wrap $ { p refix} gfortran $ { ./cc-wrapper.sh } $ ccPath / $ { p refix} gfortran
ln - sv $ { p refix} gfortran $ out/bin / $ { p refix} g77
ln - sv $ { p refix} gfortran $ out/bin / $ { p refix} f77
wrap $ { targetP refix} gfortran $ { ./cc-wrapper.sh } $ ccPath / $ { targetP refix} gfortran
ln - sv $ { targetP refix} gfortran $ out/bin / $ { targetP refix} g77
ln - sv $ { targetP refix} gfortran $ out/bin / $ { targetP refix} f77
''
+ optionalString cc . langJava or false ''
wrap $ { p refix} gcj $ { ./cc-wrapper.sh } $ ccPath / $ { p refix} gcj
wrap $ { targetP refix} gcj $ { ./cc-wrapper.sh } $ ccPath / $ { targetP refix} gcj
''
+ optionalString cc . langGo or false ''
wrap $ { p refix} gccgo $ { ./cc-wrapper.sh } $ ccPath / $ { p refix} gccgo
wrap $ { targetP refix} gccgo $ { ./cc-wrapper.sh } $ ccPath / $ { targetP refix} gccgo
''
+ optionalString cc . langAda or false ''
wrap $ { p refix} gnatgcc $ { ./cc-wrapper.sh } $ ccPath / $ { p refix} gnatgcc
wrap $ { p refix} gnatmake $ { ./gnat-wrapper.sh } $ ccPath / $ { p refix} gnatmake
wrap $ { p refix} gnatbind $ { ./gnat-wrapper.sh } $ ccPath / $ { p refix} gnatbind
wrap $ { p refix} gnatlink $ { ./gnatlink-wrapper.sh } $ ccPath / $ { p refix} gnatlink
wrap $ { targetP refix} gnatgcc $ { ./cc-wrapper.sh } $ ccPath / $ { targetP refix} gnatgcc
wrap $ { targetP refix} gnatmake $ { ./gnat-wrapper.sh } $ ccPath / $ { targetP refix} gnatmake
wrap $ { targetP refix} gnatbind $ { ./gnat-wrapper.sh } $ ccPath / $ { targetP refix} gnatbind
wrap $ { targetP refix} gnatlink $ { ./gnatlink-wrapper.sh } $ ccPath / $ { targetP refix} gnatlink
''
+ optionalString cc . langVhdl or false ''
ln - s $ ccPath / $ { p refix} ghdl $ out/bin / $ { p refix} ghdl
ln - s $ ccPath / $ { targetP refix} ghdl $ out/bin / $ { targetP refix} ghdl
'' ;
propagatedBuildInputs = extraPackages ;
@ -362,10 +360,10 @@ stdenv.mkDerivation {
# some linkers on some platforms don't support specific -z flags
export hardening_unsupported_flags = " "
if [ [ " $ ( $ l d P a t h / ${ p refix} l d - z n o w 2 > & 1 | | t r u e ) " = ~ un ( recognized | known ) \ option ] ] ; then
if [ [ " $ ( $ l d P a t h / ${ targetP refix} l d - z n o w 2 > & 1 | | t r u e ) " = ~ un ( recognized | known ) \ option ] ] ; then
hardening_unsupported_flags + = " b i n d n o w "
fi
if [ [ " $ ( $ l d P a t h / ${ p refix} l d - z r e l r o 2 > & 1 | | t r u e ) " = ~ un ( recognized | known ) \ option ] ] ; then
if [ [ " $ ( $ l d P a t h / ${ targetP refix} l d - z r e l r o 2 > & 1 | | t r u e ) " = ~ un ( recognized | known ) \ option ] ] ; then
hardening_unsupported_flags + = " r e l r o "
fi
''