gccNGPackages: Force regular dirs (#427189)
This commit is contained in:
@@ -728,12 +728,7 @@ stdenvNoCC.mkDerivation {
|
||||
''
|
||||
# GCC NG friendly libc++
|
||||
+ optionalString (libcxx != null && libcxx.isGNU or false) ''
|
||||
for dir in ${getDev libcxx}/include/c++/*; do
|
||||
echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags
|
||||
done
|
||||
for dir in ${getDev libcxx}/include/c++/*/${targetPlatform.config}; do
|
||||
echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags
|
||||
done
|
||||
echo "-isystem ${getDev libcxx}/include" >> $out/nix-support/libcxx-cxxflags
|
||||
''
|
||||
|
||||
##
|
||||
|
||||
@@ -1,162 +0,0 @@
|
||||
From 46280d27a5c96b2efa7a61f49ee8dc14f7e10d0c Mon Sep 17 00:00:00 2001
|
||||
From: John Ericson <git@JohnEricson.me>
|
||||
Date: Sun, 22 Aug 2021 01:14:22 -0400
|
||||
Subject: [PATCH] Factor out thread model detection with `GCC_AC_THREAD_MODEL`
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This macro deduplicates the
|
||||
|
||||
$CC -v 2>&1 | sed -n 's/^Thread model: //p'
|
||||
|
||||
check that was occurring in various runtime libs.
|
||||
|
||||
Additionally, as a bit of an Easter egg, this also allows overriding
|
||||
what the compiler would return by setting the
|
||||
`gcc_cv_target_thread_file` cache variable first. I admit that it is in
|
||||
fact this Easter egg that led me to write the patch. The use-case for it
|
||||
is for making multilib builds where the library sets do not all share
|
||||
the same thread model easier. See also `THREAD_MODEL_SPEC` for more
|
||||
about the varying thread models use-case.
|
||||
|
||||
Arguably one could could try to define on `THREAD_MODEL_SPEC` on more
|
||||
platforms (besides e.g. AIX) but the ramifications of this are a bit
|
||||
unclear. Setting `gcc_cv_target_thread_file` directly is a "low tech"
|
||||
solution that will work for now for sure. Of course, since setting a
|
||||
cache variable like this a hacky trick, I will not expect this to be at
|
||||
all stable/guaranteed to work, going forward.
|
||||
|
||||
Thanks to Arsen who on IRC discussed these things with me, including in
|
||||
particular making it a cache var not `--with-model` flag, to not
|
||||
prematurely foster expectations that this is stable.
|
||||
|
||||
Suggested-by: Arsen Arsenović <arsen@aarsen.me>
|
||||
---
|
||||
config/gthr.m4 | 23 +++++++++++++++++++++++
|
||||
libatomic/configure.ac | 4 +---
|
||||
libgcc/configure.ac | 4 +---
|
||||
libphobos/m4/druntime/os.m4 | 2 +-
|
||||
libstdc++-v3/acinclude.m4 | 8 +++-----
|
||||
5 files changed, 29 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/config/gthr.m4 b/config/gthr.m4
|
||||
index 11996247f15..e8fac4a5721 100644
|
||||
--- a/config/gthr.m4
|
||||
+++ b/config/gthr.m4
|
||||
@@ -5,6 +5,26 @@ dnl Public License, this file may be distributed as part of a program
|
||||
dnl that contains a configuration script generated by Autoconf, under
|
||||
dnl the same distribution terms as the rest of that program.
|
||||
|
||||
+dnl Define thread model
|
||||
+
|
||||
+dnl usage: GCC_AC_THREAD_MODEL
|
||||
+AC_DEFUN([GCC_AC_THREAD_MODEL],
|
||||
+[
|
||||
+# Specify the threading model for this GCC runtime library
|
||||
+# Pass with no value to take from compiler's metadata
|
||||
+# Pass with a value to specify a thread package
|
||||
+# 'single' means single threaded -- without threads.
|
||||
+AC_CACHE_CHECK([for the threading model used by GCC], [gcc_cv_target_thread_file], [
|
||||
+ # Set new cache variable
|
||||
+ gcc_cv_target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
|
||||
+])
|
||||
+# Set variable name (not prefixed enough to be a good cache variable
|
||||
+# name) traditionally used for this purpose, to avoid having to change
|
||||
+# a bunch of configure scripts.
|
||||
+target_thread_file="$gcc_cv_target_thread_file"
|
||||
+])
|
||||
+
|
||||
+
|
||||
dnl Define header location by thread model
|
||||
|
||||
dnl usage: GCC_AC_THREAD_HEADER([thread_model])
|
||||
@@ -23,6 +43,9 @@ case $1 in
|
||||
vxworks) thread_header=config/gthr-vxworks.h ;;
|
||||
win32) thread_header=config/i386/gthr-win32.h ;;
|
||||
mcf) thread_header=config/i386/gthr-mcf.h ;;
|
||||
+ *)
|
||||
+ AC_MSG_ERROR([No known header for threading model '$1'.])
|
||||
+ ;;
|
||||
esac
|
||||
AC_SUBST(thread_header)
|
||||
])
|
||||
diff --git a/libatomic/configure.ac b/libatomic/configure.ac
|
||||
index aafae71028d..a1aa3bdf69f 100644
|
||||
--- a/libatomic/configure.ac
|
||||
+++ b/libatomic/configure.ac
|
||||
@@ -162,9 +162,7 @@ libtool_VERSION=3:0:2
|
||||
AC_SUBST(libtool_VERSION)
|
||||
|
||||
# Check for used threading-model
|
||||
-AC_MSG_CHECKING([for thread model used by GCC])
|
||||
-target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
|
||||
-AC_MSG_RESULT([$target_thread_file])
|
||||
+GCC_AC_THREAD_MODEL
|
||||
|
||||
case "$target" in
|
||||
*aarch64*)
|
||||
diff --git a/libgcc/configure.ac b/libgcc/configure.ac
|
||||
index 85e4f1bc48b..d44493f9653 100644
|
||||
--- a/libgcc/configure.ac
|
||||
+++ b/libgcc/configure.ac
|
||||
@@ -305,9 +305,7 @@ AC_SUBST([use_tm_clone_registry])
|
||||
|
||||
AC_LIB_PROG_LD_GNU
|
||||
|
||||
-AC_MSG_CHECKING([for thread model used by GCC])
|
||||
-target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
|
||||
-AC_MSG_RESULT([$target_thread_file])
|
||||
+GCC_AC_THREAD_MODEL
|
||||
|
||||
# Check for assembler CFI support.
|
||||
AC_CACHE_CHECK([whether assembler supports CFI directives], [libgcc_cv_cfi],
|
||||
diff --git a/libphobos/m4/druntime/os.m4 b/libphobos/m4/druntime/os.m4
|
||||
index ef8ca434407..7bb91362dbe 100644
|
||||
--- a/libphobos/m4/druntime/os.m4
|
||||
+++ b/libphobos/m4/druntime/os.m4
|
||||
@@ -32,7 +32,7 @@ case $1 in
|
||||
# TODO: These targets need porting.
|
||||
dce|mipssde|rtems|tpf|vxworks)
|
||||
DCFG_THREAD_MODEL="Single" ;;
|
||||
- *) as_fn_error "Thread implementation '$1' not recognised" "$LINENO" 5 ;;
|
||||
+ *) AC_MSG_ERROR([Thread implementation '$1' not recognised]) ;;
|
||||
esac
|
||||
AC_SUBST(DCFG_THREAD_MODEL)
|
||||
])
|
||||
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
|
||||
index a0094c2dd95..66fc3abe4fd 100644
|
||||
--- a/libstdc++-v3/acinclude.m4
|
||||
+++ b/libstdc++-v3/acinclude.m4
|
||||
@@ -4345,9 +4345,7 @@ dnl Substs:
|
||||
dnl thread_header
|
||||
dnl
|
||||
AC_DEFUN([GLIBCXX_ENABLE_THREADS], [
|
||||
- AC_MSG_CHECKING([for thread model used by GCC])
|
||||
- target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
|
||||
- AC_MSG_RESULT([$target_thread_file])
|
||||
+ GCC_AC_THREAD_MODEL
|
||||
GCC_AC_THREAD_HEADER([$target_thread_file])
|
||||
])
|
||||
|
||||
@@ -4357,7 +4355,8 @@ dnl Check if gthread implementation defines the types and functions
|
||||
dnl required by the c++0x thread library. Conforming gthread
|
||||
dnl implementations can define __GTHREADS_CXX0X to enable use with c++0x.
|
||||
dnl
|
||||
-dnl GLIBCXX_ENABLE_SYMVERS must be done before this.
|
||||
+dnl GLIBCXX_ENABLE_SYMVERS and GLIBCXX_ENABLE_THREADS must be done
|
||||
+dnl before this.
|
||||
dnl
|
||||
AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
|
||||
GLIBCXX_ENABLE(libstdcxx-threads,auto,,[enable C++11 threads support])
|
||||
@@ -4372,7 +4371,6 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
|
||||
CXXFLAGS="$CXXFLAGS -fno-exceptions \
|
||||
-I${toplevel_srcdir}/libgcc -I${toplevel_builddir}/libgcc"
|
||||
|
||||
- target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
|
||||
case $target_thread_file in
|
||||
posix)
|
||||
CXXFLAGS="$CXXFLAGS -DSUPPORTS_WEAK -DGTHREAD_USE_WEAK -D_PTHREADS"
|
||||
--
|
||||
2.47.2
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
From bb3277895d3bd77bcacb7c489ebb1390478bbc12 Mon Sep 17 00:00:00 2001
|
||||
From: John Ericson <John.Ericson@Obsidian.Systems>
|
||||
Date: Thu, 17 Jul 2025 11:00:07 -0400
|
||||
Subject: [PATCH 2/2] Force regular dirs
|
||||
|
||||
Override directories in libgcc so they are normal $out/lib and
|
||||
$dev/include. This is not suitable for upstreaming, but is done on top
|
||||
of a different patch which is, and which makes this smaller.
|
||||
|
||||
---
|
||||
libgcc/Makefile.in | 6 +++---
|
||||
libgcc/configure.ac | 3 ---
|
||||
2 files changed, 3 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in
|
||||
index 4661c36703d..986cd035148 100644
|
||||
--- a/libgcc/Makefile.in
|
||||
+++ b/libgcc/Makefile.in
|
||||
@@ -202,10 +202,10 @@ STRIP = @STRIP@
|
||||
STRIP_FOR_TARGET = $(STRIP)
|
||||
|
||||
# Used to install the shared libgcc.
|
||||
-slibdir = @slibdir@
|
||||
+slibdir = $(libdir)
|
||||
# Maybe used for DLLs on Windows targets.
|
||||
-toolexecdir = @toolexecdir@
|
||||
-toolexeclibdir = @toolexeclibdir@
|
||||
+toolexecdir = $(bindir)
|
||||
+toolexeclibdir = $(libdir)
|
||||
|
||||
export AR_FOR_TARGET
|
||||
export AR_CREATE_FOR_TARGET
|
||||
diff --git a/libgcc/configure.ac b/libgcc/configure.ac
|
||||
index 5fdac5d95f2..89044cb65c9 100644
|
||||
--- a/libgcc/configure.ac
|
||||
+++ b/libgcc/configure.ac
|
||||
@@ -479,9 +479,6 @@ if test x"$enable_as_accelerator_for" != x; then
|
||||
accel_dir_suffix=/accel/${target_noncanonical}
|
||||
real_host_noncanonical=${enable_as_accelerator_for}
|
||||
fi
|
||||
-# Directory in which the compiler finds libraries etc.
|
||||
-libdir=${orig_libdir}/gcc/${real_host_noncanonical}/'$(version)'${accel_dir_suffix}
|
||||
-includedir=${libdir}/include
|
||||
|
||||
if test x"$enable_offload_targets" != x; then
|
||||
extra_parts="${extra_parts} crtoffloadbegin.o crtoffloadend.o"
|
||||
--
|
||||
2.47.2
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
From 7a0c8ca8872a73c6886940448ba9b3203b13268d Mon Sep 17 00:00:00 2001
|
||||
From: John Ericson <git@JohnEricson.me>
|
||||
Date: Mon, 21 Jul 2025 11:42:13 -0400
|
||||
Subject: [PATCH] libgfortran: Force regular include/lib dir
|
||||
|
||||
---
|
||||
libgfortran/Makefile.am | 13 +++++--------
|
||||
1 file changed, 5 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/libgfortran/Makefile.am b/libgfortran/Makefile.am
|
||||
index 21b35c76a06..3d38cde5b42 100644
|
||||
--- a/libgfortran/Makefile.am
|
||||
+++ b/libgfortran/Makefile.am
|
||||
@@ -42,14 +42,13 @@ extra_darwin_ldflags_libgfortran += -Wc,-nodefaultrpaths
|
||||
extra_darwin_ldflags_libgfortran += -Wl,-rpath,@loader_path
|
||||
endif
|
||||
|
||||
-gfor_c_HEADERS = ISO_Fortran_binding.h
|
||||
-gfor_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
|
||||
+include_HEADERS = ISO_Fortran_binding.h
|
||||
|
||||
LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) \
|
||||
$(lt_host_flags)
|
||||
|
||||
-toolexeclib_LTLIBRARIES = libgfortran.la
|
||||
-toolexeclib_DATA = libgfortran.spec
|
||||
+lib_LTLIBRARIES = libgfortran.la
|
||||
+toolexeclib_DATA = libgfortran.spec # needs "exec" in name
|
||||
libgfortran_la_LINK = $(LINK) $(libgfortran_la_LDFLAGS)
|
||||
libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
|
||||
$(LTLDFLAGS) $(LIBQUADLIB) ../libbacktrace/libbacktrace.la \
|
||||
@@ -58,16 +57,14 @@ libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
|
||||
$(version_arg) -Wc,-shared-libgcc
|
||||
libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP)
|
||||
|
||||
-cafexeclib_LTLIBRARIES = libcaf_single.la
|
||||
-cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
|
||||
+lib_LTLIBRARIES += libcaf_single.la
|
||||
libcaf_single_la_SOURCES = caf/single.c
|
||||
libcaf_single_la_LDFLAGS = -static
|
||||
libcaf_single_la_DEPENDENCIES = caf/libcaf.h
|
||||
libcaf_single_la_LINK = $(LINK) $(libcaf_single_la_LDFLAGS)
|
||||
|
||||
if IEEE_SUPPORT
|
||||
-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude
|
||||
-nodist_finclude_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod
|
||||
+nodist_include_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod
|
||||
endif
|
||||
|
||||
## io.h conflicts with a system header on some platforms, so
|
||||
--
|
||||
2.47.2
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
From e7dac0e90f3e4363d858a6f147d7cc4f62815dd6 Mon Sep 17 00:00:00 2001
|
||||
From: John Ericson <John.Ericson@Obsidian.Systems>
|
||||
Date: Fri, 18 Jul 2025 16:54:17 -0400
|
||||
Subject: [PATCH 3/3] Force regular dirs
|
||||
|
||||
Override directories in libssp so they are normal $out/lib and
|
||||
$dev/include. This is not suitable for upstreaming, but is done on top
|
||||
of a different patch which is, and which makes this smaller.
|
||||
---
|
||||
libssp/configure.ac | 4 ----
|
||||
1 file changed, 4 deletions(-)
|
||||
|
||||
diff --git a/libssp/configure.ac b/libssp/configure.ac
|
||||
index 5b9fa4fbecc..f1723dc33ce 100644
|
||||
--- a/libssp/configure.ac
|
||||
+++ b/libssp/configure.ac
|
||||
@@ -207,10 +207,6 @@ esac
|
||||
AC_SUBST(toolexecdir)
|
||||
AC_SUBST(toolexeclibdir)
|
||||
|
||||
-# Directory in which the compiler finds libraries etc.
|
||||
-libdir='$(toolexeclibdir)'
|
||||
-includedir=${orig_libdir}/gcc/${host_noncanonical}/'$(version)/include'
|
||||
-
|
||||
if test ${multilib} = yes; then
|
||||
multilib_arg="--enable-multilib"
|
||||
else
|
||||
--
|
||||
2.47.2
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
From db427c55334dd2edc11397d3a92d55dc9c06d1c3 Mon Sep 17 00:00:00 2001
|
||||
From: John Ericson <git@JohnEricson.me>
|
||||
Date: Sun, 20 Jul 2025 14:20:00 -0400
|
||||
Subject: [PATCH] libstdc++: Force regular include/lib dir
|
||||
|
||||
Delete a bunch of unneeded logic to do this.
|
||||
---
|
||||
libstdc++-v3/acinclude.m4 | 80 ++------------------------------
|
||||
libstdc++-v3/include/Makefile.am | 2 +-
|
||||
2 files changed, 4 insertions(+), 78 deletions(-)
|
||||
|
||||
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
|
||||
index a0094c2dd95..a0718dff394 100644
|
||||
--- a/libstdc++-v3/acinclude.m4
|
||||
+++ b/libstdc++-v3/acinclude.m4
|
||||
@@ -727,85 +727,11 @@ dnl
|
||||
dnl This logic must match gcc/configure.ac's setting of gcc_gxx_include_dir.
|
||||
dnl config/gxx-include-dir.m4 must be kept consistant with this as well.
|
||||
AC_DEFUN([GLIBCXX_EXPORT_INSTALL_INFO], [
|
||||
- glibcxx_toolexecdir=no
|
||||
- glibcxx_toolexeclibdir=no
|
||||
+ glibcxx_toolexecdir='$(libdir)'
|
||||
+ glibcxx_toolexeclibdir='$(libdir)'
|
||||
+ gxx_include_dir='$(includedir)'
|
||||
glibcxx_prefixdir=$prefix
|
||||
|
||||
- AC_MSG_CHECKING([for gxx-include-dir])
|
||||
- AC_ARG_WITH([gxx-include-dir],
|
||||
- AC_HELP_STRING([--with-gxx-include-dir=DIR],
|
||||
- [installation directory for include files]),
|
||||
- [case "$withval" in
|
||||
- yes) AC_MSG_ERROR([Missing directory for --with-gxx-include-dir]) ;;
|
||||
- no) gxx_include_dir=no ;;
|
||||
- *) gxx_include_dir=$withval ;;
|
||||
- esac],
|
||||
- [gxx_include_dir=no])
|
||||
- AC_MSG_RESULT($gxx_include_dir)
|
||||
-
|
||||
- AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
|
||||
- AC_ARG_ENABLE([version-specific-runtime-libs],
|
||||
- AC_HELP_STRING([--enable-version-specific-runtime-libs],
|
||||
- [Specify that runtime libraries should be installed in a compiler-specific directory]),
|
||||
- [case "$enableval" in
|
||||
- yes) version_specific_libs=yes ;;
|
||||
- no) version_specific_libs=no ;;
|
||||
- *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
|
||||
- esac],
|
||||
- [version_specific_libs=no])
|
||||
- AC_MSG_RESULT($version_specific_libs)
|
||||
-
|
||||
- GCC_WITH_TOOLEXECLIBDIR
|
||||
-
|
||||
- # Default case for install directory for include files.
|
||||
- if test $version_specific_libs = no && test $gxx_include_dir = no; then
|
||||
- gxx_include_dir='include/c++/${gcc_version}'
|
||||
- if test -n "$with_cross_host" &&
|
||||
- test x"$with_cross_host" != x"no"; then
|
||||
- gxx_include_dir='${prefix}/${target_alias}/'"$gxx_include_dir"
|
||||
- else
|
||||
- gxx_include_dir='${prefix}/'"$gxx_include_dir"
|
||||
- fi
|
||||
- fi
|
||||
-
|
||||
- # Version-specific runtime libs processing.
|
||||
- if test $version_specific_libs = yes; then
|
||||
- # Need the gcc compiler version to know where to install libraries
|
||||
- # and header files if --enable-version-specific-runtime-libs option
|
||||
- # is selected. FIXME: these variables are misnamed, there are
|
||||
- # no executables installed in _toolexecdir or _toolexeclibdir.
|
||||
- if test x"$gxx_include_dir" = x"no"; then
|
||||
- gxx_include_dir='${libdir}/gcc/${host_alias}/${gcc_version}/include/c++'
|
||||
- fi
|
||||
- glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
|
||||
- glibcxx_toolexeclibdir='${toolexecdir}/${gcc_version}$(MULTISUBDIR)'
|
||||
- fi
|
||||
-
|
||||
- # Calculate glibcxx_toolexecdir, glibcxx_toolexeclibdir
|
||||
- # Install a library built with a cross compiler in tooldir, not libdir.
|
||||
- if test x"$glibcxx_toolexecdir" = x"no"; then
|
||||
- if test -n "$with_cross_host" &&
|
||||
- test x"$with_cross_host" != x"no"; then
|
||||
- glibcxx_toolexecdir='${exec_prefix}/${host_alias}'
|
||||
- case ${with_toolexeclibdir} in
|
||||
- no)
|
||||
- glibcxx_toolexeclibdir='${toolexecdir}/lib'
|
||||
- ;;
|
||||
- *)
|
||||
- glibcxx_toolexeclibdir=${with_toolexeclibdir}
|
||||
- ;;
|
||||
- esac
|
||||
- else
|
||||
- glibcxx_toolexecdir='${libdir}/gcc/${host_alias}'
|
||||
- glibcxx_toolexeclibdir='${libdir}'
|
||||
- fi
|
||||
- multi_os_directory=`$CXX -print-multi-os-directory`
|
||||
- case $multi_os_directory in
|
||||
- .) ;; # Avoid trailing /.
|
||||
- *) glibcxx_toolexeclibdir=$glibcxx_toolexeclibdir/$multi_os_directory ;;
|
||||
- esac
|
||||
- fi
|
||||
-
|
||||
AC_MSG_CHECKING([for install location])
|
||||
AC_MSG_RESULT($gxx_include_dir)
|
||||
|
||||
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
|
||||
index 537774c2668..c0bfeb43b44 100644
|
||||
--- a/libstdc++-v3/include/Makefile.am
|
||||
+++ b/libstdc++-v3/include/Makefile.am
|
||||
@@ -1048,7 +1048,7 @@ endif
|
||||
|
||||
host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR)
|
||||
host_builddir = ./${host_alias}/bits
|
||||
-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits
|
||||
+host_installdir = ${gxx_include_dir}/bits
|
||||
host_headers = \
|
||||
${host_srcdir}/ctype_base.h \
|
||||
${host_srcdir}/ctype_inline.h \
|
||||
--
|
||||
2.47.2
|
||||
|
||||
@@ -5,35 +5,81 @@
|
||||
release_version,
|
||||
version,
|
||||
getVersionFile,
|
||||
autoreconfHook269,
|
||||
monorepoSrc ? null,
|
||||
fetchpatch,
|
||||
autoreconfHook269,
|
||||
runCommand,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "libatomic";
|
||||
inherit version;
|
||||
|
||||
src = monorepoSrc;
|
||||
src = runCommand "libatomic-src-${version}" { src = monorepoSrc; } ''
|
||||
runPhase unpackPhase
|
||||
|
||||
mkdir -p "$out/gcc"
|
||||
cp gcc/BASE-VER "$out/gcc"
|
||||
cp gcc/DATESTAMP "$out/gcc"
|
||||
|
||||
cp -r libatomic "$out"
|
||||
|
||||
cp -r config "$out"
|
||||
cp -r multilib.am "$out"
|
||||
cp -r libtool.m4 "$out"
|
||||
|
||||
cp config.guess "$out"
|
||||
cp config.rpath "$out"
|
||||
cp config.sub "$out"
|
||||
cp config-ml.in "$out"
|
||||
cp ltmain.sh "$out"
|
||||
cp install-sh "$out"
|
||||
cp mkinstalldirs "$out"
|
||||
|
||||
[[ -f MD5SUMS ]]; cp MD5SUMS "$out"
|
||||
'';
|
||||
|
||||
patches = [
|
||||
(getVersionFile "gcc/custom-threading-model.patch")
|
||||
(fetchpatch {
|
||||
name = "custom-threading-model.patch";
|
||||
url = "https://inbox.sourceware.org/gcc-patches/20250716204545.1063669-1-git@JohnEricson.me/raw";
|
||||
hash = "sha256-kxNntY2r4i/+XHQSpf9bYV2Jg+FD/pD5TiMn5hd4ckk=";
|
||||
includes = [
|
||||
"config/*"
|
||||
"libatomic/*"
|
||||
];
|
||||
})
|
||||
];
|
||||
|
||||
postUnpack = ''
|
||||
mkdir -p ./build
|
||||
buildRoot=$(readlink -e "./build")
|
||||
'';
|
||||
|
||||
preAutoreconf = ''
|
||||
sourceRoot=$(readlink -e "./libatomic")
|
||||
cd $sourceRoot
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook269
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
sourceRoot=$(readlink -e "./libatomic")
|
||||
'';
|
||||
configurePlatforms = [
|
||||
"build"
|
||||
"host"
|
||||
];
|
||||
|
||||
configureFlags = [
|
||||
"--disable-dependency-tracking"
|
||||
"cross_compiling=true"
|
||||
"--disable-multilib"
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
mkdir ../build
|
||||
cd ../build
|
||||
cd "$buildRoot"
|
||||
configureScript=$sourceRoot/configure
|
||||
chmod +x "$configureScript"
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
version,
|
||||
getVersionFile,
|
||||
monorepoSrc ? null,
|
||||
fetchpatch,
|
||||
autoreconfHook269,
|
||||
buildGccPackages,
|
||||
buildPackages,
|
||||
@@ -37,7 +38,32 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
];
|
||||
|
||||
patches = [
|
||||
(getVersionFile "gcc/custom-threading-model.patch")
|
||||
(fetchpatch {
|
||||
name = "delete-MACHMODE_H.patch";
|
||||
url = "https://github.com/gcc-mirror/gcc/commit/493aae4b034d62054d5e7e54dc06cd9a8be54e29.diff";
|
||||
hash = "sha256-oEk0lnI96RlpALWpb7J+GnrtgQsFVqDO57I/zjiqqTk=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "custom-threading-model.patch";
|
||||
url = "https://inbox.sourceware.org/gcc-patches/20250716204545.1063669-1-git@JohnEricson.me/raw";
|
||||
hash = "sha256-NgiC4cFeFInXXg27me1XpSeImPaL0WHs50Tf1YHz4ps=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "libgcc.mvars-less-0.patch";
|
||||
url = "https://inbox.sourceware.org/gcc-patches/20250716234028.1153560-1-John.Ericson@Obsidian.Systems/raw";
|
||||
hash = "sha256-NEcieDCsy+7IRU3qQKVD3i57OuwGZKB/rmNF8X2I1n0=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "libgcc.mvars-less-1.patch";
|
||||
url = "https://inbox.sourceware.org/gcc-patches/20250716234028.1153560-2-John.Ericson@Obsidian.Systems/raw";
|
||||
hash = "sha256-nfRC4f6m3kHDro4+6E4y1ZPs+prxBQmn0H2rzIjaMWM=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "regular-libdir-includedir.patch";
|
||||
url = "https://inbox.sourceware.org/gcc-patches/20250717174911.1536129-1-git@JohnEricson.me/raw";
|
||||
hash = "sha256-Cn7rvg1FI7H/26GzSe4pv5VW/gvwbwGqivAqEeawkwk=";
|
||||
})
|
||||
(getVersionFile "libgcc/force-regular-dirs.patch")
|
||||
];
|
||||
|
||||
autoreconfFlags = "--install --force --verbose . libgcc";
|
||||
@@ -95,7 +121,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
tm.h \
|
||||
options.h \
|
||||
insn-constants.h \
|
||||
insn-modes.h \
|
||||
version.h
|
||||
)
|
||||
mkdir -p "$buildRoot/gcc/include"
|
||||
@@ -186,11 +211,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
makeFlags = [ "MULTIBUILDTOP:=../" ];
|
||||
|
||||
postInstall = ''
|
||||
cp gthr-default.h "$out/lib/gcc/${stdenv.hostPlatform.config}/${version}/include"
|
||||
moveToOutput "lib/gcc/${stdenv.hostPlatform.config}/${version}/include" "$dev"
|
||||
mkdir -p "$out/lib" "$dev/include"
|
||||
ln -s "$out/lib/gcc/${stdenv.hostPlatform.config}/${version}"/* "$out/lib"
|
||||
ln -s "$dev/lib/gcc/${stdenv.hostPlatform.config}/${version}/include"/* "$dev/include/"
|
||||
install -c -m 644 gthr-default.h "$dev/include"
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
@@ -5,10 +5,11 @@
|
||||
gcc_meta,
|
||||
release_version,
|
||||
version,
|
||||
getVersionFile,
|
||||
monorepoSrc ? null,
|
||||
buildPackages,
|
||||
autoreconfHook269,
|
||||
libiberty,
|
||||
buildPackages,
|
||||
libgcc,
|
||||
libbacktrace,
|
||||
}:
|
||||
@@ -32,6 +33,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
gfortran
|
||||
];
|
||||
|
||||
patches = [
|
||||
(getVersionFile "libgfortran/force-regular-dirs.patch")
|
||||
];
|
||||
|
||||
autoreconfFlags = "--install --force --verbose . libgfortran";
|
||||
|
||||
postUnpack = ''
|
||||
@@ -161,6 +166,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"gcc_cv_target_thread_file=single"
|
||||
# $CC cannot link binaries, let alone run then
|
||||
"cross_compiling=true"
|
||||
"--with-toolexeclibdir=${builtins.placeholder "dev"}/lib"
|
||||
];
|
||||
|
||||
# Set the variable back the way it was, see corresponding code in
|
||||
@@ -171,13 +177,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
makeFlags = [ "MULTIBUILDTOP:=../" ];
|
||||
|
||||
postInstall = ''
|
||||
moveToOutput "lib/gcc/${stdenv.hostPlatform.config}/${version}/include" "$dev"
|
||||
mkdir -p "$out/lib" "$dev/include"
|
||||
ln -s "$out/lib/gcc/${stdenv.hostPlatform.config}/${version}"/* "$out/lib"
|
||||
ln -s "$dev/lib/gcc/${stdenv.hostPlatform.config}/${version}/include"/* "$dev/include/"
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
passthru = {
|
||||
|
||||
@@ -4,7 +4,10 @@
|
||||
gcc_meta,
|
||||
release_version,
|
||||
version,
|
||||
getVersionFile,
|
||||
monorepoSrc ? null,
|
||||
fetchpatch,
|
||||
autoreconfHook269,
|
||||
runCommand,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -20,6 +23,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
cp -r libssp "$out"
|
||||
|
||||
cp -r config "$out"
|
||||
cp -r multilib.am "$out"
|
||||
|
||||
cp config.guess "$out"
|
||||
cp config.rpath "$out"
|
||||
cp config.sub "$out"
|
||||
@@ -31,23 +37,50 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
[[ -f MD5SUMS ]]; cp MD5SUMS "$out"
|
||||
'';
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/libssp";
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
];
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
name = "regular-libdir-includedir.patch";
|
||||
url = "https://inbox.sourceware.org/gcc-patches/20250720172933.2404828-1-git@JohnEricson.me/raw";
|
||||
hash = "sha256-W7dcy1Tm3O2reK7kx83DRv8W97qUfaqDbKLiLXIegRw=";
|
||||
})
|
||||
(getVersionFile "libssp/force-regular-dirs.patch")
|
||||
];
|
||||
|
||||
postUnpack = ''
|
||||
mkdir -p ./build
|
||||
buildRoot=$(readlink -e "./build")
|
||||
'';
|
||||
|
||||
preAutoreconf = ''
|
||||
sourceRoot=$(readlink -e "./libssp")
|
||||
cd $sourceRoot
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook269
|
||||
];
|
||||
|
||||
configurePlatforms = [
|
||||
"build"
|
||||
"host"
|
||||
];
|
||||
|
||||
configureFlags = [
|
||||
"--disable-dependency-tracking"
|
||||
"--with-toolexeclibdir=${builtins.placeholder "out" + "/lib"}"
|
||||
"cross_compiling=true"
|
||||
"--disable-multilib"
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
mkdir ../../build
|
||||
cd ../../build
|
||||
configureScript=../$sourceRoot/configure
|
||||
cd "$buildRoot"
|
||||
configureScript=$sourceRoot/configure
|
||||
'';
|
||||
|
||||
hardeningDisable = [
|
||||
|
||||
@@ -6,25 +6,62 @@
|
||||
version,
|
||||
getVersionFile,
|
||||
monorepoSrc ? null,
|
||||
runCommand,
|
||||
fetchpatch,
|
||||
autoreconfHook269,
|
||||
runCommand,
|
||||
gettext,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "libstdcxx";
|
||||
inherit version;
|
||||
|
||||
src = monorepoSrc;
|
||||
src = runCommand "libstdcxx-src-${version}" { src = monorepoSrc; } ''
|
||||
runPhase unpackPhase
|
||||
|
||||
enableParallelBuilding = true;
|
||||
mkdir -p "$out/gcc"
|
||||
cp gcc/BASE-VER "$out/gcc"
|
||||
cp gcc/DATESTAMP "$out/gcc"
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook269
|
||||
gettext
|
||||
mkdir -p "$out/libgcc"
|
||||
cp libgcc/gthr*.h "$out/libgcc"
|
||||
cp libgcc/unwind-pe.h "$out/libgcc"
|
||||
|
||||
cp -r libstdc++-v3 "$out"
|
||||
|
||||
cp -r libiberty "$out"
|
||||
cp -r include "$out"
|
||||
cp -r contrib "$out"
|
||||
|
||||
cp -r config "$out"
|
||||
cp -r multilib.am "$out"
|
||||
|
||||
cp config.guess "$out"
|
||||
cp config.rpath "$out"
|
||||
cp config.sub "$out"
|
||||
cp config-ml.in "$out"
|
||||
cp ltmain.sh "$out"
|
||||
cp install-sh "$out"
|
||||
cp mkinstalldirs "$out"
|
||||
|
||||
[[ -f MD5SUMS ]]; cp MD5SUMS "$out"
|
||||
'';
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
];
|
||||
|
||||
patches = [
|
||||
(getVersionFile "gcc/custom-threading-model.patch")
|
||||
(fetchpatch {
|
||||
name = "custom-threading-model.patch";
|
||||
url = "https://inbox.sourceware.org/gcc-patches/20250716204545.1063669-1-git@JohnEricson.me/raw";
|
||||
hash = "sha256-jPP0+MoPLtCwWcW6doO6KHCppwAYK40qNVyriLXcGOg=";
|
||||
includes = [
|
||||
"config/*"
|
||||
"libstdc++-v3/*"
|
||||
];
|
||||
})
|
||||
(getVersionFile "libstdcxx/force-regular-dirs.patch")
|
||||
];
|
||||
|
||||
postUnpack = ''
|
||||
@@ -37,12 +74,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
cd $sourceRoot
|
||||
'';
|
||||
|
||||
postPatch = ''
|
||||
sed -i \
|
||||
-e 's/AM_ENABLE_MULTILIB(/AM_ENABLE_MULTILIB(NOPE/' \
|
||||
-e 's#glibcxx_toolexeclibdir=no#glibcxx_toolexeclibdir=${builtins.placeholder "out"}/libexec#' \
|
||||
configure.ac
|
||||
'';
|
||||
enableParallelBuilding = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook269
|
||||
gettext
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
cd "$buildRoot"
|
||||
@@ -50,9 +87,13 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
chmod +x "$configureScript"
|
||||
'';
|
||||
|
||||
configurePlatforms = [
|
||||
"build"
|
||||
"host"
|
||||
];
|
||||
|
||||
configureFlags = [
|
||||
"--disable-dependency-tracking"
|
||||
"--with-toolexeclibdir=${builtins.placeholder "out"}/lib"
|
||||
"gcc_cv_target_thread_file=posix"
|
||||
"cross_compiling=true"
|
||||
"--disable-multilib"
|
||||
@@ -64,16 +105,15 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"--with-default-libstdcxx-abi=new"
|
||||
];
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
];
|
||||
|
||||
hardeningDisable = [
|
||||
# PATH_MAX
|
||||
"fortify"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
moveToOutput lib/libstdc++.modules.json "$dev"
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
passthru = {
|
||||
|
||||
@@ -32,9 +32,29 @@
|
||||
}
|
||||
];
|
||||
|
||||
# Submitted: https://gcc.gnu.org/pipermail/gcc-patches/2025-July/689429.html
|
||||
# In Git: https://github.com/Ericson2314/gcc/tree/libgcc-custom-threading-model-15
|
||||
"gcc/custom-threading-model.patch" = [
|
||||
# In Git: https://github.com/Ericson2314/gcc/tree/regular-dirs-in-libgcc-15
|
||||
"libgcc/force-regular-dirs.patch" = [
|
||||
{
|
||||
after = "15";
|
||||
path = ../15;
|
||||
}
|
||||
];
|
||||
# In Git: https://github.com/Ericson2314/gcc/tree/regular-dirs-in-libssp-15
|
||||
"libssp/force-regular-dirs.patch" = [
|
||||
{
|
||||
after = "15";
|
||||
path = ../15;
|
||||
}
|
||||
];
|
||||
# In Git: https://github.com/Ericson2314/gcc/tree/libstdcxx-force-regular-dirs-15
|
||||
"libstdcxx/force-regular-dirs.patch" = [
|
||||
{
|
||||
after = "15";
|
||||
path = ../15;
|
||||
}
|
||||
];
|
||||
# In Git: https://github.com/Ericson2314/gcc/tree/libgfortran-force-regular-dirs-15
|
||||
"libgfortran/force-regular-dirs.patch" = [
|
||||
{
|
||||
after = "15";
|
||||
path = ../15;
|
||||
|
||||
Reference in New Issue
Block a user