diff options
Diffstat (limited to 'rules/xchain-glibc.make')
-rw-r--r-- | rules/xchain-glibc.make | 381 |
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 |