@@ -143,6 +143,8 @@ LIBWASI_EMULATED_SIGNAL_SOURCES = \
143
143
LIBWASI_EMULATED_SIGNAL_MUSL_SOURCES = \
144
144
$(LIBC_TOP_HALF_MUSL_SRC_DIR ) /signal/psignal.c \
145
145
$(LIBC_TOP_HALF_MUSL_SRC_DIR ) /string/strsignal.c
146
+ LIBWASI_EMULATED_PTHREAD_SOURCES = \
147
+ $(STUB_PTHREADS_DIR ) /stub-pthreads-emulated.c
146
148
LIBDL_SOURCES = $(LIBC_TOP_HALF_MUSL_SRC_DIR ) /misc/dl.c
147
149
LIBSETJMP_SOURCES = $(LIBC_TOP_HALF_MUSL_SRC_DIR ) /setjmp/wasm32/rt.c
148
150
LIBC_BOTTOM_HALF_CRT_SOURCES = $(wildcard $(LIBC_BOTTOM_HALF_DIR ) /crt/* .c)
@@ -500,6 +502,7 @@ LIBWASI_EMULATED_PROCESS_CLOCKS_OBJS = $(call objs,$(LIBWASI_EMULATED_PROCESS_CL
500
502
LIBWASI_EMULATED_GETPID_OBJS = $(call objs,$(LIBWASI_EMULATED_GETPID_SOURCES ) )
501
503
LIBWASI_EMULATED_SIGNAL_OBJS = $(call objs,$(LIBWASI_EMULATED_SIGNAL_SOURCES ) )
502
504
LIBWASI_EMULATED_SIGNAL_MUSL_OBJS = $(call objs,$(LIBWASI_EMULATED_SIGNAL_MUSL_SOURCES ) )
505
+ LIBWASI_EMULATED_PTHREAD_OBJS = $(call objs,$(LIBWASI_EMULATED_PTHREAD_SOURCES ) )
503
506
LIBDL_OBJS = $(call objs,$(LIBDL_SOURCES ) )
504
507
LIBSETJMP_OBJS = $(call objs,$(LIBSETJMP_SOURCES ) )
505
508
LIBC_BOTTOM_HALF_CRT_OBJS = $(call objs,$(LIBC_BOTTOM_HALF_CRT_SOURCES ) )
@@ -603,6 +606,7 @@ LIBWASI_EMULATED_PROCESS_CLOCKS_SO_OBJS = $(patsubst %.o,%.pic.o,$(LIBWASI_EMULA
603
606
LIBWASI_EMULATED_GETPID_SO_OBJS = $(patsubst % .o,% .pic.o,$(LIBWASI_EMULATED_GETPID_OBJS ) )
604
607
LIBWASI_EMULATED_SIGNAL_SO_OBJS = $(patsubst % .o,% .pic.o,$(LIBWASI_EMULATED_SIGNAL_OBJS ) )
605
608
LIBWASI_EMULATED_SIGNAL_MUSL_SO_OBJS = $(patsubst % .o,% .pic.o,$(LIBWASI_EMULATED_SIGNAL_MUSL_OBJS ) )
609
+ LIBWASI_EMULATED_PTHREAD_SO_OBJS = $(patsubst % .o,% .pic.o,$(LIBWASI_EMULATED_PTHREAD_OBJS ) )
606
610
LIBDL_SO_OBJS = $(patsubst % .o,% .pic.o,$(LIBDL_OBJS ) )
607
611
LIBSETJMP_SO_OBJS = $(patsubst % .o,% .pic.o,$(LIBSETJMP_OBJS ) )
608
612
BULK_MEMORY_SO_OBJS = $(patsubst % .o,% .pic.o,$(BULK_MEMORY_OBJS ) )
@@ -618,6 +622,7 @@ PIC_OBJS = \
618
622
$(LIBWASI_EMULATED_GETPID_SO_OBJS ) \
619
623
$(LIBWASI_EMULATED_SIGNAL_SO_OBJS ) \
620
624
$(LIBWASI_EMULATED_SIGNAL_MUSL_SO_OBJS ) \
625
+ $(LIBWASI_EMULATED_PTHREAD_SO_OBJS ) \
621
626
$(LIBDL_SO_OBJS ) \
622
627
$(LIBSETJMP_SO_OBJS ) \
623
628
$(BULK_MEMORY_SO_OBJS ) \
@@ -659,6 +664,8 @@ $(OBJDIR)/libwasi-emulated-getpid.so.a: $(LIBWASI_EMULATED_GETPID_SO_OBJS)
659
664
660
665
$(OBJDIR ) /libwasi-emulated-signal.so.a : $(LIBWASI_EMULATED_SIGNAL_SO_OBJS ) $(LIBWASI_EMULATED_SIGNAL_MUSL_SO_OBJS )
661
666
667
+ $(OBJDIR ) /libwasi-emulated-pthread.so.a : $(LIBWASI_EMULATED_PTHREAD_SO_OBJS )
668
+
662
669
$(OBJDIR ) /libdl.so.a : $(LIBDL_SO_OBJS )
663
670
664
671
$(OBJDIR ) /libsetjmp.so.a : $(LIBSETJMP_SO_OBJS )
@@ -677,6 +684,8 @@ $(SYSROOT_LIB)/libwasi-emulated-getpid.a: $(LIBWASI_EMULATED_GETPID_OBJS)
677
684
678
685
$(SYSROOT_LIB ) /libwasi-emulated-signal.a : $(LIBWASI_EMULATED_SIGNAL_OBJS ) $(LIBWASI_EMULATED_SIGNAL_MUSL_OBJS )
679
686
687
+ $(SYSROOT_LIB ) /libwasi-emulated-pthread.a : $(LIBWASI_EMULATED_PTHREAD_OBJS )
688
+
680
689
$(SYSROOT_LIB ) /libdl.a : $(LIBDL_OBJS )
681
690
682
691
$(SYSROOT_LIB ) /libsetjmp.a : $(LIBSETJMP_OBJS )
@@ -775,6 +784,11 @@ $(LIBC_TOP_HALF_ALL_OBJS) $(LIBC_TOP_HALF_ALL_SO_OBJS) $(MUSL_PRINTSCAN_LONG_DOU
775
784
$(LIBWASI_EMULATED_PROCESS_CLOCKS_OBJS ) $(LIBWASI_EMULATED_PROCESS_CLOCKS_SO_OBJS ) : CFLAGS += \
776
785
-I$(LIBC_BOTTOM_HALF_CLOUDLIBC_SRC)
777
786
787
+ $(LIBWASI_EMULATED_PTHREAD_OBJS ) $(LIBWASI_EMULATED_PTHREAD_SO_OBJS ) : CFLAGS += \
788
+ -I$(LIBC_TOP_HALF_MUSL_SRC_DIR)/include \
789
+ -I$(LIBC_TOP_HALF_MUSL_SRC_DIR)/internal \
790
+ -I$(LIBC_TOP_HALF_MUSL_DIR)/arch/wasm32
791
+
778
792
# emmalloc uses a lot of pointer type-punning, which is UB under strict aliasing,
779
793
# and this was found to have real miscompilations in wasi-libc#421.
780
794
$(EMMALLOC_OBJS ) : CFLAGS += \
@@ -824,6 +838,7 @@ LIBC_SO = \
824
838
$(SYSROOT_LIB ) /libwasi-emulated-process-clocks.so \
825
839
$(SYSROOT_LIB ) /libwasi-emulated-getpid.so \
826
840
$(SYSROOT_LIB ) /libwasi-emulated-signal.so \
841
+ $(SYSROOT_LIB ) /libwasi-emulated-pthread.so \
827
842
$(SYSROOT_LIB ) /libdl.so
828
843
ifeq ($(BUILD_LIBSETJMP ) ,yes)
829
844
LIBC_SO += \
@@ -842,6 +857,10 @@ STATIC_LIBS = \
842
857
$(SYSROOT_LIB ) /libwasi-emulated-getpid.a \
843
858
$(SYSROOT_LIB ) /libwasi-emulated-signal.a \
844
859
$(SYSROOT_LIB ) /libdl.a
860
+ ifneq ($(THREAD_MODEL ) , posix)
861
+ STATIC_LIBS += \
862
+ $(SYSROOT_LIB ) /libwasi-emulated-pthread.a
863
+ endif
845
864
ifeq ($(BUILD_LIBSETJMP ) ,yes)
846
865
STATIC_LIBS += \
847
866
$(SYSROOT_LIB ) /libsetjmp.a
0 commit comments