11
11
export WASI_SYSROOT=" ${WASI_SDK_PREFIX} /share/wasi-sysroot"
12
12
13
13
14
+ export CMAKE_TOOLCHAIN_FILE=${SDKROOT} /wasisdk/share/cmake/Modules/Platform/WASI.cmake
15
+ export CMAKE_INSTALL_PREFIX=" ${SDKROOT} /devices/wasi/usr"
14
16
15
17
if [ -d ${WASI_SDK_PREFIX} ]
16
18
then
39
41
# /opt/python-wasm-sdk/devices/x86_64/usr/lib/python3.11/site-packages/cmake/data/share/cmake-3.27/Modules/Platform/
40
42
cp -v wasisdk/share/cmake/WASI.cmake ${SDKROOT} /devices/$( arch) /usr/lib/python${PYBUILD} /site-packages/cmake/data/share/cmake-* /Modules/Platform/
41
43
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
43
50
# Cmake toolchain description file for the Makefile
44
51
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
+
46
55
47
56
# This is arbitrary, AFAIK, for now.
48
57
cmake_minimum_required(VERSION 3.5.0)
@@ -75,14 +84,37 @@ else()
75
84
set(WASI_HOST_EXE_SUFFIX "")
76
85
endif()
77
86
87
+ # lock those
78
88
set(CMAKE_C_COMPILER ${WASISDK} /bin/wasi-c)
79
89
set(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} )
86
118
87
119
# Don't look in the sysroot for executables to run during the build
88
120
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
@@ -91,8 +123,41 @@ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
91
123
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
92
124
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
93
125
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
+
94
157
END
95
158
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
+
96
161
pushd ${WASI_SYSROOT}
97
162
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 -
98
163
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 -
105
170
106
171
export PATH=" ${WASISDK} /bin:${WASI_SDK_PREFIX} /bin:$PATH "
107
172
108
- export PREFIX=" ${SDKROOT} /devices/wasi/usr "
173
+ export PREFIX=$CMAKE_INSTALL_PREFIX
109
174
110
175
# instruct pkg-config to use wasi target root
111
176
export PKG_CONFIG_PATH=" ${PREFIX} /lib/pkgconfig:${WASI_SYSROOT} /lib/wasm32-wasi/pkgconfig"
128
193
# wasi assembly
129
194
WASI_ALL=" ${WASI_CFG} ${WASI_DEF} -fPIC -fno-rtti -fno-exceptions"
130
195
131
-
132
196
WASI_ALL=" $WASI_ALL -Wno-unused-but-set-variable -Wno-unused-command-line-argument -Wno-unsupported-floating-point-opt"
133
197
134
198
# wasi linking
@@ -138,10 +202,10 @@ END
138
202
# export CPP="${WASISDK}/bin/wasi-cpp"
139
203
# export CXX="${WASISDK}/bin/wasi++"
140
204
141
- CXX_lIBS =" -lc++ -lc++abi -lc++experimental"
205
+ CXX_LIBS =" -lc++ -lc++abi -lc++experimental"
142
206
143
207
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 } "
145
209
export CPP=" ${WASI_SDK_PREFIX} /bin/clang-cpp ${WASI_CFG} ${WASI_DEF} "
146
210
147
211
0 commit comments