1# 2# Copyright (C) 1994-2022 Free Software Foundation, Inc. 3# 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. 8 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. 13 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# <https://www.gnu.org/licenses/>. 17 18subdir := htl 19 20srcdir = . 21 22MICROKERNEL := mach 23SYSDEPS := lockfile 24 25LCLHDRS := 26 27libpthread-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 \ 35 \ 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 \ 39 \ 40 pt-destroy-specific pt-init-specific \ 41 pt-key-create pt-key-delete \ 42 pt-getspecific pt-setspecific \ 43 \ 44 pt-once \ 45 \ 46 pt-alloc \ 47 pt-create \ 48 pt-getattr \ 49 pt-equal \ 50 pt-dealloc \ 51 pt-detach \ 52 pt-exit \ 53 pt-initialize \ 54 pt-join \ 55 pt-self \ 56 pt-sigmask \ 57 pt-spin-inlines \ 58 pt-cleanup \ 59 pt-setcancelstate \ 60 pt-setcanceltype \ 61 pt-testcancel \ 62 pt-cancel \ 63 \ 64 pt-mutexattr-destroy pt-mutexattr-init \ 65 pt-mutexattr-getprioceiling pt-mutexattr-getprotocol \ 66 pt-mutexattr-getpshared pt-mutexattr-gettype \ 67 pt-mutexattr-setprioceiling pt-mutexattr-setprotocol \ 68 pt-mutexattr-setpshared pt-mutexattr-settype \ 69 pt-mutexattr-getrobust pt-mutexattr-setrobust \ 70 \ 71 pt-mutex-init pt-mutex-destroy pt-mutex-checklocked \ 72 pt-mutex-lock pt-mutex-trylock pt-mutex-timedlock \ 73 pt-mutex-unlock \ 74 pt-mutex-transfer-np \ 75 pt-mutex-getprioceiling pt-mutex-setprioceiling \ 76 pt-mutex-consistent \ 77 \ 78 pt-rwlock-attr \ 79 pt-rwlockattr-init pt-rwlockattr-destroy \ 80 pt-rwlockattr-getpshared pt-rwlockattr-setpshared \ 81 \ 82 pt-rwlock-init pt-rwlock-destroy \ 83 pt-rwlock-rdlock pt-rwlock-tryrdlock \ 84 pt-rwlock-trywrlock pt-rwlock-wrlock \ 85 pt-rwlock-timedrdlock pt-rwlock-timedwrlock \ 86 pt-rwlock-unlock \ 87 \ 88 pt-cond \ 89 pt-condattr-init pt-condattr-destroy \ 90 pt-condattr-getclock pt-condattr-getpshared \ 91 pt-condattr-setclock pt-condattr-setpshared \ 92 \ 93 pt-cond-destroy pt-cond-init \ 94 pt-cond-brdcast \ 95 pt-cond-signal \ 96 pt-cond-wait \ 97 pt-cond-timedwait \ 98 pt-hurd-cond-wait \ 99 pt-hurd-cond-timedwait \ 100 \ 101 pt-stack-alloc \ 102 pt-thread-alloc \ 103 pt-thread-start \ 104 pt-thread-terminate \ 105 pt-startup \ 106 \ 107 pt-getconcurrency pt-setconcurrency \ 108 \ 109 pt-block \ 110 pt-timedblock \ 111 pt-block-intr \ 112 pt-timedblock-intr \ 113 pt-wakeup \ 114 pt-docancel \ 115 pt-sysdep \ 116 pt-setup \ 117 pt-machdep \ 118 pt-spin \ 119 \ 120 pt-sigstate-init \ 121 pt-sigstate-destroy \ 122 pt-sigstate \ 123 \ 124 pt-kill \ 125 pt-getcpuclockid \ 126 \ 127 pt-getschedparam pt-setschedparam pt-setschedprio \ 128 pt-yield \ 129 \ 130 sem_close sem-destroy sem-getvalue sem-init sem_open \ 131 sem-post sem-timedwait sem-trywait sem_unlink \ 132 sem-wait sem-waitfast \ 133 sem_routines \ 134 \ 135 cancellation \ 136 cthreads-compat \ 137 herrno \ 138 $(SYSDEPS) 139 140headers := \ 141 pthread.h \ 142 semaphore.h \ 143 \ 144 bits/pthread.h \ 145 bits/pthread-np.h \ 146 bits/pthreadtypes.h \ 147 bits/pthreadtypes-arch.h \ 148 bits/thread-shared-types.h \ 149 bits/types/struct___pthread_mutex.h \ 150 bits/types/struct___pthread_cond.h \ 151 bits/types/struct___pthread_condattr.h \ 152 bits/types/__pthread_spinlock_t.h \ 153 bits/spin-lock-inline.h \ 154 bits/cancelation.h \ 155 bits/types/struct___pthread_attr.h \ 156 bits/types/struct___pthread_barrierattr.h \ 157 bits/types/struct___pthread_barrier.h \ 158 bits/types/__pthread_key.h \ 159 bits/types/struct___pthread_once.h \ 160 bits/types/struct___pthread_mutexattr.h \ 161 bits/types/struct___pthread_rwlock.h \ 162 bits/types/struct___pthread_rwlockattr.h \ 163 bits/semaphore.h 164 165distribute := 166 167routines := forward libc_pthread_init alloca_cutoff htlfreeres 168shared-only-routines = forward 169 170extra-libs := libpthread 171extra-libs-others := $(extra-libs) 172install-lib := libpthread.so 173install-lib-ldscripts := libpthread_syms.a 174 175include ../Makeconfig 176 177CFLAGS-lockfile.c = -D_IO_MTSAFE_IO 178 179all: # Make this the default target; it will be defined in Rules. 180 181subdir_install: $(inst_libdir)/libpthread2.a $(inst_libdir)/libpthread_syms.a 182 183# XXX: If $(inst_libdir)/libpthread2.a is installed and 184# $(inst_libdir)/libpthread is not, we can have some issues. 185.PHONY: $(inst_libdir)/libpthread.a $(inst_libdir)/libpthread_pic.a 186 187# XXX: These rules are a hack. But it is better than messing with 188# ../Makeconf at the moment. Note that the linker scripts 189# $(srcdir)/libpthread.a and $(srcdir)/libpthread_pic.a get overwritten 190# when building in $(srcdir) and not a seperate build directory. 191$(inst_libdir)/libpthread2.a: $(inst_libdir)/libpthread.a 192 mv $< $@ 193 $(INSTALL_DATA) $(srcdir)/libpthread.a $< 194 195$(inst_libdir)/libpthread2_pic.a: $(inst_libdir)/libpthread_pic.a 196 mv $< $@ 197 $(INSTALL_DATA) $(srcdir)/libpthread_pic.a $< 198 199$(inst_libdir)/libpthread_syms.a: $(srcdir)/libpthread_syms.a $(+force) 200 $(do-install) 201 202libc-link.so = $(common-objpfx)libc.so 203 204extra-B-pthread.so = -B$(common-objpfx)htl/ 205LDFLAGS-pthread.so = -Wl,--enable-new-dtags,-z,nodelete,-z,initfirst 206 207include ../Rules 208 209# Make sure we link with the thread library. 210ifeq ($(build-shared),yes) 211$(addprefix $(objpfx), \ 212 $(filter-out $(tests-static) $(xtests-static) $(tests-reverse) \ 213 $(tests-nolibpthread), \ 214 $(tests) $(tests-internal) $(xtests) $(test-srcs) $(tests-container))): \ 215 $(objpfx)libpthread.so 216# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so, 217# since otherwise libpthread.so comes before libc.so when linking. 218$(addprefix $(objpfx), $(tests-reverse)): \ 219 $(objpfx)../libc.so $(objpfx)libpthread.so 220$(objpfx)../libc.so: $(common-objpfx)libc.so ; 221$(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(srcdir)/libpthread_syms.a $(objpfx)libpthread.a 222else 223$(addprefix $(objpfx),$(tests) $(test-srcs)): $(srcdir)/libpthread_syms.a $(objpfx)libpthread.a 224endif 225