This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Dependency generation fixes


Tested natively on ppc-linux and with a ppc->m68k-linux cross.

Andreas.

2003-05-11  Andreas Schwab  <schwab@suse.de>

	* 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 <mach/syscall_sw.h>' | \
-	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 <bits/wordsize.h>.
 $(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 <bits/syscall.h> directly; include <sys/syscall.h> 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_<syscall>, pointing at SYS_<abi>_<syscall> if
 # it exists, but also define SYS_<abi>_<syscall> 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]