111 lines
4.2 KiB
Makefile
111 lines
4.2 KiB
Makefile
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 ==="
|