Skip to content

Commit ddd35b6

Browse files
committed
ok
1 parent 197ed55 commit ddd35b6

File tree

5 files changed

+83
-67
lines changed

5 files changed

+83
-67
lines changed

emsdk-cc

Lines changed: 77 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,11 @@ SHARED_TARGET = SHARED = ""
6262
MVP = env("MVP", true)
6363

6464
if env("EMMAKEN_JUST_CONFIGURE", false):
65-
CONFIGURE=True
65+
CONFIGURE = True
6666
elif env("CONFIG_SITE", false):
67-
CONFIGURE=True
67+
CONFIGURE = True
6868
else:
69-
CONFIGURE= env("CONFIGURE", false)
69+
CONFIGURE = env("CONFIGURE", false)
7070

7171

7272
if MVP:
@@ -82,6 +82,9 @@ if MVP:
8282
# WASMOPTS="-fno-wasm-exceptions -sSUPPORT_LONGJMP=emscripten"
8383
# CPU="-mnontrapping-fptoint -mno-reference-types -mno-sign-ext -m32"
8484

85+
# bulk and main/side
86+
# https://github.com/emscripten-core/emscripten/issues/22161
87+
8588
CPU = arglist(
8689
"""
8790
-D_FILE_OFFSET_BITS=64
@@ -91,6 +94,15 @@ if MVP:
9194
-mno-reference-types
9295
-mno-sign-ext
9396
-m32
97+
-mno-extended-const
98+
-mno-atomics
99+
-mno-tail-call
100+
-mno-fp16
101+
-mno-multivalue
102+
-mno-relaxed-simd
103+
-mno-simd128
104+
-mno-multimemory
105+
-mno-exception-handling
94106
"""
95107
)
96108
else:
@@ -100,7 +112,7 @@ else:
100112
# try to keep 32 but maybe with 64 iface (bigint)
101113
WASM_EXTRA = env("WASM_EXTRA", "") + " " + env("WASM_OPTS", "")
102114

103-
COPTS = env("COPTS", "-fPIC")
115+
COPTS = env("COPTS", "-O0 -g3")
104116

105117

106118
MAIN_MODULE = LINKING = False
@@ -116,12 +128,11 @@ for argc, arg in enumerate(sys.argv):
116128
SKIP = True
117129
break
118130

119-
if arg.startswith('CMakeFiles/'):
131+
if arg.startswith("CMakeFiles/"):
120132
SKIP = True
121133
break
122134

123-
124-
if arg.find("MAIN_MODULE"):
135+
if arg.find("MAIN_MODULE") > 0 or EXE.endswith(".cjs") or EXE.endswith(".js"):
125136
MAIN_MODULE = True
126137

127138
if arg.lower() in ("-fpic", "-latomic"):
@@ -130,43 +141,49 @@ for argc, arg in enumerate(sys.argv):
130141
if arg in ("-Wl,--as-needed", "-Wl,--eh-frame-hdr", "-Wl,-znoexecstack", "-Wl,-znow", "-Wl,-zrelro", "-Wl,-zrelro,-znow"):
131142
continue
132143

133-
if arg in ("-O3", "-g", "-lgcc", "-lgcc_s", "-fallow-argument-mismatch"):
144+
if arg in ("-O1", "-O2", "-O3"):
145+
continue
146+
147+
if arg in ("-g", "-g2", "-g3", "-g4"):
148+
continue
149+
150+
if arg in ("-lgcc", "-lgcc_s", "-fallow-argument-mismatch"):
134151
continue
135152

136153
if arg == "-pthread":
137154
if MVP:
138155
continue
139156

