Browse Source

configure/Makefile: Add support for more options.

Add support to configure and Makefile.in for --disable-atomic,
--disable-float, and --enable-multilib.
pull/38/head
Darius Rad 11 years ago
parent
commit
6b25a64afa
  1. 44
      Makefile.in
  2. 15
      README.md
  3. 64
      configure
  4. 35
      configure.ac

44
Makefile.in

@ -16,7 +16,7 @@ glibc_url := $(GNU_MIRROR)/glibc/glibc-$(glibc_version).tar.gz
newlib_url := ftp://sourceware.org/pub/newlib/newlib-$(newlib_version).tar.gz
XLEN ?= @XLEN@
SYSROOT := $(INSTALL_DIR)/sysroot$(XLEN)
SYSROOT := $(INSTALL_DIR)/sysroot
SHELL := /bin/sh
AWK := @GAWK@
@ -24,11 +24,32 @@ SED := @GSED@
PATH := $(INSTALL_DIR)/bin:$(builddir)/scripts/wrapper:$(PATH)
export PATH AWK SED
MULTILIB_FLAGS := @multilib_flags@
ATOMIC_CFLAGS := @atomic_cflags@
FLOAT_CFLAGS := @float_cflags@
FLOAT_ASFLAGS := @float_asflags@
GLIBC_CONFIGURE_FLAGS := @glibc_configure_flags@
CFLAGS_FOR_TARGET := $(CFLAGS_FOR_TARGET_EXTRA) $(ATOMIC_CFLAGS) $(FLOAT_CFLAGS)
ASFLAGS_FOR_TARGET := $(ASFLAGS_FOR_TARGET_EXTRA) $(FLOAT_ASFLAGS)
all: @default_target@
newlib: stamps/build-gcc-newlib
ifneq ($(findstring --disable-multilib,$(MULTILIB_FLAGS)),)
linux: stamps/build-gcc-linux-stage2
else
linux:
$(MAKE) stamps/build-gcc-linux-stage1 XLEN=
$(MAKE) stamps/build-glibc-linux XLEN=
$(MAKE) stamps/build-glibc-linux32 XLEN=32 \
CC="riscv-unknown-linux-gnu-gcc -m32" \
READELF=riscv-unknown-linux-gnu-readelf \
CFLAGS_FOR_TARGET_EXTRA="-m32" \
ASFLAGS_FOR_TARGET_EXTRA="-m32"
$(MAKE) stamps/build-gcc-linux-stage2 XLEN=
endif
$(addprefix src/original-,$(PACKAGES)):
mkdir -p src
@ -58,7 +79,7 @@ stamps/build-binutils-linux: src/binutils
--target=riscv$(XLEN)-unknown-linux-gnu \
--prefix=$(INSTALL_DIR) \
--with-sysroot=$(SYSROOT) \
--disable-multilib \
$(MULTILIB_FLAGS) \
--disable-nls
$(MAKE) -C $(notdir $@)
$(MAKE) -C $(notdir $@) install
@ -73,7 +94,7 @@ stamps/build-glibc-linux-headers: src/glibc
rm -rf $@ $(notdir $@)
mkdir $(notdir $@)
mkdir -p $(SYSROOT)/usr/lib $(SYSROOT)/lib
cd $(notdir $@) && CC= $(CURDIR)/$</configure \
cd $(notdir $@) && $(CURDIR)/$</configure \
--host=riscv$(XLEN)-unknown-linux-gnu \
--prefix=/usr \
libc_cv_forced_unwind=yes \
@ -85,19 +106,22 @@ stamps/build-glibc-linux-headers: src/glibc
$(MAKE) -C $(notdir $@) install-headers install_root=$(SYSROOT)
mkdir -p $(dir $@) && touch $@
stamps/build-glibc-linux: src/glibc stamps/build-gcc-linux-stage1
stamps/build-glibc-linux$(XLEN): src/glibc stamps/build-gcc-linux-stage1
rm -rf $@ $(notdir $@)
mkdir $(notdir $@)
mkdir -p $(SYSROOT)/usr/lib $(SYSROOT)/lib
cd $(notdir $@) && CC= $(CURDIR)/$</configure \
cd $(notdir $@) && CFLAGS="$(CFLAGS_FOR_TARGET) -g -O2" \
ASFLAGS="$(ASFLAGS_FOR_TARGET)" \
$(CURDIR)/$</configure \
--host=riscv$(XLEN)-unknown-linux-gnu \
--prefix=/usr \
libc_cv_forced_unwind=yes \
libc_cv_c_cleanup=yes \
--enable-shared \
--enable-__thread \
--disable-multilib \
--enable-kernel=2.6.32
$(MULTILIB_FLAGS) \
--enable-kernel=2.6.32 \
$(GLIBC_CONFIGURE_FLAGS)
$(MAKE) -C $(notdir $@)
$(MAKE) -C $(notdir $@) install install_root=$(SYSROOT)
mkdir -p $(dir $@) && touch $@
@ -123,7 +147,7 @@ stamps/build-gcc-linux-stage1: src/gcc stamps/build-binutils-linux \
--disable-libquadmath \
--disable-libgomp \
--disable-nls \
--disable-multilib \
$(MULTILIB_FLAGS) \
--disable-bootstrap
$(MAKE) -C $(notdir $@) inhibit-libc=true all-gcc
$(MAKE) -C $(notdir $@) inhibit-libc=true install-gcc
@ -131,7 +155,7 @@ stamps/build-gcc-linux-stage1: src/gcc stamps/build-binutils-linux \
$(MAKE) -C $(notdir $@) inhibit-libc=true install-target-libgcc
mkdir -p $(dir $@) && touch $@
stamps/build-gcc-linux-stage2: src/gcc stamps/build-glibc-linux
stamps/build-gcc-linux-stage2: src/gcc stamps/build-glibc-linux$(XLEN)
rm -rf $@ $(notdir $@)
mkdir $(notdir $@)
cd $(notdir $@) && $(CURDIR)/$</configure \
@ -145,7 +169,7 @@ stamps/build-gcc-linux-stage2: src/gcc stamps/build-glibc-linux
--disable-libssp \
--disable-libquadmath \
--disable-nls \
--disable-multilib \
$(MULTILIB_FLAGS) \
--disable-bootstrap
$(MAKE) -C $(notdir $@)
$(MAKE) -C $(notdir $@) install

