diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 11b991dc..29580123 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,7 +21,7 @@ .miniforge: script: - - wget -O ~/Miniforge3.sh "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh" + - wget -O ~/Miniforge3.sh "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh" - bash ~/Miniforge3.sh -b -p ~/miniforge3 - source ~/miniforge3/etc/profile.d/conda.sh - conda install -y ${MINIFORGE_PACKAGES} diff --git a/Makefile.libretro b/Makefile.libretro index db3767b8..84486266 100644 --- a/Makefile.libretro +++ b/Makefile.libretro @@ -37,9 +37,12 @@ else ifeq ($(platform),android-arm) 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++ + # 32-bit builds are broken with Android API versions older than 24; see https://github.com/android/ndk/issues/442 + CC = $(ANDROID_NDK_CLANG)/bin/armv7a-linux-androideabi24-clang + CXX = $(ANDROID_NDK_CLANG)/bin/armv7a-linux-androideabi24-clang++ AR = $(ANDROID_NDK_LLVM)/bin/llvm-ar + # The build times out with LTO enabled + MKXPZ_LTO = false else ifeq ($(platform),android-arm64) MKXPZ_SYSTEM = android MKXPZ_SUFFIX = android @@ -50,6 +53,8 @@ else ifeq ($(platform),android-arm64) 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 + # The build times out with LTO enabled + MKXPZ_LTO = false else ifeq ($(platform),android-x86) MKXPZ_SYSTEM = android MKXPZ_SUFFIX = android @@ -57,9 +62,12 @@ else ifeq ($(platform),android-x86) 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++ + # 32-bit builds are broken with Android API versions older than 24; see https://github.com/android/ndk/issues/442 + CC = $(ANDROID_NDK_CLANG)/bin/i686-linux-android24-clang + CXX = $(ANDROID_NDK_CLANG)/bin/i686-linux-android24-clang++ AR = $(ANDROID_NDK_LLVM)/bin/llvm-ar + # The build times out with LTO enabled + MKXPZ_LTO = false else ifeq ($(platform),android-x86_64) MKXPZ_SYSTEM = android MKXPZ_SUFFIX = android @@ -70,24 +78,34 @@ else ifeq ($(platform),android-x86_64) 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 + # The build times out with LTO enabled + MKXPZ_LTO = false else ifeq ($(platform),ios-arm64) MKXPZ_SYSTEM = darwin MKXPZ_SUFFIX = ios MKXPZ_CPU_FAMILY = aarch64 MKXPZ_CPU = generic-armv8-a MKXPZ_ENDIAN = little + CC = ['xcrun', '--sdk', 'iphoneos', '$(CC)', '-arch', 'arm64'] + CXX = ['xcrun', '--sdk', 'iphoneos', '$(CXX)', '-arch', 'arm64'] else ifeq ($(platform),ios9) MKXPZ_SYSTEM = darwin MKXPZ_SUFFIX = ios MKXPZ_CPU_FAMILY = armv7 MKXPZ_CPU = generic-armv7-a MKXPZ_ENDIAN = little + CC = ['xcrun', '--sdk', 'iphoneos', '$(CC)', '-arch', 'armv7'] + CXX = ['xcrun', '--sdk', 'iphoneos', '$(CXX)', '-arch', 'armv7'] + # The build times out with LTO enabled + MKXPZ_LTO = false else ifeq ($(platform),tvos-arm64) MKXPZ_SYSTEM = darwin MKXPZ_SUFFIX = tvos MKXPZ_CPU_FAMILY = aarch64 MKXPZ_CPU = generic-armv8-a MKXPZ_ENDIAN = little + CC = ['xcrun', '--sdk', 'appletvos', '$(CC)', '-arch', 'arm64'] + CXX = ['xcrun', '--sdk', 'appletvos', '$(CXX)', '-arch', 'arm64'] else ifeq ($(platform),libnx) MKXPZ_SYSTEM = bare MKXPZ_SUFFIX = libnx @@ -97,6 +115,8 @@ else ifeq ($(platform),libnx) CC = /opt/devkitpro/devkitA64/bin/aarch64-none-elf-gcc CXX = /opt/devkitpro/devkitA64/bin/aarch64-none-elf-g++ AR = /opt/devkitpro/devkitA64/bin/aarch64-none-elf-ar + # The build times out with LTO enabled + MKXPZ_LTO = false else ifeq ($(platform),gcw0) MKXPZ_SYSTEM = linux MKXPZ_CPU_FAMILY = mips @@ -118,6 +138,8 @@ else ifeq ($(platform),emscripten) MKXPZ_CPU_FAMILY = wasm32 MKXPZ_CPU = wasm32 MKXPZ_ENDIAN = little + # The build times out with LTO enabled + MKXPZ_LTO = false else $(error unknown platform '$(platform)') endif @@ -165,13 +187,26 @@ $(MKXPZ_BUILD_DIR)/build.ini: $(MKXPZ_CROSS_FILE) $(MKXPZ_CROSS_FILE): echo "[binaries]" > $(MKXPZ_CROSS_FILE) +ifeq ($(patsubst [%,,$(firstword $(CC))),) + echo "c = $(CC)" >> $(MKXPZ_CROSS_FILE) +else echo "c = '$(CC)'" >> $(MKXPZ_CROSS_FILE) +endif +ifeq ($(patsubst [%,,$(firstword $(CXX))),) + echo "cpp = $(CXX)" >> $(MKXPZ_CROSS_FILE) +else echo "cpp = '$(CXX)'" >> $(MKXPZ_CROSS_FILE) +endif 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 + echo "[cmake]" >> $(MKXPZ_CROSS_FILE); fi +ifneq ($(MKXPZ_ARCH_CMAKE),) + echo "CMAKE_SYSTEM_PROCESSOR = '$(MKXPZ_ARCH_CMAKE)'" >> $(MKXPZ_CROSS_FILE) +endif +ifeq ($(MKXPZ_SYSTEM),darwin) + echo "CMAKE_OSX_SYSROOT = '/nonexistent'" >> $(MKXPZ_CROSS_FILE) +endif