@ -49,6 +49,7 @@ in rec {
# Configure Phase
, configureFlags ? [ ]
, cmakeFlags ? [ ]
, mesonFlags ? [ ]
, # Target is not included by default because most programs don't care.
# Including it then would cause needless mass rebuilds.
#
@ -252,6 +253,34 @@ in rec {
++ lib . optional ( stdenv . buildPlatform . uname . system != null ) " - D C M A K E _ H O S T _ S Y S T E M _ N A M E = ${ stdenv . buildPlatform . uname . system } "
++ lib . optional ( stdenv . buildPlatform . uname . processor != null ) " - D C M A K E _ H O S T _ S Y S T E M _ P R O C E S S O R = ${ stdenv . buildPlatform . uname . processor } "
++ lib . optional ( stdenv . buildPlatform . uname . release != null ) " - D C M A K E _ H O S T _ S Y S T E M _ V E R S I O N = ${ stdenv . buildPlatform . uname . release } " ;
mesonFlags = if mesonFlags == null then null else let
# See https://mesonbuild.com/Reference-tables.html#cpu-families
cpuFamilies = {
aarch64 = " a a r c h 6 4 " ;
armv5tel = " a r m " ;
armv6l = " a r m " ;
armv7l = " a r m " ;
i686 = " x 8 6 " ;
x86_64 = " x 8 6 _ 6 4 " ;
} ;
crossFile = builtins . toFile " c r o s s - f i l e . c o n f " ( ''
[ properties ]
needs_exe_wrapper = true
[ host_machine ]
system = ' $ { stdenv . targetPlatform . parsed . kernel . name } '
cpu_family = ' $ { cpuFamilies . ${ stdenv . targetPlatform . parsed . cpu . name } } '
cpu = ' $ { stdenv . targetPlatform . parsed . cpu . name } '
endian = $ { if stdenv . targetPlatform . isLittleEndian then " ' l i t t l e ' " else " ' b i g ' " }
''
# TODO should have target prefix too, issue #86077
+ ''
[ binaries ]
pkgconfig = ' pkg-config'
'' ) ;
in [ " - - c r o s s - f i l e = ${ crossFile } " ] ++ mesonFlags ;
} // lib . optionalAttrs ( attrs . enableParallelBuilding or false ) {
enableParallelChecking = attrs . enableParallelChecking or true ;
} // lib . optionalAttrs ( hardeningDisable != [ ] || hardeningEnable != [ ] ) {