summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author"Steven J. Hill" <sjhill@realitydiluted.com>2005-07-22 05:15:47 +0000
committer"Steven J. Hill" <sjhill@realitydiluted.com>2005-07-22 05:15:47 +0000
commiteb6ed4fe445d1d604a6deab019d547f78540127e (patch)
tree18c7330002ea33abdc97c8b95678ac518d81b708
parent1dfbbd5f31e77a66e8c8b6f9e40e16277eb9f39d (diff)
downloaduClibc-alpine-eb6ed4fe445d1d604a6deab019d547f78540127e.tar.bz2
uClibc-alpine-eb6ed4fe445d1d604a6deab019d547f78540127e.tar.xz
Massive clean up of makefiles with a focus on being able to compile correctly
both thread library models. Items of interest are the 'Rules.mak' changes at the top level as well as the new 'Rules.mak' for the NPTL library.
-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__