summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--Rules.mak24
-rw-r--r--ldso/ldso/Makefile10
-rw-r--r--ldso/libdl/Makefile10
-rw-r--r--libc/inet/Makefile8
-rw-r--r--libc/inet/rpc/Makefile2
-rw-r--r--libc/misc/internals/Makefile4
-rw-r--r--libc/misc/pthread/Makefile4
-rw-r--r--libc/misc/syslog/Makefile2
-rw-r--r--libc/string/Makefile2
-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
14 files changed, 69 insertions, 30 deletions
diff --git a/Makefile b/Makefile
index 4cbe4c907..33459d888 100644
--- a/Makefile
+++ b/Makefile
@@ -122,6 +122,8 @@ ifeq ($(strip $(PTHREADS_NATIVE)),y)
$(LN) -fs ../libpthread/nptl/sysdeps/pthread/pthread.h .; \
$(LN) -fs ../libpthread/nptl/semaphore.h .);
(cd include/bits; \
+ $(LN) -fs ../../libpthread/nptl/sysdeps/pthread/bits/libc-lock.h .; \
+ $(LN) -fs ../../libpthread/nptl/sysdeps/pthread/bits/stdio-lock.h .; \
$(LN) -fs ../../libpthread/nptl/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/bits/pthreadtypes.h .; \
$(LN) -fs ../../libpthread/nptl/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/bits/semaphore.h .);
else
diff --git a/Rules.mak b/Rules.mak
index 553c4936b..4dd47bd65 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -278,19 +278,21 @@ endif
# Thread includes are needed to compile some files.
#
ifeq ($(PTHREADS_NATIVE),y)
-PTDIR := $(TOPDIR)/libpthread/nptl/
-PT_INCLUDES := -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 \
- -include $(PTDIR)compat/libc-symbols.h
+PTDIR := $(TOPDIR)libpthread/nptl/
+PTINC := -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/pthread/bits \
+ -I$(PTDIR)sysdeps/generic \
+ -include $(PTDIR)compat/libc-symbols.h
+CFLAGS += $(PTINC)
else
-PTDIR := $(TOPDIR)/libpthread/linuxthreads/
-PT_INCLUDES := -I$(PTDIR)sysdeps/$(TARGET_ARCH) \
- -I$(PTDIR)sysdeps/pthread
+PTDIR := $(TOPDIR)libpthread/linuxthreads/
+PTINC := -I$(PTDIR)sysdeps/$(TARGET_ARCH) \
+ -I$(PTDIR)sysdeps/pthread
endif
-export PT_INCLUDES
ifeq ($(UCLIBC_BUILD_RELRO),y)
LDFLAGS+=-z relro
diff --git a/ldso/ldso/Makefile b/ldso/ldso/Makefile
index 3a382673c..fc828e83b 100644
--- a/ldso/ldso/Makefile
+++ b/ldso/ldso/Makefile
@@ -36,9 +36,15 @@ XXFLAGS+=-Os #-g3
else
XXFLAGS+=$(OPTIMIZATION)
endif
+ifeq ($(PTHREADS_NATIVE),y)
+XXFLAGS+= $(XARCH_CFLAGS) $(CPU_CFLAGS) $(PICFLAG) \
+ -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
+ -fno-builtin -nostdinc -D_LIBC -I$(TOPDIR)ldso/include -I. -I$(TOPDIR)include $(PTINC)
+else
XXFLAGS+= $(XARCH_CFLAGS) $(CPU_CFLAGS) $(PICFLAG) \
-DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
-fno-builtin -nostdinc -D_LIBC -I$(TOPDIR)ldso/include -I. -I$(TOPDIR)include
+endif
# BEWARE!!! At least mips* will die if -O0 is used!!!
XXFLAGS:=$(XXFLAGS:-O0=-O1)
@@ -80,11 +86,11 @@ $(LDSO_FULLNAME): $(OBJS) $(DLINK_OBJS)
$(LN) -sf $(LDSO_FULLNAME) $(TOPDIR)lib/$(UCLIBC_LDSO)
$(COBJS): %.o : %.c
- $(CC) $(XXFLAGS) -I../libdl -c $< -o $@
+ $(CC) $(XXFLAGS) -c $< -o $@
$(STRIPTOOL) -x -R .note -R .comment $*.o
$(AOBJS): %.o : %.S
- $(CC) $(XXFLAGS) $(ASFLAGS) -I../libdl -c $< -o $@
+ $(CC) $(XXFLAGS) $(ASFLAGS) -c $< -o $@
$(STRIPTOOL) -x -R .note -R .comment $*.o
ldso.o: $(CSRC) dl-elf.c dl-hash.c dl-startup.c \
diff --git a/ldso/libdl/Makefile b/ldso/libdl/Makefile
index a692a68bb..918e73b29 100644
--- a/ldso/libdl/Makefile
+++ b/ldso/libdl/Makefile
@@ -27,9 +27,15 @@ XXFLAGS+=-O0 -g3
else
XXFLAGS+=$(OPTIMIZATION)
endif
+ifeq ($(PTHREADS_NATIVE),y)
+XXFLAGS+= $(XARCH_CFLAGS) $(CPU_CFLAGS) \
+ -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
+ -fno-builtin -nostdinc -D_LIBC -I$(TOPDIR)ldso/include -I$(TOPDIR)ldso/ldso -I. -I$(TOPDIR)include $(PTINC)
+else
XXFLAGS+= $(XARCH_CFLAGS) $(CPU_CFLAGS) \
-DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
-fno-builtin -nostdinc -D_LIBC -I$(TOPDIR)ldso/include -I$(TOPDIR)ldso/ldso -I. -I$(TOPDIR)include
+endif
XXFLAGS+=-isystem $(shell $(CC) -print-file-name=include)
XXFLAGS_NOPIC:=$(XXFLAGS)
@@ -62,11 +68,11 @@ $(LIBDL): $(OBJS)
$(LIBDL_PIC): $(PIC_OBJS)
$(AR) $(ARFLAGS) $(LIBDL_PIC) $(PIC_OBJS)
-libdl.o: libdl.c
+libdl.o: libdl.c $(TOPDIR)ldso/include/*.h
$(CC) $(XXFLAGS_NOPIC) -c libdl.c -o libdl.o
$(STRIPTOOL) -x -R .note -R .comment $*.o
-libdl_pic.o: libdl.c
+libdl_pic.o: libdl.c $(TOPDIR)ldso/include/*.h
$(CC) $(XXFLAGS) -c libdl.c -o libdl_pic.o
$(STRIPTOOL) -x -R .note -R .comment $*.o
diff --git a/libc/inet/Makefile b/libc/inet/Makefile
index 09b274dab..e7018db7c 100644
--- a/libc/inet/Makefile
+++ b/libc/inet/Makefile
@@ -66,19 +66,19 @@ $(OBJ_LIST): $(OBJS)
echo $(patsubst %, inet/%, $(OBJS)) > $(OBJ_LIST)
$(MOBJ): $(MSRC)
- $(CC) $(CFLAGS) $(PT_INCLUDES) -DL_$* $< -c -o $*.o
+ $(CC) $(CFLAGS) -DL_$* $< -c -o $*.o
$(STRIPTOOL) -x -R .note -R .comment $*.o
$(MOBJ2): $(MSRC2)
- $(CC) $(CFLAGS) $(PT_INCLUDES) -DL_$* $< -c -o $*.o
+ $(CC) $(CFLAGS) -DL_$* $< -c -o $*.o
$(STRIPTOOL) -x -R .note -R .comment $*.o
$(MOBJ3): $(MSRC3)
- $(CC) $(CFLAGS) $(PT_INCLUDES) -DL_$* $< -c -o $*.o
+ $(CC) $(CFLAGS) -DL_$* $< -c -o $*.o
$(STRIPTOOL) -x -R .note -R .comment $*.o
$(COBJS): %.o : %.c
- $(CC) $(CFLAGS) $(PT_INCLUDES) -c $< -o $@
+ $(CC) $(CFLAGS) -c $< -o $@
$(STRIPTOOL) -x -R .note -R .comment $*.o
clean: subdirs_clean
diff --git a/libc/inet/rpc/Makefile b/libc/inet/rpc/Makefile
index 49adb7e84..a08cf89ea 100644
--- a/libc/inet/rpc/Makefile
+++ b/libc/inet/rpc/Makefile
@@ -57,7 +57,7 @@ $(OBJ_LIST): $(OBJS)
echo $(patsubst %, inet/rpc/%, $(OBJS)) > $(OBJ_LIST)
$(COBJS): %.o : %.c
- $(CC) $(CFLAGS) $(PT_INCLUDES) -c $< -o $@
+ $(CC) $(CFLAGS) $(PTINC) -c $< -o $@
$(STRIPTOOL) -x -R .note -R .comment $*.o
clean:
diff --git a/libc/misc/internals/Makefile b/libc/misc/internals/Makefile
index fa34ccf89..23816b38d 100644
--- a/libc/misc/internals/Makefile
+++ b/libc/misc/internals/Makefile
@@ -45,11 +45,11 @@ interp.c: Makefile
echo "#endif" >> interp.c
interp.o: interp.c
- $(CC) $(CFLAGS) $(PT_INCLUDES) -c $< -o $@
+ $(CC) $(CFLAGS) -c $< -o $@
$(STRIPTOOL) -x -R .note -R .comment $*.o
$(COBJS): %.o : %.c
- $(CC) $(CFLAGS) $(PT_INCLUDES) -c $< -o $@
+ $(CC) $(CFLAGS) -c $< -o $@
$(STRIPTOOL) -x -R .note -R .comment $*.o
clean:
diff --git a/libc/misc/pthread/Makefile b/libc/misc/pthread/Makefile
index cee80a9ac..e222e1442 100644
--- a/libc/misc/pthread/Makefile
+++ b/libc/misc/pthread/Makefile
@@ -19,8 +19,6 @@
TOPDIR=../../../
include $(TOPDIR)Rules.mak
-CFLAGS += $(PT_INCLUDES)
-
CSRC=no-tsd.c weaks.c
COBJS=$(patsubst %.c,%.o, $(CSRC))
OBJS=$(COBJS)
@@ -33,7 +31,7 @@ $(OBJ_LIST): $(OBJS)
echo $(patsubst %, misc/pthread/%, $(OBJS)) > $(OBJ_LIST)
$(COBJS): %.o : %.c
- $(CC) $(CFLAGS) -c $< -o $@
+ $(CC) $(CFLAGS) $(PTINC) -c $< -o $@
$(STRIPTOOL) -x -R .note -R .comment $*.o
clean:
diff --git a/libc/misc/syslog/Makefile b/libc/misc/syslog/Makefile
index 3ddd2737b..35e755e40 100644
--- a/libc/misc/syslog/Makefile
+++ b/libc/misc/syslog/Makefile
@@ -36,7 +36,7 @@ $(OBJ_LIST): $(OBJS)
echo $(patsubst %, misc/syslog/%, $(OBJS)) > $(OBJ_LIST)
$(COBJS): %.o : %.c
- $(CC) $(CFLAGS) $(PT_INCLUDES) -c $< -o $@
+ $(CC) $(CFLAGS) -c $< -o $@
$(STRIPTOOL) -x -R .note -R .comment $*.o
clean:
diff --git a/libc/string/Makefile b/libc/string/Makefile
index 111bf2fdb..4150e403e 100644
--- a/libc/string/Makefile
+++ b/libc/string/Makefile
@@ -64,7 +64,7 @@ endif
OBJS=$(MOBJ) $(MOBJx)
ifeq ($(UCLIBC_HAS_WCHAR),y)
- OBJS += $(MOBJW) $(MOBJWx)
+OBJS += $(MOBJW) $(MOBJWx)
endif
OBJ_LIST=../obj.string
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__