2
0
Fork 0
genodepkgs/ports/stdcxx/default.nix

103 lines
3.3 KiB
Nix
Raw Normal View History

2019-07-30 12:48:01 +02:00
{ preparePort, nixpkgs, toolchain, upstream }:
let
inherit (nixpkgs.buildPackages) fetchurl fetchgit flex bison;
libc = import ./../libc { inherit preparePort nixpkgs toolchain upstream; };
libm = import ./../libm { inherit preparePort nixpkgs toolchain upstream; };
version = "8.3.0";
in
preparePort {
name = "stdcxx-${version}";
outputs = [ "source" "dev" ];
inherit version;
depsBuildBuild = with nixpkgs.buildPackages; [ pkgconfig stdenv.cc ];
buildInputs = [ toolchain ];
src = fetchurl {
url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.xz";
sha256 = "0b3xv411xhlnjmin2979nxcbnidgvzqdf4nbhix99x60dkzavfk4";
};
tarFlags =
[ "gcc-${version}/libstdc++-v3"
"gcc-${version}/libgcc/gthr-single.h"
];
sourceRoot = "gcc-${version}/libstdc++-v3";
patches = "${upstream.src}/repos/libports/src/lib/stdcxx/patches}/*.patch";
patchFlags = "-p1";
buildPhase =
''
for slop in include/c_global/cstdlib include/bits/std_abs.h include/c_global/cmath; do
sed 's/^#include_next/#include/' -i $slop
done
mkdir -p $dev/lib
compileStub ${./stdcxx.symbols} $dev/lib/stdcxx.lib.so
'';
installPhase =
''
mkdir -p $source $includedir/bits $includedir/config $pkgconfigdir
local libcPc=${libc.dev}/lib/pkgconfig/libc.pc
local libmPc=${libm.dev}/lib/pkgconfig/libm.pc
libcCflags=`awk '/^Cflags/ { $1=""; print $0 }' $libcPc` \
libmCflags=`awk '/^Cflags/ { $1=""; print $0 }' $libmPc` \
substituteAll ${./stdcxx.pc.in} $pkgconfigdir/stdcxx.pc
cp -r src config libsupc++ $source
cp -r \
include/* \
include/c_compatibility/complex.h \
include/c_compatibility/fenv.h \
include/c_compatibility/tgmath.h \
libsupc++/cxxabi.h \
libsupc++/exception \
libsupc++/initializer_list \
libsupc++/new \
libsupc++/typeinfo \
$includedir
cp -r \
libsupc++/atomic_lockfree_defines.h \
libsupc++/cxxabi_forced.h \
libsupc++/cxxabi_init_exception.h \
libsupc++/exception.h \
libsupc++/exception_defines.h \
libsupc++/exception_ptr.h \
libsupc++/hash_bytes.h \
libsupc++/nested_exception.h \
config/cpu/generic/atomic_word.h \
config/cpu/generic/cpu_defines.h \
config/cpu/generic/cxxabi_tweaks.h \
config/cpu/generic/opt/bits/opt_random.h \
config/os/generic/ctype_base.h \
config/os/generic/ctype_inline.h \
config/os/generic/error_constants.h \
config/os/generic/os_defines.h \
config/locale/generic/messages_members.h \
config/locale/generic/time_members.h \
${upstream.src}/repos/libports/include/stdcxx/bits/*.h \
$includedir/bits
cp -r \
config/allocator/new_allocator_base.h \
config/io/basic_file_stdio.h \
config/io/c_io_stdio.h \
config/locale/generic/c_locale.h \
$includedir/config
cp config/io/basic_file_stdio.h $includedir/bits/basic_file.h
cp config/allocator/new_allocator_base.h $includedir/bits/c++allocator.h
cp config/io/c_io_stdio.h $includedir/bits/c++io.h
cp config/locale/generic/c_locale.h $includedir/bits/c++locale.h
cp ../libgcc/gthr-single.h $includedir/bits/gthr.h
'';
}