Whole-aggregate reassignment `b = a` fell to the N_ASSIGN scalar tail
and copied ONE MOVQ — word 0 of any struct/array/tuple — in BOTH
stages, byte-identical, gate-blind (ken f49_min asm proof; latent
because lib style is let-init, whose #265/#268 copy is full-width).
Same class at three more positions: struct-lit FIELD init from an
ident source (`outer{.., r = r}`, the #38 non-tagged half), the deref
place `*p = s` (#31-A), and the module-let global `g = a` / `g = pt{..}`.
Fix: extract the C1.25 assign-resolver word-copy tail verbatim into
cg_aggcopy/aggcopy — the ONE place-resolved (SI)->(BX) aggregate copy
— and wire it at the N_ASSIGN ident-aggregate arm (local + global),
the deref-place divert into the existing resolver aggregate arm, and
the structlit-fill aggregate-field arm, all fed by aggarg_srcaddr
(the closed #265/#268 dispatch). The new arms key on the FULL alias
chase (type_chase_named / chased stamped tinfo, the #22 precedent) in
BOTH stages — the region's single-peel `lu`/`fu` would miss
`type b = a; type a = struct` on cstage while the wwstage twin fired
(ken R1, gA3b: master cs ran the word0 corruption, exit 2; now 0).
Non-addressable aggregate rhs (tuple-lit, unhandled call shapes) dies
LOUD (rule 7) instead of silently truncating: #31-E `*p = (3,4)` and
#31-G's deref flavor `*p = mk()` are now loud both stages (the INDEX
flavor `a[i] = mk()` stays in the legacy INDEX arm — receive
machinery, not this funnel; still filed under #31). #31-B rides: the
cstage-only <=24B gate before cg_structlit_fill_bp is lifted (the
wwstage twin never gated — a >24B literal reassign was
cs-zero/ww-filled, rule-10 break). Global structlit reassign rides
the existing DST_GLOBAL fill machinery.
Unsplit (rule 11): the assign arm, fill arm and deref divert all
route through the one new funnel (cg_aggcopy + aggarg_srcaddr) in
both stages; splitting by site or by stage would ship a transient
cs!=ww (gate-red) or a funnel with no consumer.
941 t2_reject_chain_arg: the row's tuple-LITERAL field fill now louds
at the #49 fill arm before reaching the pinned ARG-site reject; the
fill switches to an ident source (newly working via the fill arm) so
the original arg-site pin still fires.
test/wcc/812_agg_assign_width.c: 17 runtime-readback rows (the only
oracle for a gate-blind class) + per-row asm byte-id; every row fails
at 7545bf7 (ken matrix f49_min/f49b/f49c/fA_16b/f38b + gA3b/gA6 +
impl-A probes; reviewer-A re-probed 5 rows + the gA2 12B shape at a
master git-archive scratch). Alias rows use FIELD-WISE init: the
struct-LIT spelling louds earlier at the pre-existing task-#7
aggregate-let bound on wwstage (the #5 alias-arc's hole, not this
funnel's). Reviewer-A amendment (test-only, K5 self-certify): add
the ken-gA2 odd-size row (12B {u32,u32,u32}, maxalign 4 — pins the
MOVL tail; master both stages exit 3) and gA4's neighbor guards on
the deref row, completing ken's validated matrix in the committed
suite.
2315 lines
91 KiB
Makefile
2315 lines
91 KiB
Makefile
# ww — Plan 9-organised toolchain. POSIX make.
|
|
#
|
|
# Build a small static frontend library libwcc.a and the user-facing
|
|
# driver `ww`. Per-target tools (w6c, w6a, w6l) and the runtime are added
|
|
# in their own phases. Everything lands under out/.
|
|
|
|
PREFIX ?= /usr/local
|
|
CC ?= cc
|
|
AR ?= ar
|
|
|
|
# Parallelise the build by default. The C-compile DAG and the five
|
|
# wwstage builds write disjoint outputs (each .o is distinct; each
|
|
# wwstage tool's side files land at its own selfhost/cmd/<tool>/main.*
|
|
# stem), so -j is order-independent. test/run's Phase-2 byte-id gates
|
|
# (950/990-997) are a single serial recipe — MAKEFLAGS -j does not
|
|
# reach inside them. Override with `make -j1` if needed.
|
|
NPROC ?= $(shell nproc 2>/dev/null || echo 4)
|
|
MAKEFLAGS += -j$(NPROC)
|
|
|
|
# Wrap the C compiler with ccache when present — content-addressed, so
|
|
# byte-identical to plain cc; just skips recompiling unchanged TUs.
|
|
# Falls back cleanly to bare $(CC) when ccache is absent. A command-line
|
|
# CC= override wins and is left unwrapped.
|
|
CC := $(shell command -v ccache >/dev/null 2>&1 && echo "ccache $(CC)" || echo "$(CC)")
|
|
CFLAGS ?= -O0 -g -Wall -Wextra -Wpedantic -Wno-unused-parameter
|
|
CFLAGS += -std=c99 -fno-strict-aliasing -D_POSIX_C_SOURCE=200809L
|
|
INCS = -Icmd/wcc
|
|
|
|
OUT = out
|
|
BIN = $(OUT)/bin
|
|
LIB = $(OUT)/lib
|
|
OBJ = $(OUT)/obj
|
|
|
|
WCC_SRC = cmd/wcc/mem.c cmd/wcc/err.c cmd/wcc/tok.c cmd/wcc/lex.c \
|
|
cmd/wcc/ast.c cmd/wcc/parse.c cmd/wcc/sym.c cmd/wcc/type.c \
|
|
cmd/wcc/check.c
|
|
WCC_OBJ = $(WCC_SRC:cmd/wcc/%.c=$(OBJ)/wcc/%.o)
|
|
|
|
WW_SRC = cmd/ww/main.c
|
|
WW_OBJ = $(WW_SRC:cmd/ww/%.c=$(OBJ)/ww/%.o)
|
|
|
|
WD_SRC = cmd/wwdump/main.c
|
|
WD_OBJ = $(WD_SRC:cmd/wwdump/%.c=$(OBJ)/wwdump/%.o)
|
|
|
|
W6C_SRC = cmd/w6c/main.c cmd/w6c/cgen.c cmd/w6c/txt.c cmd/w6c/swt.c \
|
|
cmd/w6c/peep.c cmd/w6c/reg.c
|
|
W6C_OBJ = $(W6C_SRC:cmd/w6c/%.c=$(OBJ)/w6c/%.o)
|
|
|
|
W6A_SRC = cmd/w6a/main.c cmd/w6a/lex.c cmd/w6a/parse.c cmd/w6a/asm.c cmd/w6a/obj.c
|
|
W6A_OBJ = $(W6A_SRC:cmd/w6a/%.c=$(OBJ)/w6a/%.o)
|
|
|
|
W6L_SRC = cmd/w6l/main.c cmd/w6l/obj.c cmd/w6l/sym.c cmd/w6l/pass.c cmd/w6l/out.c \
|
|
cmd/w6l/dyn.c cmd/w6l/dynout.c
|
|
W6L_OBJ = $(W6L_SRC:cmd/w6l/%.c=$(OBJ)/w6l/%.o)
|
|
|
|
RT_S = rt/start.s rt/syscall.s rt/alloc.s rt/streq.s rt/abort.s
|
|
RT_WW = rt/ensure.ww rt/malloc.ww
|
|
RT_OBJ = $(RT_S:rt/%.s=$(OBJ)/rt/%.o) $(RT_WW:rt/%.ww=$(OBJ)/rt/%.o)
|
|
|
|
# Cstage: one-time C bootstrap (see BOOTSTRAP.md). Built by `cc`.
|
|
# Goes away at v1.0, replaced by a checked-in stage-0 binary.
|
|
CSTAGE_BINS = $(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l $(BIN)/wwdump
|
|
|
|
# Wwstage: ww-rewritten toolchain. Built by Cstage today; will be the
|
|
# only toolchain after Phase 10 closeout. Byte-identical to Cstage
|
|
# (tests 990-994).
|
|
WWSTAGE_BINS = $(BIN)/wwdump_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww $(BIN)/ww_ww
|
|
|
|
BINS = $(CSTAGE_BINS) $(WWSTAGE_BINS)
|
|
LIBS = $(LIB)/libwcc.a $(LIB)/libwwrt.a
|
|
|
|
all: cstage wwstage
|
|
|
|
cstage: $(CSTAGE_BINS) $(LIBS)
|
|
wwstage: $(WWSTAGE_BINS)
|
|
|
|
# ---- libwcc.a ----------------------------------------------------------
|
|
$(LIB)/libwcc.a: $(WCC_OBJ) | $(LIB)
|
|
$(AR) rcs $@ $(WCC_OBJ)
|
|
|
|
$(OBJ)/wcc/%.o: cmd/wcc/%.c cmd/wcc/ww.h | $(OBJ)/wcc
|
|
$(CC) $(CFLAGS) $(INCS) -c -o $@ $<
|
|
|
|
# ---- ww driver ---------------------------------------------------------
|
|
$(BIN)/ww: $(WW_OBJ) $(LIB)/libwcc.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $(WW_OBJ) -L$(LIB) -lwcc
|
|
|
|
$(OBJ)/ww/%.o: cmd/ww/%.c cmd/wcc/ww.h | $(OBJ)/ww
|
|
$(CC) $(CFLAGS) $(INCS) -c -o $@ $<
|
|
|
|
# ---- wwdump (lex/AST diff anchor) --------------------------------------
|
|
$(BIN)/wwdump: $(WD_OBJ) $(LIB)/libwcc.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $(WD_OBJ) -L$(LIB) -lwcc
|
|
|
|
$(OBJ)/wwdump/%.o: cmd/wwdump/%.c cmd/wcc/ww.h | $(OBJ)/wwdump
|
|
$(CC) $(CFLAGS) $(INCS) -c -o $@ $<
|
|
|
|
# ---- w6c amd64 compiler ------------------------------------------------
|
|
$(BIN)/w6c: $(W6C_OBJ) $(LIB)/libwcc.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $(W6C_OBJ) -L$(LIB) -lwcc
|
|
|
|
$(OBJ)/w6c/%.o: cmd/w6c/%.c cmd/w6c/gc.h cmd/w6c/6.out.h cmd/wcc/ww.h | $(OBJ)/w6c
|
|
$(CC) $(CFLAGS) $(INCS) -Icmd/w6c -c -o $@ $<
|
|
|
|
# ---- w6a amd64 assembler -----------------------------------------------
|
|
$(BIN)/w6a: $(W6A_OBJ) | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $(W6A_OBJ)
|
|
|
|
$(OBJ)/w6a/%.o: cmd/w6a/%.c cmd/w6a/a.h cmd/w6c/6.out.h | $(OBJ)/w6a
|
|
$(CC) $(CFLAGS) -Icmd/w6a -Icmd/w6c -c -o $@ $<
|
|
|
|
# ---- w6l amd64 linker --------------------------------------------------
|
|
$(BIN)/w6l: $(W6L_OBJ) | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $(W6L_OBJ)
|
|
|
|
$(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. The introspection ports (lex,
|
|
# tok, ast, parse, typ, sym) live in lib/ww/; the compiler-only bits
|
|
# (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 \
|
|
lib/ww/lex/lex.ww lib/ww/lex/tok.ww lib/ww/ast.ww \
|
|
lib/ww/parse/parse.ww lib/ww/parse/expr.ww lib/ww/parse/stmt.ww lib/ww/parse/decl.ww lib/ww/typ.ww lib/ww/sym.ww \
|
|
selfhost/cmd/wcc/check.ww \
|
|
selfhost/cmd/wcc/cgen.ww selfhost/cmd/wcc/cgenexpr.ww \
|
|
selfhost/cmd/wcc/cgenstmt.ww selfhost/cmd/wcc/cgenutil.ww \
|
|
selfhost/cmd/wcc/cgendecl.ww \
|
|
lib/os/os.ww lib/rt/malloc.ww lib/time/time.ww lib/strconv/strconv.ww lib/strconv/stof_data.ww lib/strconv/decimal.ww lib/strconv/stof.ww lib/strconv/ftos_data.ww lib/strconv/ftos.ww lib/strings/strings.ww lib/bytes/bytes.ww lib/encoding/utf8/utf8.ww lib/ascii/ascii.ww lib/errors/errors.ww lib/io/io.ww lib/io/stream.ww lib/io/types.ww lib/memio/memio.ww lib/fmt/fmt.ww \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
@mkdir -p $(BIN)/wwdump_ww.d
|
|
cd $(BIN)/wwdump_ww.d && $(CURDIR)/$(BIN)/ww build \
|
|
-I $(CURDIR)/lib/ww \
|
|
-I $(CURDIR)/lib/ww/lex \
|
|
-I $(CURDIR)/lib/ww/parse \
|
|
-I $(CURDIR)/selfhost/cmd/wcc \
|
|
$(CURDIR)/selfhost/cmd/wwdump/main.ww
|
|
mv $(BIN)/wwdump_ww.d/main $@
|
|
|
|
# ---- ww-side w6c (compiler port, exercised by 994_w6c_ww) -------------
|
|
# 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 \
|
|
lib/ww/lex/lex.ww lib/ww/lex/tok.ww lib/ww/ast.ww \
|
|
lib/ww/parse/parse.ww lib/ww/parse/expr.ww lib/ww/parse/stmt.ww lib/ww/parse/decl.ww lib/ww/typ.ww lib/ww/sym.ww \
|
|
selfhost/cmd/wcc/check.ww \
|
|
selfhost/cmd/wcc/cgen.ww selfhost/cmd/wcc/cgenexpr.ww \
|
|
selfhost/cmd/wcc/cgenstmt.ww selfhost/cmd/wcc/cgenutil.ww \
|
|
selfhost/cmd/wcc/cgendecl.ww \
|
|
lib/os/os.ww lib/rt/malloc.ww lib/time/time.ww lib/strconv/strconv.ww lib/strconv/stof_data.ww lib/strconv/decimal.ww lib/strconv/stof.ww lib/strconv/ftos_data.ww lib/strconv/ftos.ww lib/strings/strings.ww lib/bytes/bytes.ww lib/encoding/utf8/utf8.ww lib/ascii/ascii.ww lib/errors/errors.ww lib/io/io.ww lib/io/stream.ww lib/io/types.ww lib/memio/memio.ww lib/fmt/fmt.ww \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
@mkdir -p $(BIN)/w6c_ww.d
|
|
cd $(BIN)/w6c_ww.d && $(CURDIR)/$(BIN)/ww build \
|
|
-I $(CURDIR)/lib/ww \
|
|
-I $(CURDIR)/lib/ww/lex \
|
|
-I $(CURDIR)/lib/ww/parse \
|
|
-I $(CURDIR)/selfhost/cmd/wcc \
|
|
$(CURDIR)/selfhost/cmd/w6c/main.ww
|
|
mv $(BIN)/w6c_ww.d/main $@
|
|
|
|
# ---- ww-side w6a (assembler port, exercised by 991_w6a_ww) ------------
|
|
# Built like wwdump_ww. Needs -I selfhost/cmd/w6a for the local types/lex/
|
|
# parse/asm/obj modules.
|
|
$(BIN)/w6a_ww: selfhost/cmd/w6a/main.ww selfhost/cmd/w6a/opcodes.ww \
|
|
selfhost/cmd/w6a/lex.ww selfhost/cmd/w6a/parse.ww \
|
|
selfhost/cmd/w6a/asm.ww selfhost/cmd/w6a/obj.ww \
|
|
lib/os/os.ww lib/rt/malloc.ww lib/time/time.ww \
|
|
lib/strings/strings.ww lib/bytes/bytes.ww lib/encoding/utf8/utf8.ww \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
@mkdir -p $(BIN)/w6a_ww.d
|
|
cd $(BIN)/w6a_ww.d && $(CURDIR)/$(BIN)/ww build \
|
|
-I $(CURDIR)/selfhost/cmd/w6a \
|
|
$(CURDIR)/selfhost/cmd/w6a/main.ww
|
|
mv $(BIN)/w6a_ww.d/main $@
|
|
|
|
# ---- ww-side w6l (linker port, exercised by 992_w6l_ww) ---------------
|
|
# Built like 6a_ww. Needs -I selfhost/cmd/w6l for the local sym/obj/pass/
|
|
# out modules.
|
|
$(BIN)/w6l_ww: selfhost/cmd/w6l/main.ww selfhost/cmd/w6l/sym.ww \
|
|
selfhost/cmd/w6l/obj.ww selfhost/cmd/w6l/dyn.ww \
|
|
selfhost/cmd/w6l/pass.ww selfhost/cmd/w6l/dynout.ww \
|
|
selfhost/cmd/w6l/out.ww \
|
|
lib/os/os.ww lib/rt/malloc.ww lib/time/time.ww \
|
|
lib/strings/strings.ww lib/bytes/bytes.ww lib/encoding/utf8/utf8.ww \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
@mkdir -p $(BIN)/w6l_ww.d
|
|
cd $(BIN)/w6l_ww.d && $(CURDIR)/$(BIN)/ww build \
|
|
-I $(CURDIR)/selfhost/cmd/w6l \
|
|
$(CURDIR)/selfhost/cmd/w6l/main.ww
|
|
mv $(BIN)/w6l_ww.d/main $@
|
|
|
|
# ---- ww-side ww driver (exercised by 993_ww_ww) ------------------------
|
|
# The driver pulls in lib/os (default search path) and orchestrates
|
|
# w6c/w6a/w6l like the C driver.
|
|
$(BIN)/ww_ww: selfhost/cmd/ww/main.ww lib/os/os.ww lib/rt/malloc.ww \
|
|
lib/time/time.ww lib/strconv/strconv.ww \
|
|
lib/strings/strings.ww lib/bytes/bytes.ww lib/encoding/utf8/utf8.ww \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
@mkdir -p $(BIN)/ww_ww.d
|
|
cd $(BIN)/ww_ww.d && $(CURDIR)/$(BIN)/ww build \
|
|
$(CURDIR)/selfhost/cmd/ww/main.ww
|
|
mv $(BIN)/ww_ww.d/main $@
|
|
|
|
# ---- runtime (libwwrt.a, assembled by our own w6a) ---------------------
|
|
$(OBJ)/rt/%.o: rt/%.s $(BIN)/w6a | $(OBJ)/rt
|
|
$(BIN)/w6a -o $@ $<
|
|
|
|
# ww-side runtime helpers (rt/*.ww): compile via w6c to .s, then w6a.
|
|
# Each .ww module is standalone — uses @symbol FFI for rt_alloc/rt_free
|
|
# rather than `use os;` so no bundling is required.
|
|
$(OBJ)/rt/%.s: rt/%.ww $(BIN)/w6c | $(OBJ)/rt
|
|
$(BIN)/w6c $< > $@
|
|
$(OBJ)/rt/%.o: $(OBJ)/rt/%.s $(BIN)/w6a | $(OBJ)/rt
|
|
$(BIN)/w6a -o $@ $<
|
|
|
|
$(LIB)/libwwrt.a: $(RT_OBJ) | $(LIB)
|
|
$(AR) rcs $@ $(RT_OBJ)
|
|
|
|
# ---- directories -------------------------------------------------------
|
|
$(BIN) $(LIB) $(OBJ)/wcc $(OBJ)/ww $(OBJ)/wwdump $(OBJ)/w6c $(OBJ)/w6a $(OBJ)/w6l $(OBJ)/rt:
|
|
mkdir -p $@
|
|
|
|
# ---- tests -------------------------------------------------------------
|
|
# Each phase adds a $(BIN)/test_<name> target; the runner walks them.
|
|
TESTS = $(BIN)/test_smoke $(BIN)/test_lex $(BIN)/test_parse $(BIN)/test_check \
|
|
$(BIN)/test_w6c $(BIN)/test_w6a $(BIN)/test_dataw $(BIN)/test_datar \
|
|
$(BIN)/test_w6l $(BIN)/test_data_link \
|
|
$(BIN)/test_arch \
|
|
$(BIN)/test_e2e $(BIN)/test_ffi $(BIN)/test_dyn $(BIN)/test_stdlib \
|
|
$(BIN)/test_at_test $(BIN)/test_let_global $(BIN)/test_def_neg_global \
|
|
$(BIN)/test_def_const_fold \
|
|
$(BIN)/test_int_cast_signed $(BIN)/test_dot_chain \
|
|
$(BIN)/test_amp_dot $(BIN)/test_arr_elem_field \
|
|
$(BIN)/test_arr_elem_field_write \
|
|
$(BIN)/test_arr_enum_elem \
|
|
$(BIN)/test_arr_strslice_elem \
|
|
$(BIN)/test_arr_tagged_elem \
|
|
$(BIN)/test_arr_infer_len \
|
|
$(BIN)/test_slice_str_global_zero \
|
|
$(BIN)/test_slice_literal_global \
|
|
$(BIN)/test_global_arr_elem_field \
|
|
$(BIN)/test_structlit_slice_field \
|
|
$(BIN)/test_dot_str_chained_arg \
|
|
$(BIN)/test_dot_slice_arg \
|
|
$(BIN)/test_dot_tagged_source \
|
|
$(BIN)/test_tagged_store_intlit \
|
|
$(BIN)/test_match_bind_struct \
|
|
$(BIN)/test_modtype_leaf_collision \
|
|
$(BIN)/test_samemod_prefer \
|
|
$(BIN)/test_cgreturn_struct \
|
|
$(BIN)/test_cgassign_struct \
|
|
$(BIN)/test_dot_explicit_deref \
|
|
$(BIN)/test_nested_structlit \
|
|
$(BIN)/test_dot_structlit \
|
|
$(BIN)/test_nested_call_rhs \
|
|
$(BIN)/test_fnlabel_mangle \
|
|
$(BIN)/test_cgreturn_variant_zero \
|
|
$(BIN)/test_arrlit_str_full \
|
|
$(BIN)/test_redecl \
|
|
$(BIN)/test_empty_alloc_infer \
|
|
$(BIN)/test_struct_field_index \
|
|
$(BIN)/test_tagged_return_scratch \
|
|
$(BIN)/test_tagged_widen_f64 \
|
|
$(BIN)/test_match_spill_pointer_payload \
|
|
$(BIN)/test_struct_byval_param \
|
|
$(BIN)/test_struct_multi_return_scratch \
|
|
$(BIN)/test_signed_data_emit \
|
|
$(BIN)/test_signed_data_emit_run \
|
|
$(BIN)/test_tagged_call_arg \
|
|
$(BIN)/test_tagged_call_arg_run \
|
|
$(BIN)/test_tryprop_tag_remap_run \
|
|
$(BIN)/test_nested_union_widen_run \
|
|
$(BIN)/test_sret_struct_return \
|
|
$(BIN)/test_sret_struct_return_run \
|
|
$(BIN)/test_tagged_sret_run \
|
|
$(BIN)/test_tagged_memarg_run \
|
|
$(BIN)/test_tagscr_sizes_run \
|
|
$(BIN)/test_is_nonident_run \
|
|
$(BIN)/test_match_nonident_idx_run \
|
|
$(BIN)/test_global_sret_run \
|
|
$(BIN)/test_sret_narrow_field \
|
|
$(BIN)/test_sret_narrow_field_run \
|
|
$(BIN)/test_match_slice_variant \
|
|
$(BIN)/test_match_slice_variant_run \
|
|
$(BIN)/test_str_abi_run \
|
|
$(BIN)/test_str_elem_cap_run \
|
|
$(BIN)/test_str_field_cap_run \
|
|
$(BIN)/test_str_chained_field_cap_run \
|
|
$(BIN)/test_str_tuple_elem_cap_run \
|
|
$(BIN)/test_str_arrfield_cap_run \
|
|
$(BIN)/test_str_arrfield_store_cap_run \
|
|
$(BIN)/test_str_chainfield_store_cap_run \
|
|
$(BIN)/test_str_massign_store_cap_run \
|
|
$(BIN)/test_slice_store_cap_run \
|
|
$(BIN)/test_subslice_cap_run \
|
|
$(BIN)/test_subslice_ptresz_run \
|
|
$(BIN)/test_deref_slice_store_run \
|
|
$(BIN)/test_tuple_nary_destructure_run \
|
|
$(BIN)/test_rvalue_tuple_destructure_run \
|
|
$(BIN)/test_overcap_tuple_field_store_run \
|
|
$(BIN)/test_mixed_scalar_tuple_sret_run \
|
|
$(BIN)/test_tuple_in_union_run \
|
|
$(BIN)/test_tuple_slot_layout_run \
|
|
$(BIN)/test_tagged_tuple_widen_run \
|
|
$(BIN)/test_tagged_structlit_payload_run \
|
|
$(BIN)/test_forrange_fieldbase_run \
|
|
$(BIN)/test_errtype_compare \
|
|
$(BIN)/test_tuple_elem_slice_len_run \
|
|
$(BIN)/test_str_forrange_loopvar_run \
|
|
$(BIN)/test_composite_call_arg \
|
|
$(BIN)/test_composite_call_arg_run \
|
|
$(BIN)/test_letdecl_zeroinit \
|
|
$(BIN)/test_nested_if_labels \
|
|
$(BIN)/test_alias_leaf_collision \
|
|
$(BIN)/test_modcall_widen_slice \
|
|
$(BIN)/test_match_4arm_cross_module \
|
|
$(BIN)/test_match_4arm_cross_module_run \
|
|
$(BIN)/test_free_noop_run \
|
|
$(BIN)/test_variant_typekey_run \
|
|
$(BIN)/test_enum_modshadow \
|
|
$(BIN)/test_struct_modshadow \
|
|
$(BIN)/test_def_modshadow \
|
|
$(BIN)/test_cstage_label_ssot \
|
|
$(BIN)/test_direnum \
|
|
$(BIN)/test_module_decl \
|
|
$(BIN)/test_chained_index \
|
|
$(BIN)/test_chained_write \
|
|
$(BIN)/test_dotbase_chained \
|
|
$(BIN)/test_parse_error \
|
|
$(BIN)/test_variadic_pack \
|
|
$(BIN)/test_letcopy_struct \
|
|
$(BIN)/test_fnparams_bare_leaf_shadow \
|
|
$(BIN)/test_fnret_bare_leaf_shadow \
|
|
$(BIN)/test_fnret34_modshadow \
|
|
$(BIN)/test_strdef_inline \
|
|
$(BIN)/test_def_modqual_modshadow \
|
|
$(BIN)/test_size_strategy_convergence \
|
|
$(BIN)/test_sumtype_forward \
|
|
$(BIN)/test_mklabel_modscoped \
|
|
$(BIN)/test_vararg_seq_percall \
|
|
$(BIN)/test_modparam_callee \
|
|
$(BIN)/test_convwrap_audit \
|
|
$(BIN)/test_slice_of_slice_index \
|
|
$(BIN)/test_amp_dot_idx \
|
|
$(BIN)/test_alias_chain_unwrap \
|
|
$(BIN)/test_letbind_void_bang_void \
|
|
$(BIN)/test_cgalloc_str_field \
|
|
$(BIN)/test_param_shadow_mod \
|
|
$(BIN)/test_localoff_scope \
|
|
$(BIN)/test_cast_enum_movl \
|
|
$(BIN)/test_check_enum_fold \
|
|
$(BIN)/test_def_widen_const \
|
|
$(BIN)/test_inferred_struct_arg_push \
|
|
$(BIN)/test_struct_abi_size \
|
|
$(BIN)/test_typeeq_fn_ast \
|
|
$(BIN)/test_amp_fn_ident \
|
|
$(BIN)/test_star_fn_deref \
|
|
$(BIN)/test_star_fn_deref_call \
|
|
$(BIN)/test_match_variant_dispatch \
|
|
$(BIN)/test_io_types_run \
|
|
$(BIN)/test_dot_aliased_ptr \
|
|
$(BIN)/test_return_tagged_forward \
|
|
$(BIN)/test_widen_transitive \
|
|
$(BIN)/test_typeassert_nonident \
|
|
$(BIN)/test_isas_spread_variant \
|
|
$(BIN)/test_tagged_widen_named_variant \
|
|
$(BIN)/test_io_vtable_run \
|
|
$(BIN)/test_io_handle_run \
|
|
$(BIN)/test_memio_vstream_run \
|
|
$(BIN)/test_fmt_handle_run \
|
|
$(BIN)/test_fmt_mods_run \
|
|
$(BIN)/test_fmt_compositions_run \
|
|
$(BIN)/test_fieldfn_leaf_collide_run \
|
|
$(BIN)/test_amp_fn_assign_run \
|
|
$(BIN)/test_type_value_shadow_run \
|
|
$(BIN)/test_xmod_alias_struct_collide_run \
|
|
$(BIN)/test_xmod_variant_match \
|
|
$(BIN)/test_spread_variant_match \
|
|
$(BIN)/test_xmod_ident_prefer \
|
|
$(BIN)/test_xmod_valglobal_run \
|
|
$(BIN)/test_xmod_valglobal_dot_run \
|
|
$(BIN)/test_len_strglobal_run \
|
|
$(BIN)/test_litstr_pseudo_run \
|
|
$(BIN)/test_lenidx_run \
|
|
$(BIN)/test_globalidx_run \
|
|
$(BIN)/test_tuple_sret_callee \
|
|
$(BIN)/test_tuple_sret_receive_run \
|
|
$(BIN)/test_append_wide_elem \
|
|
$(BIN)/test_delete_elem \
|
|
$(BIN)/test_delete_range \
|
|
$(BIN)/test_insert_elem \
|
|
$(BIN)/test_arrlit_overlong \
|
|
$(BIN)/test_idx_structlit_store \
|
|
$(BIN)/test_inferred_let_struct \
|
|
$(BIN)/test_agg_assign_width \
|
|
$(BIN)/test_placeaddr_store \
|
|
$(BIN)/test_tryprop_multisuccess \
|
|
$(BIN)/test_append_place \
|
|
$(BIN)/test_struct_tuple_field_slot \
|
|
$(BIN)/test_widen_pad_zero_run \
|
|
$(BIN)/test_named_ptr_alias_variant_widen \
|
|
$(BIN)/test_single_field_struct_zeroinit \
|
|
$(BIN)/test_structvariant_largeunion_return \
|
|
$(BIN)/test_narrow_alias_deref_store \
|
|
$(BIN)/test_bufio_vstream_run \
|
|
$(BIN)/test_log_vstream_run \
|
|
$(BIN)/test_use_promote_alias \
|
|
$(BIN)/test_field_signed $(BIN)/test_frame_argcount \
|
|
$(BIN)/test_selfhost $(BIN)/test_w6a_ww $(BIN)/test_w6l_ww \
|
|
$(BIN)/test_w6c_ww $(BIN)/test_ww_ww $(BIN)/test_self_rebuild \
|
|
$(BIN)/test_dyn_ww $(BIN)/test_selfcheck $(BIN)/test_at_test_ww \
|
|
$(BIN)/test_fmt_run $(BIN)/test_log_run $(BIN)/test_fnmatch_run \
|
|
$(BIN)/test_shlex_run $(BIN)/test_getenv_run $(BIN)/test_dirs_run \
|
|
$(BIN)/test_stat_run $(BIN)/test_time_run \
|
|
$(BIN)/test_intdiv_signed \
|
|
$(BIN)/test_strings_run \
|
|
$(BIN)/test_hex_run $(BIN)/test_utf8_run $(BIN)/test_bytes_run \
|
|
$(BIN)/test_decimal_run $(BIN)/test_strconv_int_run \
|
|
$(BIN)/test_stof_run $(BIN)/test_ftos_run \
|
|
$(BIN)/test_memio_run $(BIN)/test_temp_run $(BIN)/test_getopt_run \
|
|
$(BIN)/test_errno_run \
|
|
$(BIN)/test_base32_run $(BIN)/test_base64_run \
|
|
$(BIN)/test_adler32_run $(BIN)/test_crc16_run \
|
|
$(BIN)/test_crc32_run $(BIN)/test_crc64_run \
|
|
$(BIN)/test_siphash_run $(BIN)/test_sha256_run \
|
|
$(BIN)/test_regex_run \
|
|
$(BIN)/test_lib_byteid \
|
|
$(BIN)/test_floatlit_run \
|
|
$(BIN)/test_checked_run \
|
|
$(BIN)/test_floatarr_run \
|
|
$(BIN)/test_deref_narrow_run \
|
|
$(BIN)/test_idx_compound_run \
|
|
$(BIN)/test_ptrarr_index_run \
|
|
$(BIN)/test_dotbase_arr_run \
|
|
$(BIN)/test_dotbase_addr_slice_run \
|
|
$(BIN)/test_structlit_arrfield_run \
|
|
$(BIN)/test_arraytoslice_run \
|
|
$(BIN)/test_arrlit_slice_run \
|
|
$(BIN)/test_valstruct_subsize_run \
|
|
$(BIN)/test_aggret_source_run \
|
|
$(BIN)/test_continue_run \
|
|
$(BIN)/test_callret_unsigned_arith_run \
|
|
$(BIN)/test_sar_shr_run \
|
|
$(BIN)/test_def_mangle_run \
|
|
$(BIN)/test_arr_u16_store_run \
|
|
$(BIN)/test_arr_module_index_run \
|
|
$(BIN)/test_arr_float_call_index_run \
|
|
$(BIN)/test_def_float_lit_run \
|
|
$(BIN)/test_struct_composite_init_run \
|
|
$(BIN)/test_array_static_init_run \
|
|
$(BIN)/test_strarray_static_run \
|
|
$(BIN)/test_array_init_acceptiffits_run \
|
|
$(BIN)/test_arrlit_elem_narrow_run \
|
|
$(BIN)/test_amp_def_global_run \
|
|
$(BIN)/test_f64cgen_run \
|
|
$(BIN)/test_f64crossmod_run \
|
|
$(BIN)/test_tuprecv_run \
|
|
$(BIN)/test_f64xmm_run \
|
|
$(BIN)/test_f32lit_run \
|
|
$(BIN)/test_f32stamp_run \
|
|
$(BIN)/test_f32arg_run \
|
|
$(BIN)/test_tuprecv_f64_run \
|
|
$(BIN)/test_assert_builtin_run \
|
|
$(BIN)/test_modqualdestr_run \
|
|
$(BIN)/test_tupparam_run \
|
|
$(BIN)/test_structparam_run \
|
|
$(BIN)/test_structret_run \
|
|
$(BIN)/test_floats_run \
|
|
$(BIN)/test_size_type_run \
|
|
$(BIN)/test_types_sizelim_run \
|
|
$(BIN)/test_types_intlim_run \
|
|
$(BIN)/test_opaque_decl_run \
|
|
$(BIN)/test_opaque_guards \
|
|
$(BIN)/test_opaque_assign_cast_run \
|
|
$(BIN)/test_sort_run \
|
|
$(BIN)/test_bufio_run $(BIN)/test_random_run \
|
|
$(BIN)/test_asserttyped_gap \
|
|
$(BIN)/test_ascii_run $(BIN)/test_tok_run $(BIN)/test_nkname_run
|
|
|
|
$(BIN)/test_smoke: test/wcc/000_smoke.c $(LIB)/libwcc.a | $(BIN)
|
|
$(CC) $(CFLAGS) $(INCS) -o $@ $< -L$(LIB) -lwcc
|
|
|
|
$(BIN)/test_lex: test/wcc/100_lex.c $(LIB)/libwcc.a | $(BIN)
|
|
$(CC) $(CFLAGS) $(INCS) -o $@ $< -L$(LIB) -lwcc
|
|
|
|
$(BIN)/test_parse: test/wcc/200_parse.c $(LIB)/libwcc.a | $(BIN)
|
|
$(CC) $(CFLAGS) $(INCS) -o $@ $< -L$(LIB) -lwcc
|
|
|
|
$(BIN)/test_check: test/wcc/300_check.c $(LIB)/libwcc.a | $(BIN)
|
|
$(CC) $(CFLAGS) $(INCS) -o $@ $< -L$(LIB) -lwcc
|
|
|
|
$(BIN)/test_w6c: test/wcc/400_w6c.c $(BIN)/w6c | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_w6a: test/wcc/500_w6a.c $(BIN)/w6c $(BIN)/w6a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dataw: test/wcc/510_dataw.c $(BIN)/w6a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_datar: test/wcc/520_datar.c $(BIN)/w6a $(BIN)/w6l | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_w6l: test/wcc/600_w6l.c $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_data_link: test/wcc/620_data_link.c $(BIN)/w6a $(BIN)/w6l | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arch: test/wcc/610_arch.c $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(OBJ)/rt/start.o | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_e2e: test/wcc/700_e2e.c $(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a $(OBJ)/rt/start.o | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_ffi: test/wcc/800_ffi.c $(BIN)/w6c | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dyn: test/wcc/810_dyn.c $(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_stdlib: test/wcc/900_stdlib.c $(BIN)/w6c | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_at_test: test/wcc/910_at_test.c $(BIN)/ww $(BIN)/w6c $(BIN)/w6a \
|
|
$(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_let_global: test/wcc/630_let_global.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_def_neg_global: test/wcc/631_def_neg_global.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_def_const_fold: test/wcc/732_def_const_fold.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_int_cast_signed: test/wcc/640_int_cast_signed.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dot_chain: test/wcc/650_dot_chain.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_amp_dot: test/wcc/690_amp_dot.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arr_elem_field: test/wcc/680_arr_elem_field.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arr_elem_field_write: test/wcc/681_arr_elem_field_write.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arr_enum_elem: test/wcc/682_arr_enum_elem.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arr_strslice_elem: test/wcc/683_arr_strslice_elem.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arr_infer_len: test/wcc/684_arr_infer_len.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arr_tagged_elem: test/wcc/685_arr_tagged_elem.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_slice_str_global_zero: test/wcc/686_slice_str_global_zero.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_slice_literal_global: test/wcc/687_slice_literal_global.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_global_arr_elem_field: test/wcc/688_global_arr_elem_field.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_structlit_slice_field: test/wcc/689_structlit_slice_field.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dot_str_chained_arg: test/wcc/692_dot_str_chained_arg.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dot_slice_arg: test/wcc/691_dot_slice_arg.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dot_tagged_source: test/wcc/693_dot_tagged_source.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tagged_store_intlit: test/wcc/694_tagged_store_intlit.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_match_bind_struct: test/wcc/695_match_bind_struct.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_modtype_leaf_collision: test/wcc/696_modtype_leaf_collision.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_samemod_prefer: test/wcc/697_samemod_prefer.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_cgreturn_struct: test/wcc/698_cgreturn_struct.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_cgassign_struct: test/wcc/701_cgassign_struct.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dot_explicit_deref: test/wcc/702_dot_explicit_deref.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_nested_structlit: test/wcc/703_nested_structlit.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dot_structlit: test/wcc/704_dot_structlit.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_nested_call_rhs: test/wcc/705_nested_call_rhs.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_fnlabel_mangle: test/wcc/706_fnlabel_mangle.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_cgreturn_variant_zero: test/wcc/707_cgreturn_variant_zero.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_param_shadow_mod: test/wcc/708_param_shadow_mod.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_localoff_scope: test/wcc/709_localoff_scope.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_cast_enum_movl: test/wcc/710_cast_enum_movl.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_check_enum_fold: test/wcc/759_check_enum_fold.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_def_widen_const: test/wcc/760_def_widen_const.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_inferred_struct_arg_push: test/wcc/761_inferred_struct_arg_push.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_struct_abi_size: test/wcc/762_struct_abi_size.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_typeeq_fn_ast: test/wcc/763_typeeq_fn_ast.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_amp_fn_ident: test/wcc/764_amp_fn_ident.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_star_fn_deref: test/wcc/765_star_fn_deref.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_star_fn_deref_call: test/wcc/766_star_fn_deref_call.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_match_variant_dispatch: test/wcc/767_match_variant_dispatch.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_io_types_run: test/wcc/768_io_types_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dot_aliased_ptr: test/wcc/769_dot_aliased_ptr.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_return_tagged_forward: test/wcc/770_return_tagged_forward.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_widen_transitive: test/wcc/771_widen_transitive.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_typeassert_nonident: test/wcc/772_typeassert_nonident.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_isas_spread_variant: test/wcc/773_isas_spread_variant.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tagged_widen_named_variant: test/wcc/774_tagged_widen_named_variant.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_io_vtable_run: test/wcc/775_io_vtable_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_io_handle_run: test/wcc/791_io_handle_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_memio_vstream_run: test/wcc/776_memio_vstream_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
lib/memio/memio.ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_fmt_handle_run: test/wcc/777_fmt_handle_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
lib/fmt/fmt.ww lib/memio/memio.ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# 782 — #211 close (cgen sibling of #208). Self-contained single-file
|
|
# probe (no lib imports). Graduated STAGE_CS | STAGE_WW + byte-id on
|
|
# #211 close: build + run on both stages + cs.s == ww.s (rule-10).
|
|
$(BIN)/test_fieldfn_leaf_collide_run: test/wcc/782_fieldfn_leaf_collide_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #206: bare &fn assignable into *<fn-alias> / (*<fn-alias>|void). Both
|
|
# stages (cstage + wwstage byte-id); single-file probes, no lib imports.
|
|
$(BIN)/test_amp_fn_assign_run: test/wcc/783_amp_fn_assign_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #225: a value binding (param/let/fn) that shadows a same-named TYPE
|
|
# must not hide it in type-annotation or cast position. cstage was
|
|
# kind-blind in resolve_typename; wwstage already separated the type and
|
|
# value namespaces. Driver build + run on both stages + cs.s == ww.s.
|
|
$(BIN)/test_type_value_shadow_run: test/wcc/788_type_value_shadow_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #223: a struct-field access through a pointer-ALIAS receiver whose
|
|
# leaf collides with another module's same-leaf STRUCT. cstage driver
|
|
# build + run for runtime, raw w6c vs w6c_ww .s cmp on the combined.ww
|
|
# for rule-10 byte-id (the #223 discriminator). Builds its own 2-module
|
|
# fixtures in a private mktemp dir — not a selfhost-driver test.
|
|
$(BIN)/test_xmod_alias_struct_collide_run: test/wcc/784_xmod_alias_struct_collide_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/w6c_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #13: cross-module decomposition of an imported union's variants
|
|
# (`case pkg.a`). Pre-fix the wwstage checker rejected it; cstage built
|
|
# it. cstage driver build + run pins routing; raw w6c_ww on the
|
|
# combined.ww (must now accept) + cs==ww byte-id is the discriminator.
|
|
# Builds its own 2-module fixtures in a private mktemp dir.
|
|
$(BIN)/test_xmod_variant_match: test/wcc/787_xmod_variant_match.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/w6c_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #209: a `match` over a tagged union with a `...inner` SPREAD variant
|
|
# (e.g. fmt's `field = (...formattable | *mods)`). The wwstage checker
|
|
# walked the raw AST u.list and false-rejected every flattened member arm
|
|
# ("case: not a variant" / "variant not handled"), so any fmt-importing
|
|
# unit was wwstage-uncompilable. Fix flattens the spread in the checker's
|
|
# match validity + exhaustiveness walk (selfhost/cmd/wcc/check.ww). The
|
|
# w6c_ww-accepts + cs==ww byte-id on the driver combined is the
|
|
# discriminator. Self-contained single-file probe.
|
|
$(BIN)/test_spread_variant_match: test/wcc/792_spread_variant_match.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/w6c_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_widen_pad_zero_run: test/wcc/793_widen_pad_zero_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/w6c_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #55: bare value-ident in an imported module must resolve same-module-
|
|
# preferred (exprtype N_IDENT scopelookup -> scopelookupprefer). cstage
|
|
# driver build + run pins routing; raw w6c_ww on the combined must ACCEPT
|
|
# (pre-fix it rejected the wrong-module-typed ident). Builds its own
|
|
# 2-module fixtures in a private mktemp dir.
|
|
$(BIN)/test_xmod_ident_prefer: test/wcc/794_xmod_ident_prefer.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/w6c_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #1 (cgen residual of #55): cross-module bare value-global load must
|
|
# mangle reference-site by resolved module / definition-site by the
|
|
# decl's own module — runtime + cs==ww byte-id. Self-contained single-
|
|
# file multi-package probe (953 model).
|
|
$(BIN)/test_xmod_valglobal_run: test/wcc/795_xmod_valglobal_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #229 (N_DOT-base + addr-of sibling of #1): cross-module DOTTED value-
|
|
# global read AND &-address-of must mangle by the dotted module name, not
|
|
# cur_mod — runtime + cs==ww byte-id. Self-contained multi-package probe.
|
|
$(BIN)/test_xmod_valglobal_dot_run: test/wcc/796_xmod_valglobal_dot_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #231: len(str/slice global) must load the .len field via the global's
|
|
# address (LEAQ name(SB),CX; MOVQ 8(CX),AX), not a bogus BP-relative slot
|
|
# (cstage) or the whole header's .ptr (wwstage) — runtime + cs==ww byte-id.
|
|
$(BIN)/test_len_strglobal_run: test/wcc/797_len_strglobal_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #14: a string LITERAL `.len` is TY_UNTYPED_STR, so it misses the typed
|
|
# slice/str pseudo-field gate and fell to the N_DOT base-eval fallback —
|
|
# cstage returned AX=.ptr instead of shuffling BX=.len into AX (wwstage
|
|
# already did). Runtime + cs==ww byte-id; `.ptr` unchanged (control row).
|
|
$(BIN)/test_litstr_pseudo_run: test/wcc/801_litstr_pseudo_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #19: len() over an INDEXED str/slice element (`len(xs[i])`) returned the
|
|
# element's .ptr, not its length (cstage == wwstage, shared gap). Runtime
|
|
# (cstage build+run) + cs==ww byte-id, both dimensions per row.
|
|
$(BIN)/test_lenidx_run: test/wcc/802_lenidx_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #10: indexing a GLOBAL str / GLOBAL slice (`s[i]` / `g[i]`) read a wide
|
|
# {ptr,len,cap} header with an 8-byte stride + full-word load instead of the
|
|
# element load — wwstage `cgindex` dispatched esz off the base tnode KIND
|
|
# (only N_TARRAY/N_TPTR), so a global str/slice matched neither and defaulted
|
|
# to esz=8. cstage is correct (type-driven dispatch). Runtime (cstage build+
|
|
# run) + cs==ww byte-id, both dimensions per row.
|
|
$(BIN)/test_globalidx_run: test/wcc/803_globalidx_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #10 Fold A (wide tuple-return / sret, CALLEE side): an over-cap tuple
|
|
# return (> 4 GP or > 2 SSE eightbytes) now compiles via sret instead of
|
|
# loud-stopping at the SEND. Compile + cs==ww byte-id only — the receive
|
|
# stays loud-stopped (Fold B wires the round-trip). Self-contained probes.
|
|
$(BIN)/test_tuple_sret_callee: test/wcc/798_tuple_sret_callee.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #10 Fold B (wide tuple-return / sret, RECEIVE side): the call/receive
|
|
# end of the over-cap tuple ABI — single-var-let, destructure, reassign,
|
|
# return-forward. Runtime round-trip (the net Fold A deferred — byte-id is
|
|
# blind to a SEND/RECEIVE layout mismatch) + cs==ww byte-id. Self-contained
|
|
# single-file probes (953 model), no selfhost traversal.
|
|
$(BIN)/test_tuple_sret_receive_run: test/wcc/799_tuple_sret_receive_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #34: append() stores the full element width per element kind — runtime
|
|
# readback (tagged box / str+slice 3-word header / struct fill / spread
|
|
# word-copy / 2-append realloc survival) + per-row cs==ww byte-id (which
|
|
# pins the wwstage elemsizeofc membsz, scratch order, and frame canary)
|
|
# + the rule-7 loud-stop for the deferred struct-from-call source shape.
|
|
$(BIN)/test_append_wide_elem: test/wcc/800_append_wide_elem.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #35 (delete-half): delete(xs[i]) single-element slice removal — runtime
|
|
# rows across every element kind (scalar/narrow/str/struct/56B tagged) +
|
|
# the deref-of-local regex fold-2b shape + checker reject rows + cs==ww
|
|
# asm byte-id (the converged-by-construction shift loop).
|
|
$(BIN)/test_delete_elem: test/wcc/804_delete_elem.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #35 (range-half, fold-5a prereq P2): delete(xs[lo:hi]) range slice
|
|
# removal — runtime rows across defaults (full/head/tail/empty/end
|
|
# boundary), the esz copy-tail spread against the dynamic src offset
|
|
# (1/2/4/8/16/24), the single-elem equivalence, cap preservation,
|
|
# operand order-of-eval + aliasing pins, the deref-of-local base, the
|
|
# indexed-base regex.ha:333 consumer shape EXACT + checker reject rows
|
|
# w/ diagnostic text + cs==ww asm byte-id (the converged-by-construction
|
|
# rdl_l/rdl_e shift loop).
|
|
$(BIN)/test_delete_range: test/wcc/809_delete_range.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #35 (insert-half): insert(xs[idx], v) single-element slice insertion —
|
|
# delete()'s twin, lowered as append-desugar + rotate-right. Runtime rows
|
|
# across every element kind (scalar/narrow/str/struct/56B tagged incl.
|
|
# the regex fold-3 typed-local + cast-rvalue consumer shapes) + idx==len
|
|
# end-insert + pre-grow idx evaluation + the deref-of-local base +
|
|
# checker reject rows w/ exact diagnostic text + cs==ww asm byte-id
|
|
# (the converged-by-construction rotate loop + @insscr frame slot).
|
|
$(BIN)/test_insert_elem: test/wcc/807_insert_elem.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# F6 (task #4, regex fold-2b): (*ts)[i].field = v / OP= v through the
|
|
# cgplaceaddr resolver — runtime rows across widths/signedness/str +
|
|
# compound ops + loud-tail reject rows w/ exact diagnostic text + cs==ww
|
|
# asm byte-id.
|
|
# #71: overlong array literal (more elements than the declared [N]) is
|
|
# a loud checker reject in BOTH stages — local/module/def/struct-field +
|
|
# the repeat-marker form (which used to clobber the saved BP) — plus
|
|
# accept guards (exact-N, repeat-fill, [_] inference) w/ runtime + asm
|
|
# byte-id on both drivers.
|
|
$(BIN)/test_arrlit_overlong: test/wcc/808_arrlit_overlong.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_placeaddr_store: test/wcc/805_placeaddr_store.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# Task #20: struct-LITERAL store into an INDEXED element (`a[i] =
|
|
# pt{...}`, `(*ts)[i].caps[k] = capture{...}`) and a DEREF place
|
|
# (`*p = pt{...}`) — pre-fix a byte-identical SILENT no-op in both
|
|
# stages (gate-blind; the regex fold-5a groupstart capture store).
|
|
# Runtime readback rows + asm byte-id per row on both drivers.
|
|
$(BIN)/test_idx_structlit_store: test/wcc/809_idx_structlit_store.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #24 (fold-5 prereq, PG5 wwstage pair): field read/assign through an
|
|
# annotation-less struct-literal binding `let p = pt{...}` — pre-fix
|
|
# the wwstage checker planted the struct BODY node (N_TSTRUCT) as the
|
|
# inferred let's type, no N_TNAME-keyed cgen arm matched, and `p.f`
|
|
# leaked the FIELD NAME as a global symbol (`MOVQ f(SB)`, link-fail;
|
|
# #211 name-leak family) while a tagged-field assign hit the
|
|
# assign-resolver loud bound. Runtime rows + asm byte-id per row.
|
|
$(BIN)/test_inferred_let_struct: test/wcc/811_inferred_let_struct.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# Task #49 (Family A, ken silent-set triage): whole-aggregate ASSIGN
|
|
# `b = a` copied word0 only — one MOVQ for any struct/array/tuple — in
|
|
# BOTH stages, byte-identical, gate-blind. Same class at the structlit
|
|
# fill field-from-ident, the deref place (#31-A) and the module-let
|
|
# global. Fixed via the ONE mem-to-mem funnel (cg_aggcopy/aggcopy fed
|
|
# by aggarg_srcaddr); non-addressable aggregate rhs dies loud. Runtime
|
|
# readback rows (the only oracle for a gate-blind class) + per-row
|
|
# asm byte-id.
|
|
$(BIN)/test_agg_assign_width: test/wcc/812_agg_assign_width.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# F8+F9 (tasks #5/#12, regex fold-2b): `?` interim single-success gate
|
|
# (|success| > 1 loud-rejected on BOTH stages until task #14's
|
|
# subset-union typing) + direct `f()? is T` / `match (f()?)` reject
|
|
# parity — reject rows w/ exact per-stage diagnostic text, accept rows
|
|
# runtime + cs==ww asm byte-id.
|
|
$(BIN)/test_tryprop_multisuccess: test/wcc/806_tryprop_multisuccess.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# FA1 (task #15, regex fold-2b): append(*p, v) / append(*p, xs...)
|
|
# through a pointer-to-slice place via the cgplaceaddr resolver —
|
|
# runtime rows across element kinds + spread + realloc/frame-integrity
|
|
# + loud-tail reject rows w/ exact diagnostic text + cs==ww asm byte-id.
|
|
$(BIN)/test_append_place: test/wcc/806_append_place.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #237: a tuple-typed struct field must contribute its real slot width to
|
|
# the enclosing struct's slotsize — pure cs==ww .s byte-id (frame size).
|
|
$(BIN)/test_struct_tuple_field_slot: test/wcc/930_struct_tuple_field_slot.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #15: widening a bare *vtable into a NAMED-alias variant (`stream` =
|
|
# *vtable) of `(file | stream)` must compute the right tag, not default
|
|
# to tag 0. Both-stage byte-id + runtime, plus a degenerate-ambiguity
|
|
# reject row (drew's >=2 guard). Self-contained single-file probes.
|
|
$(BIN)/test_named_ptr_alias_variant_widen: test/wcc/789_named_ptr_alias_variant_widen.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #213: bare `let b: T;` of an 8B single-field struct must zero-init the
|
|
# slot (cstage does; wwstage skipped → read-before-init garbage + 778
|
|
# cs!=ww). Both-stage byte-id + a read-before-init correctness row.
|
|
$(BIN)/test_single_field_struct_zeroinit: test/wcc/790_single_field_struct_zeroinit.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #9: returning a STRUCT variant of a LARGE (>4-eightbyte) tagged union.
|
|
# Both-stage byte-id + runtime (reads tag AND the widened &fn field, so a
|
|
# dropped-store regression can't hide behind self-consistent byte-id).
|
|
# Self-contained single-file probes via the driver, no lib imports.
|
|
$(BIN)/test_structvariant_largeunion_return: test/wcc/785_structvariant_largeunion_return.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #11: narrow deref-store through *(!i32-alias) must emit MOVL (4B), not
|
|
# MOVQ (8B which over-writes the adjacent 4 bytes). Both-stage byte-id +
|
|
# runtime over-write guard (sentinel high word survives iff MOVL).
|
|
# Self-contained single-file probes via the driver, no lib imports.
|
|
$(BIN)/test_narrow_alias_deref_store: test/wcc/786_narrow_alias_deref_store.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_fmt_mods_run: test/wcc/780_fmt_mods_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
lib/fmt/fmt.ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_fmt_compositions_run: test/wcc/781_fmt_compositions_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
lib/fmt/fmt.ww \
|
|
lib/memio/memio.ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_bufio_vstream_run: test/wcc/778_bufio_vstream_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
lib/bufio/bufio.ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_log_vstream_run: test/wcc/779_log_vstream_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
lib/log/log.ww \
|
|
lib/fmt/fmt.ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arrlit_str_full: test/wcc/711_arrlit_str_full.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_redecl: test/wcc/712_redecl.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_empty_alloc_infer: test/wcc/729_empty_alloc_infer.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_struct_field_index: test/wcc/713_struct_field_index.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tagged_return_scratch: test/wcc/714_tagged_return_scratch.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tagged_widen_f64: test/wcc/715_tagged_widen_f64.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_match_spill_pointer_payload: test/wcc/716_match_spill_pointer_payload.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_struct_byval_param: test/wcc/717_struct_byval_param.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_struct_multi_return_scratch: test/wcc/718_struct_multi_return_scratch.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_signed_data_emit: test/wcc/719_signed_data_emit.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_signed_data_emit_run: test/wcc/923_signed_data_emit_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tagged_call_arg: test/wcc/720_tagged_call_arg.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tagged_call_arg_run: test/wcc/924_tagged_call_arg_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tryprop_tag_remap_run: test/wcc/925_tryprop_tag_remap_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_nested_union_widen_run: test/wcc/925_nested_union_widen_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_sret_struct_return: test/wcc/721_sret_struct_return.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_sret_struct_return_run: test/wcc/925_sret_struct_return_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tagged_sret_run: test/wcc/926_tagged_sret_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tagged_memarg_run: test/wcc/929_tagged_memarg_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tagscr_sizes_run: test/wcc/926_tagscr_sizes_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_is_nonident_run: test/wcc/927_is_nonident_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_match_nonident_idx_run: test/wcc/928_match_nonident_idx_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_global_sret_run: test/wcc/940_global_sret_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_sret_narrow_field: test/wcc/730_sret_narrow_field.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_sret_narrow_field_run: test/wcc/930_sret_narrow_field_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_match_slice_variant: test/wcc/722_match_slice_variant.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_match_slice_variant_run: test/wcc/926_match_slice_variant_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_str_abi_run: test/wcc/928_str_abi_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_str_elem_cap_run: test/wcc/932_str_elem_cap_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_str_field_cap_run: test/wcc/933_str_field_cap_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_str_chained_field_cap_run: test/wcc/934_str_chained_field_cap_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_str_tuple_elem_cap_run: test/wcc/935_str_tuple_elem_cap_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_str_arrfield_cap_run: test/wcc/936_str_arrfield_cap_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_str_arrfield_store_cap_run: test/wcc/937_str_arrfield_store_cap_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_str_chainfield_store_cap_run: test/wcc/938_str_chainfield_store_cap_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_str_massign_store_cap_run: test/wcc/939_str_massign_store_cap_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_str_forrange_loopvar_run: test/wcc/940_str_forrange_loopvar_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_slice_store_cap_run: test/wcc/941_slice_store_cap_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_subslice_cap_run: test/wcc/942_subslice_cap_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_subslice_ptresz_run: test/wcc/943_subslice_ptresz_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_deref_slice_store_run: test/wcc/944_deref_slice_store_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tuple_nary_destructure_run: test/wcc/945_tuple_nary_destructure_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #241: materialise an RVALUE tuple (literal / match-yield / ?-call payload)
|
|
# into the register cursor before a destructure (run + cs==ww byte-id).
|
|
$(BIN)/test_rvalue_tuple_destructure_run: test/wcc/945_rvalue_tuple_destructure_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #234: over-cap tuple sret store into a local struct field / indexed local
|
|
# (run + cs==ww byte-id), deferred forms loud-stop (builderr both drivers).
|
|
$(BIN)/test_overcap_tuple_field_store_run: test/wcc/940_overcap_tuple_field_store_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #235: len() of a tuple-element slice/str reads .len (+8) not .ptr.
|
|
$(BIN)/test_tuple_elem_slice_len_run: test/wcc/903_tuple_elem_slice_len_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
# #240: mixed-scalar tuple (e.g. (int,[]u8,str)) sret layout agrees in both
|
|
# stages — callee SEND foff via the return-type element size, caller RECEIVE
|
|
# falls an over-cap tuple through to the sret receive (size-gated).
|
|
$(BIN)/test_mixed_scalar_tuple_sret_run: test/wcc/940_mixed_scalar_tuple_sret_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tuple_in_union_run: test/wcc/940_tuple_in_union_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tuple_slot_layout_run: test/wcc/941_tuple_slot_layout_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tagged_tuple_widen_run: test/wcc/936_tagged_tuple_widen_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tagged_structlit_payload_run: test/wcc/938_tagged_structlit_payload_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_forrange_fieldbase_run: test/wcc/937_forrange_fieldbase_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_errtype_compare: test/wcc/949_errtype_compare.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_composite_call_arg: test/wcc/723_composite_call_arg.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_composite_call_arg_run: test/wcc/927_composite_call_arg_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_letdecl_zeroinit: test/wcc/724_letdecl_zeroinit.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_nested_if_labels: test/wcc/725_nested_if_labels.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_alias_leaf_collision: test/wcc/726_alias_leaf_collision.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_modcall_widen_slice: test/wcc/727_modcall_widen_slice.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_match_4arm_cross_module: test/wcc/728_match_4arm_cross_module.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_enum_modshadow: test/wcc/733_enum_modshadow.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_struct_modshadow: test/wcc/734_struct_modshadow.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_def_modshadow: test/wcc/735_def_modshadow.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_cstage_label_ssot: test/wcc/736_cstage_label_ssot.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_direnum: test/wcc/737_direnum.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_module_decl: test/wcc/738_module_decl.c $(LIB)/libwcc.a | $(BIN)
|
|
$(CC) $(CFLAGS) -Icmd/wcc -o $@ $< -Lout/lib -lwcc
|
|
|
|
$(BIN)/test_chained_index: test/wcc/739_chained_index.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_chained_write: test/wcc/740_chained_write.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dotbase_chained: test/wcc/741_dotbase_chained.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_parse_error: test/wcc/742_parse_error.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_variadic_pack: test/wcc/743_variadic_pack.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_letcopy_struct: test/wcc/744_letcopy_struct.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_fnparams_bare_leaf_shadow: test/wcc/732_fnparams_bare_leaf_shadow.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_fnret_bare_leaf_shadow: test/wcc/731_fnret_bare_leaf_shadow.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_fnret34_modshadow: test/wcc/745_fnret34_modshadow.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_strdef_inline: test/wcc/746_strdef_inline.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_def_modqual_modshadow: test/wcc/747_def_modqual_modshadow.c \
|
|
$(BIN)/w6c $(BIN)/w6c_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_size_strategy_convergence: test/wcc/748_size_strategy_convergence.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_sumtype_forward: test/wcc/749_sumtype_forward.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_mklabel_modscoped: test/wcc/750_mklabel_modscoped.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_vararg_seq_percall: test/wcc/751_vararg_seq_percall.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_modparam_callee: test/wcc/752_modparam_callee.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_convwrap_audit: test/wcc/753_convwrap_audit.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_slice_of_slice_index: test/wcc/754_slice_of_slice_index.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_amp_dot_idx: test/wcc/755_amp_dot_idx.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_alias_chain_unwrap: test/wcc/756_alias_chain_unwrap.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_letbind_void_bang_void: test/wcc/757_letbind_void_bang_void.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_cgalloc_str_field: test/wcc/758_cgalloc_str_field.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_match_4arm_cross_module_run: test/wcc/929_match_4arm_cross_module_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_free_noop_run: test/wcc/930_free_noop_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_variant_typekey_run: test/wcc/931_variant_typekey_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_use_promote_alias: test/wcc/699_use_promote_alias.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_field_signed: test/wcc/660_field_signed.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_frame_argcount: test/wcc/670_frame_argcount.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww_ww $(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_selfhost: test/wcc/990_selfhost.c $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(BIN)/ww $(BIN)/wwdump $(BIN)/wwdump_ww $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_w6a_ww: test/wcc/991_w6a_ww.c $(BIN)/w6a $(BIN)/w6a_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_w6l_ww: test/wcc/992_w6l_ww.c $(BIN)/w6l $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_w6c_ww: test/wcc/994_w6c_ww.c $(BIN)/w6c_ww $(BIN)/wwdump_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_ww_ww: test/wcc/993_ww_ww.c $(BIN)/ww $(BIN)/ww_ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_self_rebuild: test/wcc/995_self_rebuild.c $(BIN)/ww_ww \
|
|
$(BIN)/w6c_ww $(BIN)/w6a_ww $(BIN)/w6l_ww $(BIN)/wwdump_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_selfcheck: test/wcc/950_selfcheck.c $(BIN)/wwdump_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_asserttyped_gap: test/wcc/901_asserttyped_gap.c $(BIN)/wwdump_ww | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dyn_ww: test/wcc/996_dyn_ww.c $(BIN)/ww $(BIN)/w6l $(BIN)/w6l_ww \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_at_test_ww: test/wcc/997_at_test_ww.c $(BIN)/ww_ww $(BIN)/w6c_ww \
|
|
$(BIN)/w6a_ww $(BIN)/w6l_ww $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_fmt_run: test/wcc/970_fmt_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_log_run: test/wcc/971_log_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_fnmatch_run: test/wcc/972_fnmatch_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_shlex_run: test/wcc/973_shlex_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_getenv_run: test/wcc/974_getenv_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dirs_run: test/wcc/975_dirs_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_stat_run: test/wcc/976_stat_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_time_run: test/wcc/977_time_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_intdiv_signed: test/wcc/978_intdiv_signed.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_hex_run: test/wcc/979_hex_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_utf8_run: test/wcc/968_utf8_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_bytes_run: test/wcc/967_bytes_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_ascii_run: test/wcc/904_ascii_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tok_run: test/wcc/904_tok_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_nkname_run: test/wcc/905_nkname_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_decimal_run: test/wcc/922_decimal_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_strconv_int_run: test/wcc/922_strconv_int_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_stof_run: test/wcc/909_stof_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_ftos_run: test/wcc/908_ftos_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_strings_run: test/wcc/966_strings_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_memio_run: test/wcc/980_memio_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_temp_run: test/wcc/981_temp_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_getopt_run: test/wcc/982_getopt_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_errno_run: test/wcc/902_errno_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_base32_run: test/wcc/983_base32_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_base64_run: test/wcc/984_base64_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_adler32_run: test/wcc/985_adler32_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_crc16_run: test/wcc/986_crc16_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_crc32_run: test/wcc/987_crc32_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_crc64_run: test/wcc/988_crc64_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_siphash_run: test/wcc/989_siphash_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_sha256_run: test/wcc/989_sha256_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_regex_run: test/wcc/989_regex_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_lib_byteid: test/wcc/989_lib_byteid.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l $(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 $@ $<
|
|
|
|
$(BIN)/test_bufio_run: test/wcc/998_bufio_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_random_run: test/wcc/999_random_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_checked_run: test/wcc/969_checked_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_floatarr_run: test/wcc/946_floatarr_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_deref_narrow_run: test/wcc/947_deref_narrow_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_idx_compound_run: test/wcc/948_idx_compound_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_ptrarr_index_run: test/wcc/949_ptrarr_index_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dotbase_arr_run: test/wcc/949_dotbase_arr_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_dotbase_addr_slice_run: test/wcc/949_dotbase_addr_slice_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_structlit_arrfield_run: test/wcc/949_structlit_arrfield_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arraytoslice_run: test/wcc/953_arraytoslice_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arrlit_slice_run: test/wcc/953_arrlit_slice_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_valstruct_subsize_run: test/wcc/949_valstruct_subsize_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_aggret_source_run: test/wcc/949_aggret_source_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_continue_run: test/wcc/911_continue_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_sar_shr_run: test/wcc/912_sar_shr_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_callret_unsigned_arith_run: \
|
|
test/wcc/906_callret_unsigned_arith_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_def_mangle_run: test/wcc/913_def_mangle_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arr_u16_store_run: test/wcc/914_arr_u16_store_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arr_module_index_run: test/wcc/915_arr_module_index_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arr_float_call_index_run: test/wcc/916_arr_float_call_index_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_def_float_lit_run: test/wcc/917_def_float_lit_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_struct_composite_init_run: test/wcc/918_struct_composite_init_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_array_static_init_run: test/wcc/919_array_static_init_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_strarray_static_run: test/wcc/919_strarray_static_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_array_init_acceptiffits_run: test/wcc/920_array_init_acceptiffits_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_arrlit_elem_narrow_run: test/wcc/951_arrlit_elem_narrow_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_amp_def_global_run: test/wcc/921_amp_def_global_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_f64cgen_run: test/wcc/951_f64cgen_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_floats_run: test/wcc/952_floats_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_size_type_run: test/wcc/957_size_type_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_types_sizelim_run: test/wcc/958_types_sizelim_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_types_intlim_run: test/wcc/959_types_intlim_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_opaque_decl_run: test/wcc/960_opaque_decl_run.c $(BIN)/ww $(BIN)/w6c \
|
|
$(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_opaque_guards: test/wcc/961_opaque_guards.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_opaque_assign_cast_run: test/wcc/962_opaque_assign_cast_run.c \
|
|
$(BIN)/ww $(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_sort_run: test/wcc/963_sort_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6a $(BIN)/w6l $(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_f64crossmod_run: test/wcc/953_f64crossmod_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tuprecv_run: test/wcc/954_tuprecv_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_f64xmm_run: test/wcc/955_f64xmm_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_f32lit_run: test/wcc/964_f32lit_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_f32stamp_run: test/wcc/965_f32stamp_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_f32arg_run: test/wcc/907_f32arg_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tuprecv_f64_run: test/wcc/956_tuprecv_f64_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_assert_builtin_run: test/wcc/957_assert_builtin_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_modqualdestr_run: test/wcc/956_modqualdestr_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_tupparam_run: test/wcc/905_tupparam_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_structparam_run: test/wcc/946_structparam_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BIN)/test_structret_run: test/wcc/946_structret_run.c $(BIN)/ww \
|
|
$(BIN)/w6c $(BIN)/w6c_ww $(BIN)/w6a $(BIN)/w6l \
|
|
$(LIB)/libwwrt.a | $(BIN)
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
sizelint:
|
|
@sh tools/sizelint
|
|
|
|
test: all sizelint $(TESTS)
|
|
@WW=$(BIN)/ww BIN=$(BIN) sh test/run
|
|
|
|
test-unit: all sizelint $(TESTS)
|
|
@WW=$(BIN)/ww BIN=$(BIN) UNIT=1 sh test/run
|
|
|
|
# ---- smoke: inner-loop cross-stage byte-id check on a SMALL input ------
|
|
# Compiles one self-contained fixture through cstage w6c AND wwstage
|
|
# w6c_ww and diffs the emitted .s. Catches a cs!=ww emission divergence
|
|
# (rule 10) in seconds — the per-fold inner-loop check Rob's cadence
|
|
# calls for. NOT a substitute for the full 990-997 byte-id gate, which
|
|
# self-compiles main.combined.ww: ALWAYS run `make test` before landing
|
|
# a cgen/ABI/compiler-lib fold. w6c consumes a flat unit (no import
|
|
# resolution), so FIXTURE must be import-free or a pre-built .combined.ww.
|
|
# make smoke # default: rt/malloc.ww
|
|
# make smoke FIXTURE=rt/ensure.ww # any self-contained .ww
|
|
FIXTURE ?= rt/malloc.ww
|
|
smoke: $(BIN)/w6c $(BIN)/w6c_ww
|
|
@$(BIN)/w6c $(FIXTURE) > $(OUT)/smoke.cs.s || { echo "smoke: cstage w6c failed on $(FIXTURE)"; exit 1; }
|
|
@$(BIN)/w6c_ww $(FIXTURE) > $(OUT)/smoke.ww.s || { echo "smoke: wwstage w6c_ww failed on $(FIXTURE)"; exit 1; }
|
|
@if cmp -s $(OUT)/smoke.cs.s $(OUT)/smoke.ww.s; then \
|
|
echo "smoke OK: cs == ww .s for $(FIXTURE) (`wc -l < $(OUT)/smoke.cs.s` lines)"; \
|
|
else \
|
|
echo "smoke FAIL: cs != ww .s for $(FIXTURE)"; \
|
|
diff -u $(OUT)/smoke.cs.s $(OUT)/smoke.ww.s | head -40; \
|
|
exit 1; \
|
|
fi
|
|
|
|
install: all
|
|
mkdir -p $(PREFIX)/bin $(PREFIX)/lib
|
|
cp $(BIN)/ww $(PREFIX)/bin/
|
|
cp $(LIB)/libwcc.a $(PREFIX)/lib/
|
|
|
|
clean:
|
|
rm -rf $(OUT)
|
|
|
|
# ---- bootstrap (phase 10) ----------------------------------------------
|
|
# Four-stage self-host: Cstage (these C tools) → ww1 → ww2 → ww3 → ww4
|
|
# with cmp ww2 == ww3 and cmp ww3 == ww4. Stage 1 is wwdump_ww (the
|
|
# ww-built frontend); stages 2/3/4 assemble with w6a_ww and link with
|
|
# w6l_ww — every tool below the driver is now in ww. The C `ww` driver
|
|
# still orchestrates the pipeline (porting it is the remaining phase-10
|
|
# work).
|
|
#
|
|
# Why a fourth stage? Stage 3 proves ww1 and ww2 (which differ in how
|
|
# they were built) emit the same machine code. Stage 4 proves ww3 is
|
|
# byte-stable when used as a compiler — i.e. the fixed point is truly
|
|
# fixed, not merely a coincidental two-stage equilibrium.
|
|
BS = $(OUT)/bootstrap
|
|
bootstrap: all
|
|
@echo "=== stage 0 (Cstage): C-built tools ==="
|
|
@echo " $(BIN)/ww $(BIN)/w6c $(BIN)/w6a $(BIN)/w6l"
|
|
@echo
|
|
@echo "=== stage 1: ww-built tools, used to drive stages 2/3/4 ==="
|
|
@ls -l $(BIN)/wwdump_ww $(BIN)/w6a_ww $(BIN)/w6l_ww $(BIN)/ww_ww
|
|
@rm -rf $(BS) && mkdir -p $(BS)
|
|
@echo
|
|
@echo "=== stage 2: ww2 = ww1 self-compiles main.combined.ww ==="
|
|
@$(BIN)/wwdump_ww -c selfhost/cmd/wwdump/main.combined.ww > $(BS)/ww2.s
|
|
@$(BIN)/w6a_ww -o $(BS)/ww2.o $(BS)/ww2.s
|
|
@$(BIN)/w6l_ww -o $(BS)/ww2 $(BS)/ww2.o $(LIB)/libwwrt.a
|
|
@ls -l $(BS)/ww2
|
|
@echo
|
|
@echo "=== stage 3: ww3 = ww2 self-compiles main.combined.ww ==="
|
|
@$(BS)/ww2 -c selfhost/cmd/wwdump/main.combined.ww > $(BS)/ww3.s
|
|
@$(BIN)/w6a_ww -o $(BS)/ww3.o $(BS)/ww3.s
|
|
@$(BIN)/w6l_ww -o $(BS)/ww3 $(BS)/ww3.o $(LIB)/libwwrt.a
|
|
@ls -l $(BS)/ww3
|
|
@echo
|
|
@echo "=== stage 4: ww4 = ww3 self-compiles main.combined.ww ==="
|
|
@$(BS)/ww3 -c selfhost/cmd/wwdump/main.combined.ww > $(BS)/ww4.s
|
|
@$(BIN)/w6a_ww -o $(BS)/ww4.o $(BS)/ww4.s
|
|
@$(BIN)/w6l_ww -o $(BS)/ww4 $(BS)/ww4.o $(LIB)/libwwrt.a
|
|
@ls -l $(BS)/ww4
|
|
@echo
|
|
@echo "=== fixed-point gates ==="
|
|
@cmp $(BS)/ww2.s $(BS)/ww3.s && echo " ww2.s == ww3.s ✓"
|
|
@cmp $(BS)/ww2.o $(BS)/ww3.o && echo " ww2.o == ww3.o ✓ (byte-identical .o)"
|
|
@cmp $(BS)/ww2 $(BS)/ww3 && echo " ww2 == ww3 ✓ (byte-identical exe)"
|
|
@cmp $(BS)/ww3.s $(BS)/ww4.s && echo " ww3.s == ww4.s ✓"
|
|
@cmp $(BS)/ww3.o $(BS)/ww4.o && echo " ww3.o == ww4.o ✓ (byte-identical .o)"
|
|
@cmp $(BS)/ww3 $(BS)/ww4 && echo " ww3 == ww4 ✓ (byte-identical exe, ww3 is byte-stable as a compiler)"
|
|
@echo
|
|
@echo "BOOTSTRAP OK: ww-cgen + w6a_ww + w6l_ww reach a fixed point that holds across two iterations."
|
|
@echo
|
|
@echo "Phase 10 remaining work:"
|
|
@echo " - delete cmd/wcc/ cmd/w6c/ cmd/w6a/ cmd/w6l/ cmd/ww/ in the final commit"
|
|
@echo
|
|
@echo "Already in selfhost/:"
|
|
@echo " - cmd/wcc/ : ww-cgen (lex/parse/check/cgen) — bootstrap fixed point"
|
|
@echo " - cmd/w6c/ : ww-w6c (lex/parse/cgen front-end) — matches wwdump_ww -c (test 994)"
|
|
@echo " - cmd/w6a/ : ww-w6a (lex/parse/asm/obj) — byte-identical to C w6a (test 991)"
|
|
@echo " - cmd/w6l/ : ww-w6l (linker w/ archive support) — byte-identical to C w6l (test 992)"
|
|
@echo " - cmd/ww/ : ww-driver (build/run/version) — byte-identical to C ww (test 993)"
|
|
|
|
# ---- nocc: bootstrap from a checked-in stage-0 binary, no cc -----------
|
|
# A fresh-checkout flow that never invokes cc. Mirrors `make bootstrap`'s
|
|
# fixed-point check but uses `bootstrap/$(ARCH)/{ww,w6c,w6a,w6l}` as the
|
|
# starting point and lands in $(OUT)/nocc/ so the cstage build under
|
|
# $(OUT)/ stays untouched. See bootstrap/README.md and BOOTSTRAP.md.
|
|
#
|
|
# `make bootstrap-snapshot` populates bootstrap/$(ARCH)/ from the
|
|
# currently-built wwstage so you can verify locally before deciding
|
|
# to commit the binaries.
|
|
ARCH ?= amd64
|
|
STAGE0 = bootstrap/$(ARCH)
|
|
NOCC_OUT = $(OUT)/nocc
|
|
NOCC_BIN = $(NOCC_OUT)/bin
|
|
NOCC_LIB = $(NOCC_OUT)/lib
|
|
NOCC_OBJ = $(NOCC_OUT)/obj
|
|
|
|
bootstrap-snapshot: wwstage
|
|
@mkdir -p $(STAGE0)
|
|
@cp $(BIN)/ww_ww $(STAGE0)/ww
|
|
@cp $(BIN)/w6c_ww $(STAGE0)/w6c
|
|
@cp $(BIN)/w6a_ww $(STAGE0)/w6a
|
|
@cp $(BIN)/w6l_ww $(STAGE0)/w6l
|
|
@echo "snapshot: $(STAGE0)/{ww,w6c,w6a,w6l} populated from $(BIN)/*_ww"
|
|
@echo " (gitignored — 'git add -f bootstrap/$(ARCH)/*' to ship)"
|
|
|
|
nocc:
|
|
@for f in ww w6c w6a w6l; do \
|
|
test -x $(STAGE0)/$$f || { \
|
|
echo "$@: missing $(STAGE0)/$$f"; \
|
|
echo "$@: run 'make bootstrap-snapshot' first, or read bootstrap/README.md"; \
|
|
exit 1; \
|
|
}; \
|
|
done
|
|
@echo "=== nocc: starting from $(STAGE0) (no cc invoked) ==="
|
|
@rm -rf $(NOCC_OUT)
|
|
@mkdir -p $(NOCC_BIN) $(NOCC_LIB) $(NOCC_OBJ)
|
|
@# Stage 0: drop bootstrap binaries under both natural names and
|
|
@# the _ww-suffixed names the driver expects when shelling out.
|
|
@for f in ww w6c w6a w6l; do \
|
|
cp $(STAGE0)/$$f $(NOCC_BIN)/$$f; \
|
|
cp $(STAGE0)/$$f $(NOCC_BIN)/$${f}_ww; \
|
|
done
|
|
@# Assemble libwwrt.a using stage-0 w6a — the linker needs it for
|
|
@# every wwstage-built binary in the next stage. Member order
|
|
@# follows $(RT_S) so the embedded symbol table matches the
|
|
@# cstage-built libwwrt.a (cstage uses ar rcs $(RT_OBJ), same
|
|
@# order).
|
|
@objs=""; for s in $(RT_S); do \
|
|
b=`basename $$s .s`; \
|
|
$(NOCC_BIN)/w6a -o $(NOCC_OBJ)/$$b.o $$s; \
|
|
objs="$$objs $(NOCC_OBJ)/$$b.o"; \
|
|
done; $(AR) rcs $(NOCC_LIB)/libwwrt.a $$objs
|
|
@echo "=== stage 1: stage-0 rebuilds the wwstage tools from source ==="
|
|
@# 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)/lib/ww \
|
|
-I $(CURDIR)/lib/ww/lex \
|
|
-I $(CURDIR)/lib/ww/parse \
|
|
-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 \
|
|
$(CURDIR)/selfhost/cmd/w6a/main.ww && mv main w6a_ww1
|
|
@cd $(NOCC_BIN) && ./ww build -I $(CURDIR)/selfhost/cmd/w6l \
|
|
-I $(CURDIR)/selfhost/cmd/wcc -I $(CURDIR)/lib \
|
|
$(CURDIR)/selfhost/cmd/w6l/main.ww && mv main w6l_ww1
|
|
@cd $(NOCC_BIN) && ./ww build -I $(CURDIR)/selfhost/cmd/wcc \
|
|
-I $(CURDIR)/lib $(CURDIR)/selfhost/cmd/ww/main.ww && mv main ww_ww1
|
|
@echo "=== fixed-point gates: rebuilt tools == stage-0 binaries? ==="
|
|
@cmp $(NOCC_BIN)/w6c_ww1 $(STAGE0)/w6c && echo " w6c ✓"
|
|
@cmp $(NOCC_BIN)/w6a_ww1 $(STAGE0)/w6a && echo " w6a ✓"
|
|
@cmp $(NOCC_BIN)/w6l_ww1 $(STAGE0)/w6l && echo " w6l ✓"
|
|
@cmp $(NOCC_BIN)/ww_ww1 $(STAGE0)/ww && echo " ww ✓"
|
|
@echo
|
|
@echo "NOCC OK: $(STAGE0)/* reproduces itself from source. cc not invoked."
|
|
|
|
.PHONY: all cstage wwstage test test-unit smoke sizelint install clean bootstrap nocc bootstrap-snapshot
|