summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiegoisawesome <Diegoisawesome@users.noreply.github.com>2018-08-11 18:37:09 -0700
committerGitHub <noreply@github.com>2018-08-11 18:37:09 -0700
commit40cf61307b411ea4de858902c7081fde8ef71ea5 (patch)
treeee40961b2552603a76a8a07cb4c28cf8be476664
parent419917cdb012a5bfdb26f2929efe43677b53b728 (diff)
parente0a9faacb58311b697cf704823f8279a077716f0 (diff)
Merge pull request #267 from garakmon/master
macOS support
-rw-r--r--INSTALL.md76
-rw-r--r--Makefile5
-rw-r--r--tools/aif2pcm/Makefile2
-rw-r--r--tools/aif2pcm/main.c4
-rw-r--r--tools/bin2c/Makefile2
-rw-r--r--tools/gbagfx/Makefile2
-rw-r--r--tools/mid2agb/Makefile2
-rw-r--r--tools/preproc/Makefile2
-rw-r--r--tools/ramscrgen/Makefile2
-rw-r--r--tools/rsfont/Makefile2
-rw-r--r--tools/scaninc/Makefile2
11 files changed, 84 insertions, 17 deletions
diff --git a/INSTALL.md b/INSTALL.md
index cd8f4b185..bb5e9849d 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -8,16 +8,22 @@ Make sure that there is an environment variable called DEVKITARM with the path o
Then get the compiler from https://github.com/pret/agbcc and run the following commands.
- ./build.sh
- ./install.sh PATH_OF_POKEEMERALD_DIRECTORY
+```
+./build.sh
+./install.sh PATH_OF_POKEEMERALD_DIRECTORY
+```
Then in the pokeemerald directory, build the tools.
- ./build_tools.sh
+```
+./build_tools.sh
+```
Finally, build the rom.
- make
+```
+make
+```
# Windows
@@ -26,3 +32,65 @@ Install [**devkitARM**](http://devkitpro.org/wiki/Getting_Started/devkitARM).
Then get the compiled tools from https://github.com/pret/pokeruby-tools. Copy the `tools/` folder over the `tools/` folder in your pokeemerald directory.
You can then build pokeemerald using `make` in the MSYS environment provided with devkitARM.
+
+# Mac
+
+Installing pokeemerald on a Mac requires macOS >= 10.12 (Sierra or higher).
+
+Download a [devkitPRO pacman](https://github.com/devkitPro/pacman/releases/tag/v1.0.0)
+
+Run the following commands in Terminal:
+
+
+```
+xcode-select --install
+
+sudo dkp-pacman -S devkitARM
+
+export DEVKITPRO=/opt/devkitpro
+echo "export DEVKITPRO=$DEVKITPRO" >> ~/.bashrc
+export DEVKITARM=$DEVKITPRO/devkitARM
+echo "export DEVKITARM=$DEVKITARM" >> ~/.bashrc
+echo "if [ -f ~/.bashrc ]; then . ~/.bashrc; fi" >> ~/.bash_profile
+
+git clone https://github.com/pret/pokeemerald
+git clone https://github.com/pret/agbcc
+
+cd agbcc/
+./build.sh
+./install.sh ../pokeemerald
+
+cd ../pokeemerald
+./build_tools.sh
+```
+
+And build the ROM with `make`.
+
+# Faster builds
+
+After the first build, subsequent builds are faster. You can further speed up the build:
+
+## Parallel build
+
+This significantly speeds up the build on modern machines.
+
+By default `make` only runs a single thread. You can tell `make` to run on multiple threads with `make -j`. See the manfile for usage (`man make`).
+
+The optimal value for `-j` is the number of logical cores on your machine. You can run `nproc` to see the exact number.
+
+```
+$ nproc
+8
+```
+
+If you have 8 cores, run: `make -j8`
+
+`-j` on its own will spawn a new thread for each job. A clean build will have thousands of jobs, which will be slower than not using -j at all.
+
+## Disable the dependency scanning
+
+If you've only changed `.c` or `.s` files, you can turn off the dependency scanning temporarily. Changes to any other files will be ignored, and the build will either fail or not reflect those changes.
+
+`make NODEP=1`
+
+
diff --git a/Makefile b/Makefile
index eb15d11ab..9637d98a8 100644
--- a/Makefile
+++ b/Makefile
@@ -25,14 +25,13 @@ ASFLAGS := -mcpu=arm7tdmi
CC1 := tools/agbcc/bin/agbcc
override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm
-CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef
+CPPFLAGS := -I tools/agbcc/include -I tools/agbcc -iquote include -nostdinc -undef
LDFLAGS = -Map ../../$(MAP)
LIB := -L ../../tools/agbcc/lib -lgcc -lc
-SHA1 := sha1sum -c
-
+SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c
GFX := tools/gbagfx/gbagfx
AIF := tools/aif2pcm/aif2pcm
MID := $(abspath tools/mid2agb/mid2agb)
diff --git a/tools/aif2pcm/Makefile b/tools/aif2pcm/Makefile
index 967930c59..e5cb6ad31 100644
--- a/tools/aif2pcm/Makefile
+++ b/tools/aif2pcm/Makefile
@@ -1,6 +1,6 @@
CC = gcc
-CFLAGS = -Wall -Wextra -Wno-switch -Werror -std=c11 -O2 -s
+CFLAGS = -Wall -Wextra -Wno-switch -Werror -std=c11 -O2
LIBS = -lm
diff --git a/tools/aif2pcm/main.c b/tools/aif2pcm/main.c
index fbb024a1d..51dbf1bb9 100644
--- a/tools/aif2pcm/main.c
+++ b/tools/aif2pcm/main.c
@@ -469,12 +469,12 @@ do { \
void aif2pcm(const char *aif_filename, const char *pcm_filename, bool compress)
{
struct Bytes *aif = read_bytearray(aif_filename);
- AifData aif_data = {0};
+ AifData aif_data = {0,0,0,0,0,0,0};
read_aif(aif, &aif_data);
int header_size = 0x10;
struct Bytes *pcm;
- struct Bytes output = {0};
+ struct Bytes output = {0,0};
if (compress)
{
diff --git a/tools/bin2c/Makefile b/tools/bin2c/Makefile
index 4cc23a25a..73f78980e 100644
--- a/tools/bin2c/Makefile
+++ b/tools/bin2c/Makefile
@@ -1,6 +1,6 @@
CC = gcc
-CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -s
+CFLAGS = -Wall -Wextra -Werror -std=c11 -O2
.PHONY: clean
diff --git a/tools/gbagfx/Makefile b/tools/gbagfx/Makefile
index d791dabb5..6f11b1b3f 100644
--- a/tools/gbagfx/Makefile
+++ b/tools/gbagfx/Makefile
@@ -1,6 +1,6 @@
CC = gcc
-CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -s -DPNG_SKIP_SETJMP_CHECK
+CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK
LIBS = -lpng -lz
diff --git a/tools/mid2agb/Makefile b/tools/mid2agb/Makefile
index f27f2cad4..7fd5d5fc8 100644
--- a/tools/mid2agb/Makefile
+++ b/tools/mid2agb/Makefile
@@ -1,6 +1,6 @@
CXX := g++
-CXXFLAGS := -std=c++11 -O2 -s -Wall -Wno-switch -Werror
+CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch -Werror
SRCS := agb.cpp error.cpp main.cpp midi.cpp tables.cpp
diff --git a/tools/preproc/Makefile b/tools/preproc/Makefile
index ec4a5f365..3d3275819 100644
--- a/tools/preproc/Makefile
+++ b/tools/preproc/Makefile
@@ -1,6 +1,6 @@
CXX := g++
-CXXFLAGS := -std=c++11 -O2 -s -Wall -Wno-switch -Werror
+CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch -Werror
SRCS := asm_file.cpp c_file.cpp charmap.cpp preproc.cpp string_parser.cpp \
utf8.cpp
diff --git a/tools/ramscrgen/Makefile b/tools/ramscrgen/Makefile
index cc6d458ba..9aa309aa1 100644
--- a/tools/ramscrgen/Makefile
+++ b/tools/ramscrgen/Makefile
@@ -1,6 +1,6 @@
CXX := g++
-CXXFLAGS := -std=c++11 -O2 -s -Wall -Wno-switch -Werror
+CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch -Werror
SRCS := main.cpp sym_file.cpp elf.cpp
diff --git a/tools/rsfont/Makefile b/tools/rsfont/Makefile
index a78beca50..582be7b88 100644
--- a/tools/rsfont/Makefile
+++ b/tools/rsfont/Makefile
@@ -1,6 +1,6 @@
CC = gcc
-CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -s -DPNG_SKIP_SETJMP_CHECK
+CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK
LIBS = -lpng -lz
diff --git a/tools/scaninc/Makefile b/tools/scaninc/Makefile
index 3e1c031a8..367a3350b 100644
--- a/tools/scaninc/Makefile
+++ b/tools/scaninc/Makefile
@@ -1,6 +1,6 @@
CXX = g++
-CXXFLAGS = -Wall -Werror -std=c++11 -O2 -s
+CXXFLAGS = -Wall -Werror -std=c++11 -O2
SRCS = scaninc.cpp c_file.cpp asm_file.cpp