summaryrefslogtreecommitdiffstats
path: root/rules/xchain-glibc.make
diff options
context:
space:
mode:
Diffstat (limited to 'rules/xchain-glibc.make')
-rw-r--r--rules/xchain-glibc.make381
1 files changed, 381 insertions, 0 deletions
diff --git a/rules/xchain-glibc.make b/rules/xchain-glibc.make
new file mode 100644
index 000000000..805b73ba0
--- /dev/null
+++ b/rules/xchain-glibc.make
@@ -0,0 +1,381 @@
+# $Id: xchain-glibc.make,v 1.1 2003/04/24 08:06:33 jst Exp $
+#
+# (c) 2002 by Pengutronix e.K., Hildesheim, Germany
+# 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
+#
+ifeq (y, $(PTXCONF_GLIBC_2_2_5))
+PACKAGES += glibc
+endif
+ifeq (y, $(PTXCONF_GLIBC_2_2_4))
+PACKAGES += glibc
+endif
+ifeq (y, $(PTXCONF_GLIBC_2_2_3))
+PACKAGES += glibc
+endif
+
+
+#
+# Paths and names
+#
+ifeq (y, $(PTXCONF_GLIBC_2_2_5))
+GLIBC_VERSION = 2.2.5
+endif
+ifeq (y, $(PTXCONF_GLIBC_2_2_4))
+GLIBC_VERSION = 2.2.4
+endif
+ifeq (y, $(PTXCONF_GLIBC_2_2_3))
+GLIBC_VERSION = 2.2.3
+endif
+
+GLIBC = glibc-$(GLIBC_VERSION)
+GLIBC_URL = ftp://ftp.gnu.org/gnu/glibc/$(GLIBC).tar.gz
+GLIBC_SOURCE = $(SRCDIR)/$(GLIBC).tar.gz
+GLIBC_DIR = $(BUILDDIR)/$(GLIBC)
+GLIBC_EXTRACT = gzip -dc
+
+GLIBC_THREADS = glibc-linuxthreads-$(GLIBC_VERSION)
+GLIBC_THREADS_URL = ftp://ftp.gnu.org/gnu/glibc/$(GLIBC_THREADS).tar.gz
+GLIBC_THREADS_SOURCE = $(SRCDIR)/$(GLIBC_THREADS).tar.gz
+GLIBC_THREADS_DIR = $(GLIBC_DIR)
+GLIBC_THREADS_EXTRACT = gzip -dc
+
+GLIBC_PTXPATCH = glibc-$(GLIBC_VERSION)-ptx1.diff
+GLIBC_PTXPATCH_URL = http://www.pengutronix.de/software/ptxdist/temporary-src/$(GLIBC_PTXPATCH)
+GLIBC_PTXPATCH_SOURCE = $(SRCDIR)/$(GLIBC_PTXPATCH)
+GLIBC_PTXPATCH_DIR = $(GLIBC_DIR)
+GLIBC_PTXPATCH_EXTRACT = cat
+
+
+# ----------------------------------------------------------------------------
+# Get
+# ----------------------------------------------------------------------------
+
+glibc_get: $(STATEDIR)/glibc.get
+
+glibc_get_deps = $(STATEDIR)/glibc-base.get
+glibc_get_deps += $(STATEDIR)/glibc-ptxpatch.get
+ifdef PTXCONF_GLIBC_PTHREADS
+glibc_get_deps += $(STATEDIR)/glibc-threads.get
+endif
+
+$(STATEDIR)/glibc.get: $(glibc_get_deps)
+ touch $@
+
+$(STATEDIR)/glibc-base.get: $(GLIBC_SOURCE)
+ touch $@
+
+$(STATEDIR)/glibc-threads.get: $(GLIBC_THREADS_SOURCE)
+ touch $@
+
+$(STATEDIR)/glibc-ptxpatch.get: $(GLIBC_PTXPATCH_SOURCE)
+ touch $@
+
+$(GLIBC_SOURCE):
+ @echo
+ @echo ----------------------
+ @echo target: glibc-base.get
+ @echo ----------------------
+ @echo
+ wget -P $(SRCDIR) $(PASSIVEFTP) $(GLIBC_URL)
+
+$(GLIBC_THREADS_SOURCE):
+ @echo
+ @echo -------------------------
+ @echo target: glibc-threads.get
+ @echo -------------------------
+ @echo
+ wget -P $(SRCDIR) $(PASSIVEFTP) $(GLIBC_THREADS_URL)
+
+$(GLIBC_PTXPATCH_SOURCE):
+ @echo
+ @echo --------------------------
+ @echo target: glibc-ptxpatch.get
+ @echo --------------------------
+ @echo
+ wget -P $(SRCDIR) $(PASSIVEFTP) $(GLIBC_PTXPATCH_URL)
+
+# ----------------------------------------------------------------------------
+# Extract
+# ----------------------------------------------------------------------------
+
+glibc_extract: $(STATEDIR)/glibc.extract
+glibc-base_extract: $(STATEDIR)/glibc-base.extract
+glibc-threads_extract: $(STATEDIR)/glibc-threads.extract
+
+glibc_extract_deps = $(STATEDIR)/glibc-base.extract
+ifeq (y, $(PTXCONF_GLIBC_PTHREADS))
+glibc_extract_deps += $(STATEDIR)/glibc-threads.extract
+endif
+
+$(STATEDIR)/glibc.extract: $(glibc_extract_deps)
+ touch $@
+
+$(STATEDIR)/glibc-base.extract: $(STATEDIR)/glibc-base.get
+ @echo
+ @echo --------------------------
+ @echo target: glibc-base.extract
+ @echo --------------------------
+ @echo
+ $(GLIBC_EXTRACT) $(GLIBC_SOURCE) | $(TAR) -C $(BUILDDIR) -xf -
+ # fix some bugs...
+ cd $(GLIBC_DIR) && patch -p1 < $(GLIBC_PTXPATCH_SOURCE)
+ # fix: sunrpc's makefile has the wrong magic to find cpp...
+ # FIXME: is this the right fix for other versions than 2.2.5?
+ cd $(GLIBC_DIR)/sunrpc && mkdir cpp && ln -s $(PTXCONF_PREFIX)/bin/cpp cpp/
+ # this is magically recreated if missing (necessary because
+ # of patch against configure.in)
+ rm -f $(GLIBC_DIR)/sysdeps/unix/sysv/linux/configure
+ touch $@
+
+$(STATEDIR)/glibc-threads.extract: $(STATEDIR)/glibc-threads.get
+ @echo
+ @echo -----------------------------
+ @echo target: glibc-threads.extract
+ @echo -----------------------------
+ @echo
+ $(GLIBC_THREADS_EXTRACT) $(GLIBC_THREADS_SOURCE) | $(TAR) -C $(GLIBC_DIR) -xf -
+ touch $@
+
+# ----------------------------------------------------------------------------
+# Prepare
+# ----------------------------------------------------------------------------
+
+glibc_prepare: $(STATEDIR)/glibc.extract $(STATEDIR)/autoconf213.install
+
+GLIBC_AUTOCONF =
+GLIBC_ENVIRONMENT =
+
+ifdef PTXCONF_GLIBC
+
+#
+# arcitecture dependend configuration
+#
+
+GLIBC_AUTOCONF += --build=i686-linux
+GLIBC_AUTOCONF += --host=$(PTXCONF_GNU_TARGET)
+GLIBC_AUTOCONF += --disable-sanity-checks
+GLIBC_ENVIRONMENT = PATH=$(PTXCONF_PREFIX)/$(AUTOCONF213)/bin:$(PTXCONF_PREFIX)/bin:$$PATH
+GLIBC_MAKEVARS = AR=$(PTXCONF_GNU_TARGET)-ar
+GLIBC_MAKEVARS += RANLIB=$(PTXCONF_GNU_TARGET)-ranlib
+GLIBC_MAKEVARS += CC=$(PTXCONF_GNU_TARGET)-gcc
+
+#
+# features
+#
+ifdef PTXCONF_GLIBC_FLOATINGPOINT
+ GLIBC_AUTOCONF+=--with-fp=yes
+else
+ GLIBC_AUTOCONF+=--with-fp=no
+endif
+ifdef PTXCONF_GLIBC_LIBIO
+ GLIBC_AUTOCONF+=--enable-libio
+endif
+ifdef PTXCONF_GLIBC_SHARED
+ GLIBC_AUTOCONF+=--enable-shared
+else
+ GLIBC_AUTOCONF+=--enable-shared=no
+endif
+ifdef PTXCONF_GLIBC_PROFILED
+ GLIBC_AUTOCONF+=--enable-profile=yes
+else
+ GLIBC_AUTOCONF+=--enable-profile=no
+endif
+ifdef PTXCONF_GLIBC_OMITFP
+ GLIBC_AUTOCONF+=--enable-omitfp
+endif
+ifdef PTXCONF_GLIBC_PTHREADS
+ GLIBC_AUTOCONF+=--enable-add-ons=linuxthreads
+endif
+
+#
+# optimisation
+#
+ifdef PTXCONF_OPT_I386
+ GLIBC_CFLAGS+=-mcpu=i386 -O2
+endif
+ifdef PTXCONF_OPT_I486
+ GLIBC_CFLAGS+=-mcpu=i486 -O2
+endif
+ifdef PTXCONF_OPT_I686
+ GLIBC_CFLAGS+=-mcpu=i686 -O2
+endif
+ifdef PTXCONF_ARCH_ARM
+# GLIBC_CFLAGS+=-Wall -O2
+endif
+ifdef GLIBC_CFLAGS
+GLIBC_ENVIRONMENT += CFLAGS="$(GLIBC_CFLAGS)"
+endif
+
+endif
+
+#
+# dependencies
+#
+glibc_prepare_deps = $(STATEDIR)/glibc.extract
+ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN))
+glibc_prepare_deps += $(STATEDIR)/xchain-gccstage1.install
+endif
+
+$(STATEDIR)/glibc.prepare: $(glibc_prepare_deps)
+ @echo
+ @echo ---------------------
+ @echo target: glibc.prepare
+ @echo ---------------------
+ @echo
+ ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN))
+ mkdir -p $(BUILDDIR)/$(GLIBC)-obj
+ cd $(BUILDDIR)/$(GLIBC)-obj && \
+ $(GLIBC_ENVIRONMENT) \
+ $(GLIBC_DIR)/configure $(PTXCONF_GNU_TARGET) \
+ $(GLIBC_AUTOCONF) \
+ --prefix=$(PTXCONF_PREFIX)/$(PTXCONF_GNU_TARGET)
+ endif
+ #
+ # we need a second directory where we configure glibc for the
+ # dynamic linker
+ #
+ mkdir -p $(BUILDDIR)/$(GLIBC)-ldso
+ cd $(BUILDDIR)/$(GLIBC)-ldso && \
+ $(GLIBC_ENVIRONMENT) \
+ $(GLIBC_DIR)/configure $(PTXCONF_GNU_TARGET) \
+ $(GLIBC_AUTOCONF) \
+ --prefix=
+ touch $@
+
+# ----------------------------------------------------------------------------
+# Compile
+# ----------------------------------------------------------------------------
+
+glibc_compile: $(STATEDIR)/glibc.compile
+
+$(STATEDIR)/glibc.compile: $(STATEDIR)/glibc.prepare
+ @echo
+ @echo ---------------------------
+ @echo "target: glibc.compile (obj)"
+ @echo ---------------------------
+ @echo
+ ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN))
+ # let makefile find autoconf-2.13 as default
+ cd $(BUILDDIR)/$(GLIBC)-obj && $(GLIBC_ENVIRONMENT) make $(MAKEVARS)
+ endif
+ @echo
+ @echo -----------------------------
+ @echo "target: glibc.compile (ld-so)"
+ @echo -----------------------------
+ @echo
+ # FIXME: is there another possibility to create an ld.so which has
+ # correct search paths compiled in for /lib?
+ cd $(BUILDDIR)/$(GLIBC)-ldso && $(GLIBC_ENVIRONMENT) make $(MAKEVARS)
+ touch $@
+
+# ----------------------------------------------------------------------------
+# Install
+# ----------------------------------------------------------------------------
+
+glibc_install: $(STATEDIR)/glibc.install
+
+$(STATEDIR)/glibc.install: $(STATEDIR)/glibc.compile
+ @echo
+ @echo ---------------------
+ @echo target: glibc.install
+ @echo ---------------------
+ @echo
+ ifeq (y,$(PTXCONF_BUILD_CROSSCHAIN))
+ cd $(BUILDDIR)/$(GLIBC)-obj && $(GLIBC_ENVIRONMENT) make install
+ endif
+ touch $@
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+glibc_targetinstall: $(STATEDIR)/glibc.targetinstall
+
+$(STATEDIR)/glibc.targetinstall: $(STATEDIR)/glibc.install
+ @echo
+ @echo ---------------------------
+ @echo target: glibc.targetinstall
+ @echo ---------------------------
+ @echo
+ # CAREFUL: don't never ever make install in ldso tree!!!
+ mkdir -p $(ROOTDIR)/lib
+ install $(BUILDDIR)/$(GLIBC)-ldso/elf/ld.so $(ROOTDIR)/lib/ld-$(GLIBC_VERSION).so
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/ld-$(GLIBC_VERSION).so
+ ln -sf ld-$(GLIBC_VERSION).so $(ROOTDIR)/lib/ld-linux.so.2
+ install $(BUILDDIR)/$(GLIBC)-ldso/libc.so $(ROOTDIR)/lib/libc.so.6
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/libc.so.6
+ ln -sf libc.so.6 $(ROOTDIR)/lib/libc.so
+ ifeq (y, $(PTXCONF_GLIBC_PTHREADS))
+ install $(BUILDDIR)/$(GLIBC)-ldso/linuxthreads/libpthread.so $(ROOTDIR)/lib/libpthread.so.0
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/libpthread.so.0
+ endif
+ ifeq (y, $(PTXCONF_GLIBC_CRYPT))
+ install $(BUILDDIR)/$(GLIBC)-ldso/crypt/libcrypt.so.1 $(ROOTDIR)/lib
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/libcrypt.so.1
+ endif
+ ifeq (y, $(PTXCONF_GLIBC_UTIL))
+ install $(BUILDDIR)/$(GLIBC)-ldso/login/libutil.so $(ROOTDIR)/lib
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/libutil.so
+ ln -sf libutil.so $(ROOTDIR)/lib/libutil.so.1
+ endif
+ ifeq (y, $(PTXCONF_GLIBC_LIBM))
+ install $(BUILDDIR)/$(GLIBC)-ldso/math/libm.so $(ROOTDIR)/lib
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/libm.so
+ ln -sf libm.so $(ROOTDIR)/lib/libm.so.6
+ endif
+ ifeq (y, $(PTXCONF_GLIBC_NSS_DNS))
+ install $(BUILDDIR)/$(GLIBC)-ldso/resolv/libnss_dns.so.2 $(ROOTDIR)/lib
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnss_dns.so.2
+ $(CROSSSTRIP) $(ROOTDIR)/lib/libnss_dns.so.2
+ endif
+ ifeq (y, $(PTXCONF_GLIBC_NSS_FILES))
+ install $(BUILDDIR)/$(GLIBC)-ldso/nss/libnss_files.so.2 $(ROOTDIR)/lib
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnss_files.so.2
+ endif
+ ifeq (y, $(PTXCONF_GLIBC_NSS_HESIOD))
+ install $(BUILDDIR)/$(GLIBC)-ldso/hesiod/libnss_hesiod.so.2 $(ROOTDIR)/lib
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnss_hesiod.so.2
+ endif
+ ifeq (y, $(PTXCONF_GLIBC_NSS_NIS))
+ install $(BUILDDIR)/$(GLIBC)-ldso/nis/libnss_nis.so.2 $(ROOTDIR)/lib
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnss_nis.so.2
+ endif
+ ifeq (y, $(PTXCONF_GLIBC_NSS_NISPLUS))
+ install $(BUILDDIR)/$(GLIBC)-ldso/nis/libnss_nisplus.so.2 $(ROOTDIR)/lib
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnss_nisplus.so.2
+ endif
+ ifeq (y, $(PTXCONF_GLIBC_NSS_COMPAT))
+ install $(BUILDDIR)/$(GLIBC)-ldso/nis/libnss_compat.so.2 $(ROOTDIR)/lib
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnss_compat.so.2
+ endif
+ ifeq (y, $(PTXCONF_GLIBC_RESOLV))
+ install $(BUILDDIR)/$(GLIBC)-ldso/resolv/libresolv.so $(ROOTDIR)/lib/libresolv.so.$(GLIBC_VERSION)
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/libresolv.so.$(GLIBC_VERSION)
+ ln -sf libresolv.so.$(GLIBC_VERSION) $(ROOTDIR)/lib/libresolv.so
+ endif
+ ifeq (y, $(PTXCONF_GLIBC_NSL))
+ install $(BUILDDIR)/$(GLIBC)-ldso/nis/libnsl.so $(ROOTDIR)/lib/libnsl.so.$(GLIBC_VERSION)
+ $(CROSSSTRIP) -S $(ROOTDIR)/lib/libnsl.so.$(GLIBC_VERSION)
+ ln -sf libnsl.so.$(GLIBC_VERSION) $(ROOTDIR)/lib/libnsl.so
+ ln -sf libnsl.so.$(GLIBC_VERSION) $(ROOTDIR)/lib/libnsl.so.1
+ endif
+ touch $@
+
+# ----------------------------------------------------------------------------
+# Clean
+# ----------------------------------------------------------------------------
+
+glibc_clean:
+ -rm -rf $(STATEDIR)/glibc*
+ -rm -rf $(GLIBC_DIR)
+ -rm -rf $(BUILDDIR)/$(GLIBC)-obj
+ -rm -rf $(BUILDDIR)/$(GLIBC)-ldso
+
+# vim: syntax=make