diff options
-rw-r--r-- | .github/workflows/nightly-release.yaml | 2 | ||||
-rw-r--r-- | Makefile.in | 43 | ||||
-rw-r--r-- | README.md | 8 | ||||
-rwxr-xr-x | configure | 26 | ||||
-rw-r--r-- | configure.ac | 14 |
5 files changed, 71 insertions, 22 deletions
diff --git a/.github/workflows/nightly-release.yaml b/.github/workflows/nightly-release.yaml index a374d8b..8326161 100644 --- a/.github/workflows/nightly-release.yaml +++ b/.github/workflows/nightly-release.yaml @@ -48,7 +48,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-22.04, ubuntu-24.04] + os: [ubuntu-22.04, ubuntu-24.04, ubuntu-22.04-arm, ubuntu-24.04-arm] mode: [newlib, linux, musl, uclibc] target: [rv32gc-ilp32d, rv64gc-lp64d] compiler: [gcc, llvm] diff --git a/Makefile.in b/Makefile.in index 3abe1a9..e6fc8ec 100644 --- a/Makefile.in +++ b/Makefile.in @@ -17,6 +17,7 @@ LLVM_SRCDIR := @with_llvm_src@ DEJAGNU_SRCDIR := @with_dejagnu_src@ DEBUG_INFO := @debug_info@ ENABLE_DEFAULT_PIE := @enable_default_pie@ +INSTALL_TARGET := @install_target@ SIM ?= @WITH_SIM@ @@ -40,6 +41,7 @@ WITH_ISA_SPEC ?= @WITH_ISA_SPEC@ SYSROOT := $(INSTALL_DIR)/sysroot ENABLE_LIBSANITIZER ?= @enable_libsanitizer@ QEMU_TARGETS ?= @qemu_targets@ +QEMU_EXTRA_CONFIGURE_FLAGS := @enable_strip_qemu@ $(QEMU_EXTRA_CONFIGURE_FLAGS) ENABLED_LANGUAGES ?= @WITH_LANGUAGES@ ifeq ($(ENABLED_LANGUAGES),) @@ -355,7 +357,7 @@ stamps/install-host-gcc: $(GCC_SRCDIR) $(GCC_SRC_GIT) --disable-bootstrap \ --disable-multilib $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) mkdir -p $(dir $@) && touch $@ # @@ -383,7 +385,7 @@ stamps/build-binutils-linux: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) $(PREPARATIO --disable-readline \ $(WITH_ISA_SPEC) $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) mkdir -p $(dir $@) && touch $@ stamps/build-gdb-linux: $(GDB_SRCDIR) $(GDB_SRC_GIT) $(PREPARATION_STAMP) @@ -407,7 +409,7 @@ stamps/build-gdb-linux: $(GDB_SRCDIR) $(GDB_SRC_GIT) $(PREPARATION_STAMP) --disable-gold \ --disable-gprof $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) mkdir -p $(dir $@) && touch $@ stamps/build-glibc-linux-headers: $(GLIBC_SRCDIR) $(GLIBC_SRC_GIT) stamps/build-gcc-linux-stage1 @@ -494,7 +496,7 @@ stamps/build-gcc-linux-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutil CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) inhibit-libc=true all-gcc - $(MAKE) -C $(notdir $@) inhibit-libc=true install-gcc + $(MAKE) -C $(notdir $@) inhibit-libc=true $(INSTALL_TARGET)-gcc $(MAKE) -C $(notdir $@) inhibit-libc=true all-target-libgcc $(MAKE) -C $(notdir $@) inhibit-libc=true install-target-libgcc mkdir -p $(dir $@) && touch $@ @@ -532,7 +534,7 @@ stamps/build-gcc-linux-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) $(addprefix stamps/b CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) cp -a $(INSTALL_DIR)/$(LINUX_TUPLE)/lib* $(SYSROOT) mkdir -p $(dir $@) && touch $@ @@ -556,7 +558,7 @@ stamps/build-binutils-linux-native: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) stamp --disable-readline \ $(WITH_ISA_SPEC) $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) mkdir -p $(dir $@) && touch $@ @@ -588,7 +590,7 @@ stamps/build-gcc-linux-native: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-gcc-lin $(WITH_ISA_SPEC) \ $(GCC_EXTRA_CONFIGURE_FLAGS) $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) cp -a $(INSTALL_DIR)/$(LINUX_TUPLE)/lib* $(SYSROOT) mkdir -p $(dir $@) && touch $@ @@ -614,7 +616,7 @@ stamps/build-binutils-newlib: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) $(PREPARATI --disable-readline \ $(WITH_ISA_SPEC) $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) mkdir -p $(dir $@) && touch $@ stamps/build-gdb-newlib: $(GDB_SRCDIR) $(GDB_SRC_GIT) $(PREPARATION_STAMP) @@ -635,7 +637,7 @@ stamps/build-gdb-newlib: $(GDB_SRCDIR) $(GDB_SRC_GIT) $(PREPARATION_STAMP) --disable-gold \ --disable-gprof $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) mkdir -p $(dir $@) && touch $@ stamps/build-gcc-newlib-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutils-newlib @@ -670,7 +672,7 @@ stamps/build-gcc-newlib-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binuti CFLAGS_FOR_TARGET="-Os $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-Os $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) all-gcc - $(MAKE) -C $(notdir $@) install-gcc + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET)-gcc mkdir -p $(dir $@) && touch $@ stamps/build-newlib: $(NEWLIB_SRCDIR) $(NEWLIB_SRC_GIT) stamps/build-gcc-newlib-stage1 @@ -779,7 +781,7 @@ stamps/build-gcc-newlib-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-newlib CFLAGS_FOR_TARGET="-Os $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-Os $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) mkdir -p $(dir $@) && touch $@ # @@ -807,7 +809,7 @@ stamps/build-binutils-musl: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) $(PREPARATION --disable-readline \ $(WITH_ISA_SPEC) $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) mkdir -p $(dir $@) && touch $@ stamps/build-gdb-musl: $(GDB_SRCDIR) $(GDB_SRC_GIT) $(PREPARATION_STAMP) @@ -831,7 +833,7 @@ stamps/build-gdb-musl: $(GDB_SRCDIR) $(GDB_SRC_GIT) $(PREPARATION_STAMP) --disable-gold \ --disable-gprof $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) mkdir -p $(dir $@) && touch $@ stamps/build-gcc-musl-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutils-musl \ @@ -868,7 +870,7 @@ stamps/build-gcc-musl-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutils CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) inhibit-libc=true all-gcc - $(MAKE) -C $(notdir $@) inhibit-libc=true install-gcc + $(MAKE) -C $(notdir $@) inhibit-libc=true $(INSTALL_TARGET)-gcc $(MAKE) -C $(notdir $@) inhibit-libc=true all-target-libgcc $(MAKE) -C $(notdir $@) inhibit-libc=true install-target-libgcc mkdir -p $(dir $@) && touch $@ @@ -939,7 +941,7 @@ stamps/build-gcc-musl-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-musl-lin CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) cp -a $(INSTALL_DIR)/$(MUSL_TUPLE)/lib* $(SYSROOT) mkdir -p $(dir $@) && touch $@ @@ -968,7 +970,7 @@ stamps/build-binutils-uclibc: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) $(PREPARATI --disable-readline \ $(WITH_ISA_SPEC) $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) mkdir -p $(dir $@) && touch $@ stamps/build-gcc-uclibc-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutils-uclibc \ @@ -1004,7 +1006,7 @@ stamps/build-gcc-uclibc-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binuti CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) inhibit-libc=true all-gcc - $(MAKE) -C $(notdir $@) inhibit-libc=true install-gcc + $(MAKE) -C $(notdir $@) inhibit-libc=true $(INSTALL_TARGET)-gcc $(MAKE) -C $(notdir $@) inhibit-libc=true all-target-libgcc $(MAKE) -C $(notdir $@) inhibit-libc=true install-target-libgcc mkdir -p $(dir $@) && touch $@ @@ -1072,7 +1074,7 @@ stamps/build-gcc-uclibc-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-uclibc CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(INSTALL_TARGET) cp -a $(INSTALL_DIR)/$(UCLIBC_TUPLE)/lib* $(SYSROOT) mkdir -p $(dir $@) && touch $@ @@ -1120,6 +1122,7 @@ stamps/build-qemu: $(QEMU_SRCDIR) $(QEMU_SRC_GIT) $(PREPARATION_STAMP) --prefix=$(INSTALL_DIR) \ --target-list=$(QEMU_TARGETS) \ --interp-prefix=$(INSTALL_DIR)/sysroot \ + $(QEMU_EXTRA_CONFIGURE_FLAGS) \ --python=python3 $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install @@ -1157,7 +1160,7 @@ stamps/build-llvm-linux: $(LLVM_SRCDIR) $(LLVM_SRC_GIT) $(BINUTILS_SRCDIR) $(BIN -DLLVM_PARALLEL_LINK_JOBS=4 \ $(LLVM_EXTRA_CONFIGURE_FLAGS) $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(subst -,/,$(INSTALL_TARGET)) # Build shared/static OpenMP libraries on RV64. if test $(XLEN) -eq 64; then \ mkdir $(notdir $@)/openmp-shared; \ @@ -1219,7 +1222,7 @@ stamps/build-llvm-newlib: $(LLVM_SRCDIR) $(LLVM_SRC_GIT) $(BINUTILS_SRCDIR) $(BI -DLLVM_PARALLEL_LINK_JOBS=4 \ $(LLVM_EXTRA_CONFIGURE_FLAGS) $(MAKE) -C $(notdir $@) - $(MAKE) -C $(notdir $@) install + $(MAKE) -C $(notdir $@) $(subst -,/,$(INSTALL_TARGET)) cd $(INSTALL_DIR)/bin && ln -s -f clang $(NEWLIB_TUPLE)-clang && \ ln -s -f clang++ $(NEWLIB_TUPLE)-clang++ mkdir -p $(dir $@) && touch $@ @@ -108,6 +108,9 @@ To customize the enabled languages, use option `--with-languages=`. For example, if you want to enable `c,c++,fortran`, use `./configure --with-languages=c,c++,fortran`. This option only takes effect for the GNU toolchain. +The toolchain has an option `--enable-strip` to control strip of host binaries, +strip is disabled by default. + ### Troubleshooting Build Problems Builds work best if installing into an empty directory. If you build a @@ -140,7 +143,10 @@ devtoolset-7 works. There are a number of additional options that may be passed to configure. See './configure --help' for more details. -Also you can define extra flags to pass to specific projects: ```BINUTILS_NATIVE_FLAGS_EXTRA, BINUTILS_TARGET_FLAGS_EXTRA, GCC_EXTRA_CONFIGURE_FLAGS, GDB_NATIVE_FLAGS_EXTRA, GDB_TARGET_FLAGS_EXTRA, GLIBC_TARGET_FLAGS_EXTRA, NEWLIB_TARGET_FLAGS_EXTRA, LLVM_EXTRA_CONFIGURE_FLAGS```. +Also you can define extra flags to pass to specific projects: ```BINUTILS_NATIVE_FLAGS_EXTRA, +BINUTILS_TARGET_FLAGS_EXTRA, GCC_EXTRA_CONFIGURE_FLAGS, GDB_NATIVE_FLAGS_EXTRA, +GDB_TARGET_FLAGS_EXTRA, GLIBC_TARGET_FLAGS_EXTRA, NEWLIB_TARGET_FLAGS_EXTRA, +LLVM_EXTRA_CONFIGURE_FLAGS, QEMU_EXTRA_CONFIGURE_FLAGS```. Example: ```GCC_EXTRA_CONFIGURE_FLAGS=--with-gmp=/opt/gmp make linux``` #### Set default ISA spec version @@ -630,6 +630,8 @@ with_glibc_src with_newlib_src with_binutils_src with_gcc_src +enable_strip_qemu +install_target enable_host_gcc enable_llvm enable_gdb @@ -736,6 +738,7 @@ with_guile enable_gdb enable_llvm enable_host_gcc +enable_strip with_gcc_src with_binutils_src with_newlib_src @@ -1392,6 +1395,7 @@ Optional Features: --disable-gdb Don't build GDB, as it's not upstream --enable-llvm Build LLVM (clang) --enable-host-gcc Build host GCC to build cross toolchain + --enable-strip Strip debug symbols at install time --enable-libsanitizer Build libsanitizer, which only supports rv64 --enable-qemu-system Build qemu with system-mode emulation @@ -4345,6 +4349,28 @@ else $as_nop fi +# Check whether --enable-strip was given. +if test ${enable_strip+y} +then : + enableval=$enable_strip; enable_strip=yes +fi + + +if test "x$enable_strip" != xyes +then : + install_target=install + +else $as_nop + install_target=install-strip + +fi + +if test "x$enable_strip" = xyes +then : + enable_strip_qemu=-Dstrip=true + +fi + { diff --git a/configure.ac b/configure.ac index 485c3cb..b4972a2 100644 --- a/configure.ac +++ b/configure.ac @@ -293,6 +293,20 @@ AS_IF([test "x$enable_host_gcc" != xyes], [AC_SUBST(enable_host_gcc, --disable-host-gcc)], [AC_SUBST(enable_host_gcc, --enable-host-gcc)]) +AC_ARG_ENABLE(strip, + [AS_HELP_STRING([--enable-strip], + [Strip debug symbols at install time])], + [enable_strip=yes], + [] + ) + +AS_IF([test "x$enable_strip" != xyes], + [AC_SUBST(install_target, install)], + [AC_SUBST(install_target, install-strip)]) + +AS_IF([test "x$enable_strip" = xyes], + [AC_SUBST(enable_strip_qemu, -Dstrip=true)]) + AC_DEFUN([AX_ARG_WITH_SRC], [{m4_pushdef([opt_name], with_$1_src) AC_ARG_WITH($1-src, |