summaryrefslogtreecommitdiff
path: root/toolchain/eglibc
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2009-08-20 20:41:41 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2009-08-20 20:41:41 +0200
commit70c44baa23fbf86a888f6f37a75bca10a631a01c (patch)
treecf5d557fddf53ddb4851a0ae5db68c3ff9f5407e /toolchain/eglibc
parentdd35f8739be06beda5a2e2d3f753056cf1fb724a (diff)
add eglibc support
all three libraries tested with qemu-x86
Diffstat (limited to 'toolchain/eglibc')
-rw-r--r--toolchain/eglibc/Makefile101
-rw-r--r--toolchain/eglibc/Makefile.inc8
-rw-r--r--toolchain/eglibc/eglibc.config26
-rw-r--r--toolchain/eglibc/patches/gcc_eh.patch18
4 files changed, 153 insertions, 0 deletions
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)