From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32480 invoked by alias); 11 May 2003 16:08:56 -0000 Mailing-List: contact libc-hacker-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-hacker-owner@sources.redhat.com Received: (qmail 32464 invoked from network); 11 May 2003 16:08:56 -0000 Received: from unknown (HELO mout2.freenet.de) (194.97.50.155) by sources.redhat.com with SMTP; 11 May 2003 16:08:56 -0000 Received: from [194.97.50.136] (helo=mx3.freenet.de) by mout2.freenet.de with asmtp (Exim 4.15) id 19EtNf-0004L5-IV for libc-hacker@sources.redhat.com; Sun, 11 May 2003 18:08:55 +0200 Received: from a7d58.pppool.de ([213.6.125.88] helo=whitebox.local) by mx3.freenet.de with esmtp (Exim 4.15 #3) id 19EtNc-0002T9-JD for libc-hacker@sources.redhat.com; Sun, 11 May 2003 18:08:53 +0200 Received: from whitebox.local (localhost [127.0.0.1]) by whitebox.local (8.12.7/8.12.7/SuSE Linux 0.6) with ESMTP id h4BG6NXP004860 for ; Sun, 11 May 2003 18:06:23 +0200 Received: (from andreas@localhost) by whitebox.local (8.12.7/8.12.7/Submit) id h4BG6MrK004857; Sun, 11 May 2003 18:06:22 +0200 X-Authentication-Warning: whitebox.local: andreas set sender to schwab@suse.de using -f To: libc-hacker@sources.redhat.com Subject: Dependency generation fixes X-Yow: Xerox your lunch and file it under ``sex offenders!'' From: Andreas Schwab Date: Sun, 11 May 2003 16:08:00 -0000 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2003-05/txt/msg00015.txt.bz2 Tested natively on ppc-linux and with a ppc->m68k-linux cross. Andreas. 2003-05-11 Andreas Schwab * Makerules: Always use -MP together with -MD. (set-remove-dotot): Substitute $(..) also at start of line. ($(stdio_lim:h=st)): Use -MD instead of SUNPRO_DEPENDENCIES. Generated defines with a single compiler call. Use $(sed-remove-dotdot). * mach/Makefile ($(objpfx)mach-syscalls.mk): Use -MD instead of DEPENDENCIES_OUTPUT, and use $(sed-remove-objpfx). * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): Use -MD instead of SUNPRO_DEPENDENCIES, and use $(sed-remove-objpfx). * sysdeps/unix/sysv/linux/mips/Makefile ($(objpfx)syscall-%.h): Likewise. --- Makerules.~1.409.~ 2003-05-05 22:25:20.000000000 +0200 +++ Makerules 2003-05-11 15:31:37.000000000 +0200 @@ -166,7 +166,7 @@ $(common-objpfx)%.make: $(..)%.make.c $( rm -f $@T $@.dT (echo '# Generated from $*.make.c by Makerules.'; \ $(CC) $(CFLAGS) $(CPPFLAGS) -E $< \ - -MD -MT '$$(common-objpfx)$*.make' -MF $@.dT \ + -MD -MP -MT '$$(common-objpfx)$*.make' -MF $@.dT \ | sed -n '/@@@/{s/@@@[ ]*\(.*\)@@@/\1/;s/[ ]*$$//p;}'; \ echo 'common-generated += $(@F)'; \ sed $(sed-remove-objpfx) $(sed-remove-dotdot) $@.dT; \ @@ -175,9 +175,11 @@ $(common-objpfx)%.make: $(..)%.make.c $( endif ifdef subdir -sed-remove-dotdot := -e 's@ *\.\.\/\([^ \]*\)@ $$(..)\1@g' +sed-remove-dotdot := -e 's@ *\.\.\/\([^ \]*\)@ $$(..)\1@g' \ + -e 's@^\.\.\/\([^ \]*\)@$$(..)\1@g' else -sed-remove-dotdot := -e 's@ *\([^ \/$$][^ \]*\)@ $$(..)\1@g' +sed-remove-dotdot := -e 's@ *\([^ \/$$][^ \]*\)@ $$(..)\1@g' \ + -e 's@^\([^ \/$$][^ \]*\)@$$(..)\1@g' endif @@ -188,7 +190,7 @@ $(common-objpfx)%.h $(common-objpfx)%.h. %.sym $(common-before-compile) $(AWK) -f $< $(filter %.sym,$^) \ | $(CC) -S -o - $(CFLAGS) $(CPPFLAGS) -x c - \ - -MD -MF $(@:.h=.h.d)T -MT '$(@:.h=.h.d) $(@:.h.d=.h)' \ + -MD -MP -MF $(@:.h=.h.d)T -MT '$(@:.h=.h.d) $(@:.h.d=.h)' \ | sed -n 's/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$$/#define \1 \2/p' > $(@:.h.d=.h)T sed $(sed-remove-objpfx) $(sed-remove-dotdot) \ $(@:.h=.h.d)T > $(@:.h=.h.d)T2 @@ -1232,7 +1234,6 @@ endif endif # There's no good place to put this - here will do. -# The dependencies are wrong if it's run from the top level. ifeq ($(filter %posix, $(sysdirs)),) L_tmpnam = 1 TMP_MAX = 0 @@ -1250,24 +1251,20 @@ $(stdio_lim:lim.h=%.h) $(stdio_lim:lim.h $(stdio_lim:h=st): $(..)stdio-common/stdio_lim.h.in $(..)Rules \ $(common-objpfx)config.make $(make-target-directory) - echo '#include "$(..)posix/bits/posix1_lim.h"' | \ - SUNPRO_DEPENDENCIES='$(@:st=dT) $@' \ - $(CC) $(+includes) -E -dM -xc - -o $(@:st=hT) - echo '#include "$(..)misc/sys/uio.h"' | \ - SUNPRO_DEPENDENCIES='$(@:st=dT) $@' \ - $(CC) -D_LIBC=1 $(+includes) -E -dM -xc - | cat - >> $(@:st=hT) -ifdef sed-remove-objpfx - sed $(sed-remove-objpfx) $(@:st=dT) > $(@:st=dt) - cat $(@:st=dt) >> $(@:st=d) -else - cat $(@:st=dT) >> $(@:st=d) -endif + { echo '#include "$(..)posix/bits/posix1_lim.h"'; \ + echo '#define _LIBC 1'; \ + echo '#include "$(..)misc/sys/uio.h"'; } | \ + $(CC) -E -dM -MD -MP -MF $(@:st=dT) -MT '$(@:st=h) $(@:st=d)' \ + $(+includes) -xc - -o $(@:st=hT) + sed $(sed-remove-objpfx) $(sed-remove-dotdot) \ + $(@:st=dT) > $(@:st=dt) + mv -f $(@:st=dt) $(@:st=d) fopen_max=`sed -n 's/^#define OPEN_MAX //1p' $(@:st=hT)`; \ filename_max=`sed -n 's/^#define PATH_MAX //1p' $(@:st=hT)`; \ iov_max=`sed -n 's/^#define UIO_MAXIOV //p' $(@:st=hT)`; \ fopen_max=$${fopen_max:-16}; \ filename_max=$${filename_max:-1024}; \ - if [ -z $$iov_max ]; then \ + if [ -z "$$iov_max" ]; then \ define_iov_max="# undef IOV_MAX"; \ else \ define_iov_max="# define IOV_MAX $$iov_max"; \ --- mach/Makefile.~1.106.~ 2003-02-16 22:14:17.000000000 +0100 +++ mach/Makefile 2003-05-11 16:34:36.000000000 +0200 @@ -79,12 +79,17 @@ $(objpfx)mach-syscalls.mk: syscalls.awk $(make-target-directory) # We must use $(CFLAGS) to get -O flags that affect #if's in header files. echo '#include ' | \ - DEPENDENCIES_OUTPUT='$@-dep $@' \ - $(CC) $(CFLAGS) $(CPPFLAGS) -E -x c-header - \ + $(CC) $(CFLAGS) $(CPPFLAGS) -E -MD -MP -MF $@-dep -MT $@ \ + -x c-header - \ -D_MACH_`echo $(mach-machine) | tr a-z A-Z`_SYSCALL_SW_H_=1 | \ sed -n -e 's/^kernel_trap(\(.*\),\([-0-9]*\),\([0-9]*\))$$/\1 \2 \3/p'\ | $(AWK) -f $< > $@-new - cat $@-dep >> $@-new; rm -f $@-dep +ifneq (,$(objpfx)) + sed $(sed-remove-objpfx) $@-dep >> $@-new +else + cat $@-dep >> $@-new +endif + rm -f $@-dep mv -f $@-new $@ generated += mach-syscalls.mk --- sysdeps/unix/sysv/linux/Makefile.~1.132.~ 2003-05-10 23:22:42.000000000 +0200 +++ sysdeps/unix/sysv/linux/Makefile 2003-05-11 16:36:43.000000000 +0200 @@ -30,7 +30,6 @@ install-others += $(inst_includedir)/bit # we generate a file that uses . $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/sys/syscall.h $(make-target-directory) - rm -f $(@:.h=.d)-t { \ echo '/* Generated at libc build time from kernel syscall list. */';\ echo ''; \ @@ -38,14 +37,14 @@ $(objpfx)syscall-%.h $(objpfx)syscall-%. echo '# error "Never use directly; include instead."'; \ echo '#endif'; \ echo ''; \ - SUNPRO_DEPENDENCIES='$(@:.h=.d)-t $@' \ - $(CC) -E -x c $(sysincludes) $< $(addprefix -U,$(64bit-predefine)) \ - $(addprefix -D,$(32bit-predefine)) -D_LIBC -dM | \ + $(CC) -E -MD -MP -MF $(@:.h=.d)-t1 -MT '$(@:.d=.h) $(@:.h=.d)' \ + -x c $(sysincludes) $< $(addprefix -U,$(64bit-predefine)) \ + $(addprefix -D,$(32bit-predefine)) -D_LIBC -dM | \ sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \ LC_ALL=C sort > $(@:.d=.h).new32; \ - SUNPRO_DEPENDENCIES='$(@:.h=.d)-t $@' \ - $(CC) -E -x c $(sysincludes) $< $(addprefix -U,$(32bit-predefine)) \ - $(addprefix -D,$(64bit-predefine)) -D_LIBC -dM | \ + $(CC) -E -MD -MP -MF $(@:.h=.d)-t2 -MT '$(@:.d=.h) $(@:.h=.d)' \ + -x c $(sysincludes) $< $(addprefix -U,$(32bit-predefine)) \ + $(addprefix -D,$(64bit-predefine)) -D_LIBC -dM | \ sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \ LC_ALL=C sort > $(@:.d=.h).new64; \ if cmp -s $(@:.d=.h).new32 $(@:.d=.h).new64; then \ @@ -63,12 +62,13 @@ $(objpfx)syscall-%.h $(objpfx)syscall-%. rm -f $(@:.d=.h).new32 $(@:.d=.h).new64; \ } > $(@:.d=.h).new mv -f $(@:.d=.h).new $(@:.d=.h) - sed < $(@:.h=.d)-t > $(@:.h=.d)-t2 \ - -e 's,$(subst .,\.,$@),$(patsubst $(objpfx)%,$$(objpfx)%,\ - $(@:.d=.h) $(@:.h=.d)),' - rm -f $(@:.h=.d)-t - mv -f $(@:.h=.d)-t2 $(@:.h=.d) - +ifneq (,$(objpfx)) + sed $(sed-remove-objpfx) $(@:.h=.d)-t1 $(@:.h=.d)-t2 > $(@:.h=.d)-t3 +else + cat $(@:.h=.d)-t1 $(@:.h=.d)-t2 > $(@:.h=.d)-t3 +endif + rm -f $(@:.h=.d)-t1 $(@:.h=.d)-t2 + mv -f $(@:.h=.d)-t3 $(@:.h=.d) $(inst_includedir)/bits/syscall.h: $(objpfx)syscall-list.h $(+force) $(make-target-directory) --- sysdeps/unix/sysv/linux/mips/Makefile.~1.8.~ 2003-03-18 15:22:13.000000000 +0100 +++ sysdeps/unix/sysv/linux/mips/Makefile 2003-05-11 16:39:00.000000000 +0200 @@ -15,7 +15,6 @@ no_syscall_list_h = 1 # We generate not only SYS_, pointing at SYS__ if # it exists, but also define SYS__ for all ABIs. $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/mips/sys/syscall.h - rm -f $(@:.h=.d)-t { \ echo '/* Generated at libc build time from kernel syscall list. */';\ echo ''; \ @@ -24,9 +23,10 @@ $(objpfx)syscall-%.h $(objpfx)syscall-%. echo '#endif'; \ echo ''; \ rm -f $(@:.d=.h).newt; \ - SUNPRO_DEPENDENCIES='$(@:.h=.d)-t $@' \ - $(CC) -E -x c -I $(common-objdir) $(sysincludes) $< -D_LIBC -dM | \ - sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' > $(@:.d=.h).newt; \ + $(CC) -E -MD -MP -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' \ + -x c -I $(common-objdir) $(sysincludes) $< -D_LIBC -dM | \ + sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' \ + > $(@:.d=.h).newt; \ if grep SYS_O32_ $(@:.d=.h).newt > /dev/null; then \ echo '#if defined _ABI64 && _MIPS_SIM == _ABI64'; \ sed -n 's/^\(#define SYS_\)N64_/\1/p' < $(@:.d=.h).newt; \ @@ -42,9 +42,10 @@ $(objpfx)syscall-%.h $(objpfx)syscall-%. rm $(@:.d=.h).newt; \ } > $(@:.d=.h).new mv -f $(@:.d=.h).new $(@:.d=.h) - sed < $(@:.h=.d)-t > $(@:.h=.d)-t2 \ - -e 's,$(subst .,\.,$@),$(patsubst $(objpfx)%,$$(objpfx)%,\ - $(@:.d=.h) $(@:.h=.d)),' +ifneq (,$(objpfx)) + sed $(sed-remove-objpfx) $(@:.h=.d)-t > $(@:.h=.d)-t2 rm -f $(@:.h=.d)-t mv -f $(@:.h=.d)-t2 $(@:.h=.d) +else + mv -f $(@:.h=.d)-t $(@:.h=.d) endif