1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
# Makefile for uClibc
#
# Copyright (C) 2003 Paul Mundt <lethal@linux-sh.org>
# Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
#
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#
CFLAGS-linuxthreads := -DNOT_IN_libc -DIS_IN_libpthread $(SSP_ALL_CFLAGS)
CFLAGS-libpthread/linuxthreads/sysdeps/$(TARGET_ARCH)/ := $(CFLAGS-linuxthreads)
CFLAGS-libpthread/linuxthreads/sysdeps/unix/sysv/linux/ := $(CFLAGS-linuxthreads)
CFLAGS-libpthread/linuxthreads/sysdeps/pthread/ := $(CFLAGS-linuxthreads)
# This stuff will not compile without at least -O1
# psm: can't handle this here, could maybe search for -O0 in CFLAGS
# and append -O1 if found
#CFLAGS:=$(CFLAGS:-O0=-O1)
ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
LDFLAGS-libpthread.so := $(LDFLAGS_NOSTRIP) -z defs
else
LDFLAGS-libpthread.so := $(LDFLAGS)
endif
LIBS-libpthread.so := $(LIBS) $(ldso)
START_FILE-libpthread.so := $(SHARED_START_FILES)
END_FILE-libpthread.so := $(SHARED_END_FILES)
libpthread_FULL_NAME := libpthread-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so
libpthread_DIR := $(top_srcdir)libpthread/linuxthreads
libpthread_OUT := $(top_builddir)libpthread/linuxthreads
-include $(libpthread_DIR)/sysdeps/$(TARGET_ARCH)/Makefile.arch
pthread_arch_SRC := pspinlock
pthread_arch_SRC := $(patsubst %,$(libpthread_DIR)/sysdeps/$(TARGET_ARCH)/%.c,$(pthread_arch_SRC))
pthread_linux_SRC := fork pt-sigsuspend register-atfork unregister-atfork
pthread_linux_SRC := $(patsubst %,$(libpthread_DIR)/sysdeps/unix/sysv/linux/%.c,$(pthread_linux_SRC))
pthread_sysdep_SRC := errno-loc herrno-loc ptlongjmp
pthread_sysdep_SRC := $(patsubst %,$(libpthread_DIR)/sysdeps/pthread/%.c,$(pthread_sysdep_SRC))
pthread_SRC := \
attr barrier cancel condvar errno events join pthread \
lockfile manager mutex pt-machine ptcleanup \
ptclock_gettime ptclock_settime ptfork pthandles pthread_atfork \
pthread_setegid pthread_seteuid pthread_setgid pthread_setregid \
pthread_setresgid pthread_setresuid pthread_setreuid pthread_setuid \
rwlock semaphore sighandler signals specific spinlock
pthread_SRC := $(patsubst %,$(libpthread_DIR)/%.c,$(pthread_SRC))
libpthread_static_SRC := pt-allocrtsig
libpthread_shared_SRC := pthread_atfork
libpthread_SRC := $(pthread_arch_SRC) $(pthread_linux_SRC) $(pthread_sysdep_SRC) $(pthread_SRC)
libpthread_OBJ := $(patsubst $(libpthread_DIR)/%.c,$(libpthread_OUT)/%.o,$(libpthread_SRC))
#
# Stuff that goes into libc.so, not libpthread.so
#
#CFLAGS-alloca_cutoff.c := -DIS_IN_libc
CFLAGS-forward.c := -DIS_IN_libc
CFLAGS-libc-cancellation.c := -DIS_IN_libc
CFLAGS-libc_pthread_init.c := -DIS_IN_libc
libpthread_libc_CSRC := \
forward.c libc-cancellation.c libc_pthread_init.c # alloca_cutoff.c
libpthread_libc_OBJ := $(patsubst %.c, $(libpthread_OUT)/%.o,$(libpthread_libc_CSRC))
libc-static-y += $(libpthread_OUT)/libc_pthread_init.o
libc-shared-y += $(libpthread_libc_OBJ:.o=.oS)
libpthread-static-y += $(patsubst %,$(libpthread_OUT)/%.o,$(libpthread_static_SRC))
libpthread-shared-y += $(patsubst %,$(libpthread_OUT)/%.oS,$(libpthread_shared_SRC))
ifeq ($(DOPIC),y)
libpthread-a-y += $(libpthread_OBJ:.o=.os) $(libpthread-static-y:.o=.os)
else
libpthread-a-y += $(libpthread_OBJ) $(libpthread-static-y)
endif
libpthread-so-y += $(libpthread_OBJ:.o=.os) $(libpthread-shared-y)
lib-a-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.a
lib-so-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.so
objclean-y += libpthread_clean
headers-$(UCLIBC_HAS_THREADS) += linuxthreads_headers
headers_clean-y += linuxthreads_headers_clean
ifeq ($(DOMULTI),n)
$(top_builddir)lib/libpthread.so: $(libpthread_OUT)/libpthread_so.a $(libc)
$(call link.so,$(libpthread_FULL_NAME),$(MAJOR_VERSION))
else
$(top_builddir)lib/libpthread.so: $(libpthread_OUT)/libpthread.oS $(libc)
$(call linkm.so,$(libpthread_FULL_NAME),$(MAJOR_VERSION))
endif
$(libpthread_OUT)/libpthread_so.a: $(libpthread-so-y)
$(Q)$(RM) $@
ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
$(do_strip:-x=-X --strip-debug)
else
$(do_strip)
endif
$(do_ar)
$(libpthread_OUT)/libpthread.oS: $(libpthread_SRC) $(patsubst %,$(libpthread_DIR)/%.c,$(libpthread_shared_SRC))
$(Q)$(RM) $@
$(compile-m)
ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
$(do_t_strip:-x=-X --strip-debug)
else
$(do_t_strip)
endif
$(top_builddir)lib/libpthread.a: $(libpthread-a-y)
$(Q)$(INSTALL) -d $(dir $@)
$(Q)$(RM) $@
ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
$(do_strip:-x=-X --strip-debug)
else
$(do_strip)
endif
$(do_ar)
linuxthreads_headers:
$(LN) -sf ../$(PTDIR)/sysdeps/pthread/pthread.h $(top_builddir)include/
$(LN) -sf ../$(PTDIR)/semaphore.h $(top_builddir)include/
$(INSTALL) -d $(top_builddir)include/bits
$(LN) -sf ../../$(PTDIR)/sysdeps/pthread/bits/pthreadtypes.h $(top_builddir)include/bits/
linuxthreads_headers_clean:
$(RM) $(top_builddir)include/pthread.h $(top_builddir)include/semaphore.h \
$(top_builddir)include/bits/pthreadtypes.h
libpthread_clean:
$(RM) $(libpthread_OUT)/{,*/,*/*/,*/*/*/,*/*/*/*/}*.{o,os,oS,a}
|