1PKGDIR     ?= ../../..
2L4DIR      ?= $(PKGDIR)/../../..
3
4TARGET      = libpthread.a libpthread.so
5
6PC_FILENAME = libpthread
7# this will proper work with pkg-config >= 0.28, for older versions
8# pkg-config's reordering will not harm but std::thread will not work
9PC_LIBS_libpthread := --whole-archive -lpthread --no-whole-archive
10
11CONTRIBDIR = $(PKGDIR)/../uclibc/lib/contrib/uclibc
12LDSODIR    = $(CONTRIBDIR)/ldso/ldso
13
14DIR_amd64 := x86_64
15DIR_x86   := i386
16DIR_arm   := arm
17DIR_arm64 := arm64
18DIR_mips  := mips
19DIR_ppc32 := powerpc
20DIR_sparc := sparc
21
22SRC_CC      = manager.cc l4.cc
23SRC_C      += spinlock.c mutex.c condvar.c rwlock.c errno.c specific.c \
24              semaphore.c attr.c barrier.c join.c pthread.c \
25              cancel.c ptcleanup.c errno-loc.c signals.c \
26              sysdeps/$(DIR_$(ARCH))/pspinlock.c
27SRC_C_libpthread.a += libc_pthread_init.c
28SRC_S       = tramp-$(ARCH).S
29SO_INIT     = so_init-$(ARCH)
30WARNINGS    = $(WARNINGS_MEDIUM)
31
32vpath %.c $(SRC_DIR)/sysdeps/generic
33
34
35INCDIR-x86   = $(SRC_DIR)/sysdeps/i386/i686 $(SRC_DIR)/sysdeps/i386 \
36               $(CONTRIBDIR)/libc \
37               $(LDSODIR)/$(DIR_$(ARCH))
38INCDIR-amd64 = $(SRC_DIR)/sysdeps/$(DIR_$(ARCH))
39INCDIR-arm   = $(SRC_DIR)/sysdeps/arm
40INCDIR-arm64 = $(SRC_DIR)/sysdeps/arm64
41INCDIR-mips  = $(SRC_DIR)/sysdeps/mips
42INCDIR-ppc32 = $(SRC_DIR)/sysdeps/powerpc \
43               $(CONTRIBDIR)/libpthread/linuxthreads/sysdeps/powerpc
44INCDIR-sparc = $(SRC_DIR)/sysdeps/sparc \
45               $(CONTRIBDIR)/libpthread/linuxthreads/sysdeps/sparc
46
47PRIVATE_INCDIR = $(SRC_DIR) $(INCDIR-$(ARCH)) $(CONTRIBDIR)/ldso/include
48
49DEFINES   := -DL4_THREAD_SAFE -D__USE_XOPEN2K -D_POSIX_C_SOURCE=200112L \
50             -D_GNU_SOURCE=1 -D__NO_WEAK_PTHREAD_ALIASES=1 \
51	     -D_LIBC=1 -DIS_IN_libpthread=1 -DNOT_IN_libc=1
52
53DEFINES_x86-l4f   := -DUSE___THREAD=1
54DEFINES_amd64-l4f := -DUSE___THREAD=1
55DEFINES_arm-l4f   := -DUSE___THREAD=1
56DEFINES_arm64-l4f := -DUSE___THREAD=1
57DEFINES_mips-l4f  := -DUSE___THREAD=1
58DEFINES_ppc32-l4f := -DUSE___THREAD=1
59DEFINES_sparc-l4f := -DUSE___THREAD=1
60
61CFLAGS    += -include $(CONTRIBDIR)/include/libc-symbols.h
62CXXFLAGS  += -include $(CONTRIBDIR)/include/libc-symbols.h
63CXXFLAGS  += -fno-exceptions
64
65include $(L4DIR)/mk/lib.mk
66CRT0 = $(CRTI_so) $(SO_INIT).s.o $(CRTBEGIN_so) $(CRT1_so)
67
68PICFLAGS += -DSHARED
69
70libpthread.so: $(SO_INIT).s.o
71