summaryrefslogtreecommitdiffstats
path: root/libpthread
diff options
context:
space:
mode:
Diffstat (limited to 'libpthread')
-rw-r--r--libpthread/Makefile16
-rw-r--r--libpthread/linuxthreads/Makefile1
-rw-r--r--libpthread/linuxthreads_db/Makefile1
-rw-r--r--libpthread/nptl/Rules.mak13
4 files changed, 28 insertions, 3 deletions
diff --git a/libpthread/Makefile b/libpthread/Makefile
index abf9317d1..2d689edcc 100644
--- a/libpthread/Makefile
+++ b/libpthread/Makefile
@@ -18,10 +18,16 @@
TOPDIR=../
include $(TOPDIR)Rules.mak
+ifeq ($(strip $(PTHREADS_NATIVE)),y)
+include nptl/Rules.mak
+endif
CFLAGS+=$(SSP_ALL_CFLAGS)
-#Adjust the soname version to avoid namespace collisions with glibc's libpthread
+#
+# 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
@@ -95,11 +101,19 @@ $(OBJ): Makefile
shared: all
ifeq ($(strip $(UCLIBC_HAS_THREADS)),y)
+ifeq ($(strip $(PTHREADS_NATIVE)),y)
+ $(LD) $(LDFLAGS_THREAD) -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 -ldl $(LDADD_LIBFLOAT) $(LIBGCC) \
+ $(SHARED_END_FILES)
+else
$(LD) $(LDFLAGS_THREAD) -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)
diff --git a/libpthread/linuxthreads/Makefile b/libpthread/linuxthreads/Makefile
index 5752bf98c..2929544ed 100644
--- a/libpthread/linuxthreads/Makefile
+++ b/libpthread/linuxthreads/Makefile
@@ -38,7 +38,6 @@ CFLAGS :=$(CFLAGS:-O0=-O1)
# set up system dependencies include dirs (NOTE: order matters!)
-PTDIR = $(TOPDIR)libpthread/linuxthreads/
SYSDEPINC = -I$(PTDIR)sysdeps/pthread \
-I$(PTDIR)sysdeps/$(TARGET_ARCH) \
-I$(PTDIR)sysdeps \
diff --git a/libpthread/linuxthreads_db/Makefile b/libpthread/linuxthreads_db/Makefile
index 656275fa9..d10e3131b 100644
--- a/libpthread/linuxthreads_db/Makefile
+++ b/libpthread/linuxthreads_db/Makefile
@@ -29,7 +29,6 @@ SYSDEPS_DIR:=$(TARGET_ARCH)
endif
# set up system dependencies include dirs (NOTE: order matters!)
-PTDIR = $(TOPDIR)libpthread/linuxthreads/
SYSDEPINC = -I$(PTDIR)sysdeps/unix/sysv/linux \
-I$(PTDIR)sysdeps/pthread \
-I$(PTDIR)sysdeps/unix/sysv \
diff --git a/libpthread/nptl/Rules.mak b/libpthread/nptl/Rules.mak
new file mode 100644
index 000000000..c3970d235
--- /dev/null
+++ b/libpthread/nptl/Rules.mak
@@ -0,0 +1,13 @@
+#
+# 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.
+#
+LIBPTHREAD_STATIC_ARCHIVE := libpthread.a
+LIBPTHREAD_SHARED_ARCHIVE := libpthread-shared.a
+
+CFLAGS-NPTL := $(CFLAGS:-O0=-O2) \
+ -I$(PTDIR) \
+ -I$(TOPDIR)ldso/include \
+ -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -std=gnu99
+
+ASFLAGS-NPTL := $(filter-out -std=gnu99, $(CFLAGS-NPTL)) -D__ASSEMBLER__