|
21 | 21 | # internal/cbm/vendored/ts_runtime/include — tree-sitter API |
22 | 22 | CBM_DIR = internal/cbm |
23 | 23 | TS_INCLUDE = $(CBM_DIR)/vendored/ts_runtime/include |
| 24 | +# Vendored tree-sitter src/ contains unicode/ headers (umachine.h, utf.h, utf8.h). |
| 25 | +# This ensures we use our vendored copies instead of requiring system libicu-dev. |
| 26 | +TS_SRC = $(CBM_DIR)/vendored/ts_runtime/src |
24 | 27 |
|
25 | 28 | # ── Optional libgit2 (faster git history parsing) ──────────────── |
26 | 29 | # Auto-detected via pkg-config. Falls back to popen("git log ...") if absent. |
@@ -71,9 +74,9 @@ CFLAGS_TSAN = $(CFLAGS_COMMON) -g -O1 \ |
71 | 74 | CXXFLAGS_TSAN = $(CXXFLAGS_COMMON) -g -O1 \ |
72 | 75 | -fsanitize=thread -fno-omit-frame-pointer |
73 | 76 |
|
74 | | -LDFLAGS = -lm -lstdc++ -lpthread -lsqlite3 -lz $(LIBGIT2_LIBS) |
75 | | -LDFLAGS_TEST = -lm -lstdc++ -lpthread -lsqlite3 -lz -fsanitize=address,undefined $(LIBGIT2_LIBS) |
76 | | -LDFLAGS_TSAN = -lm -lstdc++ -lpthread -lsqlite3 -lz -fsanitize=thread $(LIBGIT2_LIBS) |
| 77 | +LDFLAGS = -lm -lstdc++ -lpthread -lz $(LIBGIT2_LIBS) |
| 78 | +LDFLAGS_TEST = -lm -lstdc++ -lpthread -lz -fsanitize=address,undefined $(LIBGIT2_LIBS) |
| 79 | +LDFLAGS_TSAN = -lm -lstdc++ -lpthread -lz -fsanitize=thread $(LIBGIT2_LIBS) |
77 | 80 |
|
78 | 81 | # ── Source files ───────────────────────────────────────────────── |
79 | 82 |
|
@@ -200,6 +203,11 @@ MIMALLOC_CFLAGS_TEST = -std=c11 -g -O1 -w \ |
200 | 203 | -Ivendored/mimalloc/src \ |
201 | 204 | -DMI_OVERRIDE=0 |
202 | 205 |
|
| 206 | +# sqlite3 (vendored amalgamation — compiled ourselves for ASan instrumentation) |
| 207 | +SQLITE3_SRC = vendored/sqlite3/sqlite3.c |
| 208 | +SQLITE3_CFLAGS = -std=c11 -O2 -w -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=1 |
| 209 | +SQLITE3_CFLAGS_TEST = -std=c11 -g -O1 -w -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=1 |
| 210 | + |
203 | 211 | # yyjson (vendored) |
204 | 212 | YYJSON_SRC = vendored/yyjson/yyjson.c |
205 | 213 |
|
@@ -276,10 +284,10 @@ BUILD_DIR = build/c |
276 | 284 | # ── Object file compilation (grammars need relaxed warnings) ───── |
277 | 285 |
|
278 | 286 | # Grammar + tree-sitter runtime: compiled without -Werror (upstream code has warnings) |
279 | | -GRAMMAR_CFLAGS = -std=c11 -D_DEFAULT_SOURCE -O2 -w -I$(CBM_DIR) -I$(TS_INCLUDE) |
280 | | -GRAMMAR_CFLAGS_TEST = -std=c11 -D_DEFAULT_SOURCE -g -O1 -w -I$(CBM_DIR) -I$(TS_INCLUDE) \ |
| 287 | +GRAMMAR_CFLAGS = -std=c11 -D_DEFAULT_SOURCE -O2 -w -I$(CBM_DIR) -I$(TS_INCLUDE) -I$(TS_SRC) |
| 288 | +GRAMMAR_CFLAGS_TEST = -std=c11 -D_DEFAULT_SOURCE -g -O1 -w -I$(CBM_DIR) -I$(TS_INCLUDE) -I$(TS_SRC) \ |
281 | 289 | -fsanitize=address,undefined -fno-omit-frame-pointer |
282 | | -GRAMMAR_CFLAGS_TSAN = -std=c11 -D_DEFAULT_SOURCE -g -O1 -w -I$(CBM_DIR) -I$(TS_INCLUDE) \ |
| 290 | +GRAMMAR_CFLAGS_TSAN = -std=c11 -D_DEFAULT_SOURCE -g -O1 -w -I$(CBM_DIR) -I$(TS_INCLUDE) -I$(TS_SRC) \ |
283 | 291 | -fsanitize=thread -fno-omit-frame-pointer |
284 | 292 |
|
285 | 293 | # Object files for grammars + ts_runtime + lsp_all + preprocessor |
@@ -339,7 +347,17 @@ $(BUILD_DIR)/mimalloc.o: $(MIMALLOC_SRC) | $(BUILD_DIR) |
339 | 347 | $(BUILD_DIR)/prod_mimalloc.o: $(MIMALLOC_SRC) | $(BUILD_DIR) |
340 | 348 | $(CC) $(MIMALLOC_CFLAGS) -c -o $@ $< |
341 | 349 |
|
342 | | -OBJS_VENDORED_TEST = $(MIMALLOC_OBJ_TEST) $(GRAMMAR_OBJS_TEST) $(TS_RUNTIME_OBJ_TEST) $(LSP_OBJ_TEST) $(PP_OBJ_TEST) $(MONGOOSE_OBJ_TEST) |
| 350 | +# sqlite3 object files (vendored amalgamation) |
| 351 | +SQLITE3_OBJ_TEST = $(BUILD_DIR)/sqlite3.o |
| 352 | +SQLITE3_OBJ_PROD = $(BUILD_DIR)/prod_sqlite3.o |
| 353 | + |
| 354 | +$(BUILD_DIR)/sqlite3.o: $(SQLITE3_SRC) | $(BUILD_DIR) |
| 355 | + $(CC) $(SQLITE3_CFLAGS_TEST) -fsanitize=address,undefined -fno-omit-frame-pointer -c -o $@ $< |
| 356 | + |
| 357 | +$(BUILD_DIR)/prod_sqlite3.o: $(SQLITE3_SRC) | $(BUILD_DIR) |
| 358 | + $(CC) $(SQLITE3_CFLAGS) -c -o $@ $< |
| 359 | + |
| 360 | +OBJS_VENDORED_TEST = $(MIMALLOC_OBJ_TEST) $(SQLITE3_OBJ_TEST) $(GRAMMAR_OBJS_TEST) $(TS_RUNTIME_OBJ_TEST) $(LSP_OBJ_TEST) $(PP_OBJ_TEST) $(MONGOOSE_OBJ_TEST) |
343 | 361 |
|
344 | 362 | $(BUILD_DIR)/test-runner: $(ALL_TEST_SRCS) $(PROD_SRCS) $(EXTRACTION_SRCS) $(AC_LZ4_SRCS) $(SQLITE_WRITER_SRC) $(OBJS_VENDORED_TEST) | $(BUILD_DIR) |
345 | 363 | $(CC) $(CFLAGS_TEST) -o $@ \ |
@@ -376,7 +394,7 @@ $(BUILD_DIR)/prod_lsp_all.o: $(CBM_DIR)/lsp_all.c | $(BUILD_DIR) |
376 | 394 | $(BUILD_DIR)/prod_preprocessor.o: $(CBM_DIR)/preprocessor.cpp | $(BUILD_DIR) |
377 | 395 | $(CXX) $(CXXFLAGS_PROD) -w -I$(CBM_DIR)/vendored -c -o $@ $< |
378 | 396 |
|
379 | | -OBJS_VENDORED_PROD = $(MIMALLOC_OBJ_PROD) $(GRAMMAR_OBJS_PROD) $(TS_RUNTIME_OBJ_PROD) $(LSP_OBJ_PROD) $(PP_OBJ_PROD) $(MONGOOSE_OBJ_PROD) |
| 397 | +OBJS_VENDORED_PROD = $(MIMALLOC_OBJ_PROD) $(SQLITE3_OBJ_PROD) $(GRAMMAR_OBJS_PROD) $(TS_RUNTIME_OBJ_PROD) $(LSP_OBJ_PROD) $(PP_OBJ_PROD) $(MONGOOSE_OBJ_PROD) |
380 | 398 |
|
381 | 399 | MAIN_SRC = src/main.c |
382 | 400 |
|
|
0 commit comments