1111 export WASI_SYSROOT=" ${WASI_SDK_PREFIX} /share/wasi-sysroot"
1212
1313
14+ export CMAKE_TOOLCHAIN_FILE=${SDKROOT} /wasisdk/share/cmake/Modules/Platform/WASI.cmake
15+ export CMAKE_INSTALL_PREFIX=" ${SDKROOT} /devices/wasi/usr"
1416
1517 if [ -d ${WASI_SDK_PREFIX} ]
1618 then
3941 # /opt/python-wasm-sdk/devices/x86_64/usr/lib/python3.11/site-packages/cmake/data/share/cmake-3.27/Modules/Platform/
4042 cp -v wasisdk/share/cmake/WASI.cmake ${SDKROOT} /devices/$( arch) /usr/lib/python${PYBUILD} /site-packages/cmake/data/share/cmake-* /Modules/Platform/
4143
42- cat > ${SDKROOT} /devices/$( arch) /usr/lib/python${PYBUILD} /site-packages/cmake/data/share/cmake-* /Modules/Platform/WASI.cmake << END
44+
45+ # cat > ${SDKROOT}/devices/$(arch)/usr/lib/python${PYBUILD}/site-packages/cmake/data/share/cmake-*/Modules/Platform/WASI.cmake <<END
46+
47+ mkdir -p ${SDKROOT} /wasisdk/share/cmake/Modules/Platform/
48+
49+ cat > ${CMAKE_TOOLCHAIN_FILE} << END
4350# Cmake toolchain description file for the Makefile
4451
45- set(CMAKE_TOOLCHAIN_FILE ${WASISDK} /share/cmake/wasi-sdk.cmake)
52+ # set(CMAKE_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_FILE} ")
53+ # list(APPEND CMAKE_MODULE_PATH "${WASISDK} /share/cmake/Modules")
54+
4655
4756# This is arbitrary, AFAIK, for now.
4857cmake_minimum_required(VERSION 3.5.0)
@@ -75,14 +84,37 @@ else()
7584 set(WASI_HOST_EXE_SUFFIX "")
7685endif()
7786
87+ # lock those
7888set(CMAKE_C_COMPILER ${WASISDK} /bin/wasi-c)
7989set(CMAKE_CXX_COMPILER ${WASISDK} /bin/wasi-c++)
80- set(CMAKE_ASM_COMPILER ${WASI_SDK_PREFIX} /bin/clang\$ {WASI_HOST_EXE_SUFFIX})
81- set(CMAKE_AR ${WASI_SDK_PREFIX} /bin/llvm-ar\$ {WASI_HOST_EXE_SUFFIX})
82- set(CMAKE_RANLIB ${WASI_SDK_PREFIX} /bin/llvm-ranlib\$ {WASI_HOST_EXE_SUFFIX})
83- set(CMAKE_C_COMPILER_TARGET \$ {triple})
84- set(CMAKE_CXX_COMPILER_TARGET \$ {triple})
85- set(CMAKE_ASM_COMPILER_TARGET \$ {triple})
90+
91+ set(CMAKE_C_COMPILER_ID_RUN TRUE)
92+ set(CMAKE_C_COMPILER_FORCED TRUE)
93+ set(CMAKE_C_COMPILER_WORKS TRUE)
94+ set(CMAKE_C_COMPILER_ID Clang)
95+ set(CMAKE_C_COMPILER_FRONTEND_VARIANT GNU)
96+ set(CMAKE_C_STANDARD_COMPUTED_DEFAULT 11)
97+
98+ #set(CMAKE_C_STANDARD 99)
99+ #set(CMAKE_C_STANDARD_REQUIRED ON)
100+ set(CMAKE_C_EXTENSIONS ON)
101+
102+ set(CMAKE_CXX_COMPILER_ID_RUN TRUE)
103+ set(CMAKE_CXX_COMPILER_FORCED TRUE)
104+ set(CMAKE_CXX_COMPILER_WORKS TRUE)
105+ set(CMAKE_CXX_COMPILER_ID Clang)
106+ set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT GNU)
107+ set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT 98)
108+
109+ set(CMAKE_C_PLATFORM_ID "wasi")
110+ set(CMAKE_CXX_PLATFORM_ID "wasi")
111+
112+ set(CMAKE_ASM_COMPILER ${WASI_SDK_PREFIX} /bin/clang${WASI_HOST_EXE_SUFFIX} )
113+ set(CMAKE_AR ${WASI_SDK_PREFIX} /bin/llvm-ar${WASI_HOST_EXE_SUFFIX} )
114+ set(CMAKE_RANLIB ${WASI_SDK_PREFIX} /bin/llvm-ranlib${WASI_HOST_EXE_SUFFIX} )
115+ set(CMAKE_C_COMPILER_TARGET ${triple} )
116+ set(CMAKE_CXX_COMPILER_TARGET ${triple} )
117+ set(CMAKE_ASM_COMPILER_TARGET ${triple} )
86118
87119# Don't look in the sysroot for executables to run during the build
88120set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
@@ -91,8 +123,41 @@ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
91123set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
92124set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
93125
126+ # 64
127+ #set(CMAKE_SIZEOF_VOID_P 8)
128+ #set(CMAKE_C_SIZEOF_DATA_PTR 8)
129+ #set(CMAKE_CXX_SIZEOF_DATA_PTR 8)
130+
131+ # 32
132+ set(CMAKE_SIZEOF_VOID_P 4)
133+ set(CMAKE_C_SIZEOF_DATA_PTR 4)
134+ set(CMAKE_CXX_SIZEOF_DATA_PTR 4)
135+
136+ # faster
137+ set(CMAKE_SKIP_COMPATIBILITY_TESTS 1)
138+ set(CMAKE_SIZEOF_CHAR 1)
139+ set(CMAKE_SIZEOF_UNSIGNED_SHORT 2)
140+ set(CMAKE_SIZEOF_SHORT 2)
141+ set(CMAKE_SIZEOF_INT 4)
142+ set(CMAKE_SIZEOF_UNSIGNED_LONG 4)
143+ set(CMAKE_SIZEOF_UNSIGNED_INT 4)
144+ set(CMAKE_SIZEOF_LONG 4)
145+ set(CMAKE_SIZEOF_FLOAT 4)
146+ set(CMAKE_SIZEOF_DOUBLE 8)
147+ set(CMAKE_HAVE_LIMITS_H 1)
148+ set(CMAKE_HAVE_UNISTD_H 1)
149+ set(CMAKE_HAVE_PTHREAD_H 1)
150+ set(CMAKE_HAVE_SYS_PRCTL_H 1)
151+ set(CMAKE_WORDS_BIGENDIAN 0)
152+
153+ set(CMAKE_EXECUTABLE_SUFFIX ".wasi")
154+
155+ set(CMAKE_CROSSCOMPILING_EMULATOR "${WASISDK} /bin/wasi-run" FILEPATH "Path to the emulator for the target system.")
156+
94157END
95158
159+ # cp ${SDKROOT}/wasisdk/share/cmake/Modules/Platform/WASI.cmake ${SDKROOT}/devices/$(arch)/usr/lib/python${PYBUILD}/site-packages/cmake/data/share/cmake-*/Modules/Platform/
160+
96161 pushd ${WASI_SYSROOT}
97162 wget " https://github.com/vmware-labs/webassembly-language-runtimes/releases/download/libs%2Flibpng%2F1.6.39%2B20230629-ccb4cb0/libpng-1.6.39-wasi-sdk-20.0.tar.gz" -O-| tar xvfz -
98163 wget " https://github.com/vmware-labs/webassembly-language-runtimes/releases/download/libs%2Fzlib%2F1.2.13%2B20230623-2993864/libz-1.2.13-wasi-sdk-20.0.tar.gz" -O-| tar xvfz -
105170
106171 export PATH=" ${WASISDK} /bin:${WASI_SDK_PREFIX} /bin:$PATH "
107172
108- export PREFIX=" ${SDKROOT} /devices/wasi/usr "
173+ export PREFIX=$CMAKE_INSTALL_PREFIX
109174
110175 # instruct pkg-config to use wasi target root
111176 export PKG_CONFIG_PATH=" ${PREFIX} /lib/pkgconfig:${WASI_SYSROOT} /lib/wasm32-wasi/pkgconfig"
128193 # wasi assembly
129194 WASI_ALL=" ${WASI_CFG} ${WASI_DEF} -fPIC -fno-rtti -fno-exceptions"
130195
131-
132196 WASI_ALL=" $WASI_ALL -Wno-unused-but-set-variable -Wno-unused-command-line-argument -Wno-unsupported-floating-point-opt"
133197
134198 # wasi linking
@@ -138,10 +202,10 @@ END
138202# export CPP="${WASISDK}/bin/wasi-cpp"
139203# export CXX="${WASISDK}/bin/wasi++"
140204
141- CXX_lIBS =" -lc++ -lc++abi -lc++experimental"
205+ CXX_LIBS =" -lc++ -lc++abi -lc++experimental"
142206
143207 export CC=" ${WASI_SDK_PREFIX} /bin/clang ${WASI_ALL} "
144- export CXX=" ${WASI_SDK_PREFIX} /bin/clang++ ${WASI_ALL} ${CXX_lIBS } "
208+ export CXX=" ${WASI_SDK_PREFIX} /bin/clang++ ${WASI_ALL} ${CXX_LIBS } "
145209 export CPP=" ${WASI_SDK_PREFIX} /bin/clang-cpp ${WASI_CFG} ${WASI_DEF} "
146210
147211
0 commit comments