.PHONY: all build_ffi build_godot run_server run_server_build test clean ifeq ($(OS),Windows_NT) DETECTED_OS = Windows TARGET = x86_64-unknown-linux-musl PATH_SEP = \\ COPY = copy MKDIR = if not exist "$(SERVER_LIB_DIR)" mkdir "$(SERVER_LIB_DIR)" RMDIR = if exist "$(SERVER_LIB_DIR)" rmdir /s /q "$(SERVER_LIB_DIR)" else DETECTED_OS = POSIX TARGET = aarch64-unknown-linux-musl PATH_SEP = / COPY = cp MKDIR = mkdir -p "$(SERVER_LIB_DIR)" RMDIR = rm -rf "$(SERVER_LIB_DIR)" endif SERVER_LIB_DIR = server$(PATH_SEP)ffi$(PATH_SEP)lib FFI_LIB = ffi-wrapper$(PATH_SEP)target$(PATH_SEP)$(TARGET)$(PATH_SEP)release$(PATH_SEP)libffi_wrapper.a FFI_HEADER = ffi-wrapper$(PATH_SEP)target$(PATH_SEP)ffi-wrapper.h GODOT_LIB = godot-extension$(PATH_SEP)target$(PATH_SEP)release$(PATH_SEP)godot_extension.dll # Default: Build everything and deploy server all: build_ffi build_godot run_server_build ## Build Targets ## network: build_ffi run_server_build build_ffi: cd ffi-wrapper && cargo build --release --target $(TARGET) build_godot: cd godot-extension && cargo build --release ## Deployment Targets ## run_server: cd server && docker compose up run_server_build: $(MKDIR) $(COPY) $(FFI_LIB) $(SERVER_LIB_DIR) $(COPY) $(FFI_HEADER) $(SERVER_LIB_DIR) cd server && docker compose up --build ## Test Target ## test: cd shared && cargo test --release cd ffi-wrapper && cargo test --release cd godot-extension && cargo test --release ## Cleanup ## clean: cd shared && cargo clean cd ffi-wrapper && cargo clean cd godot-extension && cargo clean $(RMDIR)