mkxp-z/Makefile.libretro

180 lines
5.5 KiB
Text

ifeq ($(platform),win64)
MKXPZ_SYSTEM = windows
MKXPZ_CPU_FAMILY = x86_64
MKXPZ_CPU = x86_64
MKXPZ_ENDIAN = little
else ifeq ($(platform),win32)
MKXPZ_SYSTEM = windows
MKXPZ_CPU_FAMILY = x86
MKXPZ_CPU = i686
MKXPZ_ENDIAN = little
else ifeq ($(platform),win64)
MKXPZ_SYSTEM = windows
MKXPZ_CPU_FAMILY = x86_64
MKXPZ_CPU = x86_64
MKXPZ_ENDIAN = little
else ifeq ($(platform),win32)
MKXPZ_SYSTEM = windows
MKXPZ_CPU_FAMILY = x86
MKXPZ_CPU = i686
MKXPZ_ENDIAN = little
else ifeq ($(platform),unix)
MKXPZ_SYSTEM = linux
ifeq ($(ARCH),x86)
MKXPZ_CPU_FAMILY = x86
MKXPZ_CPU = i686
MKXPZ_ENDIAN = little
else
MKXPZ_CPU_FAMILY = x86_64
MKXPZ_CPU = x86_64
MKXPZ_ENDIAN = little
endif
else ifeq ($(platform),osx)
MKXPZ_SYSTEM = darwin
ifeq ($(ARCH),arm)
MKXPZ_CPU_FAMILY = arm64
MKXPZ_CPU = generic-armv8-a
MKXPZ_ENDIAN = little
else
MKXPZ_CPU_FAMILY = x86_64
MKXPZ_CPU = x86_64
MKXPZ_ENDIAN = little
endif
else ifeq ($(platform),android-arm)
MKXPZ_SYSTEM = android
MKXPZ_SUFFIX = android
MKXPZ_ARCH_CMAKE = armv7-a
MKXPZ_CPU_FAMILY = armv7
MKXPZ_CPU = generic-armv7-a
MKXPZ_ENDIAN = little
CC = $(ANDROID_NDK_CLANG)/bin/armv7a-linux-androideabi21-clang
CXX = $(ANDROID_NDK_CLANG)/bin/armv7a-linux-androideabi21-clang++
AR = $(ANDROID_NDK_LLVM)/bin/llvm-ar
else ifeq ($(platform),android-arm64)
MKXPZ_SYSTEM = android
MKXPZ_SUFFIX = android
MKXPZ_ARCH_CMAKE = aarch64
MKXPZ_CPU_FAMILY = arm64
MKXPZ_CPU = generic-armv8-a
MKXPZ_ENDIAN = little
CC = $(ANDROID_NDK_CLANG)/bin/aarch64-linux-android21-clang
CXX = $(ANDROID_NDK_CLANG)/bin/aarch64-linux-android21-clang++
AR = $(ANDROID_NDK_LLVM)/bin/llvm-ar
else ifeq ($(platform),android-x86)
MKXPZ_SYSTEM = android
MKXPZ_SUFFIX = android
MKXPZ_ARCH_CMAKE = i686
MKXPZ_CPU_FAMILY = x86
MKXPZ_CPU = i686
MKXPZ_ENDIAN = little
CC = $(ANDROID_NDK_CLANG)/bin/i686-linux-android21-clang
CXX = $(ANDROID_NDK_CLANG)/bin/i686-linux-android21-clang++
AR = $(ANDROID_NDK_LLVM)/bin/llvm-ar
else ifeq ($(platform),android-x86_64)
MKXPZ_SYSTEM = android
MKXPZ_SUFFIX = android
MKXPZ_ARCH_CMAKE = x86_64
MKXPZ_CPU_FAMILY = x86_64
MKXPZ_CPU = x86_64
MKXPZ_ENDIAN = little
CC = $(ANDROID_NDK_CLANG)/bin/x86_64-linux-android21-clang
CXX = $(ANDROID_NDK_CLANG)/bin/x86_64-linux-android21-clang++
AR = $(ANDROID_NDK_LLVM)/bin/llvm-ar
else ifeq ($(platform),ios-arm64)
MKXPZ_SYSTEM = darwin
MKXPZ_SUFFIX = ios
MKXPZ_CPU_FAMILY = arm64
MKXPZ_CPU = generic-armv8-a
MKXPZ_ENDIAN = little
else ifeq ($(platform),ios9)
MKXPZ_SYSTEM = darwin
MKXPZ_SUFFIX = ios
MKXPZ_CPU_FAMILY = armv7
MKXPZ_CPU = generic-armv7-a
MKXPZ_ENDIAN = little
else ifeq ($(platform),tvos-arm64)
MKXPZ_SYSTEM = darwin
MKXPZ_SUFFIX = tvos
MKXPZ_CPU_FAMILY = arm64
MKXPZ_CPU = generic-armv8-a
MKXPZ_ENDIAN = little
else ifeq ($(platform),libnx)
MKXPZ_SYSTEM = bare
MKXPZ_CPU_FAMILY = arm64
MKXPZ_CPU = cortex-a57
MKXPZ_ENDIAN = little
else ifeq ($(platform),gcw0)
MKXPZ_SYSTEM = linux
MKXPZ_CPU_FAMILY = mips
MKXPZ_CPU = jz4770
MKXPZ_ENDIAN = little
else ifeq ($(platform),miyoo)
MKXPZ_SYSTEM = linux
MKXPZ_CPU_FAMILY = armv7
MKXPZ_CPU = cortex-a7
MKXPZ_ENDIAN = little
else ifeq ($(platform),retrofw)
MKXPZ_SYSTEM = linux
MKXPZ_CPU_FAMILY = mips
MKXPZ_CPU = jz4760
MKXPZ_ENDIAN = little
else ifeq ($(platform),emscripten)
MKXPZ_SYSTEM = emscripten
MKXPZ_CPU_FAMILY = wasm32
MKXPZ_CPU = wasm32
MKXPZ_ENDIAN = little
else
$(error unknown platform '$(platform)')
endif
ifeq ($(MKXPZ_LTO),)
MKXPZ_LTO = true
endif
ifeq ($(MKXPZ_PLATFORM),windows)
MKXPZ_EXTENSION = dll
else ifeq ($(MKXPZ_PLATFORM),linux)
MKXPZ_EXTENSION = so
else ifeq ($(MKXPZ_PLATFORM),darwin)
MKXPZ_EXTENSION = dylib
else
MKXPZ_EXTENSION = a
endif
ifeq ($(MKXPZ_PLATFORM),emscripten)
MKXPZ_EXTENSION_COPY = bc
else
MKXPZ_EXTENSION_COPY = $(MKXPZ_EXTENSION)
endif
MKXPZ_BUILD_OUTPUT = mkxp-z_libretro.$(MKXPZ_EXTENSION)
ifeq ($(MKXPZ_SUFFIX),)
MKXPZ_BUILD_OUTPUT_COPY = mkxp-z_libretro.$(MKXPZ_EXTENSION_COPY)
else
MKXPZ_BUILD_OUTPUT_COPY = mkxp-z_libretro_$(MKXPZ_SUFFIX).$(MKXPZ_EXTENSION_COPY)
endif
MKXPZ_BUILD_DIR = build
MKXPZ_CROSS_FILE = cross.ini
$(MKXPZ_BUILD_OUTPUT_COPY): $(MKXPZ_BUILD_DIR)/$(MKXPZ_BUILD_OUTPUT)
cp $(MKXPZ_BUILD_DIR)/$(MKXPZ_BUILD_OUTPUT) $(MKXPZ_BUILD_OUTPUT_COPY)
$(MKXPZ_BUILD_DIR)/$(MKXPZ_BUILD_OUTPUT): $(MKXPZ_BUILD_DIR)/build.ini
cd $(MKXPZ_BUILD_DIR) && CLICOLOR_FORCE=1 ninja -v
$(MKXPZ_BUILD_DIR)/build.ini: $(MKXPZ_CROSS_FILE)
CLICOLOR_FORCE=1 meson setup $(MKXPZ_BUILD_DIR) --cross-file $(MKXPZ_CROSS_FILE) -Dlibretro=true -Demscripten_threaded=false -Db_lto=$(MKXPZ_LTO)
$(MKXPZ_CROSS_FILE):
echo "[binaries]" > $(MKXPZ_CROSS_FILE)
echo "c = '$(CC)'" >> $(MKXPZ_CROSS_FILE)
echo "cpp = '$(CXX)'" >> $(MKXPZ_CROSS_FILE)
echo "ar = '$(AR)'" >> $(MKXPZ_CROSS_FILE)
echo "[host_machine]" >> $(MKXPZ_CROSS_FILE)
echo "system = '$(MKXPZ_SYSTEM)'" >> $(MKXPZ_CROSS_FILE)
echo "cpu_family = '$(MKXPZ_CPU_FAMILY)'" >> $(MKXPZ_CROSS_FILE)
echo "cpu = '$(MKXPZ_CPU)'" >> $(MKXPZ_CROSS_FILE)
echo "endian = '$(MKXPZ_ENDIAN)'" >> $(MKXPZ_CROSS_FILE)
if [ -n '$(MKXPZ_ARCH_CMAKE)' ]; then echo "[cmake]" >> $(MKXPZ_CROSS_FILE); fi
if [ -n '$(MKXPZ_ARCH_CMAKE)' ]; then echo "CMAKE_SYSTEM_PROCESSOR = '$(MKXPZ_ARCH_CMAKE)'" >> $(MKXPZ_CROSS_FILE); fi