summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2021-02-10 10:54:44 +0000
committerGitHub <noreply@github.com>2021-02-10 10:54:44 +0000
commit41bce72d7d97a7843debfe0807d68423f54142f5 (patch)
treeef85d7e696db76e9eaba5600d89afb7b4ab454b4
parent572eddf4890ecbcd1b0e06c02046e29ddd58526f (diff)
parent904d950a9ed1876554557cba5a2e627d46c139cb (diff)
Merge pull request #317 from dsastr/macos-mojave-support
Add support for building on macOS
-rw-r--r--INSTALL.md33
-rw-r--r--Makefile4
-rw-r--r--arm7/Makefile5
-rw-r--r--arm9/Makefile5
-rw-r--r--tools/knarc/Makefile2
-rw-r--r--tools/mwasmarm_patcher/Makefile5
6 files changed, 52 insertions, 2 deletions
diff --git a/INSTALL.md b/INSTALL.md
index 35eb054d..65dead6e 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -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
+```
diff --git a/Makefile b/Makefile
index 5189c062..4467d8ac 100644
--- a/Makefile
+++ b/Makefile
@@ -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