1# POSIX threads
2
3ifndef HAVE_WIN32
4PKGS_FOUND += pthreads
5endif
6
7PTHREADS_W32_VERSION := 2-9-1
8PTHREADS_W32_URL := ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-$(PTHREADS_W32_VERSION)-release.tar.gz
9
10$(TARBALLS)/pthreads-w32-$(PTHREADS_W32_VERSION)-release.tar.gz:
11	$(call download_pkg,$(PTHREADS_W32_URL),pthreads)
12
13.sum-pthreads: pthreads-w32-$(PTHREADS_W32_VERSION)-release.tar.gz
14
15ifdef HAVE_WIN32
16pthreads: pthreads-w32-$(PTHREADS_W32_VERSION)-release.tar.gz .sum-pthreads
17	$(UNPACK)
18	sed -e 's/^CROSS.*=/CROSS ?=/' -i.orig $(UNPACK_DIR)/GNUmakefile
19ifdef HAVE_WINSTORE
20	$(APPLY) $(SRC)/pthreads/winrt.patch
21endif
22	$(APPLY) $(SRC)/pthreads/implib.patch
23	$(APPLY) $(SRC)/pthreads/remove-inline.patch
24	$(APPLY) $(SRC)/pthreads/x86-inline-asm.patch
25	$(APPLY) $(SRC)/pthreads/arm64.patch
26	$(APPLY) $(SRC)/pthreads/pthreads-fix-mode_t.patch
27	$(APPLY) $(SRC)/pthreads/pthread-fix-inline.patch
28	$(APPLY) $(SRC)/pthreads/pthreads-fix-old-mingw.patch
29	$(MOVE)
30
31PTHREADS_W32_CONF := LFLAGS="$(LDFLAGS)" PTW32_FLAGS="$(CFLAGS)"
32ifdef HAVE_CROSS_COMPILE
33PTHREADS_W32_CONF += CROSS="$(HOST)-"
34endif
35
36.pthreads: pthreads
37	cd $< && $(HOSTVARS) $(PTHREADS_W32_CONF) $(MAKE) MAKEFLAGS=-j1 GC-static
38	mkdir -p -- "$(PREFIX)/include"
39	cd $< && cp -v pthread.h sched.h semaphore.h "$(PREFIX)/include/"
40	sed -e 's/#if HAVE_CONFIG_H/#if 0 \&\& HAVE_CONFIG_H/' -i \
41		"$(PREFIX)/include/pthread.h"
42	mkdir -p -- "$(PREFIX)/lib"
43	cp -v $</*.a "$(PREFIX)/lib/"
44	cp -f "$(PREFIX)/lib/libpthreadGC2.a" "$(PREFIX)/lib/libpthread.a"
45	touch $@
46endif
47