140157
if arg in ("-o", "-c"):
141-
CPU_EXTRA = WASM_EXTRA
142158
MODE = arg
143159
MODE_POS = argc
144160
if arg == "-c":
145161
COMPILE = True
146-
# TODO maybe add node runner and compile to .cjs
162+
# TODO maybe add node runner for a .cjs
147163
elif arg == "-o":
148-
EXE_POS = argc + 1
149-
EXE = sys.argv[EXE_POS]
150-
151-
elif arg.endswith(".so") or arg == "-shared":
164+
if IS_SHARED:
165+
EXE_POS = argc + 1
166+
SHARED_TARGET = sys.argv[EXE_POS]
167+
else:
168+
EXE_POS = argc + 1
169+
EXE = sys.argv[EXE_POS]
170+
171+
elif arg.endswith(".so") or arg == "-shared" or arg.find("SIDE_MODULE") > 0:
152172
LINKING = True
173+
IS_SHARED = True
153174
if arg == "-shared":
154-
IS_SHARED = True
155-
elif arg.find("wasm32-emscripten.so") > 0 or arg.find("abi3.so") > 0:
156-
IS_SHARED = True
157-
PY_MODULE = true
175+
pass
176+
elif arg.endswith(".so"):
177+
if arg.find("wasm32-emscripten.so") > 0 or arg.find("abi3.so") > 0:
178+
PY_MODULE = true
158179
SHARED_TARGET = arg
159-
160-
if IS_SHARED:
161180
out.append(arg)
162-
SHARED = "-sSIDE_MODULE"
163-
if not SHARED in out:
164-
out.insert(0, SHARED)
165-
out.append(f"-L{os.environ['PREFIX']}/lib")
166-
continue
181+
182+
SHARED = f"-shared -sSIDE_MODULE=1 -L{os.environ['PREFIX']}/lib"
183+
continue
167184

168185
# prevent duplicates objects/archives files on cmdline when linking
169-
if LINKING or MODE=="-o":
186+
if LINKING or MODE == "-o":
170187
if arg.endswith(".a") or arg.endswith(".o") or arg.startswith("-l"):
171188
if arg in out:
172189
continue
@@ -185,12 +202,6 @@ os.environ.pop("_EMCC_CCACHE", "")
185202

186203

