2009-11-22 23:48:43 +01:00
|
|
|
NIX_CROSS_CFLAGS_COMPILE=""
|
|
|
|
NIX_CROSS_LDFLAGS=""
|
|
|
|
|
Big fixes in the cross build:
- Before this changes, cflags and ldflags for the native and the cross compiler
got mixed. Not all the gcc-wrapper/gcc-cross-wrapper variables are
independant now, but enough, I think.
- Fixed the generic stdenv expression, which did a big mess on buildInputs and
buildNativeInputs. Now it distinguishes when there is a stdenvCross or not.
Maybe we should have a single stdenv and forget about the stdenvCross
adapter - this could end in a stdenv a bit complex, but simpler than the
generic stdenv + adapter.
- Added basic support in pkgconfig for cross-builds: a single PKG_CONFIG_PATH
now works for both the cross and the native compilers, but I think this
should work well for most cases I can think of.
- I tried to fix the guile expression to cross-biuld; guile is built, but not
its manual, so the derivation still fails. Guile requires patching to
cross-build, as far as I understnad.
- Made the glibcCross build to be done through the usage of a
gcc-cross-wrapper over the gcc-cross-stage-static, instead of using it
directly.
- Trying to make physfs (a neverball dependency) cross build.
- Updated the gcc expression to support building a cross compiler without getting
derivation variables mixed with those of the stdenvCross.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18534
2009-11-22 20:51:45 +01:00
|
|
|
crossAddCVars () {
|
2005-11-29 02:40:33 +01:00
|
|
|
if test -d $1/include; then
|
Big fixes in the cross build:
- Before this changes, cflags and ldflags for the native and the cross compiler
got mixed. Not all the gcc-wrapper/gcc-cross-wrapper variables are
independant now, but enough, I think.
- Fixed the generic stdenv expression, which did a big mess on buildInputs and
buildNativeInputs. Now it distinguishes when there is a stdenvCross or not.
Maybe we should have a single stdenv and forget about the stdenvCross
adapter - this could end in a stdenv a bit complex, but simpler than the
generic stdenv + adapter.
- Added basic support in pkgconfig for cross-builds: a single PKG_CONFIG_PATH
now works for both the cross and the native compilers, but I think this
should work well for most cases I can think of.
- I tried to fix the guile expression to cross-biuld; guile is built, but not
its manual, so the derivation still fails. Guile requires patching to
cross-build, as far as I understnad.
- Made the glibcCross build to be done through the usage of a
gcc-cross-wrapper over the gcc-cross-stage-static, instead of using it
directly.
- Trying to make physfs (a neverball dependency) cross build.
- Updated the gcc expression to support building a cross compiler without getting
derivation variables mixed with those of the stdenvCross.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18534
2009-11-22 20:51:45 +01:00
|
|
|
export NIX_CROSS_CFLAGS_COMPILE="$NIX_CROSS_CFLAGS_COMPILE -I$1/include"
|
2005-11-29 02:40:33 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
if test -d $1/lib; then
|
2009-11-22 23:48:43 +01:00
|
|
|
export NIX_CROSS_LDFLAGS="$NIX_CROSS_LDFLAGS -L$1/lib -rpath-link $1/lib"
|
2005-11-29 02:40:33 +01:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2014-07-08 14:20:05 +02:00
|
|
|
crossEnvHooks+=(crossAddCVars)
|
2005-11-29 02:40:33 +01:00
|
|
|
|
2009-11-22 23:48:43 +01:00
|
|
|
crossStripDirs() {
|
|
|
|
local dirs="$1"
|
|
|
|
local stripFlags="$2"
|
|
|
|
local dirsNew=
|
|
|
|
|
|
|
|
for d in ${dirs}; do
|
|
|
|
if test -d "$prefix/$d"; then
|
|
|
|
dirsNew="${dirsNew} $prefix/$d "
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
dirs=${dirsNew}
|
|
|
|
|
|
|
|
if test -n "${dirs}"; then
|
2010-08-09 23:37:31 +02:00
|
|
|
header "cross stripping (with flags $stripFlags) in $dirs"
|
2009-11-23 18:06:57 +01:00
|
|
|
# libc_nonshared.a should never be stripped, or builds will break.
|
2009-11-22 23:48:43 +01:00
|
|
|
find $dirs -type f -print0 | xargs -0 ${xargsFlags:--r} $crossConfig-strip $stripFlags || true
|
|
|
|
stopNest
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
crossStrip () {
|
2009-11-23 18:06:57 +01:00
|
|
|
# In cross_renaming we may rename dontCrossStrip to dontStrip, and
|
|
|
|
# dontStrip to dontNativeStrip.
|
2009-11-22 23:48:43 +01:00
|
|
|
# TODO: strip _only_ ELF executables, and return || fail here...
|
2009-11-23 18:06:57 +01:00
|
|
|
if test -z "$dontCrossStrip"; then
|
2009-11-22 23:48:43 +01:00
|
|
|
stripDebugList=${stripDebugList:-lib lib64 libexec bin sbin}
|
|
|
|
if test -n "$stripDebugList"; then
|
|
|
|
crossStripDirs "$stripDebugList" "${stripDebugFlags:--S}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
stripAllList=${stripAllList:-}
|
|
|
|
if test -n "$stripAllList"; then
|
|
|
|
crossStripDirs "$stripAllList" "${stripAllFlags:--s}"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
preDistPhases=(${preDistPhases[@]} crossStrip)
|
|
|
|
|
|
|
|
|
2005-11-29 02:40:33 +01:00
|
|
|
# Note: these come *after* $out in the PATH (see setup.sh).
|
|
|
|
|
|
|
|
if test -n "@gcc@"; then
|
|
|
|
PATH=$PATH:@gcc@/bin
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test -n "@binutils@"; then
|
|
|
|
PATH=$PATH:@binutils@/bin
|
|
|
|
fi
|
|
|
|
|
2009-11-20 23:56:58 +01:00
|
|
|
if test -n "@libc@"; then
|
|
|
|
PATH=$PATH:@libc@/bin
|
Big fixes in the cross build:
- Before this changes, cflags and ldflags for the native and the cross compiler
got mixed. Not all the gcc-wrapper/gcc-cross-wrapper variables are
independant now, but enough, I think.
- Fixed the generic stdenv expression, which did a big mess on buildInputs and
buildNativeInputs. Now it distinguishes when there is a stdenvCross or not.
Maybe we should have a single stdenv and forget about the stdenvCross
adapter - this could end in a stdenv a bit complex, but simpler than the
generic stdenv + adapter.
- Added basic support in pkgconfig for cross-builds: a single PKG_CONFIG_PATH
now works for both the cross and the native compilers, but I think this
should work well for most cases I can think of.
- I tried to fix the guile expression to cross-biuld; guile is built, but not
its manual, so the derivation still fails. Guile requires patching to
cross-build, as far as I understnad.
- Made the glibcCross build to be done through the usage of a
gcc-cross-wrapper over the gcc-cross-stage-static, instead of using it
directly.
- Trying to make physfs (a neverball dependency) cross build.
- Updated the gcc expression to support building a cross compiler without getting
derivation variables mixed with those of the stdenvCross.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18534
2009-11-22 20:51:45 +01:00
|
|
|
crossAddCVars @libc@
|
2005-11-29 02:40:33 +01:00
|
|
|
fi
|
2009-11-17 22:14:57 +01:00
|
|
|
|
2010-08-11 22:14:25 +02:00
|
|
|
if test "$dontSetConfigureCross" != "1"; then
|
|
|
|
configureFlags="$configureFlags --build=$system --host=$crossConfig"
|
|
|
|
fi
|
2009-11-21 03:42:52 +01:00
|
|
|
# Disabling the tests when cross compiling, as usually the tests are meant for
|
|
|
|
# native compilations.
|
|
|
|
doCheck=""
|
Big fixes in the cross build:
- Before this changes, cflags and ldflags for the native and the cross compiler
got mixed. Not all the gcc-wrapper/gcc-cross-wrapper variables are
independant now, but enough, I think.
- Fixed the generic stdenv expression, which did a big mess on buildInputs and
buildNativeInputs. Now it distinguishes when there is a stdenvCross or not.
Maybe we should have a single stdenv and forget about the stdenvCross
adapter - this could end in a stdenv a bit complex, but simpler than the
generic stdenv + adapter.
- Added basic support in pkgconfig for cross-builds: a single PKG_CONFIG_PATH
now works for both the cross and the native compilers, but I think this
should work well for most cases I can think of.
- I tried to fix the guile expression to cross-biuld; guile is built, but not
its manual, so the derivation still fails. Guile requires patching to
cross-build, as far as I understnad.
- Made the glibcCross build to be done through the usage of a
gcc-cross-wrapper over the gcc-cross-stage-static, instead of using it
directly.
- Trying to make physfs (a neverball dependency) cross build.
- Updated the gcc expression to support building a cross compiler without getting
derivation variables mixed with those of the stdenvCross.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18534
2009-11-22 20:51:45 +01:00
|
|
|
|
2014-02-24 02:22:57 +01:00
|
|
|
# Don't strip foreign binaries with native "strip" tool.
|
|
|
|
dontStrip=1
|
|
|
|
|
Big fixes in the cross build:
- Before this changes, cflags and ldflags for the native and the cross compiler
got mixed. Not all the gcc-wrapper/gcc-cross-wrapper variables are
independant now, but enough, I think.
- Fixed the generic stdenv expression, which did a big mess on buildInputs and
buildNativeInputs. Now it distinguishes when there is a stdenvCross or not.
Maybe we should have a single stdenv and forget about the stdenvCross
adapter - this could end in a stdenv a bit complex, but simpler than the
generic stdenv + adapter.
- Added basic support in pkgconfig for cross-builds: a single PKG_CONFIG_PATH
now works for both the cross and the native compilers, but I think this
should work well for most cases I can think of.
- I tried to fix the guile expression to cross-biuld; guile is built, but not
its manual, so the derivation still fails. Guile requires patching to
cross-build, as far as I understnad.
- Made the glibcCross build to be done through the usage of a
gcc-cross-wrapper over the gcc-cross-stage-static, instead of using it
directly.
- Trying to make physfs (a neverball dependency) cross build.
- Updated the gcc expression to support building a cross compiler without getting
derivation variables mixed with those of the stdenvCross.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18534
2009-11-22 20:51:45 +01:00
|
|
|
# Add the output as an rpath.
|
|
|
|
if test "$NIX_NO_SELF_RPATH" != "1"; then
|
|
|
|
export NIX_CROSS_LDFLAGS="-rpath $out/lib -rpath-link $out/lib $NIX_CROSS_LDFLAGS"
|
|
|
|
if test -n "$NIX_LIB64_IN_SELF_RPATH"; then
|
|
|
|
export NIX_CROSS_LDFLAGS="-rpath $out/lib64 -rpath-link $out/lib $NIX_CROSS_LDFLAGS"
|
|
|
|
fi
|
|
|
|
fi
|