Skip to content

Commit b00b4b7

Browse files
justjakeclaude
andcommitted
Separate compiler and linker flags to eliminate emcc warnings
Refactored the Emscripten build system to properly separate compiler flags (used during .c -> .o compilation) from linker flags (used during .o -> .js linking). This eliminates hundreds of "linker setting ignored during compilation" warnings. Changes: - Split CFLAGS_WASM into CFLAGS_COMPILE and LDFLAGS_WASM in templates/Variant.mk - Split flag constants in scripts/prepareVariants.ts into *CompileFlags and *LinkFlags variants - Fixed malformed `-s -lccall.js` flag to `-lccall.js` - Moved MIN_NODE_VERSION and NODEJS_CATCH_EXIT to node-specific targets only - Added scripts/validate-emcc-flags.ts for testing flag classification Compiler flags (CFLAGS_COMPILE): optimization (-Oz, -O0, -flto), defines (-DQTS_DEBUG_MODE, etc.), debug info (-gsource-map), sanitizers (-fsanitize) Linker flags (LDFLAGS_WASM): -s settings (MODULARIZE, ENVIRONMENT, etc.), --closure, --pre-js, library flags (-lccall.js, -lasync.js) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent df4efb9 commit b00b4b7

54 files changed

Lines changed: 1817 additions & 1463 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

doc/@jitl/quickjs-ng-wasmfile-debug-asyncify/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,23 +85,23 @@ Variant-specific Emscripten build flags:
8585

8686
```json
8787
[
88-
"-s ASYNCIFY=1",
8988
"-DQTS_ASYNCIFY=1",
9089
"-DQTS_ASYNCIFY_DEFAULT_STACK_SIZE=81920",
91-
"-s ASYNCIFY_STACK_SIZE=81920",
92-
"-s ASYNCIFY_REMOVE=@$(BUILD_WRAPPER)/asyncify-remove.json",
93-
"-s ASYNCIFY_IMPORTS=@$(BUILD_WRAPPER)/asyncify-imports.json",
94-
"-lasync.js",
9590
"-O0",
9691
"-DQTS_DEBUG_MODE",
9792
"-DDUMP_LEAKS=1",
9893
"-gsource-map",
94+
"-O3",
95+
"-s ASYNCIFY=1",
96+
"-s ASYNCIFY_STACK_SIZE=81920",
97+
"-s ASYNCIFY_REMOVE=@$(BUILD_WRAPPER)/asyncify-remove.json",
98+
"-s ASYNCIFY_IMPORTS=@$(BUILD_WRAPPER)/asyncify-imports.json",
99+
"-lasync.js",
99100
"-s ASSERTIONS=1",
100101
"--pre-js $(TEMPLATES)/pre-extension.js",
101102
"--pre-js $(TEMPLATES)/pre-sourceMapJson.js",
102103
"--pre-js $(TEMPLATES)/pre-wasmOffsetConverter.js",
103-
"--pre-js $(TEMPLATES)/pre-wasmMemory.js",
104-
"-O3"
104+
"--pre-js $(TEMPLATES)/pre-wasmMemory.js"
105105
]
106106
```
107107

