CC = gcc CFLAGS = -Wall -Wextra -std=c11 -O2 -D_GNU_SOURCE LDFLAGS = -lm BUILDDIR = build # Source files VM_SRCS = src/vm/vm.c src/vm/vm_main.c src/substrate/substrate_engine.c AS_SRCS = src/assembler/assembler.c src/assembler/as_main.c DISAS_SRCS = src/disassembler/disas.c KERNEL_SRCS = src/kernel/kernel.c src/kernel/kernel_main.c src/hal/hal.c src/hal/hal_cpu.c src/substrate/substrate_engine.c NODE_SRCS = src/glyph/node_main.c src/glyph/glyph_defs.c src/glyph/graph.c src/glyph/resonance.c src/glyph/evaluator.c src/glyph/compiler.c NET_SRCS = src/glyph/net_main.c src/glyph/network.c src/glyph/glyphbus.c src/glyph/glyph_defs.c src/glyph/graph.c src/glyph/resonance.c src/glyph/evaluator.c src/glyph/compiler.c # Include paths INCLUDES = -Isrc/common -Isrc -Isrc/glyph # Targets TARGETS = $(BUILDDIR)/glyph-vm $(BUILDDIR)/glyph-as $(BUILDDIR)/glyph-disas $(BUILDDIR)/glyph-kernel $(BUILDDIR)/glyph-node $(BUILDDIR)/glyph-net .PHONY: all clean test examples all: $(BUILDDIR) $(TARGETS) @echo "" @echo "=== GlyphOS Build Complete ===" @echo " $(BUILDDIR)/glyph-vm - Glyph Virtual Machine (standalone)" @echo " $(BUILDDIR)/glyph-kernel - GlyphOS Kernel (multi-GVM + HAL)" @echo " $(BUILDDIR)/glyph-as - Glyph Assembler" @echo " $(BUILDDIR)/glyph-disas - Glyph Disassembler" @echo " $(BUILDDIR)/glyph-node - Substrate Node (symbolic evaluator)" @echo " $(BUILDDIR)/glyph-net - Substrate Network (symbolic protocol)" @echo "" $(BUILDDIR): mkdir -p $(BUILDDIR) $(BUILDDIR)/glyph-vm: $(VM_SRCS) $(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LDFLAGS) $(BUILDDIR)/glyph-kernel: $(KERNEL_SRCS) $(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LDFLAGS) $(BUILDDIR)/glyph-as: $(AS_SRCS) $(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LDFLAGS) $(BUILDDIR)/glyph-disas: $(DISAS_SRCS) $(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LDFLAGS) $(BUILDDIR)/glyph-node: $(NODE_SRCS) $(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LDFLAGS) $(BUILDDIR)/glyph-net: $(NET_SRCS) $(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LDFLAGS) $(BUILDDIR)/glyph-bench: src/glyph/benchmark.c src/glyph/glyph_defs.c src/glyph/graph.c src/glyph/resonance.c src/glyph/evaluator.c src/glyph/compiler.c $(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LDFLAGS) # Build and run the hello world example examples: all $(BUILDDIR)/glyph-as examples/hello.gasm -o $(BUILDDIR)/hello.gobj $(BUILDDIR)/glyph-disas $(BUILDDIR)/hello.gobj @echo "" @echo "--- Running hello.gobj (standalone VM) ---" $(BUILDDIR)/glyph-vm -t -d $(BUILDDIR)/hello.gobj @echo "" @echo "--- Running hello.gobj (kernel) ---" $(BUILDDIR)/glyph-kernel -t $(BUILDDIR)/hello.gobj # Build and run the substrate demo substrate-demo: all $(BUILDDIR)/glyph-as examples/substrate_demo.gasm -o $(BUILDDIR)/substrate_demo.gobj @echo "" @echo "--- Running substrate_demo.gobj (standalone VM) ---" $(BUILDDIR)/glyph-vm -t -d $(BUILDDIR)/substrate_demo.gobj @echo "" @echo "--- Running substrate_demo.gobj (kernel) ---" $(BUILDDIR)/glyph-kernel -t $(BUILDDIR)/substrate_demo.gobj # Run multiple GVMs through the kernel multi-gvm: all $(BUILDDIR)/glyph-as examples/hello.gasm -o $(BUILDDIR)/hello.gobj $(BUILDDIR)/glyph-as examples/substrate_demo.gasm -o $(BUILDDIR)/substrate_demo.gobj @echo "" @echo "--- Running 2 GVMs through kernel (round-robin) ---" $(BUILDDIR)/glyph-kernel -t -p 0 $(BUILDDIR)/hello.gobj $(BUILDDIR)/substrate_demo.gobj @echo "" @echo "--- Running 2 GVMs through kernel (resonance) ---" $(BUILDDIR)/glyph-kernel -t -p 2 $(BUILDDIR)/hello.gobj $(BUILDDIR)/substrate_demo.gobj clean: rm -rf $(BUILDDIR) # Substrate node demos node-demo: all @echo "" @echo "--- Substrate Node: Built-in Demo ---" $(BUILDDIR)/glyph-node demo --trace @echo "" @echo "--- Substrate Node: Compile and evaluate add.glyph ---" $(BUILDDIR)/glyph-node run examples/add.glyph --trace @echo "" @echo "--- Substrate Node: Compile and evaluate resonance_demo.glyph ---" $(BUILDDIR)/glyph-node run examples/resonance_demo.glyph --trace # List all 64 symbolic glyph definitions glyphs: all $(BUILDDIR)/glyph-node glyphs test: examples substrate-demo @echo "" @echo "=== All tests passed ==="