Skip to content

Commit c2f9c10

Browse files
authored
Start renaming preview1 to p1 and preview2 to p2 (#386)
* Start renaming preview1 to p1 and preview2 to p2 This commit is a reflection of WebAssembly/wasi-libc#478 into this repository where a few changes are happening: * A new `wasm32-wasip1` sysroot is prepared matching `wasm32-wasi` * A new `wasm32-wasip1-threads` sysroot is prepared matching `wasm32-wasi-threads` * The `wasm32-wasi-preview2` target is renamed `wasm32-wasip2` I've done a bit of makefile refactoring to deduplicate things a bit now that there's a number of targets being built. The long-term goal would be to remove the `wasm32-wasi` and `wasm32-wasip1-threads` targets, but that's not proposed just yet at this time. * Use $(CLANG_VERSION) instead of hardcoding
1 parent f1ebc52 commit c2f9c10

File tree

4 files changed

+48
-61
lines changed

4 files changed

+48
-61
lines changed

Makefile

+45-58
Original file line numberDiff line numberDiff line change
@@ -107,26 +107,22 @@ build/llvm.BUILT:
107107
llvm-config
108108
touch build/llvm.BUILT
109109

110+
# Flags for running `make` in wasi-libc
111+
# $(1): the target that's being built
112+
WASI_LIBC_MAKEFLAGS = \
113+
-C $(ROOT_DIR)/src/wasi-libc \
114+
CC=$(BUILD_PREFIX)/bin/clang \
115+
AR=$(BUILD_PREFIX)/bin/llvm-ar \
116+
NM=$(BUILD_PREFIX)/bin/llvm-nm \
117+
SYSROOT=$(BUILD_PREFIX)/share/wasi-sysroot \
118+
TARGET_TRIPLE=$(1)
119+
110120
build/wasi-libc.BUILT: build/compiler-rt.BUILT
111-
$(MAKE) -C $(ROOT_DIR)/src/wasi-libc \
112-
CC=$(BUILD_PREFIX)/bin/clang \
113-
AR=$(BUILD_PREFIX)/bin/llvm-ar \
114-
NM=$(BUILD_PREFIX)/bin/llvm-nm \
115-
SYSROOT=$(BUILD_PREFIX)/share/wasi-sysroot \
116-
WASI_SNAPSHOT=preview2 \
117-
default libc_so
118-
$(MAKE) -C $(ROOT_DIR)/src/wasi-libc \
119-
CC=$(BUILD_PREFIX)/bin/clang \
120-
AR=$(BUILD_PREFIX)/bin/llvm-ar \
121-
NM=$(BUILD_PREFIX)/bin/llvm-nm \
122-
SYSROOT=$(BUILD_PREFIX)/share/wasi-sysroot \
123-
default libc_so
124-
$(MAKE) -C $(ROOT_DIR)/src/wasi-libc \
125-
CC=$(BUILD_PREFIX)/bin/clang \
126-
AR=$(BUILD_PREFIX)/bin/llvm-ar \
127-
NM=$(BUILD_PREFIX)/bin/llvm-nm \
128-
SYSROOT=$(BUILD_PREFIX)/share/wasi-sysroot \
129-
THREAD_MODEL=posix
121+
$(MAKE) $(call WASI_LIBC_MAKEFLAGS,wasm32-wasi) default libc_so
122+
$(MAKE) $(call WASI_LIBC_MAKEFLAGS,wasm32-wasip1) default libc_so
123+
$(MAKE) $(call WASI_LIBC_MAKEFLAGS,wasm32-wasip2) WASI_SNAPSHOT=p2 default libc_so
124+
$(MAKE) $(call WASI_LIBC_MAKEFLAGS,wasm32-wasi-threads) THREAD_MODEL=posix
125+
$(MAKE) $(call WASI_LIBC_MAKEFLAGS,wasm32-wasip1-threads) THREAD_MODEL=posix
130126
touch build/wasi-libc.BUILT
131127

132128
build/compiler-rt.BUILT: build/llvm.BUILT
@@ -156,11 +152,15 @@ build/compiler-rt.BUILT: build/llvm.BUILT
156152
DESTDIR=$(DESTDIR) ninja $(NINJA_FLAGS) -C build/compiler-rt install
157153
# Install clang-provided headers.
158154
cp -R $(ROOT_DIR)/build/llvm/lib/clang $(BUILD_PREFIX)/lib/
155+
cp -R $(BUILD_PREFIX)/lib/clang/$(CLANG_VERSION)/lib/wasi $(BUILD_PREFIX)/lib/clang/$(CLANG_VERSION)/lib/wasip1
156+
cp -R $(BUILD_PREFIX)/lib/clang/$(CLANG_VERSION)/lib/wasi $(BUILD_PREFIX)/lib/clang/$(CLANG_VERSION)/lib/wasip2
159157
touch build/compiler-rt.BUILT
160158

161159
# Flags for libcxx and libcxxabi.
162160
# $(1): pthreads ON or OFF
163161
# $(2): shared libraries ON or OFF
162+
# $(3): the name of the target being built for
163+
# $(4): extra compiler flags to pass
164164
LIBCXX_CMAKE_FLAGS = \
165165
-DCMAKE_C_COMPILER_WORKS=ON \
166166
-DCMAKE_CXX_COMPILER_WORKS=ON \
@@ -199,47 +199,34 @@ LIBCXX_CMAKE_FLAGS = \
199199
-DLIBCXXABI_ENABLE_PIC:BOOL=$(2) \
200200
-DWASI_SDK_PREFIX=$(BUILD_PREFIX) \
201201
-DUNIX:BOOL=ON \
202-
--debug-trycompile
202+
--debug-trycompile \
203+
-DCMAKE_SYSROOT=$(BUILD_PREFIX)/share/wasi-sysroot \
204+
-DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP) $(EXTRA_CFLAGS) $(4) --target=$(3)" \
205+
-DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP) $(EXTRA_CXXFLAGS) $(4) --target=$(3)" \
206+
-DLIBCXX_LIBDIR_SUFFIX=$(ESCAPE_SLASH)/$(3) \
207+
-DLIBCXXABI_LIBDIR_SUFFIX=$(ESCAPE_SLASH)/$(3) \
208+
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
209+
$(LLVM_PROJ_DIR)/runtimes
210+
211+
# Rules to build libcxx, factored out here to deduplicate the below
212+
# $(1): pthreads ON or OFF
213+
# $(2): shared libraries ON or OFF
214+
# $(3): the name of the target being built for
215+
define BUILD_LIBCXX
216+
mkdir -p build/libcxx-$(3)
217+
cd build/libcxx-$(3) && cmake -G Ninja $(call LIBCXX_CMAKE_FLAGS,$(1),$(2),$(3),$(4))
218+
ninja $(NINJA_FLAGS) -C build/libcxx-$(3)
219+
DESTDIR=$(DESTDIR) ninja $(NINJA_FLAGS) -C build/libcxx-$(3) install
220+
rm -rf $(BUILD_PREFIX)/share/wasi-sysroot/include/$(3)/c++
221+
mv $(BUILD_PREFIX)/share/wasi-sysroot/include/c++ $(BUILD_PREFIX)/share/wasi-sysroot/include/$(3)/
222+
endef
203223

