[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