aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.in50
-rwxr-xr-xconfigure89
-rw-r--r--configure.ac64
m---------riscv-binutils-gdb0
m---------riscv-gcc0
m---------riscv-glibc0
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
diff --git a/configure b/configure
index 278d0da..9d6d540 100755
--- a/configure
+++ b/configure
@@ -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