summaryrefslogtreecommitdiff
path: root/libpthread/linuxthreads/Makefile.in
blob: 7ed3ec510a207bb2e7c9833488eb428d6e85d599 (plain)
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
135
136
137
138
139
140
141
# Makefile for uClibc
#
# Copyright (C) 2003 Paul Mundt <lethal@linux-sh.org>
# Copyright (C) 2000-2008 Erik Andersen <andersen@uclibc.org>
#
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#

subdirs += libpthread/linuxthreads/sysdeps/$(TARGET_ARCH)
subdirs += libpthread/linuxthreads/sysdeps/unix/sysv/linux
subdirs += libpthread/linuxthreads/sysdeps/pthread

CFLAGS-dir_linuxthreads := -DNOT_IN_libc -DIS_IN_libpthread
CFLAGS-linuxthreads := $(CFLAGS-dir_linuxthreads) $(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) -Wl,-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-$(VERSION).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_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 := 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-OMIT-alloca_cutoff.c := $(CFLAGS-dir_linuxthreads)
CFLAGS-OMIT-forward.c := $(CFLAGS-dir_linuxthreads)
CFLAGS-OMIT-libc-cancellation.c := $(CFLAGS-dir_linuxthreads)
CFLAGS-OMIT-libc_pthread_init.c := $(CFLAGS-dir_linuxthreads)
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-nonshared-y += $(patsubst %,$(libpthread_OUT)/%.oS,$(libpthread_static_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)

lib-a-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.a
lib-so-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.so

#ifeq ($(DOMULTI),n)
$(top_builddir)lib/libpthread.so: $(libpthread_OUT)/libpthread_so.a $(libc.depend) $(top_builddir)lib/libpthread_nonshared.a
	$(call link.so,$(libpthread_FULL_NAME),$(MAJOR_VERSION))
#else
#$(top_builddir)lib/libpthread.so: $(libpthread_OUT)/libpthread.oS | $(libc.depend) $(top_builddir)lib/libpthread_nonshared.a
#	$(call linkm.so,$(libpthread_FULL_NAME),$(MAJOR_VERSION))
#endif
	$(Q)$(RM) $@
	$(Q)cp $(top_srcdir)extra/scripts/format.lds $@
	$(Q)echo "GROUP ( $(notdir $@).$(MAJOR_VERSION) libpthread_nonshared.a )" >> $@

ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
$(libpthread_OUT)/libpthread_so.a: STRIP_FLAGS:=$(STRIP_FLAGS:-x=-X --strip-debug)
endif
$(libpthread_OUT)/libpthread_so.a: $(libpthread-so-y)
	$(Q)$(RM) $@
	$(do_ar)

ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
$(libpthread_OUT)/libpthread.oS: STRIP_FLAGS:=$(STRIP_FLAGS:-x=-X --strip-debug)
endif
$(libpthread_OUT)/libpthread.oS: $(libpthread_SRC)
	$(Q)$(RM) $@
	$(compile-m)

ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
$(top_builddir)lib/libpthread.a: STRIP_FLAGS:=$(STRIP_FLAGS:-x=-X --strip-debug)
endif
$(top_builddir)lib/libpthread.a: $(libpthread-a-y)
	$(Q)$(INSTALL) -d $(dir $@)
	$(Q)$(RM) $@
	$(do_ar)

$(top_builddir)include/pthread.h:
	$(do_ln) $(call rel_srcdir)$(PTDIR)/sysdeps/pthread/$(@F) $@
$(top_builddir)include/semaphore.h:
	$(do_ln) $(call rel_srcdir)$(PTDIR)/$(@F) $@
$(top_builddir)include/bits/pthreadtypes.h: | $(top_builddir)include/bits
	$(do_ln) $(call rel_srcdir)$(PTDIR)/sysdeps/pthread/bits/$(@F) $@

linuxthreads_headers := $(top_builddir)include/pthread.h \
			$(top_builddir)include/semaphore.h \
			$(top_builddir)include/bits/pthreadtypes.h
$(linuxthreads_headers): $(wildcard $(addprefix $(top_builddir)include/config/linuxthreads/,old.h new.h))
headers-$(UCLIBC_HAS_THREADS) += $(linuxthreads_headers)

objclean-y += libpthread_clean
headers_clean-y += linuxthreads_headers_clean
linuxthreads_headers_clean:
	$(do_rm) $(linuxthreads_headers)

libpthread_clean:
	$(do_rm) $(addprefix $(libpthread_OUT)/,$(foreach e, o os oS a,$(foreach d, *. */*. */*/*. */*/*/*.,$(d)$(e))))