Submitted By: Joe Ciccone Date: 2006-11-23 Initial Package Version: 2.5 Origin: Joe Ciccone Upstream Status: Will not be accepted. See, http://sourceware.org/bugzilla/show_bug.cgi?id=2838 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. diff -Naur glibc-2.5.orig/Makeconfig glibc-2.5/Makeconfig --- glibc-2.5.orig/Makeconfig 2006-11-23 23:07:52.000000000 -0500 +++ glibc-2.5/Makeconfig 2006-11-23 23:08:09.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 $@ \ @@ -668,6 +675,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 @@ -682,6 +691,9 @@ $(foreach lib,$(libof-$(basename $(@F))) \ $(libof-$( + +#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-23 23:08:09.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-23 23:08:09.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 2006-11-23 23:07:53.000000000 -0500 +++ glibc-2.5/locale/Makefile 2006-11-23 23:08:09.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-11-23 23:07:52.000000000 -0500 +++ glibc-2.5/localedata/Makefile 2006-11-23 23:08:09.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/malloc/Makefile glibc-2.5/malloc/Makefile --- glibc-2.5.orig/malloc/Makefile 2006-11-23 23:07:52.000000000 -0500 +++ glibc-2.5/malloc/Makefile 2006-11-23 23:08:09.000000000 -0500 @@ -73,10 +73,6 @@ endif endif -# Unless we get a test for the availability of libgd which also works -# for cross-compiling we disable the memusagestat generation in this -# situation. -ifneq ($(cross-compiling),yes) # If the gd library is available we build the `memusagestat' program. ifneq ($(LIBGD),no) others: $(objpfx)memusage @@ -91,7 +87,6 @@ # is to presume that the standard system headers will be ok for this file. $(objpfx)memusagestat.o: sysincludes = # nothing endif -endif # Another goal which can be used to override the configure decision. .PHONY: do-memusagestat diff -Naur glibc-2.5.orig/sunrpc/Makefile glibc-2.5/sunrpc/Makefile --- glibc-2.5.orig/sunrpc/Makefile 2006-11-23 23:07:52.000000000 -0500 +++ glibc-2.5/sunrpc/Makefile 2006-11-23 23:08:09.000000000 -0500 @@ -70,6 +70,9 @@ clnt_unix svc_unix create_xid xdr_intXX_t others := rpcinfo +ifneq ($(cross-compiling),no) +others-native := rpcgen-native +endif install-bin := rpcgen install-sbin := rpcinfo rpcgen-objs = rpc_main.o rpc_hout.o rpc_cout.o rpc_parse.o \ @@ -98,15 +101,12 @@ $(resolvobjdir)/libresolv.a endif -ifeq (no,$(cross-compiling)) -# We can only build this library if we can run the rpcgen we build. headers += $(rpcsvc:%.x=rpcsvc/%.h) extra-libs := librpcsvc extra-libs-others := librpcsvc # Make it in `others' pass, not `lib' pass. librpcsvc-routines = $(rpcsvc:%.x=x%) librpcsvc-inhibit-o = .os # Build no shared rpcsvc library. omit-deps = $(librpcsvc-routines) -endif CFLAGS-xbootparam_prot.c = -Wno-unused $(PIC-ccflag) CFLAGS-xnlm_prot.c = -Wno-unused $(PIC-ccflag) @@ -136,13 +136,26 @@ $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) $(+link) +ifneq ($(cross-compiling),no) +rpcgen.c: + touch rpcgen.c + +$(objpfx)rpcgen-native: $(addprefix $(objpfx),$(rpcgen-objs:%.o=%-native.o)) +endif + # This makes sure -DNOT_IN_libc is passed for all these modules. cpp-srcs-left := $(rpcgen-objs:.o=.c) lib := nonlib include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) # Tell rpcgen where to find the C preprocessor. +ifeq ($(cross-compiling),no) rpcgen-cmd = CPP='$(CC) -E -x c-header' $(built-program-cmd) -Y ../scripts +rpcgen = $(objpfx)rpcgen +else +rpcgen-cmd = CPP='$(CC) -E -x c-header' $(objpfx)rpcgen-native -Y ../scripts +rpcgen = $(objpfx)rpcgen-native +endif # Install the rpc data base file. $(inst_sysconfdir)/rpc: etc.rpc $(+force) @@ -153,7 +166,7 @@ # relinked. $(rpcsvc:%.x=$(objpfx)rpcsvc/%.h): $(objpfx)rpcsvc/%.h: $(objpfx)rpcsvc/%.stmp @: -$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)rpcgen +$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(rpcgen) $(make-target-directory) -@rm -f ${@:stmp=T} $@ $(rpcgen-cmd) -h $< -o ${@:stmp=T} @@ -163,7 +176,7 @@ # Generate the rpcsvc XDR functions with rpcgen. $(rpcsvc:%.x=$(objpfx)x%.c): $(objpfx)x%.c: $(objpfx)x%.stmp @: -$(objpfx)x%.stmp: rpcsvc/%.x $(objpfx)rpcgen +$(objpfx)x%.stmp: rpcsvc/%.x $(rpcgen) -@rm -f ${@:stmp=T} $@ $(rpcgen-cmd) -c $< -o ${@:stmp=T} $(move-if-change) $(@:stmp=T) $(@:stmp=c) diff -Naur glibc-2.5.orig/timezone/Makefile glibc-2.5/timezone/Makefile --- glibc-2.5.orig/timezone/Makefile 2006-11-23 23:07:53.000000000 -0500 +++ glibc-2.5/timezone/Makefile 2006-11-23 23:08:09.000000000 -0500 @@ -28,6 +28,9 @@ extra-objs := scheck.o ialloc.o others := zdump zic +ifneq ($(cross-compiling),no) +others-native := zic-native +endif tests := test-tz tst-timezone tzbases := africa antarctica asia australasia europe northamerica \ @@ -69,13 +72,10 @@ $(addprefix $(inst_zonedir)/, \ $(posixrules-file))) -ifeq ($(cross-compiling),no) -# Don't try to install the zoneinfo files since we can't run zic. install-others = $(addprefix $(inst_zonedir)/,$(zonenames) \ $(zonenames:%=posix/%) \ $(zonenames:%=right/%)) \ $(installed-localtime-file) $(installed-posixrules-file) -endif ifeq ($(have-ksh),yes) install-others += $(inst_zonedir)/iso3166.tab $(inst_zonedir)/zone.tab @@ -128,7 +128,11 @@ # We have to use `-d $(inst_zonedir)' to explictly tell zic where to # place the output files although $(zonedir) is compiled in. But the # user might have set $(install_root) on the command line of `make install'. +ifeq ($(cross-compiling),no) zic-cmd = $(built-program-cmd) -d $(inst_zonedir) +else +zic-cmd = $(common-objpfx)/timezone/zic-native -d $(inst_zonedir) +endif tzcompile = $(zic-cmd)$(target-zone-flavor) -L $(word 3,$^) \ -y $(dir $(word 4,$^))$(notdir $(word 4,$^)) $< @@ -158,8 +162,10 @@ $(zic-cmd) -p $(posixrules) endif - $(objpfx)zic: $(objpfx)scheck.o $(objpfx)ialloc.o +ifneq ($(cross-compiling),no) +$(objpfx)zic-native: $(objpfx)scheck-native.o $(objpfx)ialloc-native.o +endif tz-cflags = -DTZDIR='"$(zonedir)"' \ -DTZDEFAULT='"$(localtime-file)"' \