Skip to content

Commit 3d68611

Browse files
[Round 3] Apply all source related changes for the new INSTALL.md in one commit.
1 parent 5a5acfb commit 3d68611

File tree

17 files changed

+210
-118
lines changed

17 files changed

+210
-118
lines changed

Makefile

+59-38
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
TOOLCHAIN := $(DEVKITARM)
22
COMPARE ?= 0
33

4-
ifeq ($(CC),)
5-
HOSTCC := gcc
6-
else
7-
HOSTCC := $(CC)
4+
# don't use dkP's base_tools anymore
5+
# because the redefinition of $(CC) conflicts
6+
# with when we want to use $(CC) to preprocess files
7+
# thus, manually create the variables for the bin
8+
# files, or use arm-none-eabi binaries on the system
9+
# if dkP is not installed on tihs system
10+
11+
ifneq (,$(TOOLCHAIN))
12+
ifneq ($(wildcard $(TOOLCHAIN)/bin),)
13+
export PATH := $(TOOLCHAIN)/bin:$(PATH)
814
endif
9-
10-
ifeq ($(CXX),)
11-
HOSTCXX := g++
12-
else
13-
HOSTCXX := $(CXX)
1415
endif
1516

16-
ifneq (,$(wildcard $(TOOLCHAIN)/base_tools))
17-
include $(TOOLCHAIN)/base_tools
18-
else
19-
export PATH := $(TOOLCHAIN)/bin:$(PATH)
2017
PREFIX := arm-none-eabi-
2118
OBJCOPY := $(PREFIX)objcopy
22-
export CC := $(PREFIX)gcc
23-
export AS := $(PREFIX)as
24-
endif
25-
export CPP := $(PREFIX)cpp
26-
export LD := $(PREFIX)ld
19+
AS := $(PREFIX)as
20+
21+
LD := $(PREFIX)ld
22+
23+
# note: the makefile must be set up so MODERNCC is never called
24+
# if MODERN=0
25+
MODERNCC := $(PREFIX)gcc
2726

2827
ifeq ($(OS),Windows_NT)
2928
EXE := .exe
@@ -37,6 +36,22 @@ MAKER_CODE := 01
3736
REVISION := 0
3837
MODERN ?= 0
3938

39+
ifneq ($(MODERN),1)
40+
CPP := $(CC) -E
41+
else
42+
CPP := $(PREFIX)cpp
43+
endif
44+
45+
ROM_NAME := pokeemerald.gba
46+
ELF_NAME := $(ROM_NAME:.gba=.elf)
47+
MAP_NAME := $(ROM_NAME:.gba=.map)
48+
OBJ_DIR_NAME := build/emerald
49+
50+
MODERN_ROM_NAME := pokeemerald_modern.gba
51+
MODERN_ELF_NAME := $(MODERN_ROM_NAME:.gba=.elf)
52+
MODERN_MAP_NAME := $(MODERN_ROM_NAME:.gba=.map)
53+
MODERN_OBJ_DIR_NAME := build/modern
54+
4055
SHELL := /bin/bash -o pipefail
4156

4257
ELF = $(ROM:.gba=.elf)
@@ -64,20 +79,20 @@ ASFLAGS := -mcpu=arm7tdmi --defsym MODERN=$(MODERN)
6479
ifeq ($(MODERN),0)
6580
CC1 := tools/agbcc/bin/agbcc$(EXE)
6681
override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm -g
67-
ROM := pokeemerald.gba
68-
OBJ_DIR := build/emerald
82+
ROM := $(ROM_NAME)
83+
OBJ_DIR := $(OBJ_DIR_NAME)
6984
LIBPATH := -L ../../tools/agbcc/lib
7085
else
71-
CC1 = $(shell $(CC) --print-prog-name=cc1) -quiet
86+
CC1 = $(shell $(MODERNCC) --print-prog-name=cc1) -quiet
7287
override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -g
73-
ROM := pokeemerald_modern.gba
74-
OBJ_DIR := build/modern
75-
LIBPATH := -L "$(dir $(shell $(CC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(CC) -mthumb -print-file-name=libc.a))"
88+
ROM := $(MODERN_ROM_NAME)
89+
OBJ_DIR := $(MODERN_OBJ_DIR_NAME)
90+
LIBPATH := -L "$(dir $(shell $(MODERNCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(MODERNCC) -mthumb -print-file-name=libc.a))"
7691
endif
7792

