diff options
author | red031000 <rubenru09@aol.com> | 2021-02-10 10:54:44 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-10 10:54:44 +0000 |
commit | 41bce72d7d97a7843debfe0807d68423f54142f5 (patch) | |
tree | ef85d7e696db76e9eaba5600d89afb7b4ab454b4 | |
parent | 572eddf4890ecbcd1b0e06c02046e29ddd58526f (diff) | |
parent | 904d950a9ed1876554557cba5a2e627d46c139cb (diff) |
Merge pull request #317 from dsastr/macos-mojave-support
Add support for building on macOS
-rw-r--r-- | INSTALL.md | 33 | ||||
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | arm7/Makefile | 5 | ||||
-rw-r--r-- | arm9/Makefile | 5 | ||||
-rw-r--r-- | tools/knarc/Makefile | 2 | ||||
-rw-r--r-- | tools/mwasmarm_patcher/Makefile | 5 |
6 files changed, 52 insertions, 2 deletions
@@ -48,12 +48,43 @@ Install them using either the Cygwin package manager or using pacman on Msys2. **NOTE FOR MSYS2:** You will need to compile and install [libpng](https://www.libpng.org/pub/png/libpng.html) from source. +#### macOS + +**macOS 10.14 Mojave or older is required**. macOS 10.15 Catalina is not supported due to missing support for 32-bit binaries (thus making wine emulation unfeasible). You will also require the following packages: + +* GNU make +* LLVM 8 clang compiler +* gcc@5 (for mwasmarm_patcher) +* arm-gcc-bin +* git +* libpng +* wine-stable and xquartz dependency + +They can be installed with the following commands: + +```console +$ brew tap osx-cross/homebrew-arm +$ brew tap homebrew/cask-versions +$ brew install make llvm@8 gcc@5 arm-gcc-bin libpng git +$ brew install --cask xquartz +$ brew install --cask --no-quarantine wine-stable +``` + ### 4. Build ROM Run `make` to build the ROM. The ROM will be output as `build/diamond.us/pokediamond.us.nds` To build Pokemon Pearl, run `make pearl`. You do not need to clean your working tree in between compiling. Pokemon Pearl will be built as `build/pearl.us/pokepearl.us.nds`. -Windows Users: +#### Windows If you get an error in saving configuration settings when specifying the license file, you need to add a system environment variable called LM_LICENSE_FILE and point it to the license.dat file. Alternatively, run mwccarm.exe from an Administrator command prompt, PowerShell, or WSL session. + +#### macOS + +To avoid issues run the build as shown below. This avoids issues with missing features (i.e. "introduced in macOS 10.15" errors) and Apple's make not following standards. + +```console +$ export PATH=/usr/local/opt/llvm@8/bin:$PATH CC=clang CXX=clang++ +$ gmake +``` @@ -109,7 +109,11 @@ LDFLAGS = -map -nodead -w off -proc v5te -interworking -map -symtab -m _start # DS TOOLS TOOLS_DIR = tools +ifeq ($(UNAME_S),Darwin) +SHA1SUM = shasum +else SHA1SUM = sha1sum +endif CSV2BIN = $(TOOLS_DIR)/csv2bin/csv2bin$(EXE) JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc$(EXE) O2NARC = $(TOOLS_DIR)/o2narc/o2narc$(EXE) diff --git a/arm7/Makefile b/arm7/Makefile index f983c654..d142c079 100644 --- a/arm7/Makefile +++ b/arm7/Makefile @@ -96,7 +96,12 @@ LDFLAGS = -map -nodead -w off -proc v4t -interworking -map -symtab -m _start ####################### Other Tools ######################### # DS TOOLS +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Darwin) +SHA1SUM = shasum +else SHA1SUM = sha1sum +endif JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx SCANINC = $(TOOLS_DIR)/scaninc/scaninc$(EXE) diff --git a/arm9/Makefile b/arm9/Makefile index 05e78524..8b84a135 100644 --- a/arm9/Makefile +++ b/arm9/Makefile @@ -120,11 +120,16 @@ STATIC_LIBS := $(addprefix $(BUILD_DIR)/lib/,libsyscall.a) ####################### Other Tools ######################### # DS TOOLS +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Darwin) +SHA1SUM = shasum +else ifndef BUSYBOX SHA1SUM = sha1sum --quiet else SHA1SUM = sha1sum endif +endif JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc$(EXE) GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx$(EXE) SCANINC = $(TOOLS_DIR)/scaninc/scaninc$(EXE) diff --git a/tools/knarc/Makefile b/tools/knarc/Makefile index 7dc8bd24..0e0a0920 100644 --- a/tools/knarc/Makefile +++ b/tools/knarc/Makefile @@ -8,7 +8,7 @@ else C_SRCS := UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Darwin) -LDFLAGS += -lstdc++ -lc++ -lc +LDFLAGS += -lstdc++ -lc++ -lc /usr/local/opt/llvm@8/lib/libc++fs.a else LDFLAGS += -lstdc++fs endif diff --git a/tools/mwasmarm_patcher/Makefile b/tools/mwasmarm_patcher/Makefile index 9765f713..26df548c 100644 --- a/tools/mwasmarm_patcher/Makefile +++ b/tools/mwasmarm_patcher/Makefile @@ -1,6 +1,11 @@ .PHONY: all clean
+UNAME_S := $(shell uname -s)
+ifeq ($(UNAME_S),Darwin)
+CC := gcc-5
+else
CC := gcc
+endif
CFLAGS := -O3
.PHONY: all clean
|