2 # Copyright (C) 1994-2018 Free Software Foundation, Inc.
4 # The GNU C Library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
9 # The GNU C Library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with the GNU C Library; if not, see
16 # <http://www.gnu.org/licenses/>.
27 libpthread-routines
:= pt-attr pt-attr-destroy pt-attr-getdetachstate \
28 pt-attr-getguardsize pt-attr-getinheritsched \
29 pt-attr-getschedparam pt-attr-getschedpolicy pt-attr-getscope \
30 pt-attr-getstack pt-attr-getstackaddr pt-attr-getstacksize \
31 pt-attr-init pt-attr-setdetachstate pt-attr-setguardsize \
32 pt-attr-setinheritsched pt-attr-setschedparam \
33 pt-attr-setschedpolicy pt-attr-setscope pt-attr-setstack \
34 pt-attr-setstackaddr pt-attr-setstacksize \
36 pt-barrier-destroy pt-barrier-init pt-barrier-wait \
37 pt-barrier pt-barrierattr-destroy pt-barrierattr-init \
38 pt-barrierattr-getpshared pt-barrierattr-setpshared \
40 pt-destroy-specific pt-init-specific \
41 pt-key-create pt-key-delete \
42 pt-getspecific pt-setspecific \
65 pt-mutexattr-destroy pt-mutexattr-init \
66 pt-mutexattr-getprioceiling pt-mutexattr-getprotocol \
67 pt-mutexattr-getpshared pt-mutexattr-gettype \
68 pt-mutexattr-setprioceiling pt-mutexattr-setprotocol \
69 pt-mutexattr-setpshared pt-mutexattr-settype \
70 pt-mutexattr-getrobust pt-mutexattr-setrobust \
72 pt-mutex-init pt-mutex-destroy \
73 pt-mutex-lock pt-mutex-trylock pt-mutex-timedlock \
75 pt-mutex-transfer-np \
76 pt-mutex-getprioceiling pt-mutex-setprioceiling \
80 pt-rwlockattr-init pt-rwlockattr-destroy \
81 pt-rwlockattr-getpshared pt-rwlockattr-setpshared \
83 pt-rwlock-init pt-rwlock-destroy \
84 pt-rwlock-rdlock pt-rwlock-tryrdlock \
85 pt-rwlock-trywrlock pt-rwlock-wrlock \
86 pt-rwlock-timedrdlock pt-rwlock-timedwrlock \
90 pt-condattr-init pt-condattr-destroy \
91 pt-condattr-getclock pt-condattr-getpshared \
92 pt-condattr-setclock pt-condattr-setpshared \
94 pt-cond-destroy pt-cond-init \
100 pt-hurd-cond-timedwait \
105 pt-thread-terminate \
108 pt-getconcurrency pt-setconcurrency \
120 pt-sigstate-destroy \
128 pt-getschedparam pt-setschedparam pt-setschedprio \
131 sem-close sem-destroy sem-getvalue sem-init sem-open \
132 sem-post sem-timedwait sem-trywait sem-unlink \
140 libpthread-static-only-routines
= pt-atfork
148 bits
/pthreadtypes.h \
149 bits
/pthreadtypes-arch.h \
150 bits
/thread-shared-types.h \
151 bits
/types
/struct___pthread_mutex.h \
152 bits
/types
/struct___pthread_cond.h \
153 bits
/types
/struct___pthread_condattr.h \
154 bits
/types
/__pthread_spinlock_t.h \
155 bits
/spin-lock-inline.h \
157 bits
/types
/struct___pthread_attr.h \
158 bits
/types
/struct___pthread_barrierattr.h \
159 bits
/types
/struct___pthread_barrier.h \
160 bits
/types
/__pthread_key.h \
161 bits
/types
/struct___pthread_once.h \
162 bits
/types
/struct___pthread_mutexattr.h \
163 bits
/types
/struct___pthread_rwlock.h \
164 bits
/types
/struct___pthread_rwlockattr.h \
169 routines
:= forward libc_pthread_init alloca_cutoff
170 shared-only-routines
= forward
172 extra-libs
:= libpthread
173 extra-libs-others
:= $(extra-libs
)
174 install-lib
:= libpthread.so
176 include ..
/Makeconfig
178 CFLAGS-lockfile.c
= -D_IO_MTSAFE_IO
180 all: # Make this the default target; it will be defined in Rules.
182 subdir_install
: $(inst_libdir
)/libpthread2.a
184 # XXX: If $(inst_libdir)/libpthread2.a is installed and
185 # $(inst_libdir)/libpthread is not, we can have some issues.
186 .PHONY
: $(inst_libdir
)/libpthread.a
$(inst_libdir
)/libpthread_pic.a
188 # XXX: These rules are a hack. But it is better than messing with
189 # ../Makeconf at the moment. Note that the linker scripts
190 # $(srcdir)/libpthread.a and $(srcdir)/libpthread_pic.a get overwritten
191 # when building in $(srcdir) and not a seperate build directory.
192 $(inst_libdir
)/libpthread2.a
: $(inst_libdir
)/libpthread.a
194 $(INSTALL_DATA
) $(srcdir)/libpthread.a
$<
196 $(inst_libdir
)/libpthread2_pic.a
: $(inst_libdir
)/libpthread_pic.a
198 $(INSTALL_DATA
) $(srcdir)/libpthread_pic.a
$<
200 libc-link.so
= $(common-objpfx
)libc.so
202 extra-B-pthread.so
= -B
$(common-objpfx
)htl
/
206 ifeq (yes
,$(build-shared
))
207 # What we install as libpthread.so for programs to link against is in fact a
208 # link script. It contains references for the various libraries we need.
209 # The libpthread.so object is not complete since some functions are only
210 # defined in libpthread_nonshared.a.
211 # We need to use absolute paths since otherwise local copies (if they exist)
212 # of the files are taken by the linker.
213 install: $(inst_libdir
)/libpthread.so
215 $(inst_libdir
)/libpthread.so
: $(common-objpfx
)format.lds \
216 $(objpfx
)libpthread.so
$(libpthread.so-version
) \
217 $(inst_libdir
)/$(patsubst %,$(libtype.oS
),\
218 $(libprefix
)pthread
) \
220 (echo
'/* GNU ld script';\
221 echo
' Use the shared library, but some functions are only in';\
222 echo
' the static library, so try that secondarily. */';\
224 echo
'GROUP ( $(slibdir)/libpthread.so$(libpthread.so-version)' \
225 '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)pthread)'\
230 $(addprefix $(objpfx
), \
231 $(filter-out $(tests-static
) $(xtests-static
) $(tests-reverse
) \
232 $(tests-nolibpthread
), \
233 $(tests
) $(xtests
) $(test-srcs
))): $(objpfx
)libpthread.so \
234 $(objpfx
)libpthread_nonshared.a
237 generated
+= libpthread_nonshared.a