expressions/builders for Fortran. Tested by building Octave with gfortran 4.3. svn path=/nixpkgs/branches/stdenv-updates/; revision=14978wip/yesman
parent
65a6c5ad9b
commit
eeed10ba8e
@ -1,86 +0,0 @@ |
||||
source $stdenv/setup |
||||
|
||||
|
||||
export NIX_FIXINC_DUMMY=$NIX_BUILD_TOP/dummy |
||||
mkdir $NIX_FIXINC_DUMMY |
||||
|
||||
export X_CFLAGS="-I${gmp}/include -I${mpfr}/include -L${gmp}/lib -L${mpfr}/lib"; |
||||
|
||||
# libstdc++ needs this; otherwise it will use /lib/cpp, which is a Bad |
||||
# Thing. |
||||
export CPP="gcc -E" |
||||
|
||||
|
||||
if test "$noSysDirs" = "1"; then |
||||
|
||||
if test -e $NIX_GCC/nix-support/orig-libc; then |
||||
|
||||
# Figure out what extra flags to pass to the gcc compilers |
||||
# being generated to make sure that they use our glibc. |
||||
extraCFlags="$(cat $NIX_GCC/nix-support/libc-cflags)" |
||||
extraLDFlags="$(cat $NIX_GCC/nix-support/libc-ldflags) $(cat $NIX_GCC/nix-support/libc-ldflags-before)" |
||||
|
||||
# Use *real* header files, otherwise a limits.h is generated |
||||
# that does not include Glibc's limits.h (notably missing |
||||
# SSIZE_MAX, which breaks the build). |
||||
export NIX_FIXINC_DUMMY=$(cat $NIX_GCC/nix-support/orig-libc)/include |
||||
|
||||
else |
||||
# Hack: support impure environments. |
||||
extraCFlags="-isystem /usr/include" |
||||
extraLDFlags="-L/usr/lib64 -L/usr/lib" |
||||
export NIX_FIXINC_DUMMY=/usr/include |
||||
fi |
||||
|
||||
extraCFlags="-g0 $extraCFlags" |
||||
extraLDFlags="--strip-debug $extraLDFlags" |
||||
|
||||
export NIX_EXTRA_CFLAGS=$extraCFlags |
||||
for i in $extraLDFlags; do |
||||
export NIX_EXTRA_LDFLAGS="$NIX_EXTRA_LDFLAGS -Wl,$i" |
||||
done |
||||
|
||||
makeFlagsArray=( \ |
||||
NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ |
||||
SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ |
||||
LIMITS_H_TEST=true \ |
||||
X_CFLAGS="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ |
||||
LDFLAGS="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ |
||||
LDFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ |
||||
) |
||||
fi |
||||
|
||||
|
||||
preConfigure=preConfigure |
||||
preConfigure() { |
||||
# Perform the build in a different directory. |
||||
mkdir ../build |
||||
cd ../build |
||||
configureScript=../$sourceRoot/configure |
||||
} |
||||
|
||||
|
||||
postInstall=postInstall |
||||
postInstall() { |
||||
# Remove precompiled headers for now. They are very big and |
||||
# probably not very useful yet. |
||||
find $out/include -name "*.gch" -exec rm -rf {} \; -prune |
||||
|
||||
# Remove `fixincl' to prevent a retained dependency on the |
||||
# previous gcc. |
||||
rm -rf $out/libexec/gcc/*/*/install-tools |
||||
|
||||
# Get rid of some "fixed" header files |
||||
rm -rf $out/lib/gcc/*/*/include/root |
||||
} |
||||
|
||||
|
||||
if test -z "$staticCompiler"; then |
||||
if test -z "$profiledCompiler"; then |
||||
buildFlags="bootstrap $buildFlags" |
||||
else |
||||
buildFlags="profiledbootstrap $buildFlags" |
||||
fi |
||||
fi |
||||
|
||||
genericBuild |
@ -1,73 +0,0 @@ |
||||
{ stdenv, fetchurl, noSysDirs |
||||
, langC ? true, langCC ? true, langF77 ? false |
||||
, profiledCompiler ? false |
||||
, staticCompiler ? false |
||||
, gmp ? null |
||||
, mpfr ? null |
||||
, texinfo ? null |
||||
}: |
||||
|
||||
assert langC || langF77; |
||||
|
||||
with import ../../../lib; |
||||
|
||||
let version = "4.2.4"; in |
||||
|
||||
stdenv.mkDerivation { |
||||
name = "gcc-${version}"; |
||||
builder = if langF77 then ./fortran.sh else ./builder.sh; |
||||
|
||||
src = |
||||
optional /*langC*/ true (fetchurl { |
||||
url = "mirror://gnu/gcc/gcc-${version}/gcc-core-${version}.tar.bz2"; |
||||
sha256 = "cfc9e7e14966097d24d510cfd905515e8f7464ab5379a50698ae3d88e1f7a532"; |
||||
}) ++ |
||||
optional langCC (fetchurl { |
||||
url = "mirror://gnu/gcc/gcc-${version}/gcc-g++-${version}.tar.bz2"; |
||||
sha256 = "0spzz549fifwv02ym33azzwizl0zkq5m1fgy88ccmcyzmwpgyzfq"; |
||||
}) ++ |
||||
optional langF77 (fetchurl { |
||||
url = "mirror://gnu/gcc/gcc-${version}/gcc-fortran-${version}.tar.bz2"; |
||||
sha256 = "6fc2056cd62921b2859381749710af765a46877bd46f9fe5ef6fab0671c47e04"; |
||||
}); |
||||
|
||||
patches = |
||||
optional noSysDirs [./no-sys-dirs.patch]; |
||||
|
||||
inherit noSysDirs profiledCompiler staticCompiler; |
||||
|
||||
buildInputs = [gmp mpfr texinfo]; |
||||
|
||||
configureFlags = " |
||||
--disable-multilib |
||||
--disable-libstdcxx-pch |
||||
--with-system-zlib |
||||
--enable-languages=${ |
||||
concatStrings (intersperse "," |
||||
( optional langC "c" |
||||
++ optional langCC "c++" |
||||
++ optional langF77 "fortran" |
||||
) |
||||
) |
||||
} |
||||
${if stdenv.isi686 then "--with-arch=i686" else ""} |
||||
${if gmp != null then "--with-gmp=${gmp}" else ""} |
||||
${if mpfr != null then "--with-mpfr=${mpfr}" else ""} |
||||
"; |
||||
|
||||
makeFlags = if staticCompiler then "LDFLAGS=-static" else ""; |
||||
|
||||
passthru = { inherit langC langCC langF77; }; |
||||
|
||||
postInstall = "if test -f $out/bin/gfrotran; then ln -s $out/bin/gfortran $out/bin/g77; fi"; |
||||
|
||||
meta = { |
||||
homepage = "http://gcc.gnu.org/"; |
||||
license = "GPL/LGPL"; |
||||
description = "GNU Compiler Collection, 4.2.x"; |
||||
|
||||
# Give the real GCC a lower priority than the GCC wrapper so that |
||||
# both can be installed at the same time. |
||||
priority = "7"; |
||||
}; |
||||
} |
@ -1,86 +0,0 @@ |
||||
source $stdenv/setup |
||||
|
||||
|
||||
export NIX_FIXINC_DUMMY=$NIX_BUILD_TOP/dummy |
||||
mkdir $NIX_FIXINC_DUMMY |
||||
|
||||
export X_CFLAGS="-I${gmp}/include -I${mpfr}/include -L${gmp}/lib -L${mpfr}/lib"; |
||||
|
||||
# libstdc++ needs this; otherwise it will use /lib/cpp, which is a Bad |
||||
# Thing. |
||||
export CPP="gcc -E" |
||||
|
||||
|
||||
if test "$noSysDirs" = "1"; then |
||||
|
||||
if test -e $NIX_GCC/nix-support/orig-libc; then |
||||
|
||||
# Figure out what extra flags to pass to the gcc compilers |
||||
# being generated to make sure that they use our glibc. |
||||
extraCFlags="$(cat $NIX_GCC/nix-support/libc-cflags)" |
||||
extraLDFlags="$(cat $NIX_GCC/nix-support/libc-ldflags) $(cat $NIX_GCC/nix-support/libc-ldflags-before)" |
||||
|
||||
# Use *real* header files, otherwise a limits.h is generated |
||||
# that does not include Glibc's limits.h (notably missing |
||||
# SSIZE_MAX, which breaks the build). |
||||
export NIX_FIXINC_DUMMY=$(cat $NIX_GCC/nix-support/orig-libc)/include |
||||
|
||||
else |
||||
# Hack: support impure environments. |
||||
extraCFlags="-isystem /usr/include" |
||||
extraLDFlags="-L/usr/lib64 -L/usr/lib" |
||||
export NIX_FIXINC_DUMMY=/usr/include |
||||
fi |
||||
|
||||
extraCFlags="-g0 $extraCFlags" |
||||
extraLDFlags="--strip-debug $extraLDFlags" |
||||
|
||||
export NIX_EXTRA_CFLAGS=$extraCFlags |
||||
for i in $extraLDFlags; do |
||||
export NIX_EXTRA_LDFLAGS="$NIX_EXTRA_LDFLAGS -Wl,$i" |
||||
done |
||||
|
||||
makeFlagsArray=( \ |
||||
NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ |
||||
SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ |
||||
LIMITS_H_TEST=true \ |
||||
X_CFLAGS="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ |
||||
LDFLAGS="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ |
||||
LDFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ |
||||
) |
||||
fi |
||||
|
||||
|
||||
preConfigure=preConfigure |
||||
preConfigure() { |
||||
# Perform the build in a different directory. |
||||
mkdir ../build |
||||
cd ../build |
||||
configureScript=../$sourceRoot/configure |
||||
} |
||||
|
||||
|
||||
postInstall=postInstall |
||||
postInstall() { |
||||
# Remove precompiled headers for now. They are very big and |
||||
# probably not very useful yet. |
||||
find $out/include -name "*.gch" -exec rm -rf {} \; -prune |
||||
|
||||
# Remove `fixincl' to prevent a retained dependency on the |
||||
# previous gcc. |
||||
rm -rf $out/libexec/gcc/*/*/install-tools |
||||
|
||||
# Get rid of some "fixed" header files |
||||
rm -rf $out/lib/gcc/*/*/include/root |
||||
} |
||||
|
||||
|
||||
if test -z "$staticCompiler"; then |
||||
if test -z "$profiledCompiler"; then |
||||
buildFlags="bootstrap $buildFlags" |
||||
else |
||||
buildFlags="profiledbootstrap $buildFlags" |
||||
fi |
||||
fi |
||||
|
||||
genericBuild |
Loading…
Reference in new issue