gcc: build works again

This commit is contained in:
Giacomo Tesio 2020-09-10 22:39:10 +02:00
parent f598a59d81
commit bab840a411
4 changed files with 89 additions and 86 deletions

View File

@ -37,70 +37,6 @@
#define PORTABLE_INCLUDE_DIR "/sys/include"
/* C++ : only define values for INCLUDE_DEFAULTS */
#ifdef GPLUSPLUS_INCLUDE_DIR
# define JEHANNE_ID_GPLUSPLUS { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
#else
# define JEHANNE_ID_GPLUSPLUS
#endif
#ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
# define JEHANNE_ID_GPLUSPLUS_TOOL { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },
#else
# define JEHANNE_ID_GPLUSPLUS_TOOL
#endif
#ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
# define JEHANNE_ID_GPLUSPLUS_BACKWARD { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
#else
# define JEHANNE_ID_GPLUSPLUS_BACKWARD
#endif
/* GCC's private headers. */
#ifdef GCC_INCLUDE_DIR
# define JEHANNE_IS_GCC " -isystem" GCC_INCLUDE_DIR
# define JEHANNE_ID_GCC { GCC_INCLUDE_DIR, "GCC", 1, 0, 0, 0 },
#else
# define JEHANNE_ID_GCC
# define JEHANNE_IS_GCC
#endif
#ifdef PREFIX_INCLUDE_DIR
# define JEHANNE_IS_PREFIX " -isystem" PREFIX_INCLUDE_DIR
# define JEHANNE_ID_PREFIX { PREFIX_INCLUDE_DIR, 0, 1, 1, 0, 0 },
#else
# define JEHANNE_ID_PREFIX
# define JEHANNE_IS_PREFIX
#endif
#if defined (CROSS_INCLUDE_DIR) && defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
# define JEHANNE_IS_CROSS " -isystem" CROSS_INCLUDE_DIR
# define JEHANNE_ID_CROSS { CROSS_INCLUDE_DIR, "GCC", 1, 0, 0, 0 },
#else
# define JEHANNE_ID_CROSS
# define JEHANNE_IS_CROSS
#endif
/* Binutils headers. */
#ifdef TOOL_INCLUDE_DIR
# define JEHANNE_IS_TOOL " -isystem" TOOL_INCLUDE_DIR
# define JEHANNE_ID_TOOL { TOOL_INCLUDE_DIR, "BINUTILS", 1, 1, 0, 0 },
#else
# define JEHANNE_ID_TOOL
# define JEHANNE_IS_TOOL
#endif
#define JEHANNE_POSIX_INCLUDE_DIR "/posix/include"
#define JEHANNE_ID_POSIX { JEHANNE_POSIX_INCLUDE_DIR, 0, 1, 0, 1, 0 },
#ifdef CROSS_DIRECTORY_STRUCTURE
# define JEHANNE_IS_POSIX " -isystem%:getenv(JEHANNE " JEHANNE_POSIX_INCLUDE_DIR ")"
# define JEHANNE_POSIX_LIB_DIR "%:getenv(JEHANNE /posix/lib)"
#else
# define JEHANNE_IS_POSIX " -isystem" JEHANNE_POSIX_INCLUDE_DIR
# define JEHANNE_POSIX_LIB_DIR "/posix/lib"
#endif
/* INCLUDE_DEFAULTS is used by gcc/cppdefault.c
* The struct is defined in gcc/cppdefault.h
*
@ -126,6 +62,60 @@
* headers but with `cplusplus = 1`, to not mess native C compilation
* that have to react to the `-9` option.
*/
/* C++ : only define values for INCLUDE_DEFAULTS */
#ifdef GPLUSPLUS_INCLUDE_DIR
# define JEHANNE_ID_GPLUSPLUS { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
#else
# define JEHANNE_ID_GPLUSPLUS
#endif
#ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
# define JEHANNE_ID_GPLUSPLUS_TOOL { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },
#else
# define JEHANNE_ID_GPLUSPLUS_TOOL
#endif
#ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
# define JEHANNE_ID_GPLUSPLUS_BACKWARD { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
#else
# define JEHANNE_ID_GPLUSPLUS_BACKWARD
#endif
/* GCC's private headers. */
#ifdef GCC_INCLUDE_DIR
# define JEHANNE_ID_GCC { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
#else
# define JEHANNE_ID_GCC
#endif
#ifdef PREFIX_INCLUDE_DIR
# define JEHANNE_ID_PREFIX { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 },
#else
# define JEHANNE_ID_PREFIX
#endif
#if defined (CROSS_INCLUDE_DIR) && defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
# define JEHANNE_ID_CROSS { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
#else
# define JEHANNE_ID_CROSS
#endif
/* Binutils headers. */
#ifdef TOOL_INCLUDE_DIR
# define JEHANNE_ID_TOOL { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0 },
#else
# define JEHANNE_ID_TOOL
#endif
#define JEHANNE_POSIX_INCLUDE_DIR "/posix/include"
#define JEHANNE_ID_POSIX { JEHANNE_POSIX_INCLUDE_DIR, 0, 0, 0, 1, 0 },
#ifdef CROSS_DIRECTORY_STRUCTURE
# define JEHANNE_POSIX_LIB_DIR "%:getenv(JEHANNE /posix/lib)"
#else
# define JEHANNE_POSIX_LIB_DIR "/posix/lib"
#endif
#undef INCLUDE_DEFAULTS
#define INCLUDE_DEFAULTS \
{ \
@ -144,20 +134,20 @@
#undef EXTRA_SPECS
#define EXTRA_SPECS \
{ "posixly_isystems", JEHANNE_IS_GCC \
JEHANNE_IS_POSIX \
JEHANNE_IS_PREFIX \
JEHANNE_IS_CROSS \
JEHANNE_IS_TOOL }, \
{ "posixly_lib", "%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}} -lposix" },
/* set CPLUSPLUS_CPP_SPEC to prevent the default fallback to CPP_SPEC */
#define CPLUSPLUS_CPP_SPEC ""
/* These Specs reacts `-9` option by removing POSIX stuff */
#undef CPP_SPEC
#define CPP_SPEC "%{!9:%(posixly_isystems)}"
//#undef CPP_SPEC
//#define CPP_SPEC "%{!9:%(posixly_isystems)}"
/* Since -nostdinc++ doesn't exclude C headers but we have cheated
* marking them as C++ headers, we need to add them back when
* this option is provided
*/
//#undef CPLUSPLUS_CPP_SPEC
//#define CPLUSPLUS_CPP_SPEC "%{nostdinc++:%(posixly_isystems)}"
//#define CPLUSPLUS_CPP_SPEC ""
#undef LINK_SPEC
#define LINK_SPEC "%{!9:-L" JEHANNE_POSIX_LIB_DIR "}"

View File

@ -76,15 +76,25 @@ echo -n Building libstdc++-v3... | tee -a $LOG
mkdir -p $GCC_BUILD_DIR/x86_64-jehanne/libstdc++-v3 &&
cd $GCC_BUILD_DIR/x86_64-jehanne/libstdc++-v3 &&
rm -f config.cache &&
$JEHANNE_TOOLCHAIN/src/gcc/libstdc++-v3/configure --srcdir=$JEHANNE_TOOLCHAIN/src/gcc/libstdc++-v3 --cache-file=./config.cache --enable-multilib --with-cross-host=x86_64-pc-linux-gnu --prefix=/posix --with-sysroot=/ --with-build-sysroot=$JEHANNE --enable-languages=c,c++,lto --program-transform-name='s&^&x86_64-jehanne-&' --disable-option-checking --with-target-subdir=x86_64-jehanne --build=x86_64-pc-linux-gnu --host=x86_64-jehanne --target=x86_64-jehanne &&
$JEHANNE_TOOLCHAIN/src/gcc/libstdc++-v3/configure \
--srcdir=$JEHANNE_TOOLCHAIN/src/gcc/libstdc++-v3 \
--cache-file=./config.cache \
--enable-multilib --with-cross-host=x86_64-pc-linux-gnu \
--prefix=/posix --with-sysroot=/ --with-build-sysroot=$JEHANNE \
--enable-languages=c,c++,lto --program-transform-name='s&^&x86_64-jehanne-&' \
--disable-option-checking --with-target-subdir=x86_64-jehanne \
--build=x86_64-pc-linux-gnu --host=x86_64-jehanne --target=x86_64-jehanne &&
make &&
make DESTDIR=$JEHANNE/pkgs/libstdc++-v3/9.2.0/ install
) >> $LOG 2>&1
failOnError $? "building libstdc++-v3"
echo done.
export PATH=$OPATH
# Copy to /posix (to emulate bind during cross compilation)
cp -pfr $JEHANNE/pkgs/libstdc++-v3/9.2.0/posix/* $JEHANNE/posix
cp -pfr $JEHANNE/pkgs/libstdc++-v3/9.2.0/posix/* $JEHANNE_TOOLCHAIN/cross/posix
cp -pfr $JEHANNE/pkgs/libstdc++-v3/9.2.0/posix/x86_64-jehanne/* $JEHANNE/posix
find $JEHANNE/posix/|grep '\.la$'|xargs rm
echo -n Building libgmp... | tee -a $LOG
@ -182,10 +192,11 @@ echo -n "Building gcc (and libgcc)..." | tee -a $LOG
--disable-multiarch --disable-multilib \
--disable-shared --disable-threads --disable-tls \
--disable-libgomp --disable-werror --disable-nls &&
make all-target-libgcc &&
make DESTDIR=$JEHANNE/pkgs/gcc/9.2.0/ install-target-libgcc &&
make all-gcc &&
make DESTDIR=$JEHANNE/pkgs/gcc/9.2.0/ install-gcc &&
make all-target-libgcc &&
make DESTDIR=$JEHANNE/pkgs/gcc/9.2.0/ install-target-libgcc
echo
) >> $LOG 2>&1
failOnError $? "building gcc"

View File

@ -61,13 +61,15 @@ function failOnError {
function mergeLibPOSIX {
TARGET_LIB=$1
echo "Merging $JEHANNE/arch/$ARCH/lib/libposix.a into $TARGET_LIB." &&
x86_64-jehanne-ar -M <<EOF
open $TARGET_LIB
addlib $JEHANNE/arch/$ARCH/lib/libposix.a
save
end
EOF
# echo "Merging $JEHANNE/arch/$ARCH/lib/libposix.a into $TARGET_LIB." &&
# x86_64-jehanne-ar -M <<EOF
#open $TARGET_LIB
#addlib $JEHANNE/arch/$ARCH/lib/libposix.a
#save
#end
#EOF
}
if [ "$NEWLIB_OPTIMIZATION" = "" ]; then

@ -1 +1 @@
Subproject commit d9c194a0b04a2a66803f7a22bae7069e24642065
Subproject commit ded03c70bfd4d7d61cf5c0f051797affcda6fa05