@@ -66,6 +66,10 @@ ifeq ($(WASI_SNAPSHOT), p2)
66
66
TARGET_TRIPLE = wasm32-wasip2
67
67
endif
68
68
69
+ # These artifacts are "stamps" that we use to mark that some task (e.g., copying
70
+ # files) has been completed.
71
+ INCLUDE_DIRS := $(OBJDIR ) /copy-include-headers.stamp
72
+
69
73
BUILTINS_LIB ?= $(shell ${CC} ${CFLAGS} --print-libgcc-file-name)
70
74
71
75
# These variables describe the locations of various files and directories in
@@ -735,31 +739,31 @@ $(LIBSETJMP_OBJS) $(LIBSETJMP_SO_OBJS): CFLAGS += \
735
739
$(LIBWASI_EMULATED_SIGNAL_MUSL_OBJS ) $(LIBWASI_EMULATED_SIGNAL_MUSL_SO_OBJS ) : CFLAGS += \
736
740
-D_WASI_EMULATED_SIGNAL
737
741
738
- $(OBJDIR ) /% .long-double.pic.o : % .c include_dirs
742
+ $(OBJDIR ) /% .long-double.pic.o : % .c $( INCLUDE_DIRS )
739
743
@mkdir -p " $( @D) "
740
744
$(CC ) $(CFLAGS ) -MD -MP -o $@ -c $<
741
745
742
746
$(OBJDIR ) /wasip2_component_type.pic.o $(OBJDIR ) /wasip2_component_type.o : $(LIBC_BOTTOM_HALF_SOURCES ) /wasip2_component_type.o
743
747
@mkdir -p " $( @D) "
744
748
cp $< $@
745
749
746
- $(OBJDIR ) /% .pic.o : % .c include_dirs
750
+ $(OBJDIR ) /% .pic.o : % .c $( INCLUDE_DIRS )
747
751
@mkdir -p " $( @D) "
748
752
$(CC ) $(CFLAGS ) -MD -MP -o $@ -c $<
749
753
750
- $(OBJDIR ) /% .long-double.o : % .c include_dirs
754
+ $(OBJDIR ) /% .long-double.o : % .c $( INCLUDE_DIRS )
751
755
@mkdir -p " $( @D) "
752
756
$(CC ) $(CFLAGS ) -MD -MP -o $@ -c $<
753
757
754
- $(OBJDIR ) /% .no-floating-point.o : % .c include_dirs
758
+ $(OBJDIR ) /% .no-floating-point.o : % .c $( INCLUDE_DIRS )
755
759
@mkdir -p " $( @D) "
756
760
$(CC ) $(CFLAGS ) -MD -MP -o $@ -c $<
757
761
758
- $(OBJDIR ) /% .o : % .c include_dirs
762
+ $(OBJDIR ) /% .o : % .c $( INCLUDE_DIRS )
759
763
@mkdir -p " $( @D) "
760
764
$(CC ) $(CFLAGS ) -MD -MP -o $@ -c $<
761
765
762
- $(OBJDIR ) /% .o : % .s include_dirs
766
+ $(OBJDIR ) /% .o : % .s $( INCLUDE_DIRS )
763
767
@mkdir -p " $( @D) "
764
768
$(CC ) $(ASMFLAGS ) -o $@ -c $<
765
769
@@ -807,7 +811,10 @@ $(LIBWASI_EMULATED_PTHREAD_OBJS) $(LIBWASI_EMULATED_PTHREAD_SO_OBJS): CFLAGS +=
807
811
$(EMMALLOC_OBJS ) : CFLAGS += \
808
812
-fno-strict-aliasing
809
813
810
- include_dirs :
814
+ ALL_POSSIBLE_HEADERS += $(shell find $(LIBC_TOP_HALF_MUSL_DIR ) -name \* .h)
815
+ ALL_POSSIBLE_HEADERS += $(shell find $(LIBC_BOTTOM_HALF_HEADERS_PUBLIC ) -name \* .h)
816
+ ALL_POSSIBLE_HEADERS += $(shell find $(MUSL_FTS_SRC_DIR ) -name \* .h)
817
+ $(INCLUDE_DIRS ) : $(ALL_POSSIBLE_HEADERS )
811
818
#
812
819
# Install the include files.
813
820
#
@@ -823,10 +830,12 @@ include_dirs:
823
830
824
831
# Copy in the bulk of musl's public header files.
825
832
cp -r "$(LIBC_TOP_HALF_MUSL_INC)"/* "$(SYSROOT_INC)"
833
+
826
834
# Copy in the musl's "bits" header files.
827
835
cp -r "$(LIBC_TOP_HALF_MUSL_DIR)"/arch/generic/bits/* "$(SYSROOT_INC)/bits"
828
836
cp -r "$(LIBC_TOP_HALF_MUSL_DIR)"/arch/wasm32/bits/* "$(SYSROOT_INC)/bits"
829
837
838
+ # Copy in the fts header files.
830
839
cp "$(MUSL_FTS_SRC_DIR)/fts.h" "$(SYSROOT_INC)/fts.h"
831
840
832
841
# Remove selected header files.
@@ -836,7 +845,11 @@ ifeq ($(WASI_SNAPSHOT), p2)
836
845
> "$(SYSROOT_INC)/__wasi_snapshot.h"
837
846
endif
838
847
839
- startup_files : include_dirs $(LIBC_BOTTOM_HALF_CRT_OBJS )
848
+ # Stamp the include installation.
849
+ @mkdir -p $(@D)
850
+ touch $@
851
+
852
+ startup_files : $(INCLUDE_DIRS ) $(LIBC_BOTTOM_HALF_CRT_OBJS )
840
853
#
841
854
# Install the startup files (crt1.o etc).
842
855
#
@@ -861,7 +874,7 @@ LIBC_SO += \
861
874
endif
862
875
endif
863
876
864
- libc_so : include_dirs $(LIBC_SO )
877
+ libc_so : $( INCLUDE_DIRS ) $(LIBC_SO )
865
878
866
879
STATIC_LIBS = \
867
880
$(SYSROOT_LIB ) /libc.a \
@@ -881,7 +894,7 @@ STATIC_LIBS += \
881
894
$(SYSROOT_LIB ) /libsetjmp.a
882
895
endif
883
896
884
- libc : include_dirs $(STATIC_LIBS )
897
+ libc : $( INCLUDE_DIRS ) $(STATIC_LIBS )
885
898
886
899
DUMMY := m rt pthread crypt util xnet resolv
887
900
DUMMY_LIBS := $(patsubst % ,$(SYSROOT_LIB ) /lib% .a,$(DUMMY ) )
@@ -1101,4 +1114,4 @@ clean:
1101
1114
$(RM ) -r " $( OBJDIR) "
1102
1115
$(RM ) -r " $( SYSROOT) "
1103
1116
1104
- .PHONY : default startup_files libc libc_so finish install include_dirs clean check-symbols bindings
1117
+ .PHONY : default startup_files libc libc_so finish install clean check-symbols bindings
0 commit comments