summaryrefslogtreecommitdiffstats
path: root/libpthread/nptl/sysdeps/pthread/Makefile.in
blob: a3043d5e2a19dbb0e64ce958aff73575c27b6557 (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
# Makefile for uClibc NPTL
#
# Copyright (C) 2005 Steven J. Hill <sjhill@uclibc.org>
#
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#

#
# NOTE: glibc puts flockfile.c, ftrylockfile.c, funlockfile.c, and
#       pt-longjmp.c in libc and libpthread. For uClibc, they are
#       in libc only.
#
libpthread_CSRC = pthread_barrier_wait.c pthread_cond_broadcast.c	\
		  pthread_cond_signal.c pthread_cond_timedwait.c	\
		  pthread_cond_wait.c pthread_rwlock_rdlock.c		\
		  pthread_rwlock_timedrdlock.c				\
		  pthread_rwlock_timedwrlock.c pthread_rwlock_unlock.c	\
		  pthread_rwlock_wrlock.c pthread_sigmask.c		\
		  pthread_spin_destroy.c pthread_spin_init.c		\
		  pthread_spin_unlock.c pt-sigaction.c pt-sigfillset.c	\
		  pt-sigprocmask.c unwind-forcedunwind.c pt-longjmp.c

ifeq ($(TARGET_ARCH),i386)
libpthread_CSRC += pthread_once.c
endif
ifeq ($(TARGET_ARCH),sh)
libpthread_CSRC += pthread_once.c
endif
ifeq ($(TARGET_ARCH),x86_64)
libpthread_CSRC += pthread_once.c
endif


CFLAGS-pt-common = -DNOT_IN_libc=1 $(SSP_ALL_CFLAGS)

CFLAGS-pthread_barrier_wait.c = -D_GNU_SOURCE $(CFLAGS-pt-common)	\
				-DIS_IN_libpthread=1
CFLAGS-pthread_cond_broadcast.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1
CFLAGS-pthread_cond_signal.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1
CFLAGS-pthread_cond_timedwait.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1
CFLAGS-pthread_cond_wait.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1
CFLAGS-pthread_rwlock_rdlock.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1
CFLAGS-pthread_rwlock_timedrdlock.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1
CFLAGS-pthread_rwlock_timedwrlock.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1
CFLAGS-pthread_rwlock_unlock.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1
CFLAGS-pthread_rwlock_wrlock.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1
CFLAGS-pthread_sigmask.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1
CFLAGS-pthread_spin_destroy.c = -D_GNU_SOURCE $(CFLAGS-pt-common)	\
				-DIS_IN_libpthread=1
CFLAGS-pthread_spin_init.c = -D_GNU_SOURCE $(CFLAGS-pt-common)		\
			     -DIS_IN_libpthread=1
CFLAGS-pthread_spin_unlock.c = -D_GNU_SOURCE $(CFLAGS-pt-common)	\
			       -DIS_IN_libpthread=1
CFLAGS-pt-sigaction.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1	\
		     -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)	\
		     -I$(top_srcdir)libc/signal
CFLAGS-pt-sigfillset.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1	\
		      -I$(top_srcdir)libc/signal
CFLAGS-pt-sigprocmask.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1	\
		       -I$(top_srcdir)libc/sysdeps/linux/common
CFLAGS-unwind-forcedunwind.c = $(CFLAGS-pt-common) -DIS_IN_libpthread=1
CFLAGS-librt-cancellation.c = -DIS_IN_librt=1 $(CFLAGS-pt-common)	\
			      -fexceptions -fasynchronous-unwind-tables
CFLAGS-rt-unwind-resume.c = -DIS_IN_librt=1 $(CFLAGS-pt-common)		\
			    -fexceptions -fasynchronous-unwind-tables

#CFLAGS:=$(CFLAGS:-O1=-O2)

pthread_DIR := $(top_srcdir)/libpthread/nptl/sysdeps/pthread
pthread_OUT := $(top_builddir)/libpthread/nptl/sysdeps/pthread

pthread_SRC = $(patsubst %.c, $(pthread_DIR)/%.c, $(libpthread_CSRC))
pthread_OBJ = $(patsubst %.c, $(pthread_OUT)/%.o, $(libpthread_CSRC))

libpthread-a-y += $(pthread_OBJ)
libpthread-so-y += $(pthread_OBJ:.o=.oS)

librt-a-y += $(pthread_OUT)/librt-cancellation.o
librt-so-y += $(pthread_OUT)/librt-cancellation.oS		\
	      $(pthread_OUT)/rt-unwind-resume.oS

ifeq ($(UCLIBC_CTOR_DTOR),y)
CFLAGS-pt-initfini.c = -S -g0 -fPIC -fno-inline-functions	\
		       $(call check_gcc,-fno-unit-at-a-time,)	\
		       -finhibit-size-directive			\
		       $(patsubst -f%,-fno-%,$(call check_gcc,-fexceptions,))
ASFLAGS-crti.S = -g0
ASFLAGS-crtn.S = -g0

$(pthread_OUT)/pt-initfini.s: $(pthread_DIR)/pt-initfini.c
	$(compile.c)
	sed -n -e '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \
		awk -f $(pthread_DIR)/defs.awk > $(pthread_OUT)/defs.h

$(pthread_OUT)/crti.S: $(pthread_OUT)/pt-initfini.s
	sed -n -e '1,/@HEADER_ENDS/p' \
	       -e '/@_.*_PROLOG_BEGINS/,/@_.*_PROLOG_ENDS/p' \
	       -e '/@TRAILER_BEGINS/,$$p' $< > $@

$(pthread_OUT)/crtn.S: $(pthread_OUT)/pt-initfini.s
	sed -n -e '1,/@HEADER_ENDS/p' \
	       -e '/@_.*_EPILOG_BEGINS/,/@_.*_EPILOG_ENDS/p' \
	       -e '/@TRAILER_BEGINS/,$$p' $< > $@
endif

$(pthread_DIR)/pt-sigaction.c:
	$(LN) -s sigaction.c $@

$(pthread_DIR)/pt-sigfillset.c:
	$(LN) -s sigfillset.c $@

$(pthread_DIR)/pt-sigprocmask.c:
	$(LN) -s sigprocmask.c $@

objclean-y += pthread_objclean

pthread_objclean:
	$(RM) $(pthread_OUT)/*.{o,os,oS,s,S} $(pthread_OUT)/defs.h \
	      $(pthread_DIR)/pt-sigaction.c $(pthread_DIR)/pt-sigfillset.c \
	      $(pthread_DIR)/pt-sigprocmask.c