103 lines
3.3 KiB
Nix
103 lines
3.3 KiB
Nix
{ 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
|
|
'';
|
|
|
|
}
|