wcc/ww: ww build --sep separate-compilation driver (M3-tail c3, #46)
build_one_sep (both stages + ww/main.combined.ww regen): discover_deps (transitive directory-package set, dotted-path identity), tri-color reverse-topo (cycle bails; loud reject is commit 4), the transitive producer loop (one w6c -c -I pass per package, dep-first, each both consumer and producer of its .wwi), and a flat w6l of the .o set. combined.ww stays the DEFAULT live path; --sep is additive. Every dep is tagged by its full dotted import path on prepend (//ww:module <path>), so the definer's qualified symbol (#53) == the consumer's qualified reference (#40) and the sep .o set links. The prepend is the TRANSITIVE closure (lead-ratified, superseding rob-c3-spec §1.3 direct-deps): a dep's interface can name a transitive dep's type (os exposes time.instant), so the consuming unit needs the whole closure for resolution — direct-deps-only does not type-check. Consistent with the current flat-unit transitive-namespace model (the visibility tighten is #45, post-M4). Gate 989_sepbuild_run drives ww + ww_ww --sep on the real chain root->os->{rt,time}: build+run (exit 7) + cs==ww per-pkg .s/.wwi/.unit + final binary + transitive-topo discovery + keystone bodies==.wwi (os,root) through the real driver. Cold scratch; -o-redirected.
This commit is contained in:
10
Makefile
10
Makefile
@@ -563,6 +563,7 @@ TESTS = $(BIN)/test_smoke $(BIN)/test_lex $(BIN)/test_parse $(BIN)/test_check \
|
||||
$(BIN)/test_lib_byteid \
|
||||
$(BIN)/test_m2wwi_run \
|
||||
$(BIN)/test_m3sep_run \
|
||||
$(BIN)/test_sepbuild_run \
|
||||
$(BIN)/test_floatlit_run \
|
||||
$(BIN)/test_checked_run \
|
||||
$(BIN)/test_floatarr_run \
|
||||
@@ -3097,6 +3098,15 @@ $(BIN)/test_m3sep_run: test/wcc/989_m3sep_run.c $(BIN)/ww $(BIN)/w6c \
|
||||
$(LIB)/libwwrt.a | $(BIN)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
|
||||
# 989_sepbuild_run drives `ww build --sep` + `ww_ww build --sep` (the
|
||||
# M3-tail commit-3 build_one_sep driver) end-to-end on the real lib chain
|
||||
# root->os->{rt,time}. Needs BOTH driver stages + both compiler stages
|
||||
# (the keystone re-runs w6c -c on the bodies-unit).
|
||||
$(BIN)/test_sepbuild_run: test/wcc/989_sepbuild_run.c $(BIN)/ww $(BIN)/ww_ww \
|
||||
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6a_ww \
|
||||
$(BIN)/w6l $(BIN)/w6l_ww $(LIB)/libwwrt.a | $(BIN)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
|
||||
$(BIN)/test_floatlit_run: test/wcc/989_floatlit_run.c $(BIN)/ww $(BIN)/w6c \
|
||||
$(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
||||
$(CC) $(CFLAGS) -o $@ $<
|
||||
|
||||
Reference in New Issue
Block a user