On Sun, Aug 26, 2012 at 06:51:37PM -0700, Bryan Kadzban wrote:
> 
> Uh, isn't that backwards?  :-)
> 
> BUILD_CC is the CC to use to build programs that will be executed on the
> cross-compilation *source* architecture, not the destination. ${LFS_TGT}
> is the destination arch.  The glibc sources are trying to build this
> program for the source.
> 
 And we think we don't want it, because "we never used to need this,
grumble, grumble" ;-)

> This actually also means that host includes (and libs) are *absolutely*
> required to be here.  This output doesn't get linked into the cross
> glibc, so this is *not* actually a contamination from the host system.
> (Only the output of rpcgen, after it gets built and run, is used.)
> 
> This does mean, however, that the host does really need the rpc/types.h
> header file installed, so on systems that don't have it, glibc won't
> build...
> 
> 
 I'm glad someone here understands this stuff (I certainly don't), but
I'm still expecting to see moans about this new requirement,

 I've just had another go, reverting first
commit 656416c96528437f54b345b1470aaa40f145ed30
Author: Andreas Schwab <sch...@linux-m68k.org>
Date:   Sat May 12 08:40:20 2012 +0200

    Fix dependency tracking on cross-rpcgen-objs

 and then the other commit.  Strangely, the Changelog parts of the
commits don't revert, but the rest does.  I've now got in to gcc
pass 2 (without the extra sed or the CC override).  Still with the
rpc headers pushed out of the way.

 I'll keep this running to see if it completes.

 I don't _think_ that the host's rpc headers are critical at this
stage, but I'm not a toolchain expert.

 Even if my revert works, we don't really want to keep carrying this
for our own "idiosyncratic" pure build - it's the sort of thing that
will be fun to fix whenever that part of the code gets changed.
But, FWIW, I'll attach it - it's the sort of thing that will be fun
to fix whenever that part of the code gets changed.

ĸen
-- 
das eine Mal als Tragödie, das andere Mal als Farce
 Reverts 656416c9 and 28e72501 except for the Changelog parts, which failed to 
apply.

 The aim is to NOT use the host compiler/headers to do am rpcgen install if
cross compiling - for LFS, we want to insulate ourselves from the host system.


diff -Naur glibc-2.16.0.orig/Makerules glibc-2.16.0/Makerules
--- glibc-2.16.0.orig/Makerules 2012-06-30 20:12:34.000000000 +0100
+++ glibc-2.16.0/Makerules      2012-08-27 02:56:32.411912202 +0100
@@ -356,11 +356,6 @@
 compile-command.c = $(compile.c) $(OUTPUT_OPTION) $(compile-mkdep-flags)
 compile-command.cc = $(compile.cc) $(OUTPUT_OPTION) $(compile-mkdep-flags)
 
-# Like compile-mkdep-flags, but for use with $(BUILD_CC).  We don't want to
-# track system includes here, they may spuriously trigger an install rule,
-# and would cause the check-local-headers test to fail.
-native-compile-mkdep-flags = -MMD -MP -MF $@.dt -MT $@
-
 # GCC can grok options after the file name, and it looks nicer that way.
 compile.c = $(CC) $< -c $(CFLAGS) $(CPPFLAGS)
 compile.cc = $(CXX) $< -c $(CXXFLAGS) $(CPPFLAGS)
diff -Naur glibc-2.16.0.orig/sunrpc/Makefile glibc-2.16.0/sunrpc/Makefile
--- glibc-2.16.0.orig/sunrpc/Makefile   2012-06-30 20:12:34.000000000 +0100
+++ glibc-2.16.0/sunrpc/Makefile        2012-08-27 02:58:31.406827581 +0100
@@ -91,7 +91,7 @@
 rpcgen-objs = rpc_main.o rpc_hout.o rpc_cout.o rpc_parse.o \
              rpc_scan.o rpc_util.o rpc_svcout.o rpc_clntout.o \
              rpc_tblout.o rpc_sample.o
-extra-objs = $(rpcgen-objs) $(addprefix cross-,$(rpcgen-objs))
+extra-objs = $(rpcgen-objs)
 others += rpcgen
 
 all: # Make this the default target; it will be defined in Rules.