15
README.md

@ -51,3 +51,18 @@ run the following command:
./configure --prefix=/opt/riscv
make linux
### Installation (Linux multilib)
To build the Linux cross-compiler with support for both 32-bit and
64-bit, run the following commands:
./configure --prefix=/opt/riscv --enable-multilib
make linux
The multilib compiler will have the prefix riscv-unknown-linux-gnu-,
rather than the usual prefix (riscv32-... or riscv64-...).
### Advanced Options
There are a number of additional options that may be passed to
configure. See './configure --help' for more details.

64
configure

@ -584,6 +584,11 @@ PACKAGE_URL=''
ac_subst_vars='LTLIBOBJS
LIBOBJS
multilib_flags
glibc_configure_flags
float_asflags
float_cflags
atomic_cflags
XLEN
default_target
FETCHER
@ -645,6 +650,9 @@ ac_user_opts='
enable_option_checking
enable_linux
with_xlen
enable_atomic
enable_float
enable_multilib
'
ac_precious_vars='build_alias
host_alias
@ -1265,6 +1273,12 @@ Optional Features:
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-linux set linux as the default make target
[--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 multilib glibc (32 and 64 bit)
[--disable-multilib]
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@ -3126,6 +3140,56 @@ else
fi
# Check whether --enable-atomic was given.
if test "${enable_atomic+set}" = set; then :
enableval=$enable_atomic;
else
enable_atomic=yes
fi
if test "x$enable_atomic" != xno; then :
else
atomic_cflags=-mno-atomic
fi
# Check whether --enable-float was given.
if test "${enable_float+set}" = set; then :
enableval=$enable_float;
else
enable_float=yes
fi
if test "x$enable_float" != xno; then :
else
float_cflags=-msoft-float
float_asflags=-msoft-float
glibc_configure_flags=--without-fp
fi
# Check whether --enable-multilib was given.
if test "${enable_multilib+set}" = set; then :
enableval=$enable_multilib;
else
enable_multilib=no
fi
if test "x$enable_multilib" != xno; then :
else
multilib_flags=--disable-multilib
fi
ac_config_files="$ac_config_files Makefile"
ac_config_files="$ac_config_files scripts/wrapper/awk"

35
configure.ac

@ -54,6 +54,41 @@ AC_ARG_WITH(xlen,
AC_SUBST(XLEN, 64)
)
AC_ARG_ENABLE(atomic,
[AS_HELP_STRING([--disable-atomic],
[disable use of atomic memory instructions in glibc @<:@--enable-atomic@:>@])],
[],
[enable_atomic=yes]
)
AS_IF([test "x$enable_atomic" != xno],
[],
[AC_SUBST(atomic_cflags,-mno-atomic)])
AC_ARG_ENABLE(float,
[AS_HELP_STRING([--disable-float],
[use software floating point in glibc @<:@--enable-float@:>@])],
[],
[enable_float=yes]
)
AS_IF([test "x$enable_float" != xno],
[],
[AC_SUBST(float_cflags,-msoft-float)dnl
AC_SUBST(float_asflags,-msoft-float)dnl
AC_SUBST(glibc_configure_flags,--without-fp)])
AC_ARG_ENABLE(multilib,
[AS_HELP_STRING([--enable-multilib],
[build multilib glibc (32 and 64 bit) @<:@--disable-multilib@:>@])],
[],
[enable_multilib=no]
)
AS_IF([test "x$enable_multilib" != xno],
[AC_SUBST(multilib_flags,)],
[AC_SUBST(multilib_flags,--disable-multilib)])
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([scripts/wrapper/awk], [chmod +x scripts/wrapper/awk])
AC_CONFIG_FILES([scripts/wrapper/sed], [chmod +x scripts/wrapper/sed])

Loading…
Cancel
Save