3.5 KiB
Follow the OS-specific instructions below.
Linux
Install devkitARM.
Make sure that there is an environment variable called DEVKITARM with the path of the directory before the "bin" directory containing "arm-none-eabi-as", "arm-none-eabi-cpp", "arm-none-eabi-ld" and "arm-none-eabi-objcopy".
Then get the compiler from https://github.com/pret/agbcc and run the following commands.
./build.sh
./install.sh PATH_OF_POKEEMERALD_DIRECTORY
Finally, build the rom.
make
Windows
Install 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
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
.
If the step ./build.sh
in the above list of commands fails with the error Makefile:1: /opt/devkitpro/devkitARM/base_tools: No such file or directory
, then try installing the pacman package devkitarm-rules
by executing the command
sudo dkp-pacman -S devkitarm-rules
Executing ./build.sh
again should now succeed.
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
Building with devkitARM's C compiler
This project supports the arm-none-eabi-gcc
compiler which ships with devkitARM r52. To build this target, simply run:
make modern
Building with your own toolchain
To build Pokemon Emerald with a toolchain other than devkitARM, override the TOOLCHAIN
environment variable with the path to your toolchain. Example:
make compare TOOLCHAIN=/usr/local/arm-none-eabi
The path you pass to the TOOLCHAIN
variable must contain the subdirectory bin
. If you compile the modern
target with this toolchain, the subdirectories lib
, include
, and arm-none-eabi
must also be present.
Building with debug info
To build the ELF file with enhanced debug info, use the DINFO
variable:
make compare DINFO=1