ww: lift introspection files to lib/ww/ (ast, lex, tok, parse, typ, sym)

This commit is contained in:
2026-05-11 16:17:23 +09:00
parent 3f8d64e01b
commit 177862fb29
16 changed files with 80 additions and 74 deletions

View File

@@ -101,39 +101,42 @@ $(OBJ)/w6l/%.o: cmd/w6l/%.c cmd/w6l/l.h | $(OBJ)/w6l
$(CC) $(CFLAGS) -Icmd/w6l -c -o $@ $<
# ---- ww-side wwdump (the lexer port, exercised by 990_selfhost) --------
# Built via the user-facing ww driver, with -I selfhost/cmd/wcc so it
# can find the lex/tok/mem ports. Output named wwdump_ww to avoid
# colliding with the C-side wwdump in $(BIN).
# Built via the user-facing ww driver. The introspection ports (lex,
# tok, ast, parse, typ, sym) live in lib/ww/; the compiler-only bits
# (mem, check, cgen*) stay in selfhost/cmd/wcc/. Output named wwdump_ww
# to avoid colliding with the C-side wwdump in $(BIN).
$(BIN)/wwdump_ww: selfhost/cmd/wwdump/main.ww \
selfhost/cmd/wcc/lex.ww selfhost/cmd/wcc/tok.ww \
selfhost/cmd/wcc/mem.ww selfhost/cmd/wcc/ast.ww \
selfhost/cmd/wcc/parse.ww selfhost/cmd/wcc/typ.ww \
selfhost/cmd/wcc/sym.ww selfhost/cmd/wcc/check.ww \
lib/ww/lex.ww lib/ww/tok.ww lib/ww/ast.ww \
lib/ww/parse.ww lib/ww/typ.ww lib/ww/sym.ww \
selfhost/cmd/wcc/mem.ww selfhost/cmd/wcc/check.ww \
selfhost/cmd/wcc/cgen.ww selfhost/cmd/wcc/cgen_expr.ww \
selfhost/cmd/wcc/cgen_stmt.ww selfhost/cmd/wcc/cgen_util.ww \
selfhost/cmd/wcc/cgen_decl.ww \
lib/os/os.ww lib/strconv/strconv.ww \
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
$(LIB)/libwwrt.a | $(BIN)
cd $(BIN) && ./ww build -I $$PWD/../../selfhost/cmd/wcc \
cd $(BIN) && ./ww build \
-I $$PWD/../../lib/ww \
-I $$PWD/../../selfhost/cmd/wcc \
$$PWD/../../selfhost/cmd/wwdump/main.ww
mv $(BIN)/main $@
# ---- ww-side w6c (compiler port, exercised by 994_w6c_ww) -------------
# Thin driver: parse + cgen, both already living in selfhost/cmd/wcc.
# Build through `ww build` like the other wwstage tools.
# Thin driver: parse + cgen. The frontend (lex/parse/ast/...) lives in
# lib/ww/; cgen + check live in selfhost/cmd/wcc/.
$(BIN)/w6c_ww: selfhost/cmd/w6c/main.ww \
selfhost/cmd/wcc/lex.ww selfhost/cmd/wcc/tok.ww \
selfhost/cmd/wcc/mem.ww selfhost/cmd/wcc/ast.ww \
selfhost/cmd/wcc/parse.ww selfhost/cmd/wcc/typ.ww \
selfhost/cmd/wcc/sym.ww selfhost/cmd/wcc/check.ww \
lib/ww/lex.ww lib/ww/tok.ww lib/ww/ast.ww \
lib/ww/parse.ww lib/ww/typ.ww lib/ww/sym.ww \
selfhost/cmd/wcc/mem.ww selfhost/cmd/wcc/check.ww \
selfhost/cmd/wcc/cgen.ww selfhost/cmd/wcc/cgen_expr.ww \
selfhost/cmd/wcc/cgen_stmt.ww selfhost/cmd/wcc/cgen_util.ww \
selfhost/cmd/wcc/cgen_decl.ww \
lib/os/os.ww \
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
$(LIB)/libwwrt.a | $(BIN)
cd $(BIN) && ./ww build -I $$PWD/../../selfhost/cmd/wcc \
cd $(BIN) && ./ww build \
-I $$PWD/../../lib/ww \
-I $$PWD/../../selfhost/cmd/wcc \
$$PWD/../../selfhost/cmd/w6c/main.ww
mv $(BIN)/main $@
@@ -392,7 +395,9 @@ nocc:
@# The driver's default lib path is $self_dir/../../lib — under
@# $(NOCC_BIN) that resolves to $(NOCC_OUT)/lib (libwwrt only).
@# Pass -I $(CURDIR)/lib so `use os` etc. resolve to source.
@cd $(NOCC_BIN) && ./ww build -I $(CURDIR)/selfhost/cmd/wcc \
@cd $(NOCC_BIN) && ./ww build \
-I $(CURDIR)/lib/ww \
-I $(CURDIR)/selfhost/cmd/wcc \
-I $(CURDIR)/lib $(CURDIR)/selfhost/cmd/w6c/main.ww && mv main w6c_ww1
@cd $(NOCC_BIN) && ./ww build -I $(CURDIR)/selfhost/cmd/w6a \
-I $(CURDIR)/selfhost/cmd/wcc -I $(CURDIR)/lib \