summaryrefslogtreecommitdiff
path: root/INSTALL.md
blob: d8f60f3e1d560af325d1b65672c9247611ba16be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# Linux

Install [**devkitARM**](http://devkitpro.org/wiki/Getting_Started/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 run the following commands.

	git clone https://github.com/pret/pokeruby
	git clone https://github.com/pret/agbcc

	cd agbcc
	./build.sh
	./install.sh ../pokeruby

	cd ../pokeruby

To build **pokeruby.gba**:

	make -j4


# Mac

In **Terminal**, run the following command:

	xcode-select --install

Then follow the Linux instructions.


# Windows

Install [**devkitARM**](http://devkitpro.org/wiki/Getting_Started/devkitARM) to the default directory (C:/devkitpro).

Then download [**Cygwin**](http://cygwin.com/install.html): **setup-x86_64.exe** for 64-bit Windows, **setup-x86.exe** for 32-bit.

Run the Cygwin setup and leave the default settings. At "Select Packages", set the view to "Full" and choose to install the following:

- `make`
- `git`
- `gcc-core`
- `gcc-g++`
- `libpng-devel`

In the **Cygwin terminal**, enter these commands:

	export DEVKITARM=/cygdrive/c/devkitpro/devkitARM
	echo export DEVKITARM=/cygdrive/c/devkitpro/devkitARM >> ~/.bashrc

	git clone https://github.com/pret/pokeruby
	git clone https://github.com/pret/agbcc

	cd agbcc
	./build.sh
	./install.sh ../pokeruby

	cd ../pokeruby

To build **pokeruby.gba**:

	make -j4


# Compiling Sapphire and later revisions

When you simply enter `make` and don't specify a target, then Pokémon Ruby 1.0 will be built. However, Sapphire can also be built, along with revisions 1 and 2 of both Ruby and Sapphire. Here is a listing of each ROM that can be made, along with the command to make the ROM.

Pokémon Ruby 1.0

	make ruby

Pokémon Ruby 1.1

	make ruby_rev1

Pokémon Ruby 1.2

	make ruby_rev2

Pokémon Sapphire 1.0

	make sapphire

Pokémon Sapphire 1.1

	make sapphire_rev1

Pokémon Sapphire 1.2

	make sapphire_rev2


# 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