diff --git a/src/Makefile b/src/Makefile index 954b848..41df7f4 100644 --- a/src/Makefile +++ b/src/Makefile @@ -3,7 +3,7 @@ # Native build (gcc) CC_NATIVE = gcc CFLAGS_NATIVE = -g -O2 -std=c89 -Wall -Wextra -Werror -Wno-unused-parameter -I. -LDFLAGS_NATIVE = +LDFLAGS_NATIVE = LDLIBS_NATIVE = -lSDL2 # WASM build (emscripten) @@ -17,7 +17,6 @@ LDLIBS_WASM = COMMON_SRC = $(wildcard *.c) ARCH_SRC_EMSCRIPTEN = arch/emscripten/main.c ARCH_SRC_LINUX = arch/linux/main.c - EXEC_NATIVE = zre EXEC_WASM = zre.wasm @@ -29,6 +28,10 @@ OBJ_DIR_WASM = build/wasm/obj OBJ_NATIVE = $(addprefix $(OBJ_DIR_NATIVE)/,$(notdir $(COMMON_SRC:.c=.o))) OBJ_WASM = $(addprefix $(OBJ_DIR_WASM)/,$(notdir $(COMMON_SRC:.c=.o))) +# Add main.c object files +OBJ_NATIVE += $(OBJ_DIR_NATIVE)/$(notdir $(ARCH_SRC_LINUX:.c=.o)) +OBJ_WASM += $(OBJ_DIR_WASM)/$(notdir $(ARCH_SRC_EMSCRIPTEN:.c=.o)) + # Phony targets .PHONY: all clean install wasm native emscripten linux macos @@ -41,7 +44,7 @@ native: linux linux: $(EXEC_NATIVE) -$(EXEC_NATIVE): $(OBJ_NATIVE) $(ARCH_SRC_LINUX) +$(EXEC_NATIVE): $(OBJ_NATIVE) $(CC_NATIVE) $(LDFLAGS_NATIVE) $^ $(LDLIBS_NATIVE) -o $@ # WASM build rules @@ -50,7 +53,7 @@ wasm: emscripten emscripten: $(EXEC_WASM) -$(EXEC_WASM): $(OBJ_WASM) $(ARCH_SRC_EMSCRIPTEN) +$(EXEC_WASM): $(OBJ_WASM) $(CC_WASM) $(LDFLAGS_WASM) $^ $(LDLIBS_WASM) -o $@ # Object file rules @@ -63,6 +66,15 @@ $(OBJ_DIR_WASM)/%.o: %.c @mkdir -p $(dir $@) $(CC_WASM) $(CFLAGS_WASM) -c $< -o $@ +# Add specific rules for main.c files +$(OBJ_DIR_NATIVE)/$(notdir $(ARCH_SRC_LINUX:.c=.o)): $(ARCH_SRC_LINUX) + @mkdir -p $(dir $@) + $(CC_NATIVE) $(CFLAGS_NATIVE) -c $< -o $@ + +$(OBJ_DIR_WASM)/$(notdir $(ARCH_SRC_EMSCRIPTEN:.c=.o)): $(ARCH_SRC_EMSCRIPTEN) + @mkdir -p $(dir $@) + $(CC_WASM) $(CFLAGS_WASM) -c $< -o $@ + # Clean build artifacts # --------------------- clean: diff --git a/src/arch/linux/main.c b/src/arch/linux/main.c index a064cef..e818591 100644 --- a/src/arch/linux/main.c +++ b/src/arch/linux/main.c @@ -1,5 +1,4 @@ #include "../../compiler.h" -#include "../../debug.h" #include "../../vm.h" #include @@ -60,7 +59,6 @@ int main(int argc, char **argv) { repl(&vm); } else if (argc == 2) { compileFile(argv[1], &vm); - return 1; } else { fprintf(stderr, "Usage: %s \n", argv[0]); return 64; @@ -114,6 +112,7 @@ int main(int argc, char **argv) { switch (event.type) { case SDL_QUIT: running = false; + break; case SDL_MOUSEBUTTONDOWN: printf("mouse_down: x=%d, y=%d, btn=%d\n", event.button.x, event.button.y, event.button.button); diff --git a/src/test.c b/src/test.c index ac46b69..a7cf00c 100644 --- a/src/test.c +++ b/src/test.c @@ -1,15 +1,6 @@ #include "test.h" #include "vm.h" -bool test_hello_world_compile(VM *vm) { - uint32_t hello = str_alloc(vm, "nuqneH 'u'?", 0); - vm->code[vm->cp++].u = OP(OP_LOADU, 1, 0, 0); - vm->code[vm->cp++].u = hello; - vm->code[vm->cp++].u = OP(OP_PRINT_STRING, 0, 1, 0); /* print("nuqneH 'u'?"); */ - vm->code[vm->cp++].u = OP(OP_HALT, 0, 0, 0); /* explicit halt */ - return true; -} - bool test_add_compile(VM *vm) { vm->code[vm->cp++].u = OP(OP_LOADU, 0, 0, 0); vm->code[vm->cp++].u = 1; diff --git a/src/test.h b/src/test.h index f51ee21..33ca6c2 100644 --- a/src/test.h +++ b/src/test.h @@ -3,7 +3,6 @@ #include "opcodes.h" -bool test_hello_world_compile (VM *vm); bool test_add_compile (VM *vm); bool test_loop_compile (VM *vm); bool test_add_function_compile(VM *vm);