From: Carsten Schlote <[email protected]> - Updated Kconfig for eglibc - Updated fixup-script for eglibc - Copied glibc rules as templates for eglibc rules and modified as needed
- Added env 'install-bootstrap-headers' define to disables some unwanted compilation in sunrpc submodule. - Changed way to checkout a given subversion revision for eglibc There are no release tarballs for eglibc. So I hacked the get stages to use subversion to checkout a branch and revision. The code can be moved to an external script and simplyfied/improved. Functionality could be moved to usual make_get script in ptxdist, so that other packages might profit from this feature. Signed-off-by: Carsten Schlote <[email protected]> --- Kconfig | 7 + fixup_ptxconfigs.sh | 14 ++ rules/{glibc-crt.make => eglibc-crt.make} | 43 +++-- rules/{glibc-first.make => eglibc-first.make} | 52 +++--- rules/{glibc-headers.make => eglibc-headers.make} | 61 +++--- rules/eglibc-linuxthreads.in | 7 + rules/eglibc-linuxthreads.make | 116 ++++++++++++ rules/eglibc-ports.in | 19 ++ rules/eglibc-ports.make | 127 +++++++++++++ rules/eglibc.in | 111 +++++++++++ rules/eglibc.make | 202 +++++++++++++++++++++ rules/libc.in | 8 +- 12 files changed, 690 insertions(+), 77 deletions(-) copy rules/{glibc-crt.make => eglibc-crt.make} (71%) copy rules/{glibc-first.make => eglibc-first.make} (65%) copy rules/{glibc-headers.make => eglibc-headers.make} (66%) create mode 100644 rules/eglibc-linuxthreads.in create mode 100644 rules/eglibc-linuxthreads.make create mode 100644 rules/eglibc-ports.in create mode 100644 rules/eglibc-ports.make create mode 100644 rules/eglibc.in create mode 100644 rules/eglibc.make diff --git a/Kconfig b/Kconfig index 47647a3..c3f414f 100644 --- a/Kconfig +++ b/Kconfig @@ -34,6 +34,12 @@ comment "----------------------------------" source "workspace/rules/libc.in" +if LIBC_EGLIBC +source "workspace/rules/eglibc.in" +source "workspace/rules/eglibc-ports.in" +source "workspace/rules/eglibc-linuxthreads.in" +endif + if LIBC_GLIBC source "workspace/rules/glibc.in" source "workspace/rules/glibc-ports.in" @@ -93,6 +99,7 @@ config PREFIX_JAVA config PREFIX_TCID string + default "gcc-${PTXCONF_CROSS_GCC_VERSION}${PTXCONF_PREFIX_JAVA}-eglibc-${PTXCONF_EGLIBC_VERSION}-binutils-${PTXCONF_CROSS_BINUTILS_VERSION}-kernel-${PTXCONF_KERNEL_HEADERS_VERSION}${PTXCONF_PREFIX_KERNEL}" if LIBC_EGLIBC default "gcc-${PTXCONF_CROSS_GCC_VERSION}${PTXCONF_PREFIX_JAVA}-glibc-${PTXCONF_GLIBC_VERSION}-binutils-${PTXCONF_CROSS_BINUTILS_VERSION}-kernel-${PTXCONF_KERNEL_HEADERS_VERSION}${PTXCONF_PREFIX_KERNEL}" if LIBC_GLIBC default "gcc-${PTXCONF_CROSS_GCC_VERSION}${PTXCONF_PREFIX_JAVA}-uclibc-${PTXCONF_UCLIBC_VERSION}-binutils-${PTXCONF_CROSS_BINUTILS_VERSION}-kernel-${PTXCONF_KERNEL_HEADERS_VERSION}${PTXCONF_PREFIX_KERNEL}" if LIBC_UCLIBC default "gcc-${PTXCONF_CROSS_GCC_VERSION}-newlib-${PTXCONF_NEWLIB_VERSION}-binutils-${PTXCONF_CROSS_BINUTILS_VERSION}" if LIBC_NEWLIB diff --git a/fixup_ptxconfigs.sh b/fixup_ptxconfigs.sh index 9142483..a6c2462 100755 --- a/fixup_ptxconfigs.sh +++ b/fixup_ptxconfigs.sh @@ -26,7 +26,9 @@ fixup() # defaults PTXCONF_PREFIX="/opt" PTXCONF_GLIBC_CONFIG_EXTRA="" + PTXCONF_EGLIBC_CONFIG_EXTRA="" PTXCONF_GLIBC_TIMESTAMP="" + PTXCONF_EGLIBC_SVNREV="HEAD" PTXCONF_CROSS_GCC_LANG_JAVA=n PTXCONF_KERNEL_HEADERS_SANITIZED=n # FIXME: nptl vs. linuxthreads @@ -47,6 +49,9 @@ fixup() gcc*) PTXCONF_CROSS_GCC_VERSION="${part##gcc-}" ;; + eglibc*) + PTXCONF_EGLIBC_VERSION="${part##eglibc-}" + ;; glibc*) PTXCONF_GLIBC_VERSION="${part##glibc-}" ;; @@ -96,9 +101,11 @@ fixup() case "${PTXCONF_GNU_TARGET}" in arm*gnueabi) PTXCONF_GLIBC_HEADERS_FAKE_CROSS="-D__ARM_EABI__" + PTXCONF_EGLIBC_HEADERS_FAKE_CROSS="-D__ARM_EABI__" ;; mips*) PTXCONF_GLIBC_HEADERS_FAKE_CROSS="-DBOOTSTRAP_GCC" + PTXCONF_EGLIBC_HEADERS_FAKE_CROSS="-DBOOTSTRAP_GCC" ;; *) ;; @@ -132,6 +139,7 @@ fixup() # # PTXCONF_CROSS_GCC_CONFIG_EXTRA # PTXCONF_GLIBC_CONFIG_EXTRA + # PTXCONF_EGLIBC_CONFIG_EXTRA # case "${PTXCONF_GNU_TARGET}" in # hard, fpa @@ -221,18 +229,24 @@ fixup() ;; esac + PTXCONF_EGLIBC_CONFIG_EXTRA="${PTXCONF_GLIBC_CONFIG_EXTRA}" + # # PTXCONF_GLIBC_ENABLE_KERNEL + # PTXCONF_EGLIBC_ENABLE_KERNEL # case "${PTXCONF_KERNEL_HEADERS_VERSION}" in 2.6.18) PTXCONF_GLIBC_ENABLE_KERNEL="2.6.16" + PTXCONF_EGLIBC_ENABLE_KERNEL="2.6.16" ;; 2.6.2[456789]) PTXCONF_GLIBC_ENABLE_KERNEL="2.6.23" + PTXCONF_EGLIBC_ENABLE_KERNEL="2.6.23" ;; 2.6.3[123456789]) PTXCONF_GLIBC_ENABLE_KERNEL="2.6.31" + PTXCONF_EGLIBC_ENABLE_KERNEL="2.6.31" ;; "") ;; diff --git a/rules/glibc-crt.make b/rules/eglibc-crt.make similarity index 71% copy from rules/glibc-crt.make copy to rules/eglibc-crt.make index f597787..e42539c 100644 --- a/rules/glibc-crt.make +++ b/rules/eglibc-crt.make @@ -2,6 +2,7 @@ # $Id$ # # Copyright (C) 2006 by Robert Schwebel <[email protected]> +# 2009 by Carsten Schlote # # See CREDITS for details about who has contributed to this project. # @@ -12,18 +13,18 @@ # # We provide this package # -PACKAGES-$(PTXCONF_GLIBC_CRT) += glibc-crt +PACKAGES-$(PTXCONF_EGLIBC_CRT) += eglibc-crt # # Paths and names # -GLIBC_CRT_DIR = $(BUILDDIR)/$(GLIBC)-crt-build +EGLIBC_CRT_DIR = $(BUILDDIR)/$(EGLIBC)-crt-build # ---------------------------------------------------------------------------- # Get # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-crt.get: $(STATEDIR)/glibc.get +$(STATEDIR)/eglibc-crt.get: $(STATEDIR)/eglibc.get @$(call targetinfo) @$(call touch) @@ -31,7 +32,7 @@ $(STATEDIR)/glibc-crt.get: $(STATEDIR)/glibc.get # Extract # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-crt.extract: $(STATEDIR)/glibc.extract +$(STATEDIR)/eglibc-crt.extract: $(STATEDIR)/eglibc.extract @$(call targetinfo) @$(call touch) @@ -39,8 +40,8 @@ $(STATEDIR)/glibc-crt.extract: $(STATEDIR)/glibc.extract # Prepare # ---------------------------------------------------------------------------- -GLIBC_CRT_PATH := PATH=$(CROSS_PATH) -GLIBC_CRT_ENV := \ +EGLIBC_CRT_PATH := PATH=$(CROSS_PATH) +EGLIBC_CRT_ENV := \ BUILD_CC=$(HOSTCC) \ \ ac_cv_path_GREP=grep \ @@ -52,24 +53,24 @@ GLIBC_CRT_ENV := \ # # autoconf # -GLIBC_CRT_AUTOCONF = $(GLIBC_AUTOCONF) +EGLIBC_CRT_AUTOCONF = $(EGLIBC_AUTOCONF) -$(STATEDIR)/glibc-crt.prepare: +$(STATEDIR)/eglibc-crt.prepare: @$(call targetinfo) - @$(call clean, $(GLIBC_CRT_DIR)) - mkdir -p $(GLIBC_CRT_DIR) - cd $(GLIBC_CRT_DIR) && eval \ - $(GLIBC_CRT_PATH) $(GLIBC_CRT_ENV) \ - $(GLIBC_DIR)/configure $(GLIBC_CRT_AUTOCONF) + @$(call clean, $(EGLIBC_CRT_DIR)) + mkdir -p $(EGLIBC_CRT_DIR) + cd $(EGLIBC_CRT_DIR) && eval \ + $(EGLIBC_CRT_PATH) $(EGLIBC_CRT_ENV) \ + $(EGLIBC_DIR)/configure $(EGLIBC_CRT_AUTOCONF) @$(call touch) # ---------------------------------------------------------------------------- # Compile # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-crt.compile: +$(STATEDIR)/eglibc-crt.compile: @$(call targetinfo) - cd $(GLIBC_CRT_DIR) && $(GLIBC_CRT_PATH) \ + cd $(EGLIBC_CRT_DIR) && $(EGLIBC_CRT_PATH) \ $(MAKE) $(PARALLELMFLAGS) csu/subdir_lib @$(call touch) @@ -77,11 +78,11 @@ $(STATEDIR)/glibc-crt.compile: # Install # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-crt.install: +$(STATEDIR)/eglibc-crt.install: @$(call targetinfo) mkdir -p $(SYSROOT)/usr/lib for file in {S,}crt1.o crt{i,n}.o; do \ - $(INSTALL) -m 644 $(GLIBC_CRT_DIR)/csu/$$file \ + $(INSTALL) -m 644 $(EGLIBC_CRT_DIR)/csu/$$file \ $(SYSROOT)/usr/lib/$$file || exit 1; \ done @$(call touch) @@ -90,7 +91,7 @@ $(STATEDIR)/glibc-crt.install: # Target-Install # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-crt.targetinstall: +$(STATEDIR)/eglibc-crt.targetinstall: @$(call targetinfo) @$(call touch) @@ -98,8 +99,8 @@ $(STATEDIR)/glibc-crt.targetinstall: # Clean # ---------------------------------------------------------------------------- -glibc-crt_clean: - rm -rf $(STATEDIR)/glibc-crt.* - rm -rf $(GLIBC_CRT_DIR) +eglibc-crt_clean: + rm -rf $(STATEDIR)/eglibc-crt.* + rm -rf $(EGLIBC_CRT_DIR) # vim: syntax=make diff --git a/rules/glibc-first.make b/rules/eglibc-first.make similarity index 65% copy from rules/glibc-first.make copy to rules/eglibc-first.make index fdd46a6..8eac57d 100644 --- a/rules/glibc-first.make +++ b/rules/eglibc-first.make @@ -3,6 +3,7 @@ # # Copyright (C) 2006 by Robert Schwebel # 2007, 2008 by Marc Kleine-Budde +# 2009 by Carsten Schlote # # See CREDITS for details about who has contributed to this project. # @@ -13,18 +14,18 @@ # # We provide this package # -PACKAGES-$(PTXCONF_GLIBC_FIRST) += glibc-first +PACKAGES-$(PTXCONF_EGLIBC_FIRST) += eglibc-first # # Paths and names # -GLIBC_FIRST_BUILDDIR = $(BUILDDIR)/$(GLIBC)-first-build +EGLIBC_FIRST_BUILDDIR = $(BUILDDIR)/$(EGLIBC)-first-build # ---------------------------------------------------------------------------- # Get # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-first.get: $(STATEDIR)/glibc.get +$(STATEDIR)/eglibc-first.get: $(STATEDIR)/eglibc.get @$(call targetinfo) @$(call touch) @@ -32,7 +33,7 @@ $(STATEDIR)/glibc-first.get: $(STATEDIR)/glibc.get # Extract # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-first.extract: $(STATEDIR)/glibc.extract +$(STATEDIR)/eglibc-first.extract: $(STATEDIR)/eglibc.extract @$(call targetinfo) @$(call touch) @@ -40,8 +41,8 @@ $(STATEDIR)/glibc-first.extract: $(STATEDIR)/glibc.extract # Prepare # ---------------------------------------------------------------------------- -GLIBC_FIRST_PATH := PATH=$(CROSS_PATH) -GLIBC_FIRST_ENV := \ +EGLIBC_FIRST_PATH := PATH=$(CROSS_PATH) +EGLIBC_FIRST_ENV := \ CC=$(CROSS_CC) \ CXX=false \ BUILD_CC=$(HOSTCC) \ @@ -56,47 +57,48 @@ GLIBC_FIRST_ENV := \ \ ac_cv_sizeof_long_double=$(PTXCONF_SIZEOF_LONG_DOUBLE) -GLIBC_FIRST_MAKEVARS := AUTOCONF=no +EGLIBC_FIRST_MAKEVARS := AUTOCONF=no -GLIBC_FIRST_AUTOCONF = \ - $(GLIBC_AUTOCONF_COMMON) \ +EGLIBC_FIRST_AUTOCONF = \ + $(EGLIBC_AUTOCONF_COMMON) \ --disable-debug \ --disable-profile \ -$(STATEDIR)/glibc-first.prepare: +$(STATEDIR)/eglibc-first.prepare: @$(call targetinfo) - @$(call clean, $(GLIBC_FIRST_BUILDDIR)) - mkdir -p $(GLIBC_FIRST_BUILDDIR) - cd $(GLIBC_FIRST_BUILDDIR) && \ - $(GLIBC_FIRST_ENV) $(GLIBC_FIRST_PATH) \ - $(GLIBC_DIR)/configure $(GLIBC_FIRST_AUTOCONF) + @$(call clean, $(EGLIBC_FIRST_BUILDDIR)) + mkdir -p $(EGLIBC_FIRST_BUILDDIR) + cd $(EGLIBC_FIRST_BUILDDIR) && \ + $(EGLIBC_FIRST_ENV) $(EGLIBC_FIRST_PATH) \ + $(EGLIBC_DIR)/configure $(EGLIBC_FIRST_AUTOCONF) @$(call touch) # ---------------------------------------------------------------------------- # Compile # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-first.compile: +$(STATEDIR)/eglibc-first.compile: @$(call targetinfo) - cd $(GLIBC_FIRST_BUILDDIR) && $(GLIBC_FIRST_PATH) $(MAKE) $(PARALLELMFLAGS) lib + cd $(EGLIBC_FIRST_BUILDDIR) && $(EGLIBC_FIRST_PATH) $(MAKE) $(PARALLELMFLAGS) lib @$(call touch) # ---------------------------------------------------------------------------- # Install # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-first.install: +$(STATEDIR)/eglibc-first.install: @$(call targetinfo) - cd $(GLIBC_FIRST_BUILDDIR) && \ - $(GLIBC_FIRST_PATH) $(MAKE) $(GLIBC_FIRST_MAKEVARS) \ - install_root=$(SYSROOT) install-lib-all install-headers + cd $(EGLIBC_FIRST_BUILDDIR) && \ + $(EGLIBC_FIRST_PATH) $(MAKE) $(EGLIBC_FIRST_MAKEVARS) \ + install_root=$(SYSROOT) install-bootstrap-headers=yes \ + install-lib-all install-headers @$(call touch) # ---------------------------------------------------------------------------- # Target-Install # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-first.targetinstall: +$(STATEDIR)/eglibc-first.targetinstall: @$(call targetinfo) @$(call touch) @@ -104,8 +106,8 @@ $(STATEDIR)/glibc-first.targetinstall: # Clean # ---------------------------------------------------------------------------- -glibc-first_clean: - rm -rf $(STATEDIR)/glibc-first.* - rm -rf $(GLIBC_FIRST_BUILDDIR) +eglibc-first_clean: + rm -rf $(STATEDIR)/eglibc-first.* + rm -rf $(EGLIBC_FIRST_BUILDDIR) # vim: syntax=make diff --git a/rules/glibc-headers.make b/rules/eglibc-headers.make similarity index 66% copy from rules/glibc-headers.make copy to rules/eglibc-headers.make index de0d157..3f51dc6 100644 --- a/rules/glibc-headers.make +++ b/rules/eglibc-headers.make @@ -2,6 +2,7 @@ # $Id$ # # Copyright (C) 2006 by Robert Schwebel +# 2009 by Carsten Schlote # # See CREDITS for details about who has contributed to this project. # @@ -12,18 +13,18 @@ # # We provide this package # -PACKAGES-$(PTXCONF_GLIBC_HEADERS) += glibc-headers +PACKAGES-$(PTXCONF_EGLIBC_HEADERS) += eglibc-headers # # Paths and names # -GLIBC_HEADERS_DIR = $(BUILDDIR)/$(GLIBC)-headers-build +EGLIBC_HEADERS_DIR = $(BUILDDIR)/$(EGLIBC)-headers-build # ---------------------------------------------------------------------------- # Get # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-headers.get: $(STATEDIR)/glibc.get +$(STATEDIR)/eglibc-headers.get: $(STATEDIR)/eglibc.get @$(call targetinfo) @$(call touch) @@ -31,7 +32,7 @@ $(STATEDIR)/glibc-headers.get: $(STATEDIR)/glibc.get # Extract # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-headers.extract: $(STATEDIR)/glibc.extract +$(STATEDIR)/eglibc-headers.extract: $(STATEDIR)/eglibc.extract @$(call targetinfo) @$(call touch) @@ -39,16 +40,16 @@ $(STATEDIR)/glibc-headers.extract: $(STATEDIR)/glibc.extract # Prepare # ---------------------------------------------------------------------------- -GLIBC_HEADERS_PATH := PATH=$(CROSS_PATH) +EGLIBC_HEADERS_PATH := PATH=$(CROSS_PATH) # # these various env variables are necessary, because we are using the host compiler # it doesn't matter if we define ppc stuff during arm build # they aren't tested :) # no ifdefs for simplicity # -GLIBC_HEADERS_ENV := \ +EGLIBC_HEADERS_ENV := \ $(HOST_ENV) \ - CC="$${CC} $(PTXCONF_GLIBC_HEADERS_FAKE_CROSS)" \ + CC="$${CC} $(PTXCONF_EGLIBC_HEADERS_FAKE_CROSS)" \ \ libc_cv_asm_symver_directive=yes \ libc_cv_asm_protected_directive=yes \ @@ -79,56 +80,56 @@ GLIBC_HEADERS_ENV := \ # # autoconf # -GLIBC_HEADERS_AUTOCONF = \ - $(GLIBC_AUTOCONF_COMMON) \ +EGLIBC_HEADERS_AUTOCONF = \ + $(EGLIBC_AUTOCONF_COMMON) \ \ --enable-hacker-mode -$(STATEDIR)/glibc-headers.prepare: +$(STATEDIR)/eglibc-headers.prepare: @$(call targetinfo) - @$(call clean, $(GLIBC_HEADERS_DIR)) - mkdir -p $(GLIBC_HEADERS_DIR) - cd $(GLIBC_HEADERS_DIR) && \ - $(GLIBC_HEADERS_PATH) $(GLIBC_HEADERS_ENV) \ - $(GLIBC_DIR)/configure $(GLIBC_HEADERS_AUTOCONF) + @$(call clean, $(EGLIBC_HEADERS_DIR)) + mkdir -p $(EGLIBC_HEADERS_DIR) + cd $(EGLIBC_HEADERS_DIR) && \ + $(EGLIBC_HEADERS_PATH) $(EGLIBC_HEADERS_ENV) \ + $(EGLIBC_DIR)/configure $(EGLIBC_HEADERS_AUTOCONF) @$(call touch) # ---------------------------------------------------------------------------- # Compile # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-headers.compile: +$(STATEDIR)/eglibc-headers.compile: @$(call targetinfo) - cd $(GLIBC_HEADERS_DIR) && \ - $(GLIBC_HEADERS_PATH) $(GLIBC_HEADERS_ENV) \ + cd $(EGLIBC_HEADERS_DIR) && \ + $(EGLIBC_HEADERS_PATH) $(EGLIBC_HEADERS_ENV) \ $(MAKE) sysdeps/gnu/errlist.c - mkdir -p $(GLIBC_HEADERS_DIR)/stdio-common - touch $(GLIBC_HEADERS_DIR)/stdio-common/errlist-compat.c + mkdir -p $(EGLIBC_HEADERS_DIR)/stdio-common + touch $(EGLIBC_HEADERS_DIR)/stdio-common/errlist-compat.c @$(call touch) # ---------------------------------------------------------------------------- # Install # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-headers.install: +$(STATEDIR)/eglibc-headers.install: @$(call targetinfo) - cd $(GLIBC_HEADERS_DIR) && \ - $(GLIBC_HEADERS_PATH) $(GLIBC_HEADERS_ENV) \ - $(MAKE) cross_compiling=yes install_root=$(SYSROOT) install-headers + cd $(EGLIBC_HEADERS_DIR) && \ + $(EGLIBC_HEADERS_PATH) $(EGLIBC_HEADERS_ENV) \ + $(MAKE) cross_compiling=yes install-bootstrap-headers=yes install_root=$(SYSROOT) install-headers mkdir -p $(SYSROOT)/usr/include/gnu touch $(SYSROOT)/usr/include/gnu/stubs.h - cp $(GLIBC_DIR)/include/features.h $(SYSROOT)/usr/include/features.h - cp $(GLIBC_HEADERS_DIR)/bits/stdio_lim.h $(SYSROOT)/usr/include/bits/stdio_lim.h + cp $(EGLIBC_DIR)/include/features.h $(SYSROOT)/usr/include/features.h + cp $(EGLIBC_HEADERS_DIR)/bits/stdio_lim.h $(SYSROOT)/usr/include/bits/stdio_lim.h @$(call touch) # ---------------------------------------------------------------------------- # Target-Install # ---------------------------------------------------------------------------- -$(STATEDIR)/glibc-headers.targetinstall: +$(STATEDIR)/eglibc-headers.targetinstall: @$(call targetinfo) @$(call touch) @@ -136,8 +137,8 @@ $(STATEDIR)/glibc-headers.targetinstall: # Clean # ---------------------------------------------------------------------------- -glibc-headers_clean: - rm -rf $(STATEDIR)/glibc-headers.* - rm -rf $(GLIBC_HEADERS_DIR) +eglibc-headers_clean: + rm -rf $(STATEDIR)/eglibc-headers.* + rm -rf $(EGLIBC_HEADERS_DIR) # vim: syntax=make diff --git a/rules/eglibc-linuxthreads.in b/rules/eglibc-linuxthreads.in new file mode 100644 index 0000000..d0de6e3 --- /dev/null +++ b/rules/eglibc-linuxthreads.in @@ -0,0 +1,7 @@ +config EGLIBC_LINUXTHREADS + bool + +config EGLIBC_LINUXTHREADS_VERSION + depends on EGLIBC_LINUXTHREADS + string + default "${PTXCONF_EGLIBC_VERSION}" diff --git a/rules/eglibc-linuxthreads.make b/rules/eglibc-linuxthreads.make new file mode 100644 index 0000000..7263e3a --- /dev/null +++ b/rules/eglibc-linuxthreads.make @@ -0,0 +1,116 @@ +# -*-makefile-*- +# $Id: template 6001 2006-08-12 10:15:00Z mkl $ +# +# Copyright (C) 2006 by Marc Kleine-Budde <[email protected]> +# 2009 by Carsten Schlote +# +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +# +# We provide this package +# +PACKAGES-$(PTXCONF_EGLIBC_LINUXTHREADS) += eglibc-linuxthreads + +# +# Paths and names +# +EGLIBC_LINUXTHREADS_VERSION := $(call remove_quotes,$(PTXCONF_EGLIBC_LINUXTHREADS_VERSION)) +EGLIBC_LINUXTHREADS := eglibc-linuxthreads-$(EGLIBC_LINUXTHREADS_VERSION) +EGLIBC_LINUXTHREADS_SUFFIX := svn +EGLIBC_LINUXTHREADS_URL = $(EGLIBC_URL) +EGLIBC_LINUXTHREADS_SVNREV = $(EGLIBC_SVNREV) +EGLIBC_LINUXTHREADS_SOURCE := $(SRCDIR)/$(EGLIBC_LINUXTHREADS).$(EGLIBC_LINUXTHREADS_SUFFIX) +EGLIBC_LINUXTHREADS_SOURCE_B := $(SRCDIR)/$(EGLIBC_LINUXTHREADS) +EGLIBC_LINUXTHREADS_DIR := $(BUILDDIR)/$(EGLIBC_LINUXTHREADS) + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +$(EGLIBC_LINUXTHREADS_SOURCE): | $(EGLIBC_LINUXTHREADS_SOURCE_B) + @$(call targetinfo) + # @$(call get, EGLIBC_LINUXTHREADS) + # See http://www.eglibc.org/archives/issues/msg00064.html + if [ -d $(EGLIBC_LINUXTHREADS_SOURCE_B) ]; then \ + rev1=`svnversion $(EGLIBC_LINUXTHREADS_SOURCE_B)`; \ + rev2=`cat $...@`; \ + if test "$$rev1" != "$$rev2"; then \ + touch $@; \ + echo Touched $@ because of changes; \ + fi; \ + else \ + rm -rf $@; \ + fi + +$(EGLIBC_LINUXTHREADS_SOURCE_B): + if [ -d $(EGLIBC_LINUXTHREADS_SOURCE_B) ]; then \ + svn update $(EGLIBC_PORTS_SVNREV) $(EGLIBC_LINUXTHREADS_SOURCE_B);\ + else \ + svn co $(EGLIBC_LINUXTHREADS_SVNREV) $(EGLIBC_LINUXTHREADS_URL)/linuxthreads $(EGLIBC_LINUXTHREADS_SOURCE_B); \ + fi + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +ifdef PTXCONF_EGLIBC_LINUXTHREADS +$(STATEDIR)/eglibc.extract: $(STATEDIR)/eglibc-linuxthreads.extract +endif + +$(STATEDIR)/eglibc-linuxthreads.extract: + @$(call targetinfo) + @$(call clean, $(EGLIBC_LINUXTHREADS_DIR)) + # @$(call extract, EGLIBC_LINUXTHREADS, $(EGLIBC_LINUXTHREADS_DIR)) + # See http://www.eglibc.org/archives/issues/msg00064.html + svn export $(EGLIBC_LINUXTHREADS_SOURCE_B) $(EGLIBC_LINUXTHREADS_DIR) + @$(call patchin, EGLIBC_LINUXTHREADS, $(EGLIBC_LINUXTHREADS_DIR)) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +$(STATEDIR)/eglibc-linuxthreads.prepare: + @$(call targetinfo) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +$(STATEDIR)/eglibc-linuxthreads.compile: + @$(call targetinfo) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +$(STATEDIR)/eglibc-linuxthreads.install: + @$(call targetinfo) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +$(STATEDIR)/eglibc-linuxthreads.targetinstall: + @$(call targetinfo) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +eglibc-linuxthreads_clean: + ifeq ($(call remove_quotes $(PTXCONF_EGLIBC_LINUXTHREADS_SVNREV)),HEAD) + rm -rf $(EGLIBC_LINUXTHREADS_SOURCE) + endif + rm -rf $(STATEDIR)/eglibc-linuxthreads.* + rm -rf $(EGLIBC_LINUXTHREADS_DIR) + +# vim: syntax=make diff --git a/rules/eglibc-ports.in b/rules/eglibc-ports.in new file mode 100644 index 0000000..c864188 --- /dev/null +++ b/rules/eglibc-ports.in @@ -0,0 +1,19 @@ +menuconfig EGLIBC_PORTS + prompt "eglibc-ports " + bool + +config EGLIBC_PORTS_VERSION + depends on EGLIBC_PORTS + string + default "${PTXCONF_EGLIBC_VERSION}" + +config EGLIBC_PORTS_SVNREV + depends on EGLIBC_PORTS + string + default "${PTXCONF_EGLIBC_SVNREV}" + +config EGLIBC_PORTS_SERIES + depends on EGLIBC_PORTS + string + prompt "eglibc-ports patch series file" + default "series" diff --git a/rules/eglibc-ports.make b/rules/eglibc-ports.make new file mode 100644 index 0000000..5904023 --- /dev/null +++ b/rules/eglibc-ports.make @@ -0,0 +1,127 @@ +# -*-makefile-*- +# $Id$ +# +# Copyright (C) 2006 by Robert Schwebel +# 2008 by Marc Kleine-Budde <[email protected]> +# 2009 by Carsten Schlote +# +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +# +# We provide this package +# +PACKAGES-$(PTXCONF_EGLIBC_PORTS) += eglibc-ports + +# +# Paths and names +# +ifneq ($(call remove_quotes $(PTXCONF_EGLIBC_PORTS_VERSION)),) +EGLIBC_PORTS_VERSION := -$(call remove_quotes,$(PTXCONF_EGLIBC_PORTS_VERSION)) +else +EGLIBC_PORTS_VERSION := -$(call remove_quotes,$(PTXCONF_EGLIBC_VERSION)) +endif + +ifneq ($(call remove_quotes $(PTXCONF_EGLIBC_PORTS_SVNREV)),) +EGLIBC_PORTS_SVNREV := -r $(call remove_quotes,$(PTXCONF_EGLIBC_PORTS_SVNREV)) +endif +EGLIBC_PORTS := eglibc-ports$(EGLIBC_PORTS_VERSION) + +EGLIBC_PORTS_SUFFIX := svn +EGLIBC_PORTS_SOURCE := $(SRCDIR)/$(EGLIBC_PORTS).$(EGLIBC_PORTS_SUFFIX) +EGLIBC_PORTS_SOURCE_B := $(SRCDIR)/$(EGLIBC_PORTS) +EGLIBC_PORTS_DIR := $(BUILDDIR)/$(EGLIBC_PORTS) + +EGLIBC_PORTS_URL := $(EGLIBC_URL) + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +$(EGLIBC_PORTS_SOURCE): | $(EGLIBC_PORTS_SOURCE_B) + @$(call targetinfo) + @#$(call get, EGLIBC_PORTS) + # See http://www.eglibc.org/archives/issues/msg00064.html + if [ -d $(EGLIBC_PORTS_SOURCE_B) ]; then \ + rev1=`svnversion $(EGLIBC_PORTS_SOURCE_B)`; \ + rev2=`cat $...@`; \ + if test "$$rev1" != "$$rev2"; then \ + echo $$rev1 > $@; \ + echo Touched $@ because of changes; \ + fi; \ + else \ + rm $@; \ + fi + +$(EGLIBC_PORTS_SOURCE_B): + if [ -d $(EGLIBC_PORTS_SOURCE_B) ]; then \ + svn update $(EGLIBC_PORTS_SVNREV) $(EGLIBC_PORTS_SOURCE_B);\ + else \ + svn co $(EGLIBC_PORTS_SVNREV) $(EGLIBC_PORTS_URL)/ports $(EGLIBC_PORTS_SOURCE_B); \ + fi + + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +ifdef PTXCONF_EGLIBC_PORTS +$(STATEDIR)/eglibc.extract: $(STATEDIR)/eglibc-ports.extract +endif + +$(STATEDIR)/eglibc-ports.extract: + @$(call targetinfo) + @$(call clean, $(EGLIBC_PORTS_DIR)) + # @$(call extract, EGLIBC_PORTS, $(BUILDDIR)) + # See http://www.eglibc.org/archives/issues/msg00064.html + svn export $(EGLIBC_PORTS_SOURCE_B) $(EGLIBC_PORTS_DIR) + @$(call patchin, EGLIBC_PORTS, $(EGLIBC_PORTS_DIR)) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +$(STATEDIR)/eglibc-ports.prepare: + @$(call targetinfo) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +$(STATEDIR)/eglibc-ports.compile: + @$(call targetinfo) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +$(STATEDIR)/eglibc-ports.install: + @$(call targetinfo) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +$(STATEDIR)/eglibc-ports.targetinstall: + @$(call targetinfo) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +eglibc-ports_clean: + ifeq ($(call remove_quotes $(PTXCONF_EGLIBC_PORTS_SVNREV)),HEAD) + rm -rf $(EGLIBC_PORTS_SOURCE) + endif + rm -rf $(STATEDIR)/eglibc-ports.* + rm -rf $(EGLIBC_PORTS_DIR) + +# vim: syntax=make diff --git a/rules/eglibc.in b/rules/eglibc.in new file mode 100644 index 0000000..8879f8c --- /dev/null +++ b/rules/eglibc.in @@ -0,0 +1,111 @@ +# config for eglibc + +config EGLIBC_HEADERS + bool + select KERNEL_HEADERS + +config EGLIBC_CRT + bool + select CROSS_GCC_FIRST + +config EGLIBC_FIRST + bool + select CROSS_GCC_FIRST + +menuconfig EGLIBC + bool + + select EGLIBC_CRT +# select EGLIBC_PORTS if EGLIBC_ADDON_NPTL && ( ARCH_ARM || ARCH_MIPS ) + select EGLIBC_LINUXTHREADS if EGLIBC_ADDON_LINUXTHREADS + + select TOOLCHAIN_ENABLE_SYSROOT + select TOOLCHAIN_DISABLE_MULTILIB + + select CROSS_GCC + select CROSS_GCC_ENABLE_CXA_ATEXIT + select CROSS_GCC_DISABLE_SJLJ_EXCEPTIONS + select CROSS_GCC_ENABLE_LIBSSP + select CROSS_GCC_ENABLE_SHARED + select CROSS_GCC_THREADS_POSIX + + prompt "eglibc " + +config EGLIBC_VERSION + depends on EGLIBC + string + prompt "eglibc version" + default "" + help + Specify the eglibc version here. + Leave empty for eglibc trunk snapshots and enter a timestamp below. + +config EGLIBC_SVNREV + depends on EGLIBC + string + prompt "eglibc svn revision" + default "HEAD" + help + For eglibc branches at a specific revision enter the revision + number here here, + or "HEAD" or if you want try the latest version. + +config EGLIBC_SERIES + depends on EGLIBC + string + prompt "eglibc patch series file" + default "series" + +config EGLIBC_ENABLE_KERNEL + depends on EGLIBC + string + prompt "mininum kernel version" + default "2.6.23" + +config EGLIBC_CONFIG_EXTRA + depends on EGLIBC + string + prompt "extra configure options" + help + Add these extra options to eglibc's configure script. + +config EGLIBC_HEADERS_FAKE_CROSS + depends on EGLIBC + string + prompt "fake cross args" + default "-D__ARM_EABI__" if ARCH_ARM + default "-DBOOTSTRAP_GCC" if ARCH_MIPS + help + Add these args to fake a crosscompiler during eglibc-header extraction stage. + +choice + prompt "Thread implementation" + depends on EGLIBC + default EGLIBC_ADDON_NPTL + + config EGLIBC_ADDON_NOTHREADS + bool + prompt "no threading support" + help + Activate the linuxthreads addon. + + config EGLIBC_ADDON_LINUXTHREADS + bool + prompt "linuxthreads" + help + Activate the linuxthreads addon. + + config EGLIBC_ADDON_NPTL + bool + prompt "nptl" + select EGLIBC_TLS + help + Activate the NPTL addon. +endchoice + +config EGLIBC_TLS + depends on EGLIBC + bool + prompt "enable TLS" + help + Activate Thread Local Storage. diff --git a/rules/eglibc.make b/rules/eglibc.make new file mode 100644 index 0000000..622eafb --- /dev/null +++ b/rules/eglibc.make @@ -0,0 +1,202 @@ +# -*-makefile-*- +# $Id: template 6655 2007-01-02 12:55:21Z rsc $ +# +# Copyright (C) 2006 by Robert Schwebel +# 2007, 2008 by Marc Kleine-Budde +# 2009 by Carsten Schlote +# +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +# +# We provide this package +# +PACKAGES-$(PTXCONF_EGLIBC) += eglibc + +# +# Paths and names +# +ifneq ($(PTXCONF_EGLIBC_VERSION),"") +EGLIBC_VERSION := -$(call remove_quotes,$(PTXCONF_EGLIBC_VERSION)) +endif +ifneq ($(PTXCONF_EGLIBC_SVNREV),"") +EGLIBC_SVNREV := -r $(call remove_quotes,$(PTXCONF_EGLIBC_SVNREV)) +endif + +EGLIBC := eglibc$(EGLIBC_VERSION) +EGLIBC_SUFFIX := svn +EGLIBC_SOURCE := $(SRCDIR)/$(EGLIBC).$(EGLIBC_SUFFIX) +EGLIBC_SOURCE_B := $(SRCDIR)/$(EGLIBC) +EGLIBC_DIR := $(BUILDDIR_DEBUG)/$(EGLIBC) +EGLIBC_BUILDDIR := $(BUILDDIR)/$(EGLIBC)-build + +EGLIBC_URL := svn://svn.eglibc.org/branches/eglibc$(subst .,_,$(EGLIBC_VERSION)) + +# ---------------------------------------------------------------------------- +# Get +# ---------------------------------------------------------------------------- + +$(EGLIBC_SOURCE): | $(EGLIBC_SOURCE_B) + @$(call targetinfo) + # @$(call get, EGLIBC) + # See http://www.eglibc.org/archives/issues/msg00064.html + if [ -d $(EGLIBC_SOURCE_B) ]; then \ + rev1=`svnversion $(EGLIBC_SOURCE_B)`; \ + rev2=`cat $...@`; \ + if test "$$rev1" != "$$rev2"; then \ + echo $$rev1 > $@; \ + echo Touched $@ because of changes; \ + fi; \ + else \ + rm $@; \ + fi + +$(EGLIBC_SOURCE_B): + if [ -d $(EGLIBC_SOURCE_B) ]; then \ + svn update $(EGLIBC_SVNREV) $(EGLIBC_SOURCE_B);\ + else \ + svn co $(EGLIBC_SVNREV) $(EGLIBC_PORTS_URL)/libc $(EGLIBC_SOURCE_B); \ + fi + +# ---------------------------------------------------------------------------- +# Extract +# ---------------------------------------------------------------------------- + +$(STATEDIR)/eglibc.extract: + @$(call targetinfo) + @$(call clean, $(EGLIBC_DIR)) + # @$(call extract, EGLIBC, $(BUILDDIR_DEBUG)) + # See http://www.eglibc.org/archives/issues/msg00064.html + svn export $(EGLIBC_SOURCE_B) $(EGLIBC_DIR) + @$(call patchin, EGLIBC, $(EGLIBC_DIR)) + +ifdef PTXCONF_EGLIBC_LINUXTHREADS + cp -r $(EGLIBC_LINUXTHREADS_DIR)/linuxthreads $(EGLIBC_DIR) + cp -r $(EGLIBC_LINUXTHREADS_DIR)/linuxthreads_db $(EGLIBC_DIR) +endif +ifdef PTXCONF_EGLIBC_PORTS + mkdir -p $(EGLIBC_DIR)/ports + cp -r $(EGLIBC_PORTS_DIR)/* $(EGLIBC_DIR)/ports +endif + @$(call touch) + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +EGLIBC_PATH := PATH=$(CROSS_PATH) +EGLIBC_ENV := \ + CC=$(CROSS_CC) \ + BUILD_CC=$(HOSTCC) \ + ac_cv_sizeof_long_double=$(PTXCONF_SIZEOF_LONG_DOUBLE) + + +EGLIBC_MAKEVARS := AUTOCONF=no + +# +# autoconf +# +ifdef PTXCONF_EGLIBC_PORTS +EGLIBC_ADDONS += ports +endif +ifdef PTXCONF_EGLIBC_ADDON_NPTL +EGLIBC_ADDONS += nptl +endif +ifdef PTXCONF_EGLIBC_ADDON_LINUXTHREADS +EGLIBC_ADDONS += linuxthreads +endif + +EGLIBC_AUTOCONF_COMMON := \ + --prefix=/usr \ + --host=$(PTXCONF_GNU_TARGET) \ + --target=$(PTXCONF_GNU_TARGET) \ + \ + --with-headers=$(SYSROOT)/usr/include \ + --enable-add-ons=$(subst $(space),$(comma),$(EGLIBC_ADDONS)) \ + \ + --without-cvs \ + --without-gd \ + --without-selinux \ + --disable-sanity-checks \ + \ + $(PTXCONF_EGLIBC_CONFIG_EXTRA) + +ifdef PTXCONF_EGLIBC_TLS +EGLIBC_AUTOCONF_COMMON += --with-tls --with-__thread +else +EGLIBC_AUTOCONF_COMMON += --without-tls --without-__thread +endif + +EGLIBC_AUTOCONF := \ + $(EGLIBC_AUTOCONF_COMMON) \ + \ + --enable-kernel=$(PTXCONF_EGLIBC_ENABLE_KERNEL) \ + --enable-debug \ + --enable-profile \ + --enable-shared \ + --enable-static-nss + +$(STATEDIR)/eglibc.prepare: + @$(call targetinfo) + @$(call clean, $(EGLIBC_BUILDDIR)) + mkdir -p $(EGLIBC_BUILDDIR) + cd $(EGLIBC_BUILDDIR) && \ + $(EGLIBC_ENV) $(EGLIBC_PATH) \ + $(EGLIBC_DIR)/configure $(EGLIBC_AUTOCONF) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +$(STATEDIR)/eglibc.compile: + @$(call targetinfo) + cd $(EGLIBC_BUILDDIR) && $(EGLIBC_PATH) $(MAKE) $(PARALLELMFLAGS) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +$(STATEDIR)/eglibc.install: + @$(call targetinfo) + cd $(EGLIBC_BUILDDIR) && \ + $(EGLIBC_PATH) $(MAKE) $(EGLIBC_MAKEVARS) \ + install_root=$(SYSROOT) install +# +# Fix a bug when linking statically +# see: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=76451 +# see: http://www.sourceware.org/bugzilla/show_bug.cgi?id=631 +# + mv -- "$(SYSROOT)/usr/lib/libc.a" "$(SYSROOT)/usr/lib/libc_ns.a" + echo '/* GNU ld script' > "$(SYSROOT)/usr/lib/libc.a" + echo ' Use the static library, but some functions are in other strange' >> "$(SYSROOT)/usr/lib/libc.a" + echo ' libraries :-( So try them secondarily. */' >> "$(SYSROOT)/usr/lib/libc.a" + echo 'GROUP ( /usr/lib/libc_ns.a /usr/lib/libnss_files_pic.a /usr/lib/libnss_dns_pic.a /usr/lib/libresolv.a )' >> "$(SYSROOT)/usr/lib/libc.a" + @#echo 'GROUP ( /usr/lib/libc_ns.a /usr/lib/libnss_files.a /usr/lib/libnss_dns.a /usr/lib/libresolv.a )' >> "$(SYSROOT)/usr/lib/libc.a" + + @$(call touch) + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +$(STATEDIR)/eglibc.targetinstall: + @$(call targetinfo) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +eglibc_clean: + ifeq ($(call remove_quotes $(PTXCONF_EGLIBC_SVNREV)),HEAD) + rm -rf $(EGLIBC_SOURCE) + endif + rm -rf $(STATEDIR)/eglibc.* + rm -rf $(EGLIBC_DIR) + +# vim: syntax=make diff --git a/rules/libc.in b/rules/libc.in index 85f0258..91cac02 100644 --- a/rules/libc.in +++ b/rules/libc.in @@ -1,5 +1,6 @@ config LIBC_HEADERS bool + select EGLIBC_HEADERS if LIBC_EGLIBC select GLIBC_HEADERS if LIBC_GLIBC select UCLIBC_HEADERS if LIBC_UCLIBC select W32API_HEADERS if LIBC_MINGW @@ -9,11 +10,12 @@ config LIBC_FIRST bool select CROSS_GCC_FIRST + select EGLIBC_FIRST if LIBC_EGLIBC select GLIBC_FIRST if LIBC_GLIBC select UCLIBC if LIBC_UCLIBC select NEWLIB if LIBC_NEWLIB select W32API if LIBC_MINGW - select MINGW_RUNTIME if LIBC_MINGW + select MINGW_RUNTIME if LIBC_MINGW select AVRLIB if LIBC_AVR config LIBC @@ -26,6 +28,10 @@ choice prompt "C library" default LIBC_GLIBC + config LIBC_EGLIBC + bool + prompt "eglibc " + config LIBC_GLIBC bool prompt "glibc " -- 1.6.6.1 -- ptxdist mailing list [email protected]
