[git commit nptl] nptl: make build depend directly on nptl headers

Carmelo AMOROSO carmelo.amoroso at st.com
Fri Dec 11 13:18:46 UTC 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Austin Foxley wrote:
> commit: http://git.uclibc.org/uClibc/commit/?id=641e7e36ad0a9b2899b04f256c5b243ada7da279
> branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/nptl
> 
> gets rid of nptl_headers,nptl_arch_headers,nptl_linux_headers targets
> 
> also, clean up extra slashes in i386/sparc and unify the implementation
> of nptl header generation between all archs
> 
> Signed-off-by: Austin Foxley <austinf at cetoncorp.com>
> ---
>  Makefile.in                                        |    2 +-
>  libpthread/nptl/Makefile.in                        |    7 ++-----
>  libpthread/nptl/sysdeps/arm/Makefile.arch          |   15 +++++++--------
>  libpthread/nptl/sysdeps/i386/Makefile.arch         |    7 +++----
>  libpthread/nptl/sysdeps/mips/Makefile.arch         |   17 ++++++++---------
>  libpthread/nptl/sysdeps/sh/Makefile.arch           |    3 +--
>  libpthread/nptl/sysdeps/sparc/Makefile.arch        |    7 +++----
>  .../nptl/sysdeps/unix/sysv/linux/Makefile.in       |    9 ++++-----
>  8 files changed, 29 insertions(+), 38 deletions(-)
> 
> diff --git a/Makefile.in b/Makefile.in
> index 90cb631..28d9bc8 100644
> --- a/Makefile.in
> +++ b/Makefile.in
> @@ -160,7 +160,7 @@ headers-y += $(target-headers-sysdep)
>  
>  headers: $(top_builddir)include/bits/uClibc_config.h
>  subdirs: $(addprefix $(top_builddir),$(subdirs))
> -pregen: $(top_builddir)include/bits/sysnum.h headers subdirs $(pthread_pregen)
> +pregen: $(top_builddir)include/bits/sysnum.h headers subdirs
>  	$(Q)$(if $(UCLIBC_HAS_LOCALE),$(MAKE) -C extra/locale locale_headers)
>  
>  $(top_builddir)include/bits/sysnum.h: $(top_srcdir)extra/scripts/gen_bits_syscall_h.sh
> diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in
> index 9b4ba51..6f982bc 100644
> --- a/libpthread/nptl/Makefile.in
> +++ b/libpthread/nptl/Makefile.in
> @@ -261,8 +261,6 @@ headers_clean-y += nptl_headers_clean
>  -include $(PTHREAD_DIR)/sysdeps/unix/sysv/linux/Makefile.in
>  -include $(PTHREAD_DIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/Makefile.arch
>  
> -pthread_pregen := nptl_headers nptl_arch_headers nptl_linux_headers
> -
>  lib-a-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.a
>  lib-so-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.so
>  
> @@ -322,9 +320,8 @@ nptl_headers_bootstrap:= $(top_builddir)include/pthread.h \
>  		$(top_builddir)include/bits/semaphore.h \
>  		$(top_builddir)include/bits/pthreadtypes.h \
>  		$(top_builddir)include/bits/libc-lock.h \
> -		$(top_builddir)include/bits/stdio-lock.h
> -
> -nptl_headers: $(PTHREAD_OUT)/pthread-errnos.h
> +		$(top_builddir)include/bits/stdio-lock.h \
> +		$(PTHREAD_OUT)/pthread-errnos.h
>  
>  nptl_headers_clean:
>  	$(do_rm) $(nptl_headers_bootstrap) \
> diff --git a/libpthread/nptl/sysdeps/arm/Makefile.arch b/libpthread/nptl/sysdeps/arm/Makefile.arch
> index 6d16ae3..79c8832 100644
> --- a/libpthread/nptl/sysdeps/arm/Makefile.arch
> +++ b/libpthread/nptl/sysdeps/arm/Makefile.arch
> @@ -43,7 +43,8 @@ librt-so-y += $(LIBRT_ARCH_OBJ:.o=.oS)
>  
>  libpthread-nomulti-y += $(PTHREAD_ARCH_OBJ)
>  
> -objclean-y += nptl_arch_objclean
> +objclean-y += nptl_arch_clean
> +headers-y += $(PTHREAD_ARCH_OUT)/tcb-offsets.h
>  headers_clean-y += nptl_arch_headers_clean
>  
>  #
> @@ -57,13 +58,11 @@ $(PTHREAD_ARCH_OUT)/tcb-offsets.c: $(PTHREAD_ARCH_DIR)/tcb-offsets.sym
>  $(PTHREAD_ARCH_OUT)/tcb-offsets.s: $(PTHREAD_ARCH_OUT)/tcb-offsets.c
>  	$(compile.c)
>  
> -nptl_arch_headers: $(PTHREAD_ARCH_OUT)/tcb-offsets.s
> -	$(do_sed) -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $(PTHREAD_ARCH_OUT)/tcb-offsets.h
> +$(PTHREAD_ARCH_OUT)/tcb-offsets.h: $(PTHREAD_ARCH_OUT)/tcb-offsets.s
> +	$(do_sed) -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $@
>  
>  nptl_arch_headers_clean:
> -	$(RM) $(PTHREAD_ARCH_OUT)/tcb-offsets.c		\
> -	      $(PTHREAD_ARCH_OUT)/tcb-offsets.s		\
> -	      $(PTHREAD_ARCH_OUT)/tcb-offsets.h
> +	$(do_rm) $(addprefix $(PTHREAD_ARCH_OUT)/tcb-offsets., c s h)
>  
> -nptl_arch_objclean:
> -	$(RM) $(PTHREAD_ARCH_OUT)/*.{o,os,oS}
> +nptl_arch_clean:
> +	$(do_rm) $(addprefix $(PTHREAD_ARCH_OUT)/*., o os oS)
> diff --git a/libpthread/nptl/sysdeps/i386/Makefile.arch b/libpthread/nptl/sysdeps/i386/Makefile.arch
> index 2b9a2dc..2b8fbbf 100644
> --- a/libpthread/nptl/sysdeps/i386/Makefile.arch
> +++ b/libpthread/nptl/sysdeps/i386/Makefile.arch
> @@ -13,8 +13,8 @@ CFLAGS-pthread_spin_lock.c += -D_GNU_SOURCE
>  CFLAGS-i386 = $(SSP_ALL_CFLAGS)
>  #CFLAGS:=$(CFLAGS:-O1=-O2)
>  
> -PTHREAD_ARCH_DIR := $(top_srcdir)libpthread/nptl/sysdeps/i386/
> -PTHREAD_ARCH_OUT := $(top_builddir)libpthread/nptl/sysdeps/i386/
> +PTHREAD_ARCH_DIR := $(top_srcdir)libpthread/nptl/sysdeps/i386
> +PTHREAD_ARCH_OUT := $(top_builddir)libpthread/nptl/sysdeps/i386
>  PTHREAD_ARCH_OBJ := $(patsubst %.S,$(PTHREAD_ARCH_OUT)/%.o,$(libpthread_SSRC))
>  PTHREAD_ARCH_OBJ += $(patsubst %.c,$(PTHREAD_ARCH_OUT)/%.o,$(libpthread_CSRC))
>  
> @@ -28,6 +28,7 @@ libpthread-so-y += $(PTHREAD_ARCH_OBJ:.o=.oS)
>  libpthread-nomulti-y += $(PTHREAD_ARCH_OBJ)
>  
>  objclean-y += nptl_arch_clean
> +headers-y += $(PTHREAD_ARCH_OUT)/tcb-offsets.h
>  headers_clean-y += nptl_arch_headers_clean
>  
>  #
> @@ -44,8 +45,6 @@ $(PTHREAD_ARCH_OUT)/tcb-offsets.s: $(PTHREAD_ARCH_OUT)/tcb-offsets.c
>  $(PTHREAD_ARCH_OUT)/tcb-offsets.h: $(PTHREAD_ARCH_OUT)/tcb-offsets.s
>  	@sed -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $@
>  
> -nptl_arch_headers: $(PTHREAD_ARCH_OUT)/tcb-offsets.h
> -
>  nptl_arch_headers_clean:
>  	$(do_rm) $(addprefix $(PTHREAD_ARCH_OUT)/tcb-offsets., c s h)
>  
> diff --git a/libpthread/nptl/sysdeps/mips/Makefile.arch b/libpthread/nptl/sysdeps/mips/Makefile.arch
> index 5d77b00..9e93eca 100644
> --- a/libpthread/nptl/sysdeps/mips/Makefile.arch
> +++ b/libpthread/nptl/sysdeps/mips/Makefile.arch
> @@ -39,7 +39,8 @@ libc-static-y += $(LIBC_ARCH_OBJ)
>  
>  libc-nomulti-y += $(LIBC_ARCH_OBJ)
>  
> -objclean-y += nptl_arch_objclean
> +objclean-y += nptl_arch_clean
> +headers-y += $(PTHREAD_ARCH_OUT)/tcb-offsets.h
>  headers_clean-y += nptl_arch_headers_clean
>  
>  #
> @@ -48,18 +49,16 @@ headers_clean-y += nptl_arch_headers_clean
>  CFLAGS-tcb-offsets.c = -S
>  
>  $(PTHREAD_ARCH_OUT)/tcb-offsets.c: $(PTHREAD_ARCH_DIR)/tcb-offsets.sym
> -	awk -f $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
> +	$(do_awk) $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
>  
>  $(PTHREAD_ARCH_OUT)/tcb-offsets.s: $(PTHREAD_ARCH_OUT)/tcb-offsets.c
>  	$(compile.c)
>  
> -nptl_arch_headers: $(PTHREAD_ARCH_OUT)/tcb-offsets.s
> -	$(do_sed) -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $(PTHREAD_ARCH_OUT)/tcb-offsets.h
> +$(PTHREAD_ARCH_OUT)/tcb-offsets.h: $(PTHREAD_ARCH_OUT)/tcb-offsets.s
> +	$(do_sed) -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $@
>  
>  nptl_arch_headers_clean:
> -	$(RM) $(PTHREAD_ARCH_OUT)/tcb-offsets.c		\
> -	      $(PTHREAD_ARCH_OUT)/tcb-offsets.s		\
> -	      $(PTHREAD_ARCH_OUT)/tcb-offsets.h
> +	$(do_rm) $(addprefix $(PTHREAD_ARCH_OUT)/tcb-offsets., c s h)
>  
> -nptl_arch_objclean:
> -	$(RM) $(PTHREAD_ARCH_OUT)/*.{o,os,oS}
> +nptl_arch_clean:
> +	$(do_rm) $(addprefix $(PTHREAD_ARCH_OUT)/*., o os oS)
> diff --git a/libpthread/nptl/sysdeps/sh/Makefile.arch b/libpthread/nptl/sysdeps/sh/Makefile.arch
> index 83db10f..322b455 100644
> --- a/libpthread/nptl/sysdeps/sh/Makefile.arch
> +++ b/libpthread/nptl/sysdeps/sh/Makefile.arch
> @@ -31,6 +31,7 @@ libpthread-so-y += $(PTHREAD_ARCH_OBJ:.o=.oS)
>  libpthread-nomulti-y += $(PTHREAD_ARCH_OBJ)
>  
>  objclean-y += nptl_arch_clean
> +headers-y += $(PTHREAD_ARCH_OUT)/tcb-offsets.h
>  headers_clean-y += nptl_arch_headers_clean
>  
>  #
> @@ -47,8 +48,6 @@ $(PTHREAD_ARCH_OUT)/tcb-offsets.s: $(PTHREAD_ARCH_OUT)/tcb-offsets.c
>  $(PTHREAD_ARCH_OUT)/tcb-offsets.h: $(PTHREAD_ARCH_OUT)/tcb-offsets.s
>  	$(do_sed) -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $@
>  
> -nptl_arch_headers: $(PTHREAD_ARCH_OUT)/tcb-offsets.h
> -
>  nptl_arch_headers_clean:
>  	$(do_rm) $(addprefix $(PTHREAD_ARCH_OUT)/tcb-offsets., c s h)
>  
> diff --git a/libpthread/nptl/sysdeps/sparc/Makefile.arch b/libpthread/nptl/sysdeps/sparc/Makefile.arch
> index b13eee9..378e322 100644
> --- a/libpthread/nptl/sysdeps/sparc/Makefile.arch
> +++ b/libpthread/nptl/sysdeps/sparc/Makefile.arch
> @@ -13,8 +13,8 @@ CFLAGS-pthread_spin_lock.c += -D_GNU_SOURCE
>  CFLAGS-sparc = $(SSP_ALL_CFLAGS)
>  #CFLAGS:=$(CFLAGS:-O1=-O2)
>  
> -PTHREAD_ARCH_DIR := $(top_srcdir)libpthread/nptl/sysdeps/sparc/
> -PTHREAD_ARCH_OUT := $(top_builddir)libpthread/nptl/sysdeps/sparc/
> +PTHREAD_ARCH_DIR := $(top_srcdir)libpthread/nptl/sysdeps/sparc
> +PTHREAD_ARCH_OUT := $(top_builddir)libpthread/nptl/sysdeps/sparc
>  PTHREAD_ARCH_OBJ := $(patsubst %.S,$(PTHREAD_ARCH_OUT)/%.o,$(libpthread_SSRC))
>  PTHREAD_ARCH_OBJ += $(patsubst %.c,$(PTHREAD_ARCH_OUT)/%.o,$(libpthread_CSRC))
>  
> @@ -28,6 +28,7 @@ libpthread-so-y += $(PTHREAD_ARCH_OBJ:.o=.oS)
>  libpthread-nomulti-y += $(PTHREAD_ARCH_OBJ)
>  
>  objclean-y += nptl_arch_clean
> +headers-y += $(PTHREAD_ARCH_OUT)/tcb-offsets.h
>  headers_clean-y += nptl_arch_headers_clean
>  
>  #
> @@ -44,8 +45,6 @@ $(PTHREAD_ARCH_OUT)/tcb-offsets.s: $(PTHREAD_ARCH_OUT)/tcb-offsets.c
>  $(PTHREAD_ARCH_OUT)/tcb-offsets.h: $(PTHREAD_ARCH_OUT)/tcb-offsets.s
>  	@sed -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $@
>  
> -nptl_arch_headers: $(PTHREAD_ARCH_OUT)/tcb-offsets.h
> -
>  nptl_arch_headers_clean:
>  	$(do_rm) $(addprefix $(PTHREAD_ARCH_OUT)/tcb-offsets., c s h)
>  
> diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in
> index 563b6c1..01b2cdd 100644
> --- a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in
> +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in
> @@ -139,6 +139,10 @@ librt-a-y += $(LIBRT_LINUX_OBJ)
>  librt-so-y += $(LIBRT_LINUX_OBJ:.o=.oS)
>  
>  objclean-y += nptl_linux_clean
> +headers-y += $(PTHREAD_LINUX_OUT)/lowlevelbarrier.h \
> +                        $(PTHREAD_LINUX_OUT)/lowlevelcond.h \
> +                        $(PTHREAD_LINUX_OUT)/lowlevelrwlock.h \
> +                        $(PTHREAD_LINUX_OUT)/unwindbuf.h
>  headers_clean-y += nptl_linux_headers_clean
>  
>  #
> @@ -185,11 +189,6 @@ $(PTHREAD_LINUX_OUT)/lowlevelrwlock.h: $(PTHREAD_LINUX_OUT)/lowlevelrwlock.s
>  $(PTHREAD_LINUX_OUT)/unwindbuf.h: $(PTHREAD_LINUX_OUT)/unwindbuf.s
>  	$(do_sed) -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $@
>  
> -nptl_linux_headers: $(PTHREAD_LINUX_OUT)/lowlevelbarrier.h \
> -					$(PTHREAD_LINUX_OUT)/lowlevelcond.h \
> -					$(PTHREAD_LINUX_OUT)/lowlevelrwlock.h \
> -					$(PTHREAD_LINUX_OUT)/unwindbuf.h
> -
>  HEADERS_BITS_PTHREAD     := $(notdir $(wildcard $(PTHREAD_LINUX_DIR)/bits/*.h))
>  ALL_HEADERS_BITS_PTHREAD := $(addprefix include/bits/,$(HEADERS_BITS_PTHREAD))
>  

Hi Austin,
IIUC now all NPTL specific headers are part of the headers-y makefile target,
instead of being a prerequisite of pregen target.
I think that this is not fully correct because to generate some nptl headers
you need the cross-compiler.

If I type the following command (to create headers)

make ARCH=sh CROSS_COMPILE=sh4-linux-uclibc-  V=y headers

I get the following output:

install -d include/bits
ln -fs 	../../libc/sysdeps/linux/common/bits/uClibc_ctype.h include/bits/uClibc_ctype.h
./extra/scripts/conf-header.sh ./.config > include/bits/uClibc_config.h
make headers-y
awk -f ./extra/scripts/gen-as-const.awk libpthread/nptl/sysdeps/sh/tcb-offsets.sym > libpthread/nptl/sysdeps/sh/tcb-offsets.c
sh4-linux-uclibc-gcc -c libpthread/nptl/sysdeps/sh/tcb-offsets.c -o libpthread/nptl/sysdeps/sh/tcb-offsets.s
If I type make ARCH=sh headers-y I got the following

As you can see, it is using the cross-gcc because it wants to satisfy the nptl headers target.
Now, when we are building a toolchain from scratch, we just need only some headers for which
we don't need the cross-compiler (this was correctly working previously) to build the gcc bootstrap.
Whit this change, it won't work any more.

Are you sure this change what you wanted to do ?

Thanks,
Carmelo

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iEYEARECAAYFAksiRrYACgkQoRq/3BrK1s9SpACg651IjF0GXm4zXTrWLVJzUFzO
3kwAn2PRP8hjKyG5aigRjaSy7osUvQuT
=dsrM
-----END PGP SIGNATURE-----


More information about the uClibc-cvs mailing list