Explorar el Código

Improve ARM64 support

Miku AuahDark hace 4 años
padre
commit
9d4a6f81c5
Se han modificado 3 ficheros con 20 adiciones y 5 borrados
  1. 6 0
      .gitignore
  2. 11 4
      Makefile
  3. 3 1
      README.md

+ 6 - 0
.gitignore

@@ -5,12 +5,18 @@ SDL2-*/
 appimagetool
 brotli-*/
 bzip2-*/
+cmake/
+cmake_install.sh
 cmakewrapper.sh
 freetype-*/
 installdir/
 installdir2/
 libmodplug-*/
+libogg-*/
 libpng-*/
+libtheora-*/
+libvorbis-*/
 love2d-master/
 mpg123-*/
+openal-soft-*/
 zlib-*/

+ 11 - 4
Makefile

@@ -7,7 +7,7 @@ NUMBER_OF_PROCESSORS := $(shell nproc)
 ARCH := $(shell uname -m)
 
 # CMake URL
-CMAKE_URL := https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2-linux-x86_64.sh
+CMAKE_URL := https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2-linux-$(shell uname -m).sh
 
 # Project branches (for git-based projects)
 LOVE_BRANCH := master
@@ -36,7 +36,7 @@ override INSTALLPREFIX := $(CURDIR)/installdir
 override CMAKE_PREFIX := $(CURDIR)/cmake
 CMAKE := $(CMAKE_PREFIX)/bin/cmake
 override CMAKE_OPTS := -DCMAKE_INSTALL_RPATH='$$ORIGIN/../lib' -DCMAKE_INSTALL_PREFIX=$(INSTALLPREFIX)
-override CONFIGURE := LDFLAGS="-Wl,-rpath,'\$$\$$ORIGIN/../lib' $(LDFLAGS)" ../configure --prefix=$(INSTALLPREFIX)
+override CONFIGURE := LDFLAGS="-Wl,-rpath,'\$$\$$ORIGIN/../lib' $$LDFLAGS" ../configure --prefix=$(INSTALLPREFIX)
 
 # CMake setup
 ifeq ($(SYSTEM_CMAKE),)
@@ -124,6 +124,13 @@ $(LIBTHEORA_FILE).tar.gz:
 
 $(LIBTHEORA_FILE)/configure: $(LIBTHEORA_FILE).tar.gz
 	tar xzf $(LIBTHEORA_FILE).tar.gz
+# Their config.guess and config.sub can't detect ARM64
+ifeq ($(ARCH),aarch64)
+	curl -o $(LIBTHEORA_FILE)/config.guess "https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD"
+	chmod u+x $(LIBTHEORA_FILE)/config.guess
+	curl -o $(LIBTHEORA_FILE)/config.sub "https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD"
+	chmod u+x $(LIBTHEORA_FILE)/config.sub
+endif
 	touch $(LIBTHEORA_FILE)/configure
 
 $(LIBTHEORA_FILE)/build/Makefile: $(LIBTHEORA_FILE)/configure installdir/lib/libogg.so
@@ -162,10 +169,10 @@ $(LIBPNG_FILE)/configure: $(LIBPNG_FILE).tar.gz
 
 $(LIBPNG_FILE)/build/Makefile: $(LIBPNG_FILE)/configure installdir/lib/libz.so
 	mkdir -p $(LIBPNG_FILE)/build
-	cd $(LIBPNG_FILE)/build && $(CONFIGURE)
+	cd $(LIBPNG_FILE)/build && LDFLAGS="-L$(INSTALLPREFIX)/lib" CFLAGS="-I$(INSTALLPREFIX)/include" CPPFLAGS="-I$(INSTALLPREFIX)/include" $(CONFIGURE)
 
 installdir/lib/libpng16.so: $(LIBPNG_FILE)/build/Makefile
-	cd $(LIBPNG_FILE)/build && $(MAKE) install -j$(NUMBER_OF_PROCESSORS)
+	cd $(LIBPNG_FILE)/build && CFLAGS="-I$(INSTALLPREFIX)/include" $(MAKE) install -j$(NUMBER_OF_PROCESSORS)
 	strip installdir/lib/libpng16.so
 
 # Brotli

+ 3 - 1
README.md

@@ -6,7 +6,9 @@ Creates LOVE AppImage by compiling every single dependency from source.
 Build
 -----
 
-You may want to grab all dependencies required by SDL, but **not** the SDL itself.
+You may want to grab [all dependencies required by SDL](https://github.com/libsdl-org/SDL/blob/main/docs/README-linux.md#build-dependencies), but **not** the SDL itself.
+
+Note for Ubuntu ARM64: If APT can't find `libsndio-dev` and `fcitx-libs-dev`, make sure to add `universe` repository!
 
 Afterwards, run `make`. `love-master.AppImage` (by default) will be generated. See the Makefile script for various tweakable variables.