Files
ARMSX1/Makefile
T

507 lines
16 KiB
Makefile
Raw Normal View History

.ONESHELL:
.SHELLFLAGS := -ec
WASM_TARGET := $(filter wasm,$(MAKECMDGOALS))
ifeq ($(WASM_TARGET),wasm)
CC := emcc
CXX := em++
SDL_STATIC := 0
SDL_CFLAGS := -sUSE_SDL=2
SDL_LIBS_DYNAMIC :=
SDL_LIBS_STATIC :=
WASM_LDFLAGS := -sUSE_SDL=2 -sALLOW_MEMORY_GROWTH=1 -sASSERTIONS=1 -sFORCE_FILESYSTEM=1 -sFULL_ES3=1 -sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2 -sNO_EXIT_RUNTIME=0 -sEXPORTED_RUNTIME_METHODS='["FS","ccall","cwrap"]' -sEXPORTED_FUNCTIONS='["_main","_psxe_run","_external_main","_psxe_wasm_on_file","_psxe_wasm_on_error","_psxe_enqueue_launch_argument"]' --preload-file icons@/icons
endif
2025-11-18 12:32:45 +03:00
SDL_CONFIG ?= sdl2-config
2025-11-18 12:32:45 +03:00
CC ?= gcc
CXX ?= g++
AR := /usr/bin/ar
RANLIB := /usr/bin/ranlib
SDL_CFLAGS ?= $(shell $(SDL_CONFIG) --cflags 2>/dev/null)
SDL_LIBS_DYNAMIC ?= $(shell $(SDL_CONFIG) --libs 2>/dev/null)
SDL_LIBS_STATIC ?= $(shell $(SDL_CONFIG) --static-libs 2>/dev/null || $(SDL_CONFIG) --libs --static 2>/dev/null)
2025-11-18 12:32:45 +03:00
SDL_STATIC ?= 1
WASM_LDFLAGS ?=
USE_CHD ?= 1
HW_DEBUG ?= 0
2025-11-18 03:59:11 +03:00
PLATFORM := $(shell uname -s)
ifeq ($(WASM_TARGET),wasm)
PLATFORM := Emscripten
endif
2025-11-18 12:32:45 +03:00
IOS_TARGET ?= 0
IOS_SDK ?= iphoneos
2025-11-21 04:55:59 +03:00
IOS_DEPLOYMENT_TARGET ?= 14.0
MACOS_DEPLOYMENT_TARGET ?= 10.15
WINDOWS_TARGET ?= 0
UWP_TARGET ?= 0
PSVITA_TARGET ?= 0
VITASDK ?=
2025-11-18 12:32:45 +03:00
IOS_SDL_FRAMEWORK ?= $(CURDIR)/ios/Frameworks/SDL2.xcframework/ios-arm64/SDL2.framework
IOS_SDL_FRAMEWORK_PARENT := $(dir $(IOS_SDL_FRAMEWORK))
SDKROOT ?=
CONTROLLER_GENERIC ?= 0
2026-08-04 23:07:17 +02:00
FSUI_DIR := third_party/fuse-lib
FSUI_BUILD_DIR ?= build/fsui/native
WASM_HTML_POSTPROCESS := web/postprocess_web_html.cmake
2026-04-08 00:17:43 +02:00
FSUI_LINK_SYSTEM_GL ?= 1
2025-11-18 12:32:45 +03:00
ifeq ($(PSVITA_TARGET),1)
ifeq ($(strip $(VITASDK)),)
$(error VITASDK must be set when PSVITA_TARGET=1)
endif
SDL_CONFIG := $(VITASDK)/bin/arm-vita-eabi-pkg-config
CC := $(VITASDK)/bin/arm-vita-eabi-gcc
CXX := $(VITASDK)/bin/arm-vita-eabi-g++
AR := $(VITASDK)/bin/arm-vita-eabi-ar
RANLIB := $(VITASDK)/bin/arm-vita-eabi-ranlib
PLATFORM := Vita
SDL_STATIC := 1
endif
2025-11-18 12:32:45 +03:00
ifeq ($(IOS_TARGET),1)
SDKROOT ?= $(shell xcrun --sdk $(IOS_SDK) --show-sdk-path)
CC ?= $(shell xcrun --sdk $(IOS_SDK) --find clang)
CXX ?= $(shell xcrun --sdk $(IOS_SDK) --find clang++)
# Force dynamic SDL when targeting iOS
SDL_STATIC := 0
SDL_CFLAGS := -isysroot $(SDKROOT) -arch arm64 -miphoneos-version-min=$(IOS_DEPLOYMENT_TARGET) \
-F$(IOS_SDL_FRAMEWORK_PARENT) -I$(IOS_SDL_FRAMEWORK)/Headers -DIOS_TARGET -D_THREAD_SAFE
SDL_LIBS_DYNAMIC := -isysroot $(SDKROOT) -arch arm64 -miphoneos-version-min=$(IOS_DEPLOYMENT_TARGET) \
-F$(IOS_SDL_FRAMEWORK_PARENT) -framework SDL2
SDL_LIBS_STATIC :=
endif
BASE_CFLAGS = -g -DLOG_USE_COLOR -I"." -I"psx" $(SDL_CFLAGS)
BASE_CFLAGS += -O3 -ffast-math -Wno-overflow -Wall -pedantic -Wno-address-of-packed-member -flto
2025-11-18 12:32:45 +03:00
FSUI_INCLUDE_FLAGS = \
-I$(FSUI_DIR)/include \
-I$(FSUI_DIR)/third_party/imgui \
-I$(FSUI_DIR)/third_party/imgui/backends \
-I$(FSUI_DIR)/third_party/stb
ifneq ($(WASM_TARGET),wasm)
FSUI_INCLUDE_FLAGS += -I$(FSUI_BUILD_DIR)/gladsources/fsui_glad/include
endif
FSUI_COMPILE_DEFS = -DIMGUI_FRONTEND -DFSUI_HAS_SDL2_PLATFORM -DFSUI_HAS_SDL2SURFACE_RENDERER -DFSUI_HAS_SDL2RENDERER_RENDERER -DSDL_MAIN_HANDLED
LIBCHDR_DIR := third_party/libchdr
LIBCHDR_BUILD_DIR :=
LIBCHDR_INCLUDE_FLAGS :=
LIBCHDR_INPUTS :=
LIBCHDR_ARCHIVE :=
LIBCHDR_LIBS :=
LIBCHDR_CONFIGURE :=
LIBCHDR_CMAKE_ARGS :=
LIBCHDR_CMAKE_TOOLCHAIN_FILE ?=
LIBCHDR_ANDROID_ABI ?=
LIBCHDR_ANDROID_PLATFORM ?=
LIBCHDR_ANDROID_FLEXIBLE_PAGE_SIZES ?=
CHD_COMPILE_DEFS :=
CHD_BUILD_DEPS :=
CHD_LINK_LIBS :=
ifeq ($(USE_CHD),1)
ifeq ($(WASM_TARGET),wasm)
LIBCHDR_BUILD_DIR := build/libchdr/wasm
else ifeq ($(PSVITA_TARGET),1)
LIBCHDR_BUILD_DIR := build/libchdr/psvita
else ifeq ($(IOS_TARGET),1)
LIBCHDR_BUILD_DIR := build/libchdr/ios
else
LIBCHDR_BUILD_DIR := build/libchdr/native
endif
LIBCHDR_INCLUDE_FLAGS := -I$(LIBCHDR_DIR)/include -I$(LIBCHDR_DIR)/deps/miniz-3.1.1
LIBCHDR_INPUTS := $(shell find $(LIBCHDR_DIR) -type f 2>/dev/null)
LIBCHDR_ARCHIVE := $(LIBCHDR_BUILD_DIR)/libchdr-static.a
LIBCHDR_LIBS := \
$(LIBCHDR_ARCHIVE) \
$(LIBCHDR_BUILD_DIR)/deps/lzma-25.01/libchdr-lzma.a \
$(LIBCHDR_BUILD_DIR)/deps/miniz-3.1.1/libminiz.a \
$(LIBCHDR_BUILD_DIR)/deps/zstd-1.5.7/libzstd.a
LIBCHDR_CONFIGURE := cmake
ifeq ($(WASM_TARGET),wasm)
LIBCHDR_CONFIGURE := emcmake cmake
endif
LIBCHDR_CMAKE_ARGS := -S $(LIBCHDR_DIR) -B $(LIBCHDR_BUILD_DIR) -DBUILD_SHARED_LIBS=OFF -DCHDR_WANT_RAW_DATA_SECTOR=ON -DCHDR_WANT_SUBCODE=ON -DMINIZ_ARCHIVE_APIS=ON -DMINIZ_STDIO=ON -DCMAKE_BUILD_TYPE=Release
ifneq ($(strip $(LIBCHDR_CMAKE_TOOLCHAIN_FILE)),)
LIBCHDR_CMAKE_ARGS += -DCMAKE_TOOLCHAIN_FILE=$(LIBCHDR_CMAKE_TOOLCHAIN_FILE)
endif
ifneq ($(strip $(LIBCHDR_ANDROID_ABI)),)
LIBCHDR_CMAKE_ARGS += -DANDROID_ABI=$(LIBCHDR_ANDROID_ABI)
endif
ifneq ($(strip $(LIBCHDR_ANDROID_PLATFORM)),)
LIBCHDR_CMAKE_ARGS += -DANDROID_PLATFORM=$(LIBCHDR_ANDROID_PLATFORM)
endif
ifneq ($(strip $(LIBCHDR_ANDROID_FLEXIBLE_PAGE_SIZES)),)
LIBCHDR_CMAKE_ARGS += -DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=$(LIBCHDR_ANDROID_FLEXIBLE_PAGE_SIZES)
endif
ifneq ($(strip $(CC)),)
LIBCHDR_CMAKE_ARGS += -DCMAKE_C_COMPILER=$(CC)
endif
ifneq ($(strip $(CXX)),)
LIBCHDR_CMAKE_ARGS += -DCMAKE_CXX_COMPILER=$(CXX)
endif
ifneq ($(strip $(AR)),)
LIBCHDR_CMAKE_ARGS += -DCMAKE_AR=$(AR)
endif
ifneq ($(strip $(RANLIB)),)
LIBCHDR_CMAKE_ARGS += -DCMAKE_RANLIB=$(RANLIB)
endif
ifeq ($(PLATFORM),Darwin)
ifneq ($(IOS_TARGET),1)
LIBCHDR_CMAKE_ARGS += -DCMAKE_OSX_DEPLOYMENT_TARGET=$(MACOS_DEPLOYMENT_TARGET)
endif
endif
ifeq ($(IOS_TARGET),1)
LIBCHDR_CMAKE_ARGS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_OSX_DEPLOYMENT_TARGET=$(IOS_DEPLOYMENT_TARGET) -DCMAKE_OSX_SYSROOT=$(SDKROOT)
endif
CHD_COMPILE_DEFS := -DUSE_CHD
CHD_BUILD_DEPS := $(LIBCHDR_ARCHIVE)
CHD_LINK_LIBS := $(LIBCHDR_LIBS)
endif
BASE_CXXFLAGS = -std=c++20 $(BASE_CFLAGS) $(FSUI_INCLUDE_FLAGS) $(FSUI_COMPILE_DEFS)
BASE_CFLAGS += $(LIBCHDR_INCLUDE_FLAGS) $(CHD_COMPILE_DEFS)
BASE_CXXFLAGS += $(LIBCHDR_INCLUDE_FLAGS) $(CHD_COMPILE_DEFS)
2025-11-18 12:32:45 +03:00
ifeq ($(CONTROLLER_GENERIC),1)
BASE_CFLAGS += -DCONTROLLER_GENERIC
BASE_CXXFLAGS += -DCONTROLLER_GENERIC
endif
BASE_CFLAGS += -DUSE_HARDWARE
BASE_CXXFLAGS += -DUSE_HARDWARE
ifeq ($(HW_DEBUG),1)
BASE_CFLAGS += -DHW_DEBUG
BASE_CXXFLAGS += -DHW_DEBUG
endif
ifeq ($(UWP_TARGET),1)
BASE_CFLAGS += -DUWP_TARGET
BASE_CXXFLAGS += -DUWP_TARGET
endif
ifeq ($(PSVITA_TARGET),1)
2026-04-06 20:41:10 +02:00
BASE_CFLAGS += -DPSVITA_TARGET -D__DLL_BUILD -I$(VITASDK)/arm-vita-eabi/include -I$(VITASDK)/arm-vita-eabi/include/SDL2 -marm
BASE_CXXFLAGS += -DPSVITA_TARGET -D__DLL_BUILD -I$(VITASDK)/arm-vita-eabi/include -I$(VITASDK)/arm-vita-eabi/include/SDL2 -marm
endif
ifeq ($(WASM_TARGET),wasm)
BASE_CFLAGS := $(filter-out -flto,$(BASE_CFLAGS))
BASE_CXXFLAGS := $(filter-out -flto,$(BASE_CXXFLAGS))
endif
ifeq ($(PSVITA_TARGET),1)
BASE_CFLAGS := $(filter-out -flto,$(BASE_CFLAGS))
BASE_CXXFLAGS := $(filter-out -flto,$(BASE_CXXFLAGS))
endif
2025-11-18 12:32:45 +03:00
ifeq ($(IOS_TARGET),1)
BASE_CFLAGS += -fembed-bitcode
BASE_CXXFLAGS += -fembed-bitcode
endif
ifeq ($(WASM_TARGET),wasm)
OS_INFO := Emscripten
else ifeq ($(PSVITA_TARGET),1)
OS_INFO := PS Vita
else ifneq ($(IOS_TARGET),1)
2025-11-18 12:32:45 +03:00
OS_INFO := $(shell uname -rmo)
else
OS_INFO := iOS
endif
2025-11-18 03:59:11 +03:00
ifeq ($(PLATFORM),Darwin)
2025-11-18 12:32:45 +03:00
ifneq ($(IOS_TARGET),1)
BASE_CFLAGS += -mmacosx-version-min=$(MACOS_DEPLOYMENT_TARGET) -Wno-newline-eof
BASE_CXXFLAGS += -mmacosx-version-min=$(MACOS_DEPLOYMENT_TARGET)
2025-11-18 03:59:11 +03:00
endif
2025-11-18 12:32:45 +03:00
endif
2025-11-18 03:59:11 +03:00
SHARED_EXT := .so
SHARED_LDFLAGS := -shared
SHARED_CFLAGS := $(BASE_CFLAGS) -D__DLL_BUILD -fPIC
SHARED_CXXFLAGS := $(BASE_CXXFLAGS) -D__DLL_BUILD -fPIC
2025-11-18 03:59:11 +03:00
ifeq ($(PLATFORM),Darwin)
SHARED_EXT := .dylib
SHARED_LDFLAGS := -dynamiclib
else ifeq ($(WINDOWS_TARGET),1)
SHARED_EXT := .dll
2025-11-18 03:59:11 +03:00
endif
2025-11-18 12:32:45 +03:00
ifeq ($(IOS_TARGET),1)
SHARED_LDFLAGS += -Wl,-install_name,@rpath/libarmsx$(SHARED_EXT)
2025-11-18 12:32:45 +03:00
SHARED_CFLAGS += -DIOS_TARGET
SHARED_CXXFLAGS += -DIOS_TARGET
endif
2025-11-18 03:59:11 +03:00
VERSION_TAG := $(shell git describe --always --tags --abbrev=0)
COMMIT_HASH := $(shell git rev-parse --short HEAD)
BIN_DIR := bin
ifeq ($(WASM_TARGET),wasm)
BIN_DIR := bin/wasm
else ifeq ($(PSVITA_TARGET),1)
BIN_DIR := bin/psvita
endif
OBJ_DIR := $(BIN_DIR)/obj
BIN := $(BIN_DIR)/armsx
ifeq ($(WASM_TARGET),wasm)
BIN := $(BIN_DIR)/armsx.html
else ifeq ($(WINDOWS_TARGET),1)
BIN := $(BIN_DIR)/armsx.exe
endif
SHARED_BIN := $(BIN_DIR)/libarmsx$(SHARED_EXT)
VITA_NATIVE_LIB := $(BIN_DIR)/libarmsx_vita.a
RUNTIME_ICON_SRC := icons/FsuiAppIcon.png
RUNTIME_ICON_DEST := $(BIN_DIR)/icons/FsuiAppIcon.png
WINDRES ?= windres
2025-11-18 03:59:11 +03:00
C_SOURCES := $(wildcard psx/*.c) \
$(wildcard psx/dev/*.c) \
$(wildcard psx/dev/cdrom/*.c) \
$(wildcard psx/input/*.c) \
$(wildcard psx/disc/*.c) \
frontend/argparse.c \
frontend/config.c \
frontend/diagnostics.c \
frontend/platform_file.c \
frontend/toml.c
C_SOURCES := $(filter-out psx/dev/cdrom/chd.c,$(C_SOURCES))
C_SOURCES += frontend/gpu_hw.c
ifeq ($(USE_CHD),1)
C_SOURCES += psx/dev/cdrom/chd.c
endif
2026-04-07 17:22:44 +02:00
ifeq ($(PSVITA_TARGET),1)
C_SOURCES += frontend/vita_sdl_stubs.c
endif
2025-11-18 12:32:45 +03:00
C_SOURCES_SHARED := $(C_SOURCES)
CPP_SOURCES := frontend/archive.cpp frontend/main.cpp
FSUI_LIBS := \
$(FSUI_BUILD_DIR)/libfsui-donor.a \
$(FSUI_BUILD_DIR)/libfsui-backend-sdl.a \
$(FSUI_BUILD_DIR)/libfsui-platform-sdl2.a \
$(FSUI_BUILD_DIR)/libfsui-renderer-sdl2.a \
$(FSUI_BUILD_DIR)/libfsui-renderer-sdl2surface.a \
$(FSUI_BUILD_DIR)/libfsui-core.a \
$(FSUI_BUILD_DIR)/libfsui_imgui.a \
$(FSUI_BUILD_DIR)/libfsui_resources.a
ifeq ($(WASM_TARGET),wasm)
FSUI_LIBS += \
$(FSUI_BUILD_DIR)/libfsui-renderer-opengl.a
else
FSUI_LIBS += \
$(FSUI_BUILD_DIR)/libfsui-renderer-opengl.a \
$(FSUI_BUILD_DIR)/libfsui_glad.a
endif
PLATFORM_EXTRA_LDFLAGS :=
PLATFORM_EXTRA_LIBS :=
ifeq ($(PLATFORM),Darwin)
FSUI_LIBS += $(FSUI_BUILD_DIR)/libfsui-renderer-metal.a
ifeq ($(IOS_TARGET),1)
PLATFORM_EXTRA_LIBS += -framework Foundation -framework Metal -framework OpenGLES -framework QuartzCore -framework UIKit
else
PLATFORM_EXTRA_LDFLAGS += -mmacosx-version-min=$(MACOS_DEPLOYMENT_TARGET)
PLATFORM_EXTRA_LIBS += -framework Cocoa -framework Foundation -framework IOKit -framework Metal -framework OpenGL -framework QuartzCore
endif
else ifeq ($(WINDOWS_TARGET),1)
PLATFORM_EXTRA_LIBS += -lsetupapi -limm32 -lversion -lwinmm -lgdi32 -lole32 -loleaut32 -lshell32 -luuid -lopengl32
ifneq ($(UWP_TARGET),1)
PLATFORM_EXTRA_LIBS += -ldbghelp
endif
else ifneq ($(WASM_TARGET),wasm)
2026-04-07 23:21:51 +02:00
PLATFORM_EXTRA_LIBS += -ldl
2026-04-08 00:17:43 +02:00
ifeq ($(FSUI_LINK_SYSTEM_GL),1)
2026-04-07 23:21:51 +02:00
PLATFORM_EXTRA_LIBS += -lGL
endif
endif
C_OBJS := $(patsubst %.c,$(OBJ_DIR)/%.o,$(C_SOURCES))
C_OBJS_SHARED := $(patsubst %.c,$(OBJ_DIR)/%.o,$(C_SOURCES_SHARED))
CPP_OBJS := $(patsubst %.cpp,$(OBJ_DIR)/%.o,$(CPP_SOURCES))
RC_SOURCES :=
ifeq ($(WINDOWS_TARGET),1)
RC_SOURCES += resources/windows/armsx.rc
endif
RC_OBJS := $(patsubst %.rc,$(OBJ_DIR)/%.o,$(RC_SOURCES))
ALL_OBJS := $(C_OBJS) $(CPP_OBJS) $(RC_OBJS)
ALL_OBJS_SHARED := $(C_OBJS_SHARED) $(CPP_OBJS)
2025-11-18 12:32:45 +03:00
# Force dynamic SDL when building the shared library
ifneq (,$(filter shared,$(MAKECMDGOALS)))
override SDL_STATIC := 0
2026-04-07 08:30:44 +02:00
BASE_CFLAGS += -D__DLL_BUILD -fPIC
BASE_CXXFLAGS += -D__DLL_BUILD -fPIC
2025-11-18 12:32:45 +03:00
endif
ifeq ($(SDL_STATIC),1)
ifeq ($(SDL_LIBS_STATIC),)
$(warning Static SDL2 libraries not found; falling back to dynamic SDL2)
SDL_STATIC := 0
endif
endif
SDL_LIBS := $(if $(filter 1,$(SDL_STATIC)),$(SDL_LIBS_STATIC),$(SDL_LIBS_DYNAMIC))
SDL_LIBS_SHARED := $(SDL_LIBS_DYNAMIC)
.PHONY: all clean shared wasm psvita-lib test test-cpu test-gpu test-audio test-sdl-audio test-chd test-zip test-sdl-runtime disc-probe
2025-11-18 03:59:11 +03:00
all: $(BIN)
shared: $(SHARED_BIN)
wasm: $(BIN)
psvita-lib: $(VITA_NATIVE_LIB)
TEST_CORE_SOURCES := $(wildcard psx/*.c) \
$(wildcard psx/dev/*.c) \
$(wildcard psx/dev/cdrom/*.c) \
$(wildcard psx/input/*.c)
TEST_CORE_SOURCES := $(filter-out psx/dev/cdrom/chd.c,$(TEST_CORE_SOURCES))
TEST_CPU_BIN := build/tests/cpu_differential
TEST_GPU_BIN := build/tests/gpu_renderer_parity
TEST_AUDIO_BIN := build/tests/audio_timing
TEST_SDL_AUDIO_BIN := build/tests/sdl_audio_queue_smoke
TEST_CHD_BIN := build/tests/chd_logic
TEST_ZIP_BIN := build/tests/zip_integration
TEST_SDL_BIN := build/tests/sdl_renderer_smoke
DISC_PROBE_BIN := build/tests/disc_probe
TEST_PLATFORM_FILE_OBJ := build/tests/platform_file.o
$(TEST_PLATFORM_FILE_OBJ): frontend/platform_file.c frontend/platform_file.h
mkdir -p $(dir $@)
$(CC) -std=c11 -O2 -g -I. -c frontend/platform_file.c -o $@
$(TEST_CPU_BIN): tests/cpu_differential.c $(TEST_CORE_SOURCES) $(TEST_PLATFORM_FILE_OBJ)
mkdir -p $(dir $@)
$(CC) -std=c11 -O2 -g -DPSXE_DIAG_STDIO_DISABLE -I. -Ipsx $^ -lm -o $@
test-cpu: $(TEST_CPU_BIN)
./$(TEST_CPU_BIN)
$(TEST_GPU_BIN): tests/gpu_renderer_parity.c psx/dev/gpu.c frontend/gpu_hw.c
mkdir -p $(dir $@)
$(CC) -std=c11 -O2 -g -DUSE_HARDWARE -DPSXE_DIAG_STDIO_DISABLE -I. -Ipsx $(SDL_CFLAGS) $^ -lm -o $@
test-gpu: $(TEST_GPU_BIN)
./$(TEST_GPU_BIN)
$(TEST_AUDIO_BIN): tests/audio_timing.c
mkdir -p $(dir $@)
$(CC) -std=c11 -O2 -g -I. -Ipsx $< -lm -o $@
test-audio: $(TEST_AUDIO_BIN)
./$(TEST_AUDIO_BIN)
$(TEST_SDL_AUDIO_BIN): tests/sdl_audio_queue_smoke.c
mkdir -p $(dir $@)
$(CC) -std=c11 -O2 -g $(SDL_CFLAGS) $< $(SDL_LIBS) -o $@
test-sdl-audio: $(TEST_SDL_AUDIO_BIN)
./$(TEST_SDL_AUDIO_BIN)
$(TEST_CHD_BIN): tests/chd_logic.c $(TEST_PLATFORM_FILE_OBJ) $(CHD_BUILD_DEPS)
mkdir -p $(dir $@)
$(CC) -std=c11 -O2 -g -DUSE_CHD -DPSXE_DIAG_STDIO_DISABLE -I. -Ipsx $(LIBCHDR_INCLUDE_FLAGS) $< $(TEST_PLATFORM_FILE_OBJ) $(CHD_LINK_LIBS) -lm -o $@
test-chd: $(TEST_CHD_BIN)
./$(TEST_CHD_BIN)
$(TEST_ZIP_BIN): tests/zip_integration.cpp frontend/archive.cpp $(TEST_PLATFORM_FILE_OBJ) $(CHD_BUILD_DEPS)
mkdir -p $(dir $@)
$(CXX) -std=c++20 -O0 -DUSE_CHD -I. $(LIBCHDR_INCLUDE_FLAGS) \
tests/zip_integration.cpp frontend/archive.cpp $(TEST_PLATFORM_FILE_OBJ) $(CHD_LINK_LIBS) -o $@
test-zip: $(TEST_ZIP_BIN)
python3 tests/validate_zip.py ./$(TEST_ZIP_BIN)
$(TEST_SDL_BIN): tests/sdl_renderer_smoke.c
mkdir -p $(dir $@)
$(CC) -std=c11 -O2 -g $(SDL_CFLAGS) $< $(SDL_LIBS) -o $@
test-sdl-runtime: $(TEST_SDL_BIN)
./$(TEST_SDL_BIN)
$(DISC_PROBE_BIN): tests/disc_probe.c psx/dev/cdrom/disc.c psx/dev/cdrom/cue.c psx/dev/cdrom/list.c psx/dev/cdrom/chd.c $(CHD_BUILD_DEPS)
mkdir -p $(dir $@)
$(CC) -std=c11 -O2 -g -DUSE_CHD -DPSXE_DIAG_STDIO_DISABLE -I. -Ipsx $(LIBCHDR_INCLUDE_FLAGS) \
tests/disc_probe.c psx/dev/cdrom/disc.c psx/dev/cdrom/cue.c psx/dev/cdrom/list.c psx/dev/cdrom/chd.c \
$(CHD_LINK_LIBS) -lm -o $@
disc-probe: $(DISC_PROBE_BIN)
test:
python3 tests/run_validation.py
2025-11-18 03:59:11 +03:00
$(BIN_DIR):
mkdir -p $(BIN_DIR)
$(OBJ_DIR):
mkdir -p $(OBJ_DIR)
$(OBJ_DIR)/%.o: %.c | $(OBJ_DIR)
mkdir -p $(dir $@)
$(CC) -c $< -o $@ $(BASE_CFLAGS) \
2025-11-18 03:59:11 +03:00
-DOS_INFO="$(OS_INFO)" \
-DREP_VERSION="$(VERSION_TAG)" \
-DREP_COMMIT_HASH="$(COMMIT_HASH)"
2025-11-18 03:59:11 +03:00
$(OBJ_DIR)/%.o: %.cpp | $(OBJ_DIR)
mkdir -p $(dir $@)
$(CXX) -c $< -o $@ $(BASE_CXXFLAGS) \
2025-11-18 03:59:11 +03:00
-DOS_INFO="$(OS_INFO)" \
-DREP_VERSION="$(VERSION_TAG)" \
-DREP_COMMIT_HASH="$(COMMIT_HASH)"
$(OBJ_DIR)/%.o: %.rc | $(OBJ_DIR)
mkdir -p $(dir $@)
$(WINDRES) -I. $< $@
ifeq ($(USE_CHD),1)
$(LIBCHDR_ARCHIVE): $(LIBCHDR_INPUTS)
mkdir -p $(LIBCHDR_BUILD_DIR)
$(LIBCHDR_CONFIGURE) $(LIBCHDR_CMAKE_ARGS)
cmake --build $(LIBCHDR_BUILD_DIR) -j$(BUILD_JOBS)
endif
$(RUNTIME_ICON_DEST): $(RUNTIME_ICON_SRC) | $(BIN_DIR)
mkdir -p $(dir $@)
cp $< $@
$(BIN): $(ALL_OBJS) $(RUNTIME_ICON_DEST) $(CHD_BUILD_DEPS) | $(BIN_DIR)
$(CXX) $(ALL_OBJS) $(CHD_LINK_LIBS) $(FSUI_LIBS) -o $(BIN) $(SDL_LIBS) $(PLATFORM_EXTRA_LDFLAGS) $(PLATFORM_EXTRA_LIBS) $(WASM_LDFLAGS)
ifeq ($(WASM_TARGET),wasm)
@if [ ! -f "$(BIN)" ]; then \
echo "WASM build did not produce $(BIN)"; \
exit 1; \
fi
cmake -DINPUT_FILE="$(BIN)" -P "$(WASM_HTML_POSTPROCESS)"
endif
$(VITA_NATIVE_LIB): $(ALL_OBJS) $(RUNTIME_ICON_DEST) | $(BIN_DIR)
$(AR) rcs $@ $(ALL_OBJS)
$(RANLIB) $@
$(SHARED_BIN): $(ALL_OBJS_SHARED) $(CHD_BUILD_DEPS) | $(BIN_DIR)
$(CXX) $(SHARED_LDFLAGS) $(ALL_OBJS_SHARED) $(CHD_LINK_LIBS) $(FSUI_LIBS) -o $(SHARED_BIN) $(SDL_LIBS_SHARED) $(PLATFORM_EXTRA_LDFLAGS) $(PLATFORM_EXTRA_LIBS)
2025-11-18 03:59:11 +03:00
clean:
rm -rf "$(BIN_DIR)"