From 2cadaad1439c433528c011ed7b583d9a855fca5a Mon Sep 17 00:00:00 2001 From: Christian Wiese Date: Thu, 13 Mar 2008 01:36:30 +0200 Subject: [PATCH] glibc: Improved glibc cross-compile support by adding CLFS "cross-hacks" patch Description: Adds native compile support to the build system then uses that support to build zic-native, for installing timezone info, rpcgen-native, for building librpcsvc.a, and localedef-native, for creating the locale-archive. --- .../glibc/glibc-2.5-cross_hacks-2.patch.cross | 457 ++++++++++++++++++ 1 file changed, 457 insertions(+) create mode 100644 base/glibc/glibc-2.5-cross_hacks-2.patch.cross diff --git a/base/glibc/glibc-2.5-cross_hacks-2.patch.cross b/base/glibc/glibc-2.5-cross_hacks-2.patch.cross new file mode 100644 index 000000000..8e30803db --- /dev/null +++ b/base/glibc/glibc-2.5-cross_hacks-2.patch.cross @@ -0,0 +1,457 @@ +# --- SDE-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# Filename: package/.../glibc/glibc-2.5-cross_hacks-2.patch.cross +# Copyright (C) 2008 The OpenSDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- SDE-COPYRIGHT-NOTE-END --- + +Submitted By: Joe Ciccone +Date: 2006-11-26 +Initial Package Version: 2.5 +Origin: Joe Ciccone +Upstream Status: Unknown +Description: Adds native compile support to the build system then uses that + support to build zic-native, for installing timezone info, + rpcgen-native, for building librpcsvc.a, and localedef-native, + for creating the locale-archive. + + -2 takes into account the possibility of CFLAGS being set for + the target. + +diff -Naur glibc-2.5.orig/iconv/Makefile glibc-2.5/iconv/Makefile +--- glibc-2.5.orig/iconv/Makefile 2004-12-19 18:43:41.000000000 -0500 ++++ glibc-2.5/iconv/Makefile 2006-11-26 17:26:05.000000000 -0500 +@@ -56,6 +56,9 @@ + iconvconfig.h + + others = iconv_prog iconvconfig ++ifneq ($(cross-compiling),no) ++others-native = iconvconfig-native ++endif + install-others = $(inst_bindir)/iconv + install-sbin = iconvconfig + +@@ -78,6 +81,7 @@ + + $(objpfx)iconv_prog: $(iconv_prog-modules:%=$(objpfx)%.o) + $(objpfx)iconvconfig: $(iconvconfig-modules:%=$(objpfx)%.o) ++$(objpfx)iconvconfig-native: $(iconvconfig-modules:%=$(objpfx)%-native.o) + + ifneq ($(cross-compiling),yes) + xtests: test-iconvconfig +diff -Naur glibc-2.5.orig/iconvdata/Makefile glibc-2.5/iconvdata/Makefile +--- glibc-2.5.orig/iconvdata/Makefile 2006-05-01 10:18:49.000000000 -0400 ++++ glibc-2.5/iconvdata/Makefile 2006-11-26 17:26:05.000000000 -0500 +@@ -311,23 +311,25 @@ + + headers: $(addprefix $(objpfx), $(generated-modules:=.h)) + ++ifeq ($(cross-compiling),no) ++iconvconfig-cmd = LC_ALL=C LANGUAGE=C \ ++ $(common-objpfx)elf/ld.so --library-path $(rpath-link) \ ++ $(common-objpfx)iconv/iconvconfig ++else ++iconvconfig-cmd = LC_ALL=C LANGUAGE=C \ ++ $(common-objpfx)iconv/iconvconfig-native ++endif ++ + $(addprefix $(inst_gconvdir)/, $(modules.so)): \ + $(inst_gconvdir)/%: $(objpfx)% $(+force) + $(do-install-program) + $(inst_gconvdir)/gconv-modules: gconv-modules $(+force) + $(do-install) +-ifeq (no,$(cross-compiling)) + # Update the $(prefix)/lib/gconv/gconv-modules.cache file. This is necessary + # if this libc has more gconv modules than the previously installed one. + if test -f "$(inst_gconvdir)/gconv-modules.cache"; then \ +- LC_ALL=C LANGUAGE=C \ +- $(common-objpfx)elf/ld.so --library-path $(rpath-link) \ +- $(common-objpfx)iconv/iconvconfig \ +- $(addprefix --prefix=,$(install_root)); \ ++ $(iconvconfig-cmd) $(addprefix --prefix=,$(install_root)); \ + fi +-else +- @echo '*@*@*@ You should recreate $(inst_gconvdir)/gconv-modules.cache' +-endif + + endif # build-shared = yes + +diff -Naur glibc-2.5.orig/include-native/bits/libc-tsd.h glibc-2.5/include-native/bits/libc-tsd.h +--- glibc-2.5.orig/include-native/bits/libc-tsd.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.5/include-native/bits/libc-tsd.h 2006-11-26 17:26:05.000000000 -0500 +@@ -0,0 +1,3 @@ ++#ifndef __libc_tsd_define ++#define __libc_tsd_define(A,B) ++#endif +diff -Naur glibc-2.5.orig/include-native/config.h glibc-2.5/include-native/config.h +--- glibc-2.5.orig/include-native/config.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.5/include-native/config.h 2006-11-26 17:26:05.000000000 -0500 +@@ -0,0 +1 @@ ++/* Empty */ +diff -Naur glibc-2.5.orig/include-native/gnu/stubs.h glibc-2.5/include-native/gnu/stubs.h +--- glibc-2.5.orig/include-native/gnu/stubs.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.5/include-native/gnu/stubs.h 2006-11-26 17:26:05.000000000 -0500 +@@ -0,0 +1 @@ ++/* Empty */ +diff -Naur glibc-2.5.orig/include-native/intl/loadinfo.h glibc-2.5/include-native/intl/loadinfo.h +--- glibc-2.5.orig/include-native/intl/loadinfo.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.5/include-native/intl/loadinfo.h 2006-11-26 17:26:05.000000000 -0500 +@@ -0,0 +1,4 @@ ++#ifndef LOADINFO_H ++#define LOADINFO_H ++struct loaded_l10nfile; ++#endif +diff -Naur glibc-2.5.orig/include-native/libintl.h glibc-2.5/include-native/libintl.h +--- glibc-2.5.orig/include-native/libintl.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.5/include-native/libintl.h 2006-11-26 17:26:05.000000000 -0500 +@@ -0,0 +1,13 @@ ++#include_next ++ ++#ifndef _ ++#define _(X) (X) ++#endif ++ ++#ifndef N_ ++#define N_(X) (X) ++#endif ++ ++#ifndef _libc_intl_domainname ++#define _libc_intl_domainname "libc" ++#endif +diff -Naur glibc-2.5.orig/include-native/symbol-hacks.h glibc-2.5/include-native/symbol-hacks.h +--- glibc-2.5.orig/include-native/symbol-hacks.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.5/include-native/symbol-hacks.h 2006-11-26 17:26:05.000000000 -0500 +@@ -0,0 +1 @@ ++/* Empty */ +diff -Naur glibc-2.5.orig/include-native/tls.h glibc-2.5/include-native/tls.h +--- glibc-2.5.orig/include-native/tls.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.5/include-native/tls.h 2006-11-26 17:26:05.000000000 -0500 +@@ -0,0 +1,11 @@ ++#ifndef _include_tls_h ++#define _include_tls_h 1 ++ ++#if USE_TLS && HAVE___THREAD \ ++ && (!defined NOT_IN_libc || defined IS_IN_libpthread) ++# define USE___THREAD 1 ++#else ++# define USE___THREAD 0 ++#endif ++ ++#endif +diff -Naur glibc-2.5.orig/locale/Makefile glibc-2.5/locale/Makefile +--- glibc-2.5.orig/locale/Makefile 2005-12-20 01:58:41.000000000 -0500 ++++ glibc-2.5/locale/Makefile 2006-11-26 17:26:05.000000000 -0500 +@@ -44,6 +44,9 @@ + aux = $(categories:%=lc-%) $(categories:%=C-%) SYS_libc C_name \ + xlocale localename global-locale coll-lookup + others = localedef locale ++ifneq ($(cross-compiling),no) ++others-native = localedef-native ++endif + #others-static = localedef locale + install-bin = localedef locale + extra-objs = $(localedef-modules:=.o) $(localedef-aux:=.o) \ +@@ -81,6 +84,12 @@ + $(objpfx)locale: $(locale-modules:%=$(objpfx)%.o) + $(objpfx)localedef $(objpfx)locale: $(lib-modules:%=$(objpfx)%.o) + ++ifneq ($(cross-compiling),no) ++$(objpfx)localedef-native: $(localedef-modules:%=$(objpfx)%-native.o) ++$(objpfx)localedef-native: $(localedef-aux:%=$(objpfx)%-native.o) ++$(objpfx)localedef-native: $(lib-modules:%=$(objpfx)%-native.o) ++endif ++ + C-translit.h: C-translit.h.in gen-translit.pl + $(PERL) gen-translit.pl < $< > $@.tmp + mv -f $@.tmp $@ +diff -Naur glibc-2.5.orig/localedata/Makefile glibc-2.5/localedata/Makefile +--- glibc-2.5.orig/localedata/Makefile 2006-04-26 01:14:03.000000000 -0400 ++++ glibc-2.5/localedata/Makefile 2006-11-26 17:26:05.000000000 -0500 +@@ -206,8 +206,13 @@ + INSTALL-SUPPORTED-LOCALES=$(addprefix install-, $(SUPPORTED-LOCALES)) + + # Sometimes the whole collection of locale files should be installed. ++ifeq ($(cross-compiling),no) + LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \ + $(common-objpfx)elf/ld.so --library-path $(rpath-link) $(common-objpfx)locale/localedef ++else ++LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \ ++$(common-objpfx)locale/localedef-native ++endif + install-locales: $(INSTALL-SUPPORTED-LOCALES) + + install-locales-dir: +diff -Naur glibc-2.5.orig/Makeconfig glibc-2.5/Makeconfig +--- glibc-2.5.orig/Makeconfig 2006-07-10 17:42:27.000000000 -0400 ++++ glibc-2.5/Makeconfig 2006-11-26 18:24:54.000000000 -0500 +@@ -447,6 +447,13 @@ + $(common-objpfx)libc% $(+postinit),$^) \ + $(link-extra-libs-static) $(link-libc-static) $(+postctor) $(+postinit) + endif ++# Command for linking programs against the host system. ++ifndef +link-native +++link-native = $(BUILD_CC) -static -g -o $@ $^ \ ++ $(LDFLAGS) $(LDFLAGS-$(@F)) \ ++ $(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \ ++ $(link-extra-libs) ++endif + # Command for statically linking bounded-pointer programs with the C library. + ifndef +link-bounded + +link-bounded = $(CC) -nostdlib -nostartfiles -static -fbounded-pointers -o $@ \ +@@ -660,6 +667,8 @@ + $(+sysdep-includes) $(includes) \ + $(patsubst %/,-I%,$(..)) $(libio-include) -I. $(sysincludes) + +++includes-native = -I$(..)include-native -I$(objpfx) -I. ++ + # Since libio has several internal header files, we use a -I instead + # of many little headers in the include directory. + libio-include = -I$(..)libio +@@ -674,10 +683,15 @@ + $(foreach lib,$(libof-$(basename $(@F))) \ + $(libof-$(