This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


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

[PATCH] hurd: fix for glibc install-headers target


Hello,

We are having trouble with bootstrapping glibc on Debian Hurd.  To get
crt*.o, we run

/usr/bin/make cross-compiling=yes -C build-tree/hurd-i386-libc  csu/subdir_lib

At some point it gets into

> /usr/bin/make -C ../mach mach-before-compile no_deps=t generating=t

then it builds a couple of things:

> make[4]: Entering directory '/tmp/glibc-2.19/mach'
> .././scripts/mkinstalldirs /tmp/glibc-2.19/build-tree/hurd-i386-libc/csu
> mkdir -p -- /tmp/glibc-2.19/build-tree/hurd-i386-libc/csu
> echo '#include <mach/syscall_sw.h>' | \
> i586-gnu-gcc-4.8 -std=gnu99 -fgnu89-inline  -O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants -frounding-math -g -pipe -Wno-parentheses -Wstrict-prototypes -mpreferred-stack-boundary=4      -isystem /tmp/glibc-2.19/debian/include  -I../include -I/tmp/glibc-2.19/build-tree/hurd-i386-libc/csu  -I/tmp/glibc-2.19/build-tree/hurd-i386-libc  -I../libpthread/sysdeps/mach/hurd/i386  -I../sysdeps/mach/hurd/i386  -I../libpthread/sysdeps/mach/hurd  -I../libpthread/sysdeps/hurd  -I../libpthread/sysdeps/pthread  -I../sysdeps/pthread  -I../sysdeps/mach/hurd  -I../sysdeps/gnu  -I../sysdeps/unix/bsd  -I../sysdeps/unix/inet  -I../sysdeps/../libpthread/sysdeps/generic  -I../libpthread/sysdeps/mach/i386  -I../sysdeps/mach/i386  -I../libpthread/sysdeps/mach  -I../sysdeps/mach  -I../sysdeps/i386/i586  -I../sysdeps/i386/i486  -I../sysdeps/i386/fpu  -I../sysdeps/x86/fpu  -I../libpthread/sysdeps/i386  -I../sysdeps/i386  -I../sysdeps/x86  -I../sysdeps/wordsize-32  -I../sysdeps/ieee754/ldbl-96  -I../sysdeps/ieee754/dbl-64  -I../sysdeps/ieee754/flt-32  -I../sysdeps/unix  -I../sysdeps/posix  -I../libpthread/sysdeps/posix  -I../sysdeps/ieee754  -I../sysdeps/generic  -I../libpthread/include -I../libpthread -I../hurd -I/tmp/glibc-2.19/build-tree/hurd-i386-libc/hurd/ -I../mach -I/tmp/glibc-2.19/build-tree/hurd-i386-libc/mach/ -I.. -I../libio -I. -nostdinc -isystem /usr/lib/gcc/i586-gnu/4.8/include -isystem /usr/lib/gcc/i586-gnu/4.8/include-fixed -isystem /tmp/glibc-2.19/debian/include -I../libpthread/include  -D_LIBC_REENTRANT -include ../include/libc-symbols.h       -E -MD -MP -MF /tmp/glibc-2.19/build-tree/hurd-i386-libc/csu/mach-syscalls.mk-dep -MT /tmp/glibc-2.19/build-tree/hurd-i386-libc/csu/mach-syscalls.mk \
>       -x c-header - \
>       -D_MACH_`echo i386 | tr a-z A-Z`_SYSCALL_SW_H_=1 | \
> sed -n -e 's/^kernel_trap(\(.*\),\([-0-9]*\),\([0-9]*\))$/\1 \2 \3/p'\
> | gawk -f syscalls.awk > /tmp/glibc-2.19/build-tree/hurd-i386-libc/csu/mach-syscalls.mk-new
> sed -e 's@ /tmp/glibc-2\.19/build-tree/hurd-i386-libc/@ $(common-objpfx)@g' -e 's@^/tmp/glibc-2\.19/build-tree/hurd-i386-libc/@$(common-objpfx)@g' /tmp/glibc-2.19/build-tree/hurd-i386-libc/csu/mach-syscalls.mk-dep >> /tmp/glibc-2.19/build-tree/hurd-i386-libc/csu/mach-syscalls.mk-new
> rm -f /tmp/glibc-2.19/build-tree/hurd-i386-libc/csu/mach-syscalls.mk-dep
> mv -f /tmp/glibc-2.19/build-tree/hurd-i386-libc/csu/mach-syscalls.mk-new /tmp/glibc-2.19/build-tree/hurd-i386-libc/csu/mach-syscalls.mk
> /usr/bin/make -C ../mach mach-before-compile no_deps=t generating=t
> make[5]: Entering directory '/tmp/glibc-2.19/mach'
> /usr/bin/make -C ../mach mach-before-compile no_deps=t generating=t
> make[6]: Entering directory '/tmp/glibc-2.19/mach'

and this goes on at infinitum. Make -d shows that it is trying to build
/tmp/glibc-2.19/build-tree/hurd-i386-libc/mach/mach-shortcuts.h
and adding a $(warning) shows that the generated mach-shortcuts.h rule
is for /tmp/glibc-2.19/build-tree/hurd-i386-libc/csu/mach-shortcuts.h
(in csu/ instead of mach/).  AIUI, the patch below would be needed to
fix the objpfx so that the proper rule is generated, isn't it?

Samuel

diff --git a/sysdeps/mach/Makefile b/sysdeps/mach/Makefile
index b47cdc6..3323e81 100644
--- a/sysdeps/mach/Makefile
+++ b/sysdeps/mach/Makefile
@@ -43,7 +43,7 @@ ifneq (mach,$(subdir))
 # This patsubst generates patterns like `m%h-shortcuts.h', which are damn
 # likely to match just the corresponding particular file we want.
 $(patsubst mach%,m\%h%,$(mach-before-compile)): # Run only if doesn't exist.
-	$(MAKE) -C $(..)mach mach-before-compile no_deps=t generating=t
+	$(MAKE) -C $(..)mach subdir=mach mach-before-compile no_deps=t generating=t
 
 before-compile += $(mach-before-compile)
 endif
diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile
index b528815..244ac4b 100644
--- a/sysdeps/mach/hurd/Makefile
+++ b/sysdeps/mach/hurd/Makefile
@@ -48,13 +48,13 @@ hurd-objpfx = $(common-objpfx)hurd/
 before-compile += $(patsubst %,$(hurd-objpfx)hurd/%.h,auth io fs process)
 $(patsubst %,$(hurd-objpfx)hurd/%.%,auth io fs process): \
   $(common-objpfx)mach/mach-shortcuts.h
-	$(MAKE) -C $(..)hurd before-compile no_deps=t
+	$(MAKE) -C $(..)hurd subdir=hurd before-compile no_deps=t
 endif
 
 # Hurd profil.c includes this file, so give a rule to make it.
 ifeq ($(subdir),gmon)
 $(common-objpfx)hurd/../mach/RPC_task_get_sampled_pcs.c:
-	$(MAKE) -C $(..)mach before-compile no_deps=t
+	$(MAKE) -C $(..)mach subdir=mach before-compile no_deps=t
 endif
 
 


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