diff options
-rw-r--r-- | Makefile.in | 50 | ||||
-rwxr-xr-x | configure | 89 | ||||
-rw-r--r-- | configure.ac | 64 | ||||
m--------- | riscv-binutils-gdb | 0 | ||||
m--------- | riscv-gcc | 0 | ||||
m--------- | riscv-glibc | 0 |
6 files changed, 47 insertions, 156 deletions
diff --git a/Makefile.in b/Makefile.in index 0091a04..45c5130 100644 --- a/Makefile.in +++ b/Makefile.in @@ -10,17 +10,10 @@ gcc_url := $(GNU_MIRROR)/gcc/gcc-$(gcc_version)/gcc-$(gcc_version).tar.gz glibc_url := $(GNU_MIRROR)/glibc/glibc-$(glibc_version).tar.gz newlib_url := ftp://sourceware.org/pub/newlib/newlib-$(newlib_version).tar.gz -XLEN ?= @XLEN@ WITH_ARCH ?= @WITH_ARCH@ -MULTILIB ?= +WITH_ABI ?= @WITH_ABI@ SYSROOT := $(INSTALL_DIR)/sysroot -ifeq ($(XLEN),32) -LIBDIR := lib32 -else -LIBDIR := lib -endif - SHELL := /bin/sh AWK := @GAWK@ SED := @GSED@ @@ -40,13 +33,18 @@ export PATH AWK SED MULTILIB_FLAGS := @multilib_flags@ MULTILIB_NAMES := @multilib_names@ -ATOMIC_CFLAGS := @atomic_cflags@ -BINUTILS_FLOAT_FLAGS := @binutils_float_flags@ -GCC_FLOAT_FLAGS := @gcc_float_flags@ -GLIBC_FLOAT_FLAGS := @glibc_float_flags@ $(GLIBC_FLOAT_FLAGS_EXTRA) GCC_CHECKING_FLAGS := @gcc_checking@ -CFLAGS_FOR_TARGET := $(CFLAGS_FOR_TARGET_EXTRA) $(ATOMIC_CFLAGS) +XLEN := $(shell echo $(WITH_ARCH) | tr A-Z a-z | sed 's/.*rv\([0-9]*\).*/\1/') +ifneq ($(XLEN),32) + XLEN := 64 +endif + +ifeq ($(MULTILIB_NAMES),) + MULTILIB_NAMES := $(subst --with-arch=,,$(WITH_ARCH))-$(subst --with-abi=,,$(WITH_ABI)) +endif + +CFLAGS_FOR_TARGET := $(CFLAGS_FOR_TARGET_EXTRA) ASFLAGS_FOR_TARGET := $(ASFLAGS_FOR_TARGET_EXTRA) GLIBC_TARGET_FLAGS := $(GLIBC_TARGET_FLAGS_EXTRA) GLIBC_CC_FOR_TARGET ?= riscv$(XLEN)-unknown-linux-gnu-gcc @@ -85,7 +83,6 @@ stamps/build-binutils-linux: $(srcdir)/riscv-binutils-gdb --target=riscv$(XLEN)-unknown-linux-gnu \ --prefix=$(INSTALL_DIR) \ --with-sysroot=$(SYSROOT) \ - $(BINUTILS_FLOAT_FLAGS) \ $(MULTILIB_FLAGS) \ --disable-werror \ --disable-nls @@ -101,8 +98,7 @@ stamps/build-linux-headers: stamps/build-glibc-linux-headers: $(srcdir)/riscv-glibc stamps/build-gcc-linux-stage1 rm -rf $@ $(notdir $@) mkdir $(notdir $@) - mkdir -p $(SYSROOT)/usr/lib $(SYSROOT)/lib - cd $(notdir $@) && CC="$(GLIBC_CC_FOR_TARGET) -march=rv64g -mabi=lp64d" $</configure \ + cd $(notdir $@) && CC="$(GLIBC_CC_FOR_TARGET)" $</configure \ --host=riscv$(XLEN)-unknown-linux-gnu \ --prefix=$(SYSROOT)/usr \ libc_cv_forced_unwind=yes \ @@ -117,11 +113,10 @@ stamps/build-glibc-linux-headers: $(srcdir)/riscv-glibc stamps/build-gcc-linux-s stamps/build-glibc-linux-%: $(srcdir)/riscv-glibc stamps/build-gcc-linux-stage1 rm -rf $@ $(notdir $@) mkdir $(notdir $@) - mkdir -p $(SYSROOT)/usr/lib $(SYSROOT)/lib cd $(notdir $@) && \ - CC="$(GLIBC_CC_FOR_TARGET) $(if $(filter-out %-,$@),-march=$(word 4,$(subst -, ,$@)) -mabi=$(word 5,$(subst -, ,$@)),)" \ - CFLAGS="$(CFLAGS_FOR_TARGET) -g -O2 $(if $(filter-out %-,$@),-march=$(word 4,$(subst -, ,$@)) -mabi=$(word 5,$(subst -, ,$@)),)" \ - ASFLAGS="$(ASFLAGS_FOR_TARGET) $(if $(filter-out %-,$@),-march=$(word 4,$(subst -, ,$@)) -mabi=$(word 5,$(subst -, ,$@)),)" \ + CC="$(GLIBC_CC_FOR_TARGET) -march=$(word 4,$(subst -, ,$@)) -mabi=$(word 5,$(subst -, ,$@))" \ + CFLAGS="$(CFLAGS_FOR_TARGET) -g -O2 -march=$(word 4,$(subst -, ,$@)) -mabi=$(word 5,$(subst -, ,$@))" \ + ASFLAGS="$(ASFLAGS_FOR_TARGET) -march=$(word 4,$(subst -, ,$@)) -mabi=$(word 5,$(subst -, ,$@))" \ $</configure \ --host=riscv$(XLEN)-unknown-linux-gnu \ --prefix=/usr \ @@ -132,11 +127,10 @@ stamps/build-glibc-linux-%: $(srcdir)/riscv-glibc stamps/build-gcc-linux-stage1 --enable-__thread \ $(MULTILIB_FLAGS) \ --enable-kernel=2.6.32 \ - $(GLIBC_FLOAT_FLAGS) \ $(GLIBC_TARGET_FLAGS) \ $(if $(filter %d,$@),,--without-fp) \ - --libdir=/usr/lib/$(word 4,$(subst -, ,$@))/$(word 5,$(subst -, ,$@)) \ - libc_cv_slibdir=/lib/$(word 4,$(subst -, ,$@))/$(word 5,$(subst -, ,$@)) + --libdir=/usr/lib$(shell echo $(word 4,$(subst -, ,$@)) | sed 's/.*rv\([0-9]*\).*/\1/')/$(word 5,$(subst -, ,$@)) \ + libc_cv_slibdir=/lib$(shell echo $(word 4,$(subst -, ,$@)) | sed 's/.*rv\([0-9]*\).*/\1/')/$(word 5,$(subst -, ,$@)) $(MAKE) -C $(notdir $@) +flock $(SYSROOT)/.lock $(MAKE) -C $(notdir $@) install install_root=$(SYSROOT) mkdir -p $(dir $@) && touch $@ @@ -163,9 +157,9 @@ stamps/build-gcc-linux-stage1: $(srcdir)/riscv-gcc stamps/build-binutils-linux \ --disable-libgomp \ --disable-nls \ --disable-bootstrap \ - $(GCC_FLOAT_FLAGS) \ $(GCC_CHECKING_FLAGS) \ $(MULTILIB_FLAGS) \ + $(WITH_ABI) \ $(WITH_ARCH) $(MAKE) -C $(notdir $@) inhibit-libc=true all-gcc $(MAKE) -C $(notdir $@) inhibit-libc=true install-gcc @@ -190,12 +184,13 @@ stamps/build-gcc-linux-stage2: $(srcdir)/riscv-gcc $(addprefix stamps/build-glib --disable-libquadmath \ --disable-nls \ --disable-bootstrap \ - $(GCC_FLOAT_FLAGS) \ $(GCC_CHECKING_FLAGS) \ $(MULTILIB_FLAGS) \ + $(WITH_ABI) \ $(WITH_ARCH) $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install + cp -a $(INSTALL_DIR)/riscv$(XLEN)-unknown-linux-gnu/lib* $(SYSROOT) mkdir -p $(dir $@) && touch $@ stamps/build-binutils-newlib: $(srcdir)/riscv-binutils-gdb @@ -205,8 +200,7 @@ stamps/build-binutils-newlib: $(srcdir)/riscv-binutils-gdb --target=riscv$(XLEN)-unknown-elf \ --prefix=$(INSTALL_DIR) \ --enable-tls \ - --disable-werror \ - $(BINUTILS_FLOAT_FLAGS) + --disable-werror $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) && touch $@ @@ -237,9 +231,9 @@ stamps/build-gcc-newlib: src/newlib-gcc stamps/build-binutils-newlib --disable-libquadmath \ --disable-libgomp \ --disable-nls \ - $(GCC_FLOAT_FLAGS) \ $(GCC_CHECKING_FLAGS) \ $(MULTILIB_FLAGS) \ + $(WITH_ABI) \ $(WITH_ARCH) $(MAKE) -C $(notdir $@) inhibit-libc=true $(MAKE) -C $(notdir $@) install @@ -587,12 +587,8 @@ LIBOBJS gcc_checking multilib_names multilib_flags -glibc_float_flags -gcc_float_flags -binutils_float_flags -atomic_cflags +WITH_ABI WITH_ARCH -XLEN default_target FETCHER FTP @@ -653,10 +649,9 @@ ac_subst_files='' ac_user_opts=' enable_option_checking enable_linux -with_xlen enable_atomic -enable_float with_arch +with_abi enable_multilib enable_gcc_checking ' @@ -1281,8 +1276,6 @@ Optional Features: [--disable-linux] --disable-atomic disable use of atomic memory instructions in glibc [--enable-atomic] - --disable-float use software floating point in glibc - [--enable-float] --enable-multilib build both RV32 and RV64 runtime libraries [--disable-multilib] --enable-gcc-checking Enable gcc internal checking, it will make gcc very @@ -1292,8 +1285,8 @@ Optional Features: Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-xlen=XLEN Set XLEN, the X-register bit width (default is 64) - --with-arch=RV64IMAFD Sets the base RISC-V ISA, defaults to RV64IMAFD + --with-arch=rv64g Sets the base RISC-V ISA, defaults to rv64g + --with-abi=lp64d Sets the base RISC-V ABI, defaults to lp64d Some influential environment variables: CC C compiler command @@ -3207,18 +3200,6 @@ else fi - -# Check whether --with-xlen was given. -if test "${with_xlen+set}" = set; then : - withval=$with_xlen; XLEN=$withval - -else - XLEN=64 - - -fi - - # Check whether --enable-atomic was given. if test "${enable_atomic+set}" = set; then : enableval=$enable_atomic; @@ -3228,71 +3209,30 @@ else fi -# Check whether --enable-float was given. -if test "${enable_float+set}" = set; then : - enableval=$enable_float; -else - enable_float=yes - -fi - - - - - - - - - - # Check whether --with-arch was given. if test "${with_arch+set}" = set; then : - withval=$with_arch; if echo "$withval" | $GREP -qE "^RV32"; then : - XLEN=32 - -fi - if echo "$withval" | $GREP -qE "^RV64"; then : - XLEN=64 - -fi + withval=$with_arch; WITH_ARCH=--with-arch=$withval - if echo "$withval" | $GREP -qE "^RV(32|64).*A"; then : - enable_atomic=yes else - enable_atomic=no -fi - - if echo "$withval" | $GREP -qE "^RV(32|64).*F"; then : - enable_float=yes -else - enable_float=no -fi + WITH_ARCH=--with-arch=rv64g - WITH_ARCH=--with-arch=$withval - fi -if test "x$enable_atomic" != xno; then : - -else - atomic_cflags=-mno-atomic - -fi -if test "x$enable_float" != xno; then : - binutils_float_flags=--disable-soft-float -gcc_float_flags="--disable-soft-float" +# Check whether --with-abi was given. +if test "${with_abi+set}" = set; then : + withval=$with_abi; WITH_ABI=--with-abi=$withval else - binutils_float_flags=--enable-soft-float -gcc_float_flags="--enable-soft-float --with-float=soft" -glibc_float_flags=--without-fp + WITH_ABI=--with-abi=lp64d + fi + # Check whether --enable-multilib was given. if test "${enable_multilib+set}" = set; then : enableval=$enable_multilib; @@ -3311,10 +3251,7 @@ else fi if test "x$enable_multilib" != xno; then : - multilib_names="rv32ima-ilp32 rv32imafd-ilp32 rv32imafd-ilp32d rv64ima-lp64 rv64imafd-lp64 rv64imafd-lp64d" - -else - multilib_names="-" + multilib_names="rv32ima-ilp32 rv32imafd-ilp32d rv64ima-lp64 rv64imafd-lp64d" fi diff --git a/configure.ac b/configure.ac index 48f5743..09edddf 100644 --- a/configure.ac +++ b/configure.ac @@ -50,13 +50,6 @@ AS_IF([test "x$enable_linux" != xno], [AC_SUBST(default_target, linux)], [AC_SUBST(default_target, newlib)]) -AC_ARG_WITH(xlen, - [AS_HELP_STRING([--with-xlen=XLEN], - [Set XLEN, the X-register bit width (default is 64)])], - AC_SUBST(XLEN, $withval), - AC_SUBST(XLEN, 64) - ) - AC_ARG_ENABLE(atomic, [AS_HELP_STRING([--disable-atomic], [disable use of atomic memory instructions in glibc @<:@--enable-atomic@:>@])], @@ -64,52 +57,19 @@ AC_ARG_ENABLE(atomic, [enable_atomic=yes] ) -AC_ARG_ENABLE(float, - [AS_HELP_STRING([--disable-float], - [use software floating point in glibc @<:@--enable-float@:>@])], - [], - [enable_float=yes] - ) - -AC_DEFUN([MATCH_PATTERN], [echo "$1" | $GREP -qE "$2"]) - -AC_DEFUN([GENERATE_EXTENSION], - [AS_IF([MATCH_PATTERN([$1], [^RV(32|64).*$2])], - [$3=yes], - [$3=no])] - ) - -AC_DEFUN([PARSE_EXTENSIONS], - [GENERATE_EXTENSION([$1], A, enable_atomic) - GENERATE_EXTENSION([$1], F, enable_float)] - ) - -AC_DEFUN([PARSE_BASE_ARCH], - [AS_IF([MATCH_PATTERN([$1], [^RV32])], - AC_SUBST(XLEN, 32)) - AS_IF([MATCH_PATTERN([$1], [^RV64])], - AC_SUBST(XLEN, 64))] - ) - AC_ARG_WITH(arch, - [AS_HELP_STRING([--with-arch=RV64IMAFD], - [Sets the base RISC-V ISA, defaults to RV64IMAFD])], - [PARSE_BASE_ARCH([$withval]) - PARSE_EXTENSIONS([$withval]) - AC_SUBST(WITH_ARCH, --with-arch=$withval)], - [] + [AS_HELP_STRING([--with-arch=rv64g], + [Sets the base RISC-V ISA, defaults to rv64g])], + AC_SUBST(WITH_ARCH, --with-arch=$withval), + AC_SUBST(WITH_ARCH, --with-arch=rv64g) ) -AS_IF([test "x$enable_atomic" != xno], - [], - [AC_SUBST(atomic_cflags,-mno-atomic)]) - -AS_IF([test "x$enable_float" != xno], - [AC_SUBST(binutils_float_flags,--disable-soft-float)dnl -AC_SUBST(gcc_float_flags,"--disable-soft-float")], - [AC_SUBST(binutils_float_flags,--enable-soft-float)dnl -AC_SUBST(gcc_float_flags,"--enable-soft-float --with-float=soft")dnl -AC_SUBST(glibc_float_flags,--without-fp)]) +AC_ARG_WITH(abi, + [AS_HELP_STRING([--with-abi=lp64d], + [Sets the base RISC-V ABI, defaults to lp64d])], + AC_SUBST(WITH_ABI, --with-abi=$withval), + AC_SUBST(WITH_ABI, --with-abi=lp64d) + ) AC_ARG_ENABLE(multilib, [AS_HELP_STRING([--enable-multilib], @@ -123,8 +83,8 @@ AS_IF([test "x$enable_multilib" != xno], [AC_SUBST(multilib_flags,--disable-multilib)]) AS_IF([test "x$enable_multilib" != xno], - [AC_SUBST(multilib_names,"rv32ima-ilp32 rv32imafd-ilp32 rv32imafd-ilp32d rv64ima-lp64 rv64imafd-lp64 rv64imafd-lp64d")], - [AC_SUBST(multilib_names,"-")]) + [AC_SUBST(multilib_names,"rv32ima-ilp32 rv32imafd-ilp32d rv64ima-lp64 rv64imafd-lp64d")], + []) AC_ARG_ENABLE(gcc-checking, [AS_HELP_STRING([--enable-gcc-checking], diff --git a/riscv-binutils-gdb b/riscv-binutils-gdb -Subproject 4c74fadbf171c71fd8e564d91d62241f089b9f8 +Subproject 1cc404877205cf22b55687dd668cdc8b38ddf23 diff --git a/riscv-gcc b/riscv-gcc -Subproject 5a0461ec72279b48ce5eb4c4b160612ddea23de +Subproject 3e7b179f8b60f74b2f6eb63ff464305b8f685a9 diff --git a/riscv-glibc b/riscv-glibc -Subproject 2fc9e7a63892f0b63182a6521f46006502be949 +Subproject 33bc7acb64d43c2715bb62867c4848d60174934 |