diff options
Diffstat (limited to 'libpthread')
-rw-r--r-- | libpthread/Makefile | 112 | ||||
-rw-r--r-- | libpthread/linuxthreads/Makefile | 12 | ||||
-rw-r--r-- | libpthread/linuxthreads_db/Makefile | 9 | ||||
-rw-r--r-- | libpthread/nptl/Makefile | 116 | ||||
-rw-r--r-- | libpthread/nptl/Rules.mak | 13 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/mips/Makefile | 54 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/pthread/Makefile | 31 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/Makefile | 103 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c | 8 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile | 100 | ||||
-rw-r--r-- | libpthread/nptl_db/Makefile | 42 |
11 files changed, 302 insertions, 298 deletions
diff --git a/libpthread/Makefile b/libpthread/Makefile index 4b57ab32f..18292917a 100644 --- a/libpthread/Makefile +++ b/libpthread/Makefile @@ -18,50 +18,22 @@ TOPDIR=../ include $(TOPDIR)Rules.mak -ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y) -include nptl/Rules.mak -endif - -# -# Adjust the soname version to avoid namespace collisions with glibc's -# libpthread library. -# -LIBPTHREAD=libpthread.a -LIBPTHREAD_SHARED=libpthread.so -LIBPTHREAD_SHARED_FULLNAME=libpthread-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so -LIBTHREAD_DB=libthread_db.a -LIBTHREAD_DB_SHARED=libthread_db.so -LIBTHREAD_DB_SHARED_FULLNAME=libthread_db-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so - -DIRS= ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y) - DIRS+=nptl +ALL_SUBDIRS = nptl nptl_db +DIRS = nptl ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) - DIRS+=nptl_db + DIRS += nptl_db endif else - DIRS+=linuxthreads +ALL_SUBDIRS = linuxthreads linuxthreads_db +DIRS = linuxthreads ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) - DIRS+=linuxthreads_db -endif + DIRS += linuxthreads_db endif - -ifeq ($(strip $(UCLIBC_CTOR_DTOR)),y) - SHARED_START_FILES = $(TOPDIR)lib/crti.o $(LIBGCC_DIR)crtbeginS.o - SHARED_END_FILES = $(LIBGCC_DIR)crtendS.o $(TOPDIR)lib/crtn.o endif -ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y) -ALL_SUBDIRS = nptl nptl_db -else -ALL_SUBDIRS = linuxthreads linuxthreads_db -endif - -# Remove any -z defs since this lib will have undefined symbols -LIBTHREAD_DB_LDFLAGS := $(subst -z defs,,$(LDFLAGS)) - -all: $(LIBPTHREAD) $(LIBTHREAD_DB) +all: subdirs headers: ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y) @@ -71,6 +43,9 @@ ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y) $(LN) -sf ../$(TOPDIR)libpthread/nptl/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/bits/pthreadtypes.h $(TOPDIR)include/bits/ $(LN) -sf ../$(TOPDIR)libpthread/nptl/sysdeps/pthread/bits/libc-lock.h $(TOPDIR)include/bits/ $(LN) -sf ../$(TOPDIR)libpthread/nptl/sysdeps/pthread/bits/stdio-lock.h $(TOPDIR)include/bits/ +ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) + $(LN) -sf $(TOPDIR)libpthread/nptl_db/thread_db.h $(TOPDIR)include/ +endif else $(LN) -sf $(TOPDIR)libpthread/linuxthreads/sysdeps/pthread/pthread.h $(TOPDIR)include/ $(LN) -sf $(TOPDIR)libpthread/linuxthreads/semaphore.h $(TOPDIR)include/ @@ -80,69 +55,6 @@ ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) endif endif -$(LIBPTHREAD): subdirs - $(INSTALL) -d $(TOPDIR)lib - $(RM) $(TOPDIR)lib/$(LIBPTHREAD) - $(INSTALL) -m 644 $(LIBPTHREAD) $(TOPDIR)lib - -$(LIBTHREAD_DB): subdirs -ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) - $(INSTALL) -d $(TOPDIR)lib - $(RM) $(TOPDIR)lib/$(LIBTHREAD_DB) - $(INSTALL) -m 644 $(LIBTHREAD_DB) $(TOPDIR)lib -endif - -objs-pthread-libc: -ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y) - $(MAKE) -C nptl $@ -else - touch $(PTCOBJST) $(PTCOBJSH) -endif - - -$(OBJS): %.o : %.c - $(CC) $(CFLAGS) -c $< -o $@ - $(STRIPTOOL) -x -R .note -R .comment $*.o - -shared: all -ifeq ($(strip $(UCLIBC_HAS_THREADS_NATIVE)),y) - $(LD) $(LDFLAGS_NOSTRIP) -soname=$(LIBPTHREAD_SHARED).$(MAJOR_VERSION) \ - -o $(LIBPTHREAD_SHARED_FULLNAME) $(SHARED_START_FILES) --whole-archive $(LIBPTHREAD_SHARED_ARCHIVE) \ - --no-whole-archive $(TOPDIR)libc/misc/internals/interp.o \ - -L$(TOPDIR)lib -lc $(LDADD_LIBFLOAT) $(LIBGCC) \ - $(TOPDIR)ldso/ldso/ld-uClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so \ - -L$(TOPDIR)ldso/libdl -ldl \ - $(SHARED_END_FILES) -else - $(LD) $(LDFLAGS_NOSTRIP) -soname=$(LIBPTHREAD_SHARED).$(MAJOR_VERSION) \ - -o $(LIBPTHREAD_SHARED_FULLNAME) $(SHARED_START_FILES) --whole-archive $(LIBPTHREAD) \ - --no-whole-archive $(TOPDIR)libc/misc/internals/interp.o \ - -L$(TOPDIR)lib -lc $(LDADD_LIBFLOAT) $(LIBGCC) \ - $(SHARED_END_FILES) -endif - $(INSTALL) -d $(TOPDIR)lib - $(RM) $(TOPDIR)lib/$(LIBPTHREAD_SHARED_FULLNAME) \ - $(TOPDIR)lib/$(LIBPTHREAD_SHARED).$(MAJOR_VERSION) - $(INSTALL) -m 644 $(LIBPTHREAD_SHARED_FULLNAME) $(TOPDIR)lib - $(LN) -sf $(LIBPTHREAD_SHARED_FULLNAME) \ - $(TOPDIR)lib/$(LIBPTHREAD_SHARED) - $(LN) -sf $(LIBPTHREAD_SHARED_FULLNAME) \ - $(TOPDIR)lib/$(LIBPTHREAD_SHARED).$(MAJOR_VERSION) -ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) - $(LD) $(LIBTHREAD_DB_LDFLAGS) --warn-unresolved-symbols -soname=$(LIBTHREAD_DB_SHARED).1 \ - -o $(LIBTHREAD_DB_SHARED_FULLNAME) --whole-archive $(LIBTHREAD_DB) \ - --no-whole-archive $(TOPDIR)libc/misc/internals/interp.o \ - -L$(TOPDIR)lib -lc $(LDADD_LIBFLOAT) $(LIBGCC) - $(INSTALL) -d $(TOPDIR)lib - $(RM) $(TOPDIR)lib/$(LIBTHREAD_DB_SHARED_FULLNAME) \ - $(TOPDIR)lib/$(LIBTHREAD_DB_SHARED).1 - $(INSTALL) -m 644 $(LIBTHREAD_DB_SHARED_FULLNAME) $(TOPDIR)lib - $(LN) -sf $(LIBTHREAD_DB_SHARED_FULLNAME) \ - $(TOPDIR)lib/$(LIBTHREAD_DB_SHARED) - $(LN) -sf $(LIBTHREAD_DB_SHARED_FULLNAME) \ - $(TOPDIR)lib/$(LIBTHREAD_DB_SHARED).1 -endif - tags: ctags -R @@ -156,9 +68,7 @@ $(patsubst %, _dirclean_%, $(ALL_SUBDIRS)) : dummy $(MAKE) -C $(patsubst _dirclean_%, %, $@) clean clean: subdirs_clean - $(RM) *.[oa] *~ core $(LIBPTHREAD) $(LIBPTHREAD_SHARED_FULLNAME) \ - $(LIBTHREAD_DB) $(LIBTHREAD_DB_SHARED_FULLNAME) \ - $(TOPDIR)include/pthread.h $(TOPDIR)include/semaphore.h \ + $(RM) $(TOPDIR)include/pthread.h $(TOPDIR)include/semaphore.h \ $(TOPDIR)include/thread_db.h \ $(TOPDIR)include/bits/pthreadtypes.h $(TOPDIR)include/bits/semaphore.h \ $(TOPDIR)include/bits/libc-lock.h $(TOPDIR)include/bits/stdio-lock diff --git a/libpthread/linuxthreads/Makefile b/libpthread/linuxthreads/Makefile index 4072d660f..d5637eccf 100644 --- a/libpthread/linuxthreads/Makefile +++ b/libpthread/linuxthreads/Makefile @@ -22,17 +22,11 @@ include $(TOPDIR)Rules.mak CFLAGS+=$(SSP_ALL_CFLAGS) -#This stuff will not compile without at least -O1 +# This stuff will not compile without at least -O1 CFLAGS :=$(CFLAGS:-O0=-O1) -# set up system dependencies include dirs (NOTE: order matters!) -# psm: don't think that the last include makes sense -# they all should be already linked to $(TOPDIR)include -PTDIR = $(TOPDIR)libpthread/linuxthreads/ -SYSDEPINC = -I$(PTDIR)sysdeps/pthread \ - -I$(PTDIR)sysdeps/$(TARGET_ARCH) \ - -I$(TOPDIR)libc/sysdeps/linux/$(TARGET_ARCH) -CFLAGS += $(SYSDEPINC) +# Get the thread include dependencies +CFLAGS += $(PTINC) ARCH_CFLAGS = $(CFLAGS) diff --git a/libpthread/linuxthreads_db/Makefile b/libpthread/linuxthreads_db/Makefile index 2c27cdccc..3c7ee91a7 100644 --- a/libpthread/linuxthreads_db/Makefile +++ b/libpthread/linuxthreads_db/Makefile @@ -26,13 +26,8 @@ AR_LIB_NAME=$(TOPDIR)lib/$(LIB_NAME).a SO_LIB_NAME=$(TOPDIR)lib/$(LIB_NAME).so SO_FULL_NAME=$(LIB_NAME)-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so -# set up system dependencies include dirs (NOTE: order matters!) -PTDIR = $(TOPDIR)libpthread/linuxthreads/ -SYSDEPINC = -I$(PTDIR)sysdeps/pthread \ - -I$(PTDIR)sysdeps/$(TARGET_ARCH) \ - -I$(TOPDIR)libc/sysdeps/linux/$(TARGET_ARCH) - -CFLAGS += $(SYSDEPINC) -DLIBPTHREAD_SO="\"libpthread.so.$(MAJOR_VERSION)\"" +# Get the thread include dependencies and shared object name +CFLAGS += $(PTINC) -DLIBPTHREAD_SO="\"libpthread.so.$(MAJOR_VERSION)\"" # Remove any -z defs since this lib will have undefined symbols LDFLAGS := $(subst -z defs,,$(LDFLAGS)) --warn-unresolved-symbols diff --git a/libpthread/nptl/Makefile b/libpthread/nptl/Makefile index 830805fcf..f5efae013 100644 --- a/libpthread/nptl/Makefile +++ b/libpthread/nptl/Makefile @@ -1,4 +1,4 @@ -# Makefile for uClibc's NPTL pthread library (Portions stolen from glibc.) +# Makefile for uClibc's native pthread library (Portions stolen from glibc.) # # Copyright (C) 2005 Steven J. Hill <sjhill@realitydiluted.com> # @@ -226,36 +226,26 @@ libpthread-misc-routines = pthread_rwlock_rdlock pthread_rwlock_timedrdlock \ DIRS := sysdeps/pthread sysdeps/$(TARGET_ARCH) sysdeps/unix/sysv/linux \ sysdeps/unix/sysv/linux/$(TARGET_ARCH) -CSRC-LIBP-ST = $(patsubst %, %.c, $(filter-out $(libpthread-os-routines) \ +AR_LIBP_CSRC = $(patsubst %, %.c, $(filter-out $(libpthread-os-routines) \ $(libpthread-misc-routines) \ $(libpthread-shared-only-routines), \ $(libpthread-routines))) - -CSRC-LIBP-SH = $(patsubst %, %.c, $(filter-out $(libpthread-os-routines) \ +SO_LIBP_CSRC = $(patsubst %, %.c, $(filter-out $(libpthread-os-routines) \ $(libpthread-misc-routines) \ $(libpthread-static-only-routines) pt-allocrtsig, \ $(libpthread-routines))) - -CSRC-LIBC-ST = $(patsubst %, %.c, $(filter-out $(shared-only-routines) \ +AR_LIBC_CSRC = $(patsubst %, %.c, $(filter-out $(shared-only-routines) \ libc-lowlevellock, $(routines))) +SO_LIBC_CSRC = $(patsubst %, %.c, $(filter-out libc-lowlevellock, $(routines))) -CSRC-LIBC-SH = $(patsubst %, %.c, $(filter-out libc-lowlevellock, $(routines))) +AR_LIBP_COBJS = $(patsubst %.c, %.o, $(AR_LIBP_CSRC)) +SO_LIBP_COBJS = $(patsubst %.c, %.os, $(SO_LIBP_CSRC)) +AR_LIBC_COBJS = $(patsubst %.c, %.o, $(AR_LIBC_CSRC)) +SO_LIBC_COBJS = $(patsubst %.c, %.os, $(SO_LIBC_CSRC)) -COBJ-LIBP-ST = $(patsubst %.c, %.o, $(CSRC-LIBP-ST)) -COBJ-LIBP-SH = $(patsubst %.c, %.os, $(CSRC-LIBP-SH)) -COBJ-LIBC-ST = $(patsubst %.c, %.o, $(CSRC-LIBC-ST)) -COBJ-LIBC-SH = $(patsubst %.c, %.os, $(CSRC-LIBC-SH)) +all: headers $(AR_LIB_NAME) $(SO_LIB_NAME) -ar-target all: version.h banner.h $(COBJ-LIBP-ST) $(COBJ-LIBP-SH) subdirs -ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) - $(STRIPTOOL) -X --strip-debug -R .note -R .comment \ - $(COBJ-LIBP-ST) $(COBJ-LIBP-SH) -else - $(STRIPTOOL) -x -R .note -R .comment \ - $(COBJ-LIBP-ST) $(COBJ-LIBP-SH) -endif - $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_STATIC_ARCHIVE) $(COBJ-LIBP-ST) - $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_SHARED_ARCHIVE) $(COBJ-LIBP-SH) +headers: version.h banner.h version.h: @echo "#define VERSION \""$(VERSION)"\"" > $@ @@ -263,36 +253,78 @@ version.h: banner.h: Banner sed 's/\(.*\)/"\1\\n"/' $< > $@ -$(COBJ-LIBP-ST): %.o : %.c - $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -c $< -o $@ - -$(COBJ-LIBP-SH): %.os : %.c - $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -DSHARED -c $< -o $@ - -$(COBJ-LIBC-ST): %.o : %.c - $(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -c $< -o $@ - -$(COBJ-LIBC-SH): %.os : %.c - $(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -DSHARED -c $< -o $@ +$(AR_LIB_NAME): $(AR_LIBP_COBJS) + $(INSTALL) -d $(TOPDIR)lib + $(RM) $(AR_LIB_NAME) +ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBP_COBJS) +else + $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBP_COBJS) +endif + $(AR) $(ARFLAGS) $(AR_LIB_NAME) $(AR_LIBP_COBJS) -objs-pthread-libc: $(COBJ-LIBC-ST) $(COBJ-LIBC-SH) +$(AR_SO_LIB_NAME): $(SO_LIBP_COBJS) + $(INSTALL) -d $(TOPDIR)lib + $(RM) $(TOPDIR)lib/$(SO_FULL_NAME) $(SO_LIB_NAME).$(MAJOR_VERSION) \ + $(SO_LIB_NAME) $(AR_SO_LIB_NAME) ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) - $(STRIPTOOL) -X --strip-debug -R .note -R .comment \ - $(COBJ-LIBC-ST) $(COBJ-LIBC-SH) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBP_COBJS) else - $(STRIPTOOL) -x -R .note -R .comment \ - $(COBJ-LIBC-ST) $(COBJ-LIBC-SH) + $(STRIPTOOL) -x -R .note -R .comment $(SO_LIBP_COBJS) endif - @for objfile in $(COBJ-LIBC-ST); do \ - echo ../libpthread/nptl/$$objfile >> $(PTCOBJST); \ - done - @for objfile in $(COBJ-LIBC-SH); do \ - echo ../libpthread/nptl/$$objfile >> $(PTCOBJSH); \ + $(AR) $(ARFLAGS) $(AR_SO_LIB_NAME) $(SO_LIBP_COBJS) + +$(SO_LIB_NAME): $(AR_SO_LIB_NAME) subdirs + $(LD) $(LDFLAGS_NOSTRIP) -soname=$(LIB_NAME).$(MAJOR_VERSION) \ + -o $(TOPDIR)lib/$(SO_FULL_NAME) $(SHARED_START_FILES) --whole-archive $(AR_SO_LIB_NAME) \ + --no-whole-archive $(TOPDIR)libc/misc/internals/interp.o \ + -L$(TOPDIR)lib -lc $(LDADD_LIBFLOAT) $(LIBGCC) \ + $(TOPDIR)lib/ld-uClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so \ + -L$(TOPDIR)ldso/libdl -ldl \ + $(SHARED_END_FILES) + $(LN) -sf $(SO_FULL_NAME) $(SO_LIB_NAME).$(MAJOR_VERSION) + $(LN) -sf $(SO_FULL_NAME) $(SO_LIB_NAME) + $(RM) $(AR_SO_LIB_NAME) + +obj.pthread.ar: $(AR_LIBC_COBJS) + $(RM) $(TOPDIR)libc/$@ +ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBC_COBJS) +else + $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBC_COBJS) +endif + @for objfile in $(AR_LIBC_COBJS); do \ + echo ../libpthread/nptl/$$objfile >> $(TOPDIR)libc/$@; \ done $(MAKE) -C sysdeps/$(TARGET_ARCH) $@ $(MAKE) -C sysdeps/unix/sysv/linux $@ $(MAKE) -C sysdeps/unix/sysv/linux/$(TARGET_ARCH) $@ +obj.pthread.so: $(SO_LIBC_COBJS) + $(RM) $(TOPDIR)libc/$@ +ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBC_COBJS) +else + $(STRIPTOOL) -x -R .note -R .comment $(SO_LIBC_COBJS) +endif + @for objfile in $(SO_LIBC_COBJS); do \ + echo ../libpthread/nptl/$$objfile >> $(TOPDIR)libc/$@; \ + done + $(MAKE) -C sysdeps/unix/sysv/linux $@ + $(MAKE) -C sysdeps/unix/sysv/linux/$(TARGET_ARCH) $@ + +$(AR_LIBP_COBJS): %.o : %.c + $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -c $< -o $@ + +$(SO_LIBP_COBJS): %.os : %.c + $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -DSHARED -c $< -o $@ + +$(AR_LIBC_COBJS): %.o : %.c + $(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -c $< -o $@ + +$(SO_LIBC_COBJS): %.os : %.c + $(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -DSHARED -c $< -o $@ + clean: subdirs_clean $(RM) *.o *.os *~ core banner.h version.h diff --git a/libpthread/nptl/Rules.mak b/libpthread/nptl/Rules.mak index f96e42cd2..b42995738 100644 --- a/libpthread/nptl/Rules.mak +++ b/libpthread/nptl/Rules.mak @@ -1,13 +1,16 @@ # # These names are used for NPTL since we have to build seperate archives -# for the static and shared objects. We export them to sub-makes. +# for the static and shared objects. # -LIBPTHREAD_STATIC_ARCHIVE := libpthread.a -LIBPTHREAD_SHARED_ARCHIVE := libpthread-shared.a +LIB_NAME := libpthread +AR_LIB_NAME := $(TOPDIR)lib/$(LIB_NAME).a +AR_SO_LIB_NAME := $(TOPDIR)lib/shared_$(LIB_NAME).a +SO_LIB_NAME := $(TOPDIR)lib/$(LIB_NAME).so +SO_FULL_NAME := $(LIB_NAME)-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so -CFLAGS-LIBC := $(filter-out -O0 -O1 -Os, $(CFLAGS)) -O2 -I$(PTDIR) \ +CFLAGS-LIBC := $(filter-out -O0 -O1 -Os, $(CFLAGS)) $(PTINC) -O2 \ + -I$(TOPDIR)libpthread/nptl \ -I$(TOPDIR)ldso/include -std=gnu99 ASFLAGS-LIBC := $(filter-out -std=gnu99, $(CFLAGS-LIBC)) -D__ASSEMBLER__ - CFLAGS-LIBP := $(CFLAGS-LIBC) -DNOT_IN_libc=1 -DIS_IN_libpthread=1 ASFLAGS-LIBP := $(filter-out -std=gnu99, $(CFLAGS-LIBP)) -D__ASSEMBLER__ diff --git a/libpthread/nptl/sysdeps/mips/Makefile b/libpthread/nptl/sysdeps/mips/Makefile index 949885073..5a1d6bff1 100644 --- a/libpthread/nptl/sysdeps/mips/Makefile +++ b/libpthread/nptl/sysdeps/mips/Makefile @@ -23,39 +23,49 @@ include ../../Rules.mak CFLAGS-dl-support.c = -D_GNU_SOURCE -COBJ-LIBC-ST = $(patsubst %.c, %.o, $(wildcard *.c)) +AR_LIBP_AOBJS = $(patsubst %.S, %.o, $(wildcard *.S)) +SO_LIBP_AOBJS = $(patsubst %.S, %.os, $(wildcard *.S)) +AR_LIBC_COBJS = $(patsubst %.c, %.o, $(wildcard *.c)) -AOBJ-LIBP-ST = $(patsubst %.S, %.o, $(wildcard *.S)) -AOBJ-LIBP-SH = $(patsubst %.S, %.os, $(wildcard *.S)) +all: $(AR_LIB_NAME) $(AR_SO_LIB_NAME) -ar-target all: $(AOBJ-LIBP-ST) $(AOBJ-LIBP-SH) +$(AR_LIB_NAME): $(AR_LIBP_AOBJS) ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) - $(STRIPTOOL) -X --strip-debug -R .note -R .comment \ - $(AOBJ-LIBP-ST) $(AOBJ-LIBP-SH) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBP_AOBJS) else - $(STRIPTOOL) -x -R .note -R .comment $(AOBJ-LIBP-ST) $(AOBJ-LIBP-SH) + $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBP_AOBJS) $(AR_LIBP_AOBJS) endif - $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_STATIC_ARCHIVE) $(AOBJ-LIBP-ST) - $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_SHARED_ARCHIVE) $(AOBJ-LIBP-SH) + $(AR) $(ARFLAGS) $(AR_LIB_NAME) $(AR_LIBP_AOBJS) -$(AOBJ-LIBP-ST): %.o : %.S - $(CC) $(ASFLAGS) $(ASFLAGS-NPTL) -c $< -o $@ - -$(AOBJ-LIBP-SH): %.os : %.S - $(CC) $(ASFLAGS) $(ASFLAGS-NPTL) -DSHARED -c $< -o $@ - -$(COBJ-LIBC-ST): %.o : %.c - $(CC) $(CFLAGS-LIBC) $(CFLAGS-$<) -c $< -o $@ +$(AR_SO_LIB_NAME): $(SO_LIBP_AOBJS) +ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBP_AOBJS) +else + $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBP_AOBJS) $(SO_LIBP_AOBJS) +endif + $(AR) $(ARFLAGS) $(AR_SO_LIB_NAME) $(SO_LIBP_AOBJS) -objs-pthread-libc: $(COBJ-LIBC-ST) +obj.pthread.ar: $(AR_LIBC_COBJS) ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) - $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(COBJ-LIBC-ST) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBC_COBJS) else - $(STRIPTOOL) -x -R .note -R .comment $(COBJ-LIBC-ST) + $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBC_COBJS) endif - @for objfile in $(COBJ-LIBC-ST); do \ - echo ../libpthread/nptl/sysdeps/mips/$$objfile >> $(PTCOBJST); \ + @for objfile in $(AR_LIBC_COBJS); do \ + echo ../libpthread/nptl/sysdeps/mips/$$objfile >> \ + $(TOPDIR)libc/$@; \ done +$(AR_LIBP_AOBJS): %.o : %.S + $(CC) $(ASFLAGS) $(ASFLAGS-NPTL) -c $< -o $@ + +$(SO_LIBP_AOBJS): %.os : %.S + $(CC) $(ASFLAGS) $(ASFLAGS-NPTL) -DSHARED -c $< -o $@ + +$(AR_LIBC_COBJS): %.o : %.c + $(CC) $(CFLAGS-LIBC) $(CFLAGS-$<) -c $< -o $@ + clean: $(RM) *.o *.os *~ core + +.PHONY: $(AR_LIB_NAME) $(AR_SO_LIB_NAME) diff --git a/libpthread/nptl/sysdeps/pthread/Makefile b/libpthread/nptl/sysdeps/pthread/Makefile index fae8f0800..280db89f1 100644 --- a/libpthread/nptl/sysdeps/pthread/Makefile +++ b/libpthread/nptl/sysdeps/pthread/Makefile @@ -42,25 +42,34 @@ CFLAGS-pthread_spin_destroy.c = -D_GNU_SOURCE CFLAGS-pthread_spin_init.c = -D_GNU_SOURCE CFLAGS-pthread_spin_unlock.c = -D_GNU_SOURCE -COBJ-LIBP-ST = $(patsubst %.c, %.o, $(CSRC)) -COBJ-LIBP-SH = $(patsubst %.c, %.os, $(CSRC)) +AR_LIBP_COBJS = $(patsubst %.c, %.o, $(CSRC)) +SO_LIBP_COBJS = $(patsubst %.c, %.os, $(CSRC)) -ar-target all: $(COBJ-LIBP-ST) $(COBJ-LIBP-SH) +all: $(AR_LIB_NAME) $(AR_SO_LIB_NAME) + +$(AR_LIB_NAME): $(AR_LIBP_COBJS) +ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBP_COBJS) +else + $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBP_COBJS) +endif + $(AR) $(ARFLAGS) $(AR_LIB_NAME) $(AR_LIBP_COBJS) + +$(AR_SO_LIB_NAME): $(SO_LIBP_COBJS) ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) - $(STRIPTOOL) -X --strip-debug -R .note -R .comment \ - $(COBJ-LIBP-ST) $(COBJ-LIBP-SH) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBP_COBJS) else - $(STRIPTOOL) -x -R .note -R .comment \ - $(COBJ-LIBP-ST) $(COBJ-LIBP-SH) + $(STRIPTOOL) -x -R .note -R .comment $(SO_LIBP_COBJS) endif - $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_STATIC_ARCHIVE) $(COBJ-LIBP-ST) - $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_SHARED_ARCHIVE) $(COBJ-LIBP-SH) + $(AR) $(ARFLAGS) $(AR_SO_LIB_NAME) $(SO_LIBP_COBJS) -$(COBJ-LIBP-ST): %.o : %.c +$(AR_LIBP_COBJS): %.o : %.c $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -c $< -o $@ -$(COBJ-LIBP-SH): %.os : %.c +$(SO_LIBP_COBJS): %.os : %.c $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -DSHARED -c $< -o $@ clean: $(RM) *.o *.os *~ core + +.PHONY: $(AR_LIB_NAME) $(AR_SO_LIB_NAME) diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile index 37ea6e05b..3dd1430b7 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile @@ -21,35 +21,32 @@ TOPDIR=../../../../../../ include $(TOPDIR)Rules.mak include ../../../../Rules.mak -CSRC-LIBP-ST = pt-raise.c pthread_attr_getaffinity.c \ +AR_LIBP_CSRC = pt-raise.c pthread_attr_getaffinity.c \ pthread_attr_setaffinity.c pthread_getaffinity.c \ pthread_getcpuclockid.c pthread_kill.c \ pthread_mutex_cond_lock.c pthread_setaffinity.c \ pthread_yield.c sem_post.c sem_timedwait.c \ sem_trywait.c sem_wait.c pt-fork.c - -CSRC-LIBP-SH = $(CSRC-LIBP-ST) - -CSRC-LIBC-ST = libc_pthread_init.c libc_multiple_threads.c \ +SO_LIBP_CSRC = $(AR_LIBP_CSRC) +AR_LIBC_CSRC = libc_pthread_init.c libc_multiple_threads.c \ register-atfork.c unregister-atfork.c - -CSRC-LIBC-SH = $(CSRC-LIBC-ST) +SO_LIBC_CSRC = $(AR_LIBC_CSRC) ifeq ($(strip $(TARGET_ARCH)),alpha) -CSRC-LIBC-ST += libc-lowlevellock.c -CSRC-LIBP-ST += rtld-libc-lowlevellock.c +AR_LIBC_CSRC += libc-lowlevellock.c +AR_LIBP_CSRC += rtld-libc-lowlevellock.c endif ifeq ($(strip $(TARGET_ARCH)),mips) -CSRC-LIBC-ST += libc-lowlevellock.c -CSRC-LIBP-ST += rtld-libc-lowlevellock.c +AR_LIBC_CSRC += libc-lowlevellock.c +AR_LIBP_CSRC += rtld-libc-lowlevellock.c endif ifeq ($(strip $(TARGET_ARCH)),powerpc) -CSRC-LIBC-ST += libc-lowlevellock.c -CSRC-LIBP-ST += rtld-libc-lowlevellock.c +AR_LIBC_CSRC += libc-lowlevellock.c +AR_LIBP_CSRC += rtld-libc-lowlevellock.c endif ifeq ($(strip $(TARGET_ARCH)),sparc) -CSRC-LIBC-ST += libc-lowlevellock.c -CSRC-LIBP-ST += rtld-libc-lowlevellock.c +AR_LIBC_CSRC += libc-lowlevellock.c +AR_LIBP_CSRC += rtld-libc-lowlevellock.c endif # @@ -57,51 +54,67 @@ endif # CFLAGS-pt-fork.c = -D_GNU_SOURCE -COBJ-LIBP-ST = $(patsubst %.c, %.o, $(CSRC-LIBP-ST)) -COBJ-LIBP-SH = $(patsubst %.c, %.os, $(CSRC-LIBP-SH)) -COBJ-LIBC-ST = $(patsubst %.c, %.o, $(CSRC-LIBC-ST)) -COBJ-LIBC-SH = $(patsubst %.c, %.os, $(CSRC-LIBC-SH)) +AR_LIBP_COBJS = $(patsubst %.c, %.o, $(AR_LIBP_CSRC)) +SO_LIBP_COBJS = $(patsubst %.c, %.os, $(SO_LIBP_CSRC)) +AR_LIBC_COBJS = $(patsubst %.c, %.o, $(AR_LIBC_CSRC)) +SO_LIBC_COBJS = $(patsubst %.c, %.os, $(SO_LIBC_CSRC)) + +all: $(AR_LIB_NAME) $(AR_SO_LIB_NAME) -ar-target all: $(COBJ-LIBP-ST) $(COBJ-LIBP-SH) +$(AR_LIB_NAME): $(AR_LIBP_COBJS) ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) - $(STRIPTOOL) -X --strip-debug -R .note -R .comment \ - $(COBJ-LIBP-ST) $(COBJ-LIBP-SH) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBP_COBJS) else - $(STRIPTOOL) -x -R .note -R .comment \ - $(COBJ-LIBP-ST) $(COBJ-LIBP-SH) + $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBP_COBJS) endif - $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_STATIC_ARCHIVE) $(COBJ-LIBP-ST) - $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_SHARED_ARCHIVE) $(COBJ-LIBP-SH) + $(AR) $(ARFLAGS) $(AR_LIB_NAME) $(AR_LIBP_COBJS) + +$(AR_SO_LIB_NAME): $(SO_LIBP_COBJS) +ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBP_COBJS) +else + $(STRIPTOOL) -x -R .note -R .comment $(SO_LIBP_COBJS) +endif + $(AR) $(ARFLAGS) $(AR_SO_LIB_NAME) $(SO_LIBP_COBJS) + +obj.pthread.ar: $(AR_LIBC_COBJS) +ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBC_COBJS) +else + $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBC_COBJS) +endif + @for objfile in $(AR_LIBC_COBJS); do \ + echo ../libpthread/nptl/sysdeps/unix/sysv/linux/$$objfile >> \ + $(TOPDIR)libc/$@; \ + done -$(COBJ-LIBP-ST): %.o : %.c +obj.pthread.so: $(SO_LIBC_COBJS) +ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBC_COBJS) +else + $(STRIPTOOL) -x -R .note -R .comment $(SO_LIBC_COBJS) +endif + @for objfile in $(SO_LIBC_COBJS); do \ + echo ../libpthread/nptl/sysdeps/unix/sysv/linux/$$objfile >> \ + $(TOPDIR)libc/$@; \ + done + +$(AR_LIBP_COBJS): %.o : %.c $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -c $< -o $@ -$(COBJ-LIBP-SH): %.os : %.c +$(SO_LIBP_COBJS): %.os : %.c $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -DSHARED -c $< -o $@ -$(COBJ-LIBC-ST): %.o : %.c +$(AR_LIBC_COBJS): %.o : %.c $(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -c $< -o $@ -$(COBJ-LIBC-SH): %.os : %.c +$(SO_LIBC_COBJS): %.os : %.c $(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -DSHARED -c $< -o $@ -objs-pthread-libc: $(COBJ-LIBC-ST) $(COBJ-LIBC-SH) -ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) - $(STRIPTOOL) -X --strip-debug -R .note -R .comment \ - $(COBJ-LIBC-ST) $(COBJ-LIBC-SH) -else - $(STRIPTOOL) -x -R .note -R .comment \ - $(COBJ-LIBC-ST) $(COBJ-LIBC-SH) -endif - @for objfile in $(COBJ-LIBC-ST); do \ - echo ../libpthread/nptl/sysdeps/unix/sysv/linux/$$objfile >> $(PTCOBJST); \ - done - @for objfile in $(COBJ-LIBC-SH); do \ - echo ../libpthread/nptl/sysdeps/unix/sysv/linux/$$objfile >> $(PTCOBJSH); \ - done - rtld-libc-lowlevellock.c: libc-lowlevellock.c $(LN) -fs $< $@ clean: $(RM) *.o *.os *~ core rtld-libc-lowlevellock.c + +.PHONY: $(AR_LIB_NAME) $(AR_SO_LIB_NAME) diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c b/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c index 3d1c02181..85b75221e 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c @@ -57,3 +57,11 @@ __libc_pthread_init (ptr, reclaim, functions) return &__libc_multiple_threads; #endif } + +/* I would rather not talk about this. */ +#ifdef SHARED +#include <link.h> +void _dl_aux_init (ElfW(auxv_t) *av) +{ +} +#endif diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile index dd2bda972..865f74149 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile @@ -21,71 +21,87 @@ TOPDIR=../../../../../../../ include $(TOPDIR)Rules.mak include ../../../../../Rules.mak -ASRC-LIBP-ST = pt-vfork.S clone.S -ASRC-LIBP-SH = $(ASRC-LIBP-ST) +AR_LIBP_ASRC = pt-vfork.S clone.S +SO_LIBP_ASRC = $(AR_LIBP_ASRC) +AR_LIBP_CSRC = pthread_once.c +SO_LIBP_CSRC = $(AR_LIBP_CSRC) +AR_LIBC_CSRC = fork-nptl.c +SO_LIBC_CSRC = $(AR_LIBC_CSRC) -CSRC-LIBP-ST = pthread_once.c -CSRC-LIBP-SH = $(CSRC-LIBP-ST) - -CSRC-LIBC-ST = fork-nptl.c -CSRC-LIBC-SH = $(CSRC-LIBC-ST) - -AOBJ-LIBP-ST = $(patsubst %.S, %.o, $(ASRC-LIBP-ST)) -AOBJ-LIBP-SH = $(patsubst %.S, %.os, $(ASRC-LIBP-SH)) -COBJ-LIBP-ST = $(patsubst %.c, %.o, $(CSRC-LIBP-ST)) -COBJ-LIBP-SH = $(patsubst %.c, %.os, $(CSRC-LIBP-ST)) -COBJ-LIBC-ST = $(patsubst %.c, %.o, $(CSRC-LIBC-ST)) -COBJ-LIBC-SH = $(patsubst %.c, %.os, $(CSRC-LIBC-SH)) +AR_LIBP_AOBJS = $(patsubst %.S, %.o, $(AR_LIBP_ASRC)) +SO_LIBP_AOBJS = $(patsubst %.S, %.os, $(SO_LIBP_ASRC)) +AR_LIBP_COBJS = $(patsubst %.c, %.o, $(AR_LIBP_CSRC)) +SO_LIBP_COBJS = $(patsubst %.c, %.os, $(SO_LIBP_CSRC)) +AR_LIBC_COBJS = $(patsubst %.c, %.o, $(AR_LIBC_CSRC)) +SO_LIBC_COBJS = $(patsubst %.c, %.os, $(SO_LIBC_CSRC)) ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y) CFLAGS-fork-nptl.c = -D__USE_STDIO_FUTEXES__ endif -ar-target all: $(AOBJ-LIBP-ST) $(AOBJ-LIBP-SH) $(COBJ-LIBP-ST) $(COBJ-LIBP-SH) +all: $(AR_LIB_NAME) $(AR_SO_LIB_NAME) + +$(AR_LIB_NAME): $(AR_LIBP_AOBJS) $(AR_LIBP_COBJS) +ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment \ + $(AR_LIBP_AOBJS) $(AR_LIBP_COBJS) +else + $(STRIPTOOL) -x -R .note -R .comment \ + $(AR_LIBP_AOBJS) $(AR_LIBP_COBJS) +endif + $(AR) $(ARFLAGS) $(AR_LIB_NAME) $(AR_LIBP_AOBJS) $(AR_LIBP_COBJS) + +$(AR_SO_LIB_NAME): $(SO_LIBP_AOBJS) $(SO_LIBP_COBJS) ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) $(STRIPTOOL) -X --strip-debug -R .note -R .comment \ - $(AOBJ-LIBP-ST) $(AOBJ-LIBP-SH) $(COBJ-LIBP-ST) $(COBJ-LIBP-SH) + $(SO_LIBP_AOBJS) $(SO_LIBP_COBJS) else $(STRIPTOOL) -x -R .note -R .comment \ - $(AOBJ-LIBP-ST) $(AOBJ-LIBP-SH) $(COBJ-LIBP-ST) $(COBJ-LIBP-SH) + $(SO_LIBP_AOBJS) $(SO_LIBP_COBJS) +endif + $(AR) $(ARFLAGS) $(AR_SO_LIB_NAME) $(SO_LIBP_AOBJS) $(SO_LIBP_COBJS) + +obj.pthread.ar: $(AR_LIBC_COBJS) +ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(AR_LIBC_COBJS) +else + $(STRIPTOOL) -x -R .note -R .comment $(AR_LIBC_COBJS) +endif + @for objfile in $(AR_LIBC_COBJS); do \ + echo ../libpthread/nptl/sysdeps/unix/sysv/linux/mips/$$objfile \ + >> $(TOPDIR)libc/$@; \ + done + +obj.pthread.so: $(SO_LIBC_COBJS) +ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) + $(STRIPTOOL) -X --strip-debug -R .note -R .comment $(SO_LIBC_COBJS) +else + $(STRIPTOOL) -x -R .note -R .comment $(SO_LIBC_COBJS) endif - $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_STATIC_ARCHIVE) \ - $(AOBJ-LIBP-ST) $(COBJ-LIBP-ST) - $(AR) $(ARFLAGS) $(PTDIR)../$(LIBPTHREAD_SHARED_ARCHIVE) \ - $(AOBJ-LIBP-SH) $(COBJ-LIBP-SH) + @for objfile in $(SO_LIBC_COBJS); do \ + echo ../libpthread/nptl/sysdeps/unix/sysv/linux/mips/$$objfile \ + >> $(TOPDIR)libc/$@; \ + done -$(AOBJ-LIBP-ST): %.o : %.S +$(AR_LIBP_AOBJS): %.o : %.S $(CC) $(ASFLAGS-LIBP) -c $< -o $@ -$(AOBJ-LIBP-SH): %.os : %.S +$(SO_LIBP_AOBJS): %.os : %.S $(CC) $(ASFLAGS-LIBP) -DSHARED -c $< -o $@ -$(COBJ-LIBP-ST): %.o : %.c +$(AR_LIBP_COBJS): %.o : %.c $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -c $< -o $@ -$(COBJ-LIBP-SH): %.os : %.c +$(SO_LIBP_COBJS): %.os : %.c $(CC) $(CFLAGS-$<) $(CFLAGS-LIBP) -DSHARED -c $< -o $@ -$(COBJ-LIBC-ST): %.o : %.c +$(AR_LIBC_COBJS): %.o : %.c $(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -c $< -o $@ -$(COBJ-LIBC-SH): %.os : %.c +$(SO_LIBC_COBJS): %.os : %.c $(CC) $(CFLAGS-$<) $(CFLAGS-LIBC) -DSHARED -c $< -o $@ -objs-pthread-libc: $(COBJ-LIBC-ST) $(COBJ-LIBC-SH) -ifeq ($(strip $(PTHREADS_DEBUG_SUPPORT)),y) - $(STRIPTOOL) -X --strip-debug -R .note -R .comment \ - $(COBJ-LIBC-ST) $(COBJ-LIBC-SH) -else - $(STRIPTOOL) -x -R .note -R .comment \ - $(COBJ-LIBC-ST) $(COBJ-LIBC-SH) -endif - @for objfile in $(COBJ-LIBC-ST); do \ - echo ../libpthread/nptl/sysdeps/unix/sysv/linux/mips/$$objfile >> $(PTCOBJST); \ - done - @for objfile in $(COBJ-LIBC-SH); do \ - echo ../libpthread/nptl/sysdeps/unix/sysv/linux/mips/$$objfile >> $(PTCOBJSH); \ - done - clean: $(RM) *.o *.os *~ core + +.PHONY: $(AR_LIB_NAME) $(AR_SO_LIB_NAME) diff --git a/libpthread/nptl_db/Makefile b/libpthread/nptl_db/Makefile index 7fa3daa9a..a18912b4c 100644 --- a/libpthread/nptl_db/Makefile +++ b/libpthread/nptl_db/Makefile @@ -1,4 +1,4 @@ -# Makefile for uClibc's NPTL pthread debug library +# Makefile for uClibc's native pthread debug library # # Copyright (C) 2005 Steven J. Hill <sjhill@realitydiluted.com> # @@ -20,28 +20,42 @@ TOPDIR=../../ include $(TOPDIR)Rules.mak -LIBTHREAD_DB=../libthread_db.a +LIB_NAME=libthread_db +AR_LIB_NAME=$(TOPDIR)lib/$(LIB_NAME).a +SO_LIB_NAME=$(TOPDIR)lib/$(LIB_NAME).so +SO_FULL_NAME=$(LIB_NAME)-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so -CFLAGS := $(CFLAGS:-O0=-O2) -DNOT_IN_libc=1 -DIS_IN_libthread_db=1 \ +CFLAGS := $(CFLAGS:-O0=-O2) -DNOT_IN_libc=1 -DIS_IN_libthread_db=1 $(PTINC) \ -std=gnu99 -DLIBPTHREAD_SO="\"libpthread.so.$(MAJOR_VERSION)\"" -CFLAGS += -I$(PTDIR)compat \ - -I$(PTDIR)sysdeps/unix/sysv/linux/$(TARGET_ARCH) \ - -I$(PTDIR)sysdeps/$(TARGET_ARCH) \ - -I$(PTDIR)sysdeps/unix/sysv/linux \ - -I$(PTDIR)sysdeps/pthread \ - -I$(PTDIR)sysdeps/generic +# Remove any -z defs since this lib will have undefined symbols +LDFLAGS := $(subst -z defs,,$(LDFLAGS)) --warn-unresolved-symbols -OBJS=$(patsubst %.c, %.o, $(filter-out db_info.c, $(wildcard *.c))) +OBJS = $(patsubst %.c, %.o, $(filter-out db_info.c, $(wildcard *.c))) -all: $(LIBTHREAD_DB) +ifeq ($(strip $(HAVE_SHARED)),y) +all: $(SO_LIB_NAME) +else +all: $(AR_LIB_NAME) +endif -$(LIBTHREAD_DB) ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBTHREAD_DB) $(OBJS) +$(AR_LIB_NAME): $(OBJS) + $(INSTALL) -d $(TOPDIR)lib + $(RM) $(AR_LIB_NAME) + $(AR) $(ARFLAGS) $(AR_LIB_NAME) $(OBJS) + +$(SO_LIB_NAME): $(AR_LIB_NAME) + $(RM) $(TOPDIR)lib/$(SO_FULL_NAME) $(SO_LIB_NAME).1 $(SO_LIB_NAME) + $(LD) $(LDFLAGS) -soname=$(LIB_NAME).so.1 \ + -o $(TOPDIR)lib/$(SO_FULL_NAME) --whole-archive $(AR_LIB_NAME) \ + --no-whole-archive $(TOPDIR)libc/misc/internals/interp.o \ + -L$(TOPDIR)lib -lc $(LDADD_LIBFLOAT) $(LIBGCC) + $(LN) -sf $(SO_FULL_NAME) $(SO_LIB_NAME).1 + $(LN) -sf $(SO_FULL_NAME) $(SO_LIB_NAME) $(OBJS): %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ $(STRIPTOOL) -x -R .note -R .comment $*.o clean: - $(RM) *.[oa] *~ core + $(RM) *.o *~ core |