From 70c44baa23fbf86a888f6f37a75bca10a631a01c Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Thu, 20 Aug 2009 20:41:41 +0200 Subject: add eglibc support all three libraries tested with qemu-x86 --- toolchain/eglibc/Makefile | 101 ++++++++++++++++++++++++++++++++++ toolchain/eglibc/Makefile.inc | 8 +++ toolchain/eglibc/eglibc.config | 26 +++++++++ toolchain/eglibc/patches/gcc_eh.patch | 18 ++++++ 4 files changed, 153 insertions(+) create mode 100644 toolchain/eglibc/Makefile create mode 100644 toolchain/eglibc/Makefile.inc create mode 100644 toolchain/eglibc/eglibc.config create mode 100644 toolchain/eglibc/patches/gcc_eh.patch (limited to 'toolchain/eglibc') diff --git a/toolchain/eglibc/Makefile b/toolchain/eglibc/Makefile new file mode 100644 index 000000000..374439100 --- /dev/null +++ b/toolchain/eglibc/Makefile @@ -0,0 +1,101 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(TOPDIR)/rules.mk +include ../rules.mk +include Makefile.inc + +include ${TOPDIR}/mk/buildhlp.mk + +EGLIBC_CONFOPTS:= \ + --build=$(GNU_HOST_NAME) \ + --host=$(REAL_GNU_TARGET_NAME) \ + --with-headers=$(TOOLCHAIN_SYSROOT)/usr/include \ + --disable-nls \ + --without-cvs \ + --disable-profile \ + --disable-debug \ + --without-gd \ + --enable-add-ons + +EGLIBC_ENV:= PATH='${TARGET_PATH}' \ + BUILD_CC=${HOSTCC} \ + CC=${REAL_GNU_TARGET_NAME}-gcc \ + CXX=${REAL_GNU_TARGET_NAME}-g++ \ + AR=${REAL_GNU_TARGET_NAME}-ar \ + RANLIB=${REAL_GNU_TARGET_NAME}-ranlib \ + libc_cv_forced_unwind=yes \ + libc_cv_c_cleanup=yes \ + libc_cv_gnu99_inline=yes + +ifeq ($(ADK_DEVICE_NO_FPU),y) +EGLIBC_CONFOPTS+= --without-fp +endif + +EGLIBC_BUILD_DIR_INITIAL:= ${WRKDIR}/$(PKG_NAME)-$(PKG_VERSION)-headers +EGLIBC_BUILD_DIR_FINAL:= ${WRKDIR}/$(PKG_NAME)-$(PKG_VERSION)-final + +$(WRKBUILD)/.headers_configure: + (cd ${WRKDIR}/$(PKG_NAME)-$(PKG_VERSION); \ + ln -sf ../ports ${WRKDIR}/$(PKG_NAME)-$(PKG_VERSION)/libc); + (cd ${WRKDIR}/$(PKG_NAME)-$(PKG_VERSION)/libc; autoconf --force); + mkdir -p $(EGLIBC_BUILD_DIR_INITIAL) + $(CP) ${TOPDIR}/toolchain/eglibc/eglibc.config \ + $(EGLIBC_BUILD_DIR_INITIAL) + (cd $(EGLIBC_BUILD_DIR_INITIAL); \ + ${EGLIBC_ENV} \ + $(WRKBUILD)/libc/configure \ + --prefix=$(TOOLCHAIN_SYSROOT)/usr \ + --with-headers=$(TOOLCHAIN_SYSROOT)/usr/include \ + ${EGLIBC_CONFOPTS} \ + ); + touch $@ + +$(WRKBUILD)/.headers: $(WRKBUILD)/.headers_configure + mkdir -p $(TOOLCHAIN_SYSROOT)/usr/lib + PATH='${TARGET_PATH}' \ + $(MAKE) -C $(EGLIBC_BUILD_DIR_INITIAL) \ + install-headers install-bootstrap-headers=yes + PATH='${TARGET_PATH}' \ + $(MAKE) -C $(EGLIBC_BUILD_DIR_INITIAL) \ + csu/subdir_lib + ( cd $(EGLIBC_BUILD_DIR_INITIAL); \ + $(CP) csu/crt1.o csu/crti.o csu/crtn.o \ + $(TOOLCHAIN_SYSROOT)/usr/lib \ + ); + PATH='${TARGET_PATH}' \ + $(TARGET_CC) -nostdlib -nostartfiles -shared -x c /dev/null \ + -o $(TOOLCHAIN_SYSROOT)/usr/lib/libc.so + touch $@ + +$(WRKBUILD)/.configured: + mkdir -p $(EGLIBC_BUILD_DIR_FINAL) + $(CP) ${TOPDIR}/toolchain/eglibc/eglibc.config \ + $(EGLIBC_BUILD_DIR_FINAL) + (cd $(EGLIBC_BUILD_DIR_FINAL); \ + ${EGLIBC_ENV} \ + $(WRKBUILD)/libc/configure \ + --prefix=/usr \ + --enable-shared \ + --enable-stackguard-randomization \ + --with-__thread \ + --with-tls \ + --enable-kernel=2.6.0 \ + ${EGLIBC_CONFOPTS} \ + ); + touch $@ + +$(WRKBUILD)/.compiled: + ${EGLIBC_ENV} \ + CFLAGS="$(TARGET_CFLAGS)" \ + $(MAKE) -C $(EGLIBC_BUILD_DIR_FINAL) all + touch $@ + +$(WRKBUILD)/.installed: + PATH='${TARGET_PATH}' \ + $(MAKE) -C $(EGLIBC_BUILD_DIR_FINAL) \ + install_root=$(STAGING_DIR) \ + install + touch $@ + +include ${TOPDIR}/mk/toolchain.mk diff --git a/toolchain/eglibc/Makefile.inc b/toolchain/eglibc/Makefile.inc new file mode 100644 index 000000000..0ae28f033 --- /dev/null +++ b/toolchain/eglibc/Makefile.inc @@ -0,0 +1,8 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +PKG_NAME:= eglibc +PKG_VERSION:= 2.10.1 +PKG_RELEASE:= 1 +PKG_MD5SUM:= 1b5d08c87de09018dcabd9974ba754d4 +PKG_SITES:= http://www.openadk.org/distfiles diff --git a/toolchain/eglibc/eglibc.config b/toolchain/eglibc/eglibc.config new file mode 100644 index 000000000..198741139 --- /dev/null +++ b/toolchain/eglibc/eglibc.config @@ -0,0 +1,26 @@ +OPTION_EGLIBC_ADVANCED_INET6=y +OPTION_EGLIBC_BACKTRACE=n +OPTION_EGLIBC_BSD=y +OPTION_EGLIBC_CXX_TESTS=n +OPTION_EGLIBC_CATGETS=y +OPTION_EGLIBC_CHARSETS=y +OPTION_EGLIBC_DB_ALIASES=y +OPTION_EGLIBC_ENVZ=y +OPTION_EGLIBC_FSTAB=y +OPTION_EGLIBC_GETLOGIN=y +OPTION_EGLIBC_INET=y +OPTION_EGLIBC_LIBM=y +OPTION_EGLIBC_LOCALES=n +OPTION_EGLIBC_LOCALE_CODE=y +OPTION_EGLIBC_NIS=n +OPTION_EGLIBC_NSSWITCH=y +OPTION_EGLIBC_RCMD=y +OPTION_EGLIBC_SPAWN=y +OPTION_EGLIBC_STREAMS=y +OPTION_EGLIBC_SUNRPC=y +OPTION_EGLIBC_UTMP=y +OPTION_EGLIBC_UTMPX=y +OPTION_EGLIBC_WORDEXP=y +OPTION_POSIX_C_LANG_WIDE_CHAR=y +OPTION_POSIX_REGEXP=y +OPTION_POSIX_WIDE_CHAR_DEVICE_IO=y diff --git a/toolchain/eglibc/patches/gcc_eh.patch b/toolchain/eglibc/patches/gcc_eh.patch new file mode 100644 index 000000000..1635a7d66 --- /dev/null +++ b/toolchain/eglibc/patches/gcc_eh.patch @@ -0,0 +1,18 @@ +diff -Nur eglibc-2.10.orig/libc/Makeconfig eglibc-2.10/libc/Makeconfig +--- eglibc-2.10.orig/libc/Makeconfig 2009-08-13 13:26:57.000000000 +0200 ++++ eglibc-2.10/libc/Makeconfig 2009-08-18 23:03:50.000000000 +0200 +@@ -538,12 +538,12 @@ + libunwind = -lunwind + endif + ifneq ($(have-as-needed),yes) +- libgcc_eh := -lgcc_eh $(libunwind) ++ libgcc_eh := $(libunwind) + else + libgcc_eh := -Wl,--as-needed -lgcc_s$(libgcc_s_suffix) $(libunwind) -Wl,--no-as-needed + endif + gnulib := -lgcc $(libgcc_eh) +-static-gnulib := -lgcc -lgcc_eh $(libunwind) ++static-gnulib := -lgcc $(libunwind) + libc.so-gnulib := -lgcc + endif + ifeq ($(elf),yes) -- cgit v1.2.3