187204
"""
188-
if [ "\$arg" = "-lutil" ]
189-
then
190-
continue
191-
fi
192-
193-
194205
if [ "\$arg" = "-nomvp" ]
195206
then
196207
MVP=false
@@ -214,53 +225,56 @@ os.environ.pop("_EMCC_CCACHE", "")
214225
final = [EXEC]
215226

216227
# a.out test misses fpic
217-
if CONFIGURE and len(out)==1:
218-
SKIP = out[0] == 'conftest.c'
219-
sys.argv.insert(0,"-fPIC")
228+
if CONFIGURE and len(out) == 1:
229+
SKIP = out[0] == "conftest.c"
230+
sys.argv.insert(0, "-fPIC")
231+
sys.argv.extend(CPU)
220232

221233

222234
if SKIP:
223235
final.extend(sys.argv)
224236
else:
225-
if EXE.endswith('.cjs'):
226-
def make_exe(*argv,**kw):
237+
if EXE.endswith(".cjs") or EXE.endswith(".js"):
238+
239+
def make_exe(*argv, **kw):
227240
global CONFIGURE
228241
if os.path.isfile(EXE) and not CONFIGURE:
229-
with open(EXE,'r') as file:
242+
with open(EXE, "r") as file:
230243
bin = file.read()
231-
with open(EXE,"w") as file:
244+
with open(EXE, "w") as file:
232245
file.write("#!/usr/bin/env node\n")
233246
file.write(bin)
234247
os.chmod(EXE, 0o766)
235248

236-
final.append('-sENVIRONMENT=node')
237-
final.append('-sNODERAWFS')
238-
final.append("-L/lib/wasm32-emscripten/pic")
249+
final.append("-sENVIRONMENT=node")
250+
final.append("-sNODERAWFS")
239251
__import__("atexit").register(make_exe)
240252

253+
# do not pass WASM opts when -c/-o but always PIC and opt level
254+
final.extend(arglist("-fPIC", SHARED, COPTS))
241255

242-
if IS_SHARED:
243-
final.extend(arglist(SHARED, COPTS))
244-
final.extend(CPU)
245-
#, "-gsource-map --source-map-base /"))
246-
final.extend(arglist(WASM_EXTRA, env("LDFLAGS", "")))
256+
# prevent use of extended instr
257+
final.extend(CPU)
247258

248-
# do not pass WASM opts when -c/-o but always PIC
249-
elif MAIN_MODULE:
250-
final.extend(arglist(SHARED, COPTS))
251-
final.extend(CPU)
252-
# -gsource-map --source-map-base /
253-
final.extend(arglist(env("CPU_EXTRA", ""), env("CPPFLAGS", ""), "-DBUILD_STATIC"))
259+
if IS_SHARED or LINKING:
260+
# , "-gsource-map --source-map-base /"))
261+
final.extend(arglist(WASM_EXTRA, env("LDFLAGS", "")))
254262
else:
255-
final.extend(arglist(SHARED, COPTS, env("CPU_EXTRA", ""), env("CPPFLAGS", ""), "-DBUILD_STATIC"))
263+
if MAIN_MODULE:
264+
# TODO: module level
265+
# -gsource-map --source-map-base /
266+
pass
267+
final.extend(arglist(WASM_EXTRA, "-DBUILD_STATIC"))
268+
256269
final.extend(out)
257270
final.extend(COMMON)
258271

259272

260-
261273
if env("EMCC_TRACE", false):
274+
262275
def dump():
263-
dbg(f"""
276+
dbg(
277+
f"""
264278
265279
{COMMON=}
266280
@@ -276,19 +290,20 @@ if env("EMCC_TRACE", false):
276290
277291
{final=}
278292
279-
""")
293+
"""
294+
)
295+
280296
dump()
281-
if os.path.isfile('conftest.c'):
282-
__import__("shutil").copy("conftest.c", os.environ["SDKROOT"]+"/emcc.c")
297+
if os.path.isfile("conftest.c"):
298+
__import__("shutil").copy("conftest.c", os.environ["SDKROOT"] + "/emcc.c")
283299

284300

285301
sys.path.insert(0, str(Path(EXEC).parent))
286302
sys.argv.clear()
287303
while len(final):
288304
arg = final.pop(0)
289-
#arg = arg.replace('"', '\\"')
305+
# add debug filters here.
306+
290307
sys.argv.append(arg)
291308

292309
exec(open(EXEC, "r").read(), globals(), globals())
293-
294-

scripts/cpython-build-emsdk.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ else
159159

160160
cat >> $ROOT/src/cpython${PYBUILD}/Tools/wasm/config.site-wasm32-pydk << END
161161
162-
162+
ac_cv_exeext=.cjs
163163
have_libffi=yes
164164
ac_cv_func_dlopen=yes
165165
ac_cv_lib_ffi_ffi_call=yes

sources.extra/5000-proj.sh

100644100755
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ else
3030
mkdir -p $ROOT/build/libproj
3131

3232
pushd $ROOT/build/libproj
33-
EMCC_CFLAGS="-sDISABLE_EXCEPTION_CATCHING=1" emcmake cmake ../../src/libproj \
34-
-DCMAKE_INSTALL_PREFIX=$PREFIX -DENABLE_TIFF=NO -DENABLE_CURL=NO -DUSE_EXTERNAL_GTEST=NO -DBUILD_PROJSYNC=no
33+
EMCC_CFLAGS="-sDISABLE_EXCEPTION_CATCHING=1" emcmake cmake -DCMAKE_POSITION_INDEPENDENT_CODE=True \
34+
-DCMAKE_INSTALL_PREFIX=$PREFIX -DENABLE_TIFF=NO -DENABLE_CURL=NO -DUSE_EXTERNAL_GTEST=NO -DBUILD_PROJSYNC=no \
35+
../../src/libproj
3536
EMCC_CFLAGS="-sDISABLE_EXCEPTION_CATCHING=1" emmake make -j $(nproc) install
3637
popd
3738

sources.extra/6000-geo.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ else
4949

5050
mkdir -p $ROOT/build/libgeos
5151
pushd $ROOT/build/libgeos
52-
emcmake cmake -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX ${ROOT}/src/libgeos
52+
emcmake cmake -DCMAKE_POSITION_INDEPENDENT_CODE=True -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX ${ROOT}/src/libgeos
5353
emmake make -j $(nproc) install
5454
popd
5555
fi

sources.extra/7000-gdal.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ int iconv_close(iconv_t);
8888
END
8989
fi
9090

91-
GDAL_PYTHON_BINDINGS_WITHOUT_NUMPY=1 emcmake cmake -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX ${ROOT}/src/libgdal \
91+
GDAL_PYTHON_BINDINGS_WITHOUT_NUMPY=1 emcmake cmake -DCMAKE_POSITION_INDEPENDENT_CODE=True -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX ${ROOT}/src/libgdal \
9292
-DPROJ_DIR=${PREFIX} -DPROJ_LIBRARY=${PREFIX}/lib/libproj.a -DPROJ_INCLUDE_DIR=${PREFIX}/include \
9393
-DACCEPT_MISSING_SQLITE3_MUTEX_ALLOC:BOOL=ON -DBUILD_PYTHON_BINDINGS=OFF
9494

0 commit comments

Comments
 (0)