Browse Source

Multilibs go in /lib${XLEN}/${ABI}/, e.g. /lib64/lp64/

pull/206/head
Andrew Waterman 10 years ago
committed by Palmer Dabbelt
parent
commit
f670e2f5c6
  1. 50
      Makefile.in
  2. 89
      configure
  3. 64
      configure.ac
  4. 2
      riscv-binutils-gdb
  5. 2
      riscv-gcc
  6. 2
      riscv-glibc

50
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

89
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

64
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],

2
riscv-binutils-gdb

@ -1 +1 @@
Subproject commit 4c74fadbf171c71fd8e564d91d62241f089b9f84
Subproject commit 1cc404877205cf22b55687dd668cdc8b38ddf233

2
riscv-gcc

@ -1 +1 @@
Subproject commit 5a0461ec72279b48ce5eb4c4b160612ddea23de4
Subproject commit 3e7b179f8b60f74b2f6eb63ff464305b8f685a95

2
riscv-glibc

@ -1 +1 @@
Subproject commit 2fc9e7a63892f0b63182a6521f46006502be9496
Subproject commit 33bc7acb64d43c2715bb62867c4848d601749341
Loading…
Cancel
Save