7893
CPPFLAGS := -iquote include -iquote $(GFLIB_SUBDIR) -Wno-trigraphs -DMODERN=$(MODERN)
79-
ifeq ($(MODERN),0)
80-
CPPFLAGS += -I tools/agbcc/include -I tools/agbcc
94+
ifneq ($(MODERN),1)
95+
CPPFLAGS += -I tools/agbcc/include -I tools/agbcc -nostdinc -undef
8196
endif
8297

8398
LDFLAGS = -Map ../../$(MAP)
@@ -111,7 +126,7 @@ MAKEFLAGS += --no-print-directory
111126
# Secondary expansion is required for dependency variables in object rules.
112127
.SECONDEXPANSION:
113128

114-
.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) berry_fix libagbsyscall modern
129+
.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) berry_fix libagbsyscall modern tidymodern tidynonmodern
115130

116131
infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
117132

@@ -162,7 +177,7 @@ all: rom
162177
tools: $(TOOLDIRS)
163178

164179
$(TOOLDIRS):
165-
@$(MAKE) -C $@ CC=$(HOSTCC) CXX=$(HOSTCXX)
180+
@$(MAKE) -C $@
166181

167182
rom: $(ROM)
168183
ifeq ($(COMPARE),1)
@@ -177,7 +192,7 @@ clean: mostlyclean clean-tools
177192
clean-tools:
178193
@$(foreach tooldir,$(TOOLDIRS),$(MAKE) clean -C $(tooldir);)
179194