204224
build/libcxx.BUILT: build/llvm.BUILT build/wasi-libc.BUILT
205-
# Do the build.
206-
mkdir -p build/libcxx-preview2
207-
cd build/libcxx-preview2 && cmake -G Ninja $(call LIBCXX_CMAKE_FLAGS,OFF,ON) \
208-
-DCMAKE_SYSROOT=$(BUILD_PREFIX)/share/wasi-sysroot \
209-
-DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP) $(EXTRA_CFLAGS) --target=wasm32-wasi-preview2" \
210-
-DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP) $(EXTRA_CXXFLAGS) --target=wasm32-wasi-preview2" \
211-
-DLIBCXX_LIBDIR_SUFFIX=$(ESCAPE_SLASH)/wasm32-wasi-preview2 \
212-
-DLIBCXXABI_LIBDIR_SUFFIX=$(ESCAPE_SLASH)/wasm32-wasi-preview2 \
213-
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
214-
$(LLVM_PROJ_DIR)/runtimes
215-
ninja $(NINJA_FLAGS) -C build/libcxx-preview2
216-
mkdir -p build/libcxx
217-
cd build/libcxx && cmake -G Ninja $(call LIBCXX_CMAKE_FLAGS,OFF,ON) \
218-
-DCMAKE_SYSROOT=$(BUILD_PREFIX)/share/wasi-sysroot \
219-
-DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP) $(EXTRA_CFLAGS) --target=wasm32-wasi" \
220-
-DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP) $(EXTRA_CXXFLAGS) --target=wasm32-wasi" \
221-
-DLIBCXX_LIBDIR_SUFFIX=$(ESCAPE_SLASH)/wasm32-wasi \
222-
-DLIBCXXABI_LIBDIR_SUFFIX=$(ESCAPE_SLASH)/wasm32-wasi \
223-
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
224-
$(LLVM_PROJ_DIR)/runtimes
225-
ninja $(NINJA_FLAGS) -C build/libcxx
226-
mkdir -p build/libcxx-threads
227-
cd build/libcxx-threads && cmake -G Ninja $(call LIBCXX_CMAKE_FLAGS,ON,OFF) \
228-
-DCMAKE_SYSROOT=$(BUILD_PREFIX)/share/wasi-sysroot \
229-
-DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP) -pthread $(EXTRA_CFLAGS) --target=wasm32-wasi-threads" \
230-
-DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP) -pthread $(EXTRA_CXXFLAGS) --target=wasm32-wasi-threads" \
231-
-DLIBCXX_LIBDIR_SUFFIX=$(ESCAPE_SLASH)/wasm32-wasi-threads \
232-
-DLIBCXXABI_LIBDIR_SUFFIX=$(ESCAPE_SLASH)/wasm32-wasi-threads \
233-
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
234-
$(LLVM_PROJ_DIR)/runtimes
235-
ninja $(NINJA_FLAGS) -C build/libcxx-threads
236-
# Do the install.
237-
DESTDIR=$(DESTDIR) ninja $(NINJA_FLAGS) -C build/libcxx-preview2 install
238-
mv $(BUILD_PREFIX)/share/wasi-sysroot/include/c++ $(BUILD_PREFIX)/share/wasi-sysroot/include/wasm32-wasi-preview2/
239-
DESTDIR=$(DESTDIR) ninja $(NINJA_FLAGS) -C build/libcxx install
240-
mv $(BUILD_PREFIX)/share/wasi-sysroot/include/c++ $(BUILD_PREFIX)/share/wasi-sysroot/include/wasm32-wasi/
241-
DESTDIR=$(DESTDIR) ninja $(NINJA_FLAGS) -C build/libcxx-threads install
242-
mv $(BUILD_PREFIX)/share/wasi-sysroot/include/c++ $(BUILD_PREFIX)/share/wasi-sysroot/include/wasm32-wasi-threads/
225+
$(call BUILD_LIBCXX,OFF,ON,wasm32-wasi)
226+
$(call BUILD_LIBCXX,OFF,ON,wasm32-wasip1)
227+
$(call BUILD_LIBCXX,OFF,ON,wasm32-wasip2)
228+
$(call BUILD_LIBCXX,ON,OFF,wasm32-wasi-threads,-pthread)
229+
$(call BUILD_LIBCXX,ON,OFF,wasm32-wasip1-threads,-pthread)
243230
# As of this writing, `clang++` will ignore the above include dirs unless this one also exists:
244231
mkdir -p $(BUILD_PREFIX)/share/wasi-sysroot/include/c++/v1
245232
touch build/libcxx.BUILT

tests/run.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ echo $CC
4444
echo $CXX
4545
echo "SDK: $wasi_sdk"
4646

47-
for target in wasm32-wasi wasm32-wasi-threads wasm32-wasi-preview2; do
47+
for target in wasm32-wasi wasm32-wasip1 wasm32-wasi-threads wasm32-wasip1-threads wasm32-wasip2; do
4848
echo "===== Testing target $target ====="
4949
cd $testdir/compile-only
5050
for options in -O0 -O2 "-O2 -flto"; do

tests/testcase.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ else
2828
file_options=
2929
fi
3030

31-
if [ "$target" == "wasm32-wasi-threads" ]; then
31+
if echo "$target" | grep -q -- '-threads$'; then
3232
pthread_options="-pthread"
3333
else
3434
pthread_options=

0 commit comments

Comments
 (0)