doc/@jitl/quickjs-ng-wasmfile-debug-sync/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,14 @@ Variant-specific Emscripten build flags:
8989
"-DQTS_DEBUG_MODE",
9090
"-DDUMP_LEAKS=1",
9191
"-gsource-map",
92+
"-DQTS_SANITIZE_LEAK",
93+
"-fsanitize=leak",
94+
"-g2",
9295
"-s ASSERTIONS=1",
9396
"--pre-js $(TEMPLATES)/pre-extension.js",
9497
"--pre-js $(TEMPLATES)/pre-sourceMapJson.js",
9598
"--pre-js $(TEMPLATES)/pre-wasmOffsetConverter.js",
96-
"--pre-js $(TEMPLATES)/pre-wasmMemory.js",
97-
"-DQTS_SANITIZE_LEAK",
98-
"-fsanitize=leak",
99-
"-g2"
99+
"--pre-js $(TEMPLATES)/pre-wasmMemory.js"
100100
]
101101
```
102102

doc/@jitl/quickjs-ng-wasmfile-release-asyncify/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,15 @@ Variant-specific Emscripten build flags:
8585

8686
```json
8787
[
88-
"-s ASYNCIFY=1",
8988
"-DQTS_ASYNCIFY=1",
9089
"-DQTS_ASYNCIFY_DEFAULT_STACK_SIZE=81920",
90+
"-Oz",
91+
"-flto",
92+
"-s ASYNCIFY=1",
9193
"-s ASYNCIFY_STACK_SIZE=81920",
9294
"-s ASYNCIFY_REMOVE=@$(BUILD_WRAPPER)/asyncify-remove.json",
9395
"-s ASYNCIFY_IMPORTS=@$(BUILD_WRAPPER)/asyncify-imports.json",
9496
"-lasync.js",
95-
"-Oz",
96-
"-flto",
9797
"--closure 1",
9898
"-s FILESYSTEM=0",
9999
"--pre-js $(TEMPLATES)/pre-extension.js",

doc/@jitl/quickjs-singlefile-browser-debug-asyncify/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,24 +73,24 @@ Variant-specific Emscripten build flags:
7373

7474
```json
7575
[
76-
"-s ASYNCIFY=1",
7776
"-DQTS_ASYNCIFY=1",
7877
"-DQTS_ASYNCIFY_DEFAULT_STACK_SIZE=81920",
79-
"-s ASYNCIFY_STACK_SIZE=81920",
80-
"-s ASYNCIFY_REMOVE=@$(BUILD_WRAPPER)/asyncify-remove.json",
81-
"-s ASYNCIFY_IMPORTS=@$(BUILD_WRAPPER)/asyncify-imports.json",
82-
"-lasync.js",
8378
"-O0",
8479
"-DQTS_DEBUG_MODE",
8580
"-DDUMP_LEAKS=1",
8681
"-gsource-map",
82+
"-O3",
83+
"-s ASYNCIFY=1",
84+
"-s ASYNCIFY_STACK_SIZE=81920",
85+
"-s ASYNCIFY_REMOVE=@$(BUILD_WRAPPER)/asyncify-remove.json",
86+
"-s ASYNCIFY_IMPORTS=@$(BUILD_WRAPPER)/asyncify-imports.json",
87+
"-lasync.js",
8788
"-s ASSERTIONS=1",
8889
"--pre-js $(TEMPLATES)/pre-extension.js",
8990
"--pre-js $(TEMPLATES)/pre-sourceMapJson.js",
9091
"--pre-js $(TEMPLATES)/pre-wasmOffsetConverter.js",
9192
"--pre-js $(TEMPLATES)/pre-wasmMemory.js",
92-
"-s SINGLE_FILE=1",
93-
"-O3"
93+
"-s SINGLE_FILE=1"
9494
]
9595
```
9696

doc/@jitl/quickjs-singlefile-browser-debug-sync/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,15 @@ Variant-specific Emscripten build flags:
7777
"-DQTS_DEBUG_MODE",
7878
"-DDUMP_LEAKS=1",
7979
"-gsource-map",
80+
"-DQTS_SANITIZE_LEAK",
81+
"-fsanitize=leak",
82+
"-g2",
8083
"-s ASSERTIONS=1",
8184
"--pre-js $(TEMPLATES)/pre-extension.js",
8285
"--pre-js $(TEMPLATES)/pre-sourceMapJson.js",
8386
"--pre-js $(TEMPLATES)/pre-wasmOffsetConverter.js",
8487
"--pre-js $(TEMPLATES)/pre-wasmMemory.js",
85-
"-s SINGLE_FILE=1",
86-
"-DQTS_SANITIZE_LEAK",
87-
"-fsanitize=leak",
88-
"-g2"
88+
"-s SINGLE_FILE=1"
8989
]
9090
```
9191

doc/@jitl/quickjs-singlefile-browser-release-asyncify/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ Variant-specific Emscripten build flags:
7373

7474
```json
7575
[
76-
"-s ASYNCIFY=1",
7776
"-DQTS_ASYNCIFY=1",
7877
"-DQTS_ASYNCIFY_DEFAULT_STACK_SIZE=81920",
78+
"-Oz",
79+
"-flto",
80+
"-s ASYNCIFY=1",
7981
"-s ASYNCIFY_STACK_SIZE=81920",
8082
"-s ASYNCIFY_REMOVE=@$(BUILD_WRAPPER)/asyncify-remove.json",
8183
"-s ASYNCIFY_IMPORTS=@$(BUILD_WRAPPER)/asyncify-imports.json",
8284
"-lasync.js",
83-
"-Oz",
84-
"-flto",
8585
"--closure 1",
8686
"-s FILESYSTEM=0",
8787
"--pre-js $(TEMPLATES)/pre-extension.js",

doc/@jitl/quickjs-singlefile-cjs-debug-asyncify/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,24 +73,24 @@ Variant-specific Emscripten build flags:
7373

7474
```json
7575
[
76-
"-s ASYNCIFY=1",
7776
"-DQTS_ASYNCIFY=1",
7877
"-DQTS_ASYNCIFY_DEFAULT_STACK_SIZE=81920",
79-
"-s ASYNCIFY_STACK_SIZE=81920",
80-
"-s ASYNCIFY_REMOVE=@$(BUILD_WRAPPER)/asyncify-remove.json",
81-
"-s ASYNCIFY_IMPORTS=@$(BUILD_WRAPPER)/asyncify-imports.json",
82-
"-lasync.js",
8378
"-O0",
8479
"-DQTS_DEBUG_MODE",
8580
"-DDUMP_LEAKS=1",
8681
"-gsource-map",
82+
"-O3",
83+
"-s ASYNCIFY=1",
84+
"-s ASYNCIFY_STACK_SIZE=81920",
85+
"-s ASYNCIFY_REMOVE=@$(BUILD_WRAPPER)/asyncify-remove.json",
86+
"-s ASYNCIFY_IMPORTS=@$(BUILD_WRAPPER)/asyncify-imports.json",
87+
"-lasync.js",
8788
"-s ASSERTIONS=1",
8889
"--pre-js $(TEMPLATES)/pre-extension.js",
8990
"--pre-js $(TEMPLATES)/pre-sourceMapJson.js",
9091
"--pre-js $(TEMPLATES)/pre-wasmOffsetConverter.js",
9192
"--pre-js $(TEMPLATES)/pre-wasmMemory.js",
92-
"-s SINGLE_FILE=1",
93-
"-O3"
93+
"-s SINGLE_FILE=1"
9494
]
9595
```
9696

doc/@jitl/quickjs-singlefile-cjs-debug-sync/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,15 @@ Variant-specific Emscripten build flags:
7777
"-DQTS_DEBUG_MODE",
7878
"-DDUMP_LEAKS=1",
7979
"-gsource-map",
80+
"-DQTS_SANITIZE_LEAK",
81+
"-fsanitize=leak",
82+
"-g2",
8083
"-s ASSERTIONS=1",
8184
"--pre-js $(TEMPLATES)/pre-extension.js",
8285
"--pre-js $(TEMPLATES)/pre-sourceMapJson.js",
8386
"--pre-js $(TEMPLATES)/pre-wasmOffsetConverter.js",
8487
"--pre-js $(TEMPLATES)/pre-wasmMemory.js",
85-
"-s SINGLE_FILE=1",
86-
"-DQTS_SANITIZE_LEAK",
87-
"-fsanitize=leak",
88-
"-g2"
88+
"-s SINGLE_FILE=1"
8989
]
9090
```
9191

doc/@jitl/quickjs-singlefile-cjs-release-asyncify/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ Variant-specific Emscripten build flags:
7373

7474
```json
7575
[
76-
"-s ASYNCIFY=1",
7776
"-DQTS_ASYNCIFY=1",
7877
"-DQTS_ASYNCIFY_DEFAULT_STACK_SIZE=81920",
78+
"-Oz",
79+
"-flto",
80+
"-s ASYNCIFY=1",
7981
"-s ASYNCIFY_STACK_SIZE=81920",
8082
"-s ASYNCIFY_REMOVE=@$(BUILD_WRAPPER)/asyncify-remove.json",
8183
"-s ASYNCIFY_IMPORTS=@$(BUILD_WRAPPER)/asyncify-imports.json",
8284
"-lasync.js",
83-
"-Oz",
84-
"-flto",
8585
"--closure 1",
8686
"-s FILESYSTEM=0",
8787
"--pre-js $(TEMPLATES)/pre-extension.js",

doc/@jitl/quickjs-singlefile-mjs-debug-asyncify/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,24 +73,24 @@ Variant-specific Emscripten build flags:
7373

7474
```json
7575
[
76-
"-s ASYNCIFY=1",
7776
"-DQTS_ASYNCIFY=1",
7877
"-DQTS_ASYNCIFY_DEFAULT_STACK_SIZE=81920",
79-
"-s ASYNCIFY_STACK_SIZE=81920",
80-
"-s ASYNCIFY_REMOVE=@$(BUILD_WRAPPER)/asyncify-remove.json",
81-
"-s ASYNCIFY_IMPORTS=@$(BUILD_WRAPPER)/asyncify-imports.json",
82-
"-lasync.js",
8378
"-O0",
8479
"-DQTS_DEBUG_MODE",
8580
"-DDUMP_LEAKS=1",
8681
"-gsource-map",
82+
"-O3",
83+
"-s ASYNCIFY=1",
84+
"-s ASYNCIFY_STACK_SIZE=81920",
85+
"-s ASYNCIFY_REMOVE=@$(BUILD_WRAPPER)/asyncify-remove.json",
86+
"-s ASYNCIFY_IMPORTS=@$(BUILD_WRAPPER)/asyncify-imports.json",
87+
"-lasync.js",
8788
"-s ASSERTIONS=1",
8889
"--pre-js $(TEMPLATES)/pre-extension.js",
8990
"--pre-js $(TEMPLATES)/pre-sourceMapJson.js",
9091
"--pre-js $(TEMPLATES)/pre-wasmOffsetConverter.js",
9192
"--pre-js $(TEMPLATES)/pre-wasmMemory.js",
92-
"-s SINGLE_FILE=1",
93-
"-O3"
93+
"-s SINGLE_FILE=1"
9494
]
9595
```
9696

0 commit comments

Comments
 (0)