@@ -103,12 +103,15 @@
 xtests += thrsvc
 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
 
 ifeq (yes,$(build-shared))
 rpc-compat-routines = $(addprefix compat-,$(need-export-routines))
@@ -146,9 +149,7 @@
 CFLAGS-clnt_perr.c = -fexceptions
 CFLAGS-openchild.c = -fexceptions
 
-sunrpc-CPPFLAGS = -D_RPC_THREAD_SAFE_
-CPPFLAGS += $(sunrpc-CPPFLAGS)
-BUILD_CPPFLAGS += $(sunrpc-CPPFLAGS)
+CPPFLAGS += -D_RPC_THREAD_SAFE_
 
 $(objpfx)tst-getmyaddr: $(common-objpfx)linkobj/libc.so
 $(objpfx)tst-xdrmem: $(common-objpfx)linkobj/libc.so
@@ -156,28 +157,13 @@
 
 $(objpfx)rpcgen: $(addprefix $(objpfx),$(rpcgen-objs))
 
-cross-rpcgen-objs := $(addprefix $(objpfx)cross-,$(rpcgen-objs))
-
-# When generic makefile support for build system programs is
-# available, it should replace this code.  See
-# <http://sourceware.org/bugzilla/show_bug.cgi?id=14087>.
-$(cross-rpcgen-objs): $(objpfx)cross-%.o: %.c $(before-compile)
-       $(BUILD_CC) $($(basename $(<F))-CFLAGS) $(ALL_BUILD_CFLAGS) $< \
-               $(OUTPUT_OPTION) $(native-compile-mkdep-flags) -c
-
-$(objpfx)cross-rpcgen: $(cross-rpcgen-objs)
-       $(BUILD_CC) $^ $(BUILD_LDFLAGS) -o $@
-
 # 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))
 
-# How we run rpcgen to generate sources and headers in the rules below.
-# Setting CPP tells it how to run the C preprocessor correctly.  Note
-# that $(built-program-file) requires that the just-built cross-rpcgen
-# binary be the second dependency listed in each rule using rpcgen-cmd.
-rpcgen-cmd = CPP='$(CC) -E -x c-header' $(built-program-file) -Y ../scripts
+# Tell rpcgen where to find the C preprocessor.
+rpcgen-cmd = CPP='$(CC) -E -x c-header' $(built-program-cmd) -Y ../scripts
 
 # Install the rpc data base file.
 $(inst_sysconfdir)/rpc: etc.rpc $(+force)
@@ -188,7 +174,7 @@
 # relinked.
 $(rpcsvc:%.x=$(objpfx)rpcsvc/%.h): $(objpfx)rpcsvc/%.h: $(objpfx)rpcsvc/%.stmp
        @:
-$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)cross-rpcgen
+$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)rpcgen
        $(make-target-directory)
        -@rm -f ${@:stmp=T} $@
        $(rpcgen-cmd) -h $< -o ${@:stmp=T}
@@ -198,7 +184,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)cross-rpcgen
+$(objpfx)x%.stmp: rpcsvc/%.x $(objpfx)rpcgen
        -@rm -f ${@:stmp=T} $@
        $(rpcgen-cmd) -c $< -o ${@:stmp=T}
        $(move-if-change) $(@:stmp=T) $(@:stmp=c)
diff -Naur glibc-2.16.0.orig/sunrpc/proto.h glibc-2.16.0/sunrpc/proto.h
--- glibc-2.16.0.orig/sunrpc/proto.h    2012-06-30 20:12:34.000000000 +0100
+++ glibc-2.16.0/sunrpc/proto.h 2012-08-27 02:58:31.406827581 +0100
@@ -50,19 +50,3 @@
 void tabify(FILE *f, int tab);
 char *make_argname(const char *pname, const char *vname);
 void add_type(int len, const char *type);
-
-/* This header is the last one included in all rpc_*.c files,
-   so we define stuff for cross-rpcgen here to avoid conflicts with
-   $build's C library and $host's glibc.  */
-
-#ifdef IS_IN_build
-
-/* Disable translated messages when built for $build and used in
-   building glibc.  */
-#define _(X) (X)
-#define textdomain(X) ((void) 0)
-
-/* This is used in the definition of PACKAGE for --version output.  */
-#define _libc_intl_domainname "libc"
-
-#endif
-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to