From ae7c4ca17ff8afe9a8bc771cb68d78e6186295a5 Mon Sep 17 00:00:00 2001 From: Audrey Dutcher Date: Thu, 30 May 2024 10:31:57 -0700 Subject: [PATCH] freebsd.libcxxrt: fixup in preparation for inclusion in stdenv - add option to build without libcxx - don't build with libcxx - distribute headers --- .../bsd/freebsd/patches/14.0/libcxxrt-headers.patch | 11 +++++++++++ pkgs/os-specific/bsd/freebsd/pkgs/libcxxrt.nix | 9 ++++++++- pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix | 4 ++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 pkgs/os-specific/bsd/freebsd/patches/14.0/libcxxrt-headers.patch diff --git a/pkgs/os-specific/bsd/freebsd/patches/14.0/libcxxrt-headers.patch b/pkgs/os-specific/bsd/freebsd/patches/14.0/libcxxrt-headers.patch new file mode 100644 index 000000000000..256db9e2d9cf --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/patches/14.0/libcxxrt-headers.patch @@ -0,0 +1,11 @@ +--- freebsd/lib/libcxxrt/Makefile 2024-05-30 14:27:42.328086005 -0700 ++++ freebsd/lib/libcxxrt/Makefile.mod 2024-05-30 14:27:48.048014581 -0700 +@@ -19,6 +19,8 @@ + SRCS+= terminate.cc + SRCS+= typeinfo.cc + ++INCS+=cxxabi.h unwind.h unwind-arm.h unwind-itanium.h ++ + WARNS?= 0 + CFLAGS+= -isystem ${SRCDIR} -nostdinc++ + CXXSTD?= c++14 diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/libcxxrt.nix b/pkgs/os-specific/bsd/freebsd/pkgs/libcxxrt.nix index 0640d2292d49..fd5591c0ffb8 100644 --- a/pkgs/os-specific/bsd/freebsd/pkgs/libcxxrt.nix +++ b/pkgs/os-specific/bsd/freebsd/pkgs/libcxxrt.nix @@ -1,4 +1,4 @@ -{ mkDerivation, ... }: +{ mkDerivation }: # this package is quite different from stock libcxxrt. # as of FreeBSD 14.0, it is vendored from APPROXIMATELY libcxxrt # 5d8a15823a103bbc27f1bfdcf2b5aa008fab57dd, though the vendoring mechanism is @@ -8,4 +8,11 @@ mkDerivation { pname = "libcxxrt"; path = "lib/libcxxrt"; extraPaths = [ "contrib/libcxxrt" ]; + outputs = [ + "out" + "dev" + "debug" + ]; + noLibcxx = true; + libName = "cxxrt"; } diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix b/pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix index c6659ac0d91c..12f2c9407e3c 100644 --- a/pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix +++ b/pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix @@ -3,6 +3,8 @@ stdenv, stdenvNoCC, stdenvNoLibs, + overrideCC, + buildPackages, versionData, writeText, patches, @@ -27,6 +29,8 @@ lib.makeOverridable ( stdenvNoCC else if attrs.noLibc or false then stdenvNoLibs + else if attrs.noLibcxx or false then + overrideCC stdenv buildPackages.llvmPackages.clangNoLibcxx else stdenv; in