180-
mostlyclean: tidy
195+
mostlyclean: tidynonmodern tidymodern
181196
rm -f $(SAMPLE_SUBDIR)/*.bin
182197
rm -f $(CRY_SUBDIR)/*.bin
183198
rm -f $(MID_SUBDIR)/*.s
@@ -192,10 +207,15 @@ mostlyclean: tidy
192207
tidy:
193208
rm -f $(ROM) $(ELF) $(MAP)
194209
rm -r $(OBJ_DIR)
195-
ifeq ($(MODERN),0)
196-
@$(MAKE) tidy MODERN=1
197-
endif
198210

211+
tidynonmodern:
212+
rm -f $(ROM_NAME) $(ELF_NAME) $(MAP_NAME)
213+
rm -rf $(OBJ_DIR_NAME)
214+
215+
tidymodern:
216+
rm -f $(MODERN_ROM_NAME) $(MODERN_ELF_NAME) $(MODERN_MAP_NAME)
217+
rm -rf $(MODERN_OBJ_DIR_NAME)
218+
199219
ifneq ($(MODERN),0)
200220
$(C_BUILDDIR)/berry_crush.o: override CFLAGS += -Wno-address-of-packed-member
201221
endif
@@ -223,7 +243,7 @@ sound/%.bin: sound/%.aif ; $(AIF) $< $@
223243

224244

225245
ifeq ($(MODERN),0)
226-
$(C_BUILDDIR)/libc.o: CC1 := tools/agbcc/bin/old_agbcc
246+
$(C_BUILDDIR)/libc.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE)
227247
$(C_BUILDDIR)/libc.o: CFLAGS := -O2
228248

229249
$(C_BUILDDIR)/siirtc.o: CFLAGS := -mthumb-interwork
@@ -232,10 +252,10 @@ $(C_BUILDDIR)/agb_flash.o: CFLAGS := -O -mthumb-interwork
232252
$(C_BUILDDIR)/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork
233253
$(C_BUILDDIR)/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork
234254

235-
$(C_BUILDDIR)/m4a.o: CC1 := tools/agbcc/bin/old_agbcc
255+
$(C_BUILDDIR)/m4a.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE)
236256

237257
$(C_BUILDDIR)/record_mixing.o: CFLAGS += -ffreestanding
238-
$(C_BUILDDIR)/librfu_intr.o: CC1 := tools/agbcc/bin/agbcc_arm
258+
$(C_BUILDDIR)/librfu_intr.o: CC1 := tools/agbcc/bin/agbcc_arm$(EXE)
239259
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -O2 -mthumb-interwork -quiet
240260
else
241261
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast
@@ -296,11 +316,11 @@ endif
296316

297317
ifeq ($(NODEP),1)
298318
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s
299-
$(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@
319+
$(PREPROC) $< charmap.txt | $(CPP) -I include - | $(AS) $(ASFLAGS) -o $@
300320
else
301321
define DATA_ASM_DEP
302322
$1: $2 $$(shell $(SCANINC) -I include -I "" $2)
303-
$$(PREPROC) $$< charmap.txt | $$(CPP) -I include | $$(AS) $$(ASFLAGS) -o $$@
323+
$$(PREPROC) $$< charmap.txt | $$(CPP) -I include - | $$(AS) $$(ASFLAGS) -o $$@
304324
endef
305325
$(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call DATA_ASM_DEP,$(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o, $(src)),$(src))))
306326
endif
@@ -329,7 +349,8 @@ $(OBJ_DIR)/ld_script.ld: $(LD_SCRIPT) $(LD_SCRIPT_DEPS)
329349
cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../$(LD_SCRIPT) > ld_script.ld
330350

331351
$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) berry_fix libagbsyscall
332-
cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) $(LIB)
352+
@echo "cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ <objects> <lib>"
353+
@cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) $(LIB)
333354
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
334355

335356
$(ROM): $(ELF)

asmdiff.sh

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
#!/bin/bash
22

3-
OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb"
3+
if [[ -d "$DEVKITARM/bin/" ]]; then
4+
OBJDUMP_BIN="$DEVKITARM/bin/arm-none-eabi-objdump"
5+
else
6+
OBJDUMP_BIN="arm-none-eabi-objdump"
7+
fi
8+
9+
OBJDUMP="$OBJDUMP_BIN -D -bbinary -marmv4t -Mforce-thumb"
10+
411
if [ $(($1)) -ge $((0x8000000)) ]; then
512
OPTIONS="--adjust-vma=0x8000000 --start-address=$(($1)) --stop-address=$(($1 + $2))"
613
else
714
OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))"
815
fi
16+
917
$OBJDUMP $OPTIONS baserom.gba > baserom.dump
1018
$OBJDUMP $OPTIONS pokeemerald.gba > pokeemerald.dump
1119
diff -u baserom.dump pokeemerald.dump

berry_fix/Makefile

+17-18
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
TOOLCHAIN := $(DEVKITARM)
22
COMPARE ?= 0
33

4-
ifeq ($(CC),)
5-
HOSTCC := gcc
6-
else
7-
HOSTCC := $(CC)
4+
# don't use dkP's base_tools anymore
5+
# because the redefinition of $(CC) conflicts
6+
# with when we want to use $(CC) to preprocess files
7+
# thus, manually create the variables for the bin
8+
# files, or use arm-none-eabi binaries on the system
9+
# if dkP is not installed on tihs system
10+
11+
ifneq (,$(TOOLCHAIN))
12+
ifneq ($(wildcard $(TOOLCHAIN)/bin),)
13+
export PATH := $(TOOLCHAIN)/bin:$(PATH)
814
endif
9-
10-
ifeq ($(CXX),)
11-
HOSTCXX := g++
12-
else
13-
HOSTCXX := $(CXX)
1415
endif
1516

16-
ifneq (,$(wildcard $(TOOLCHAIN)/base_tools))
17-
include $(TOOLCHAIN)/base_tools
18-
else
19-
export PATH := $(TOOLCHAIN)/bin:$(PATH)
2017
PREFIX := arm-none-eabi-
2118
OBJCOPY := $(PREFIX)objcopy
22-
export CC := $(PREFIX)gcc
23-
export AS := $(PREFIX)as
24-
endif
25-
export CPP := $(PREFIX)cpp
26-
export LD := $(PREFIX)ld
19+
AS := $(PREFIX)as
20+
CPP := $(CC) -E
21+
LD := $(PREFIX)ld
22+
23+
# note: the makefile must be set up so MODERNCC is never called
24+
# if MODERN=0
25+
MODERNCC := $(PREFIX)gcc
2726

2827
ifeq ($(OS),Windows_NT)
2928
EXE := .exe

berry_fix/payload/Makefile

+17-18
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
TOOLCHAIN := $(DEVKITARM)
22
COMPARE ?= 0
33

4-
ifeq ($(CC),)
5-
HOSTCC := gcc
6-
else
7-
HOSTCC := $(CC)
4+
# don't use dkP's base_tools anymore
5+
# because the redefinition of $(CC) conflicts
6+
# with when we want to use $(CC) to preprocess files
7+
# thus, manually create the variables for the bin
8+
# files, or use arm-none-eabi binaries on the system
9+
# if dkP is not installed on tihs system
10+
11+
ifneq (,$(TOOLCHAIN))
12+
ifneq ($(wildcard $(TOOLCHAIN)/bin),)
13+
export PATH := $(TOOLCHAIN)/bin:$(PATH)
814
endif
9-
10-
ifeq ($(CXX),)
11-
HOSTCXX := g++
12-
else
13-
HOSTCXX := $(CXX)
1415
endif
1516

16-
ifneq (,$(wildcard $(TOOLCHAIN)/base_tools))
17-
include $(TOOLCHAIN)/base_tools
18-
else
19-
export PATH := $(TOOLCHAIN)/bin:$(PATH)
2017
PREFIX := arm-none-eabi-
2118
OBJCOPY := $(PREFIX)objcopy
22-
export CC := $(PREFIX)gcc
23-
export AS := $(PREFIX)as
24-
endif
25-
export CPP := $(PREFIX)cpp
26-
export LD := $(PREFIX)ld
19+
AS := $(PREFIX)as
20+
CPP := $(CC) -E
21+
LD := $(PREFIX)ld
22+
23+
# note: the makefile must be set up so MODERNCC is never called
24+
# if MODERN=0
25+
MODERNCC := $(PREFIX)gcc
2726

2827
ifeq ($(OS),Windows_NT)
2928
EXE := .exe

libagbsyscall/Makefile

+17-18
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
TOOLCHAIN := $(DEVKITARM)
22
COMPARE ?= 0
33

4-
ifeq ($(CC),)
5-
HOSTCC := gcc
6-
else
7-
HOSTCC := $(CC)
8-
endif
4+
# don't use dkP's base_tools anymore
5+
# because the redefinition of $(CC) conflicts
6+
# with when we want to use $(CC) to preprocess files
7+
# thus, manually create the variables for the bin
8+
# files, or use arm-none-eabi binaries on the system
9+
# if dkP is not installed on tihs system
910

10-
ifeq ($(CXX),)
11-
HOSTCXX := g++
12-
else
13-
HOSTCXX := $(CXX)
11+
ifneq (,$(TOOLCHAIN))
12+
ifneq ($(wildcard $(TOOLCHAIN)/bin),)
13+
export PATH := $(TOOLCHAIN)/bin:$(PATH)
14+
endif
1415
endif
1516

16-
ifneq (,$(wildcard $(TOOLCHAIN)/base_tools))
17-
include $(TOOLCHAIN)/base_tools
18-
else
19-
export PATH := $(TOOLCHAIN)/bin:$(PATH)
2017
PREFIX := arm-none-eabi-
2118
OBJCOPY := $(PREFIX)objcopy
22-
export CC := $(PREFIX)gcc
23-
export AS := $(PREFIX)as
24-
endif
25-
export CPP := $(PREFIX)cpp
26-
export LD := $(PREFIX)ld
19+
AS := $(PREFIX)as
20+
CPP := $(CC) -E
21+
LD := $(PREFIX)ld
22+
23+
# note: the makefile must be set up so MODERNCC is never called
24+
# if MODERN=0
25+
MODERNCC := $(PREFIX)gcc
2726

2827
ifeq ($(OS),Windows_NT)
2928
EXE := .exe

map_data_rules.mk

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ MAP_EVENTS := $(patsubst $(MAPS_DIR)/%/,$(MAPS_DIR)/%/events.inc,$(MAP_DIRS))
99
MAP_HEADERS := $(patsubst $(MAPS_DIR)/%/,$(MAPS_DIR)/%/header.inc,$(MAP_DIRS))
1010

1111
$(DATA_ASM_BUILDDIR)/maps.o: $(DATA_ASM_SUBDIR)/maps.s $(LAYOUTS_DIR)/layouts.inc $(LAYOUTS_DIR)/layouts_table.inc $(MAPS_DIR)/headers.inc $(MAPS_DIR)/groups.inc $(MAPS_DIR)/connections.inc $(MAP_CONNECTIONS) $(MAP_HEADERS)
12-
$(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@
12+
$(PREPROC) $< charmap.txt | $(CPP) -I include - | $(AS) $(ASFLAGS) -o $@
1313
$(DATA_ASM_BUILDDIR)/map_events.o: $(DATA_ASM_SUBDIR)/map_events.s $(MAPS_DIR)/events.inc $(MAP_EVENTS)
14-
$(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@
14+
$(PREPROC) $< charmap.txt | $(CPP) -I include - | $(AS) $(ASFLAGS) -o $@
1515

1616
$(MAPS_DIR)/%/header.inc: $(MAPS_DIR)/%/map.json
1717
$(MAPJSON) map emerald $< $(LAYOUTS_DIR)/layouts.json

tools/aif2pcm/Makefile

+8-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,18 @@ LIBS = -lm
66

77
SRCS = main.c extended.c
88

9+
ifeq ($(OS),Windows_NT)
10+
EXE := .exe
11+
else
12+
EXE :=
13+
endif
14+
915
.PHONY: all clean
1016

11-
all: aif2pcm
17+
all: aif2pcm$(EXE)
1218
@:
1319

14-
aif2pcm: $(SRCS)
20+
aif2pcm$(EXE): $(SRCS)
1521
$(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS)
1622

1723
clean:

0 commit comments

Comments
 (0)