Skip to content

Commit b10c2f7

Browse files
Merge branch 'master' of https://github.com/pret/pokefirered into porymap-6
2 parents d4eee46 + 2a3e92e commit b10c2f7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+292
-543
lines changed

Makefile

+50-58
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,20 @@ ifneq (,$(MAKECMDGOALS))
150150
endif
151151
endif
152152

153+
.SHELLSTATUS ?= 0
154+
153155
ifeq ($(SETUP_PREREQS),1)
154156
# If set on: Default target or a rule requiring a scan
155157
# Forcibly execute `make tools` since we need them for what we are doing.
156-
$(call infoshell, $(MAKE) -f make_tools.mk)
158+
$(foreach line, $(shell $(MAKE) -f make_tools.mk | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
159+
ifneq ($(.SHELLSTATUS),0)
160+
$(error Errors occurred while building tools. See error messages above for more details)
161+
endif
157162
# Oh and also generate mapjson sources before we use `SCANINC`.
158-
$(call infoshell, $(MAKE) generated)
163+
$(foreach line, $(shell $(MAKE) generated | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
164+
ifneq ($(.SHELLSTATUS),0)
165+
$(error Errors occurred while generating map-related sources. See error messages above for more details)
166+
endif
159167
endif
160168

161169
# Collect sources
@@ -237,7 +245,10 @@ include spritesheet_rules.mk
237245
include json_data_rules.mk
238246
include audio_rules.mk
239247

248+
# NOTE: Tools must have been built prior (FIXME)
249+
# so you can't really call this rule directly
240250
generated: $(AUTO_GEN_TARGETS)
251+
@: # Silence the "Nothing to be done for `generated'" message, which some people were confusing for an error.
241252

242253
%.s: ;
243254
%.png: ;
@@ -252,8 +263,6 @@ generated: $(AUTO_GEN_TARGETS)
252263
%.lz: % ; $(GFX) $< $@
253264
%.rl: % ; $(GFX) $< $@
254265

255-
# NOTE: Tools must have been built prior (FIXME)
256-
generated: tools $(AUTO_GEN_TARGETS)
257266
clean-generated:
258267
-rm -f $(AUTO_GEN_TARGETS)
259268

@@ -287,71 +296,52 @@ endif
287296
# As a side effect, they're evaluated immediately instead of when the rule is invoked.
288297
# It doesn't look like $(shell) can be deferred so there might not be a better way (Icedude_907: there is soon).
289298

290-
# For C dependencies.
291-
# Args: $1 = Output file without extension (build/assets/src/data), $2 = Input file (src/data.c)
292-
define C_DEP
293-
$(call C_DEP_IMPL,$1,$2,$1)
294-
endef
295-
# Internal implementation details.
296-
# $1: Output file without extension, $2 input file, $3 temp path (if keeping)
297-
define C_DEP_IMPL
298-
$1.o: $2
299+
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.c
299300
ifneq ($(KEEP_TEMPS),1)
300-
@echo "$$(CC1) <flags> -o $$@ $$<"
301-
@$$(CPP) $$(CPPFLAGS) $$< | $$(PREPROC) -i $$< charmap.txt | $$(CC1) $$(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $$(AS) $$(ASFLAGS) -o $$@ -
301+
@echo "$(CC1) <flags> -o $@ $<"
302+
@$(CPP) $(CPPFLAGS) $< | $(PREPROC) -i $< charmap.txt | $(CC1) $(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $(AS) $(ASFLAGS) -o $@ -
302303
else
303-
@$$(CPP) $$(CPPFLAGS) $$< -o $3.i
304-
@$$(PREPROC) $3.i charmap.txt | $$(CC1) $$(CFLAGS) -o $3.s
305-
@echo -e ".text\n\t.align\t2, 0 @ Don't pad with nop\n" >> $3.s
306-
$$(AS) $$(ASFLAGS) -o $$@ $3.s
304+
@$(CPP) $(CPPFLAGS) $< -o $*.i
305+
@$(PREPROC) $*.i charmap.txt | $(CC1) $(CFLAGS) -o $*.s
306+
@echo -e ".text\n\t.align\t2, 0\n" >> $*.s
307+
$(AS) $(ASFLAGS) -o $@ $*.s
307308
endif
308-
$1.d: $2
309-
$(SCANINC) -M $1.d $(INCLUDE_SCANINC_ARGS) -I tools/agbcc/include $2
309+
310+
$(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.c
311+
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I tools/agbcc/include $<
312+
310313
ifneq ($(NODEP),1)
311-
$1.o: $1.d
312-
-include $1.d
314+
-include $(addprefix $(OBJ_DIR)/,$(C_SRCS:.c=.d))
313315
endif
314-
endef
315316

316-
# Create generic rules if no dependency scanning, else create the real rules
317-
ifeq ($(NODEP),1)
318-
$(eval $(call C_DEP,$(C_BUILDDIR)/%,$(C_SUBDIR)/%.c))
319-
else
320-
$(foreach src,$(C_SRCS),$(eval $(call C_DEP,$(OBJ_DIR)/$(basename $(src)),$(src))))
317+
$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s
318+
$(AS) $(ASFLAGS) -o $@ $<
319+
320+
$(ASM_BUILDDIR)/%.d: $(ASM_SUBDIR)/%.s
321+
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
322+
323+
ifneq ($(NODEP),1)
324+
-include $(addprefix $(OBJ_DIR)/,$(ASM_SRCS:.s=.d))
321325
endif
322326

323-
# Similar methodology for Assembly files
324-
# $1: Output path without extension, $2: Input file (`*.s`)
325-
define ASM_DEP
326-
$1.o: $2
327-
$$(AS) $$(ASFLAGS) -o $$@ $$<
328-
$(call ASM_SCANINC,$1,$2)
329-
endef
330-
# As above but first doing a preprocessor pass
331-
define ASM_DEP_PREPROC
332-
$1.o: $2
333-
$$(PREPROC) $$< charmap.txt | $$(CPP) $(INCLUDE_SCANINC_ARGS) - | $$(PREPROC) -ie $$< charmap.txt | $$(AS) $$(ASFLAGS) -o $$@
334-
$(call ASM_SCANINC,$1,$2)
335-
endef
336-
337-
define ASM_SCANINC
327+
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.s
328+
$(PREPROC) $< charmap.txt | $(CPP) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
329+
330+
$(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.s
331+
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
332+
338333
ifneq ($(NODEP),1)
339-
$1.o: $1.d
340-
$1.d: $2
341-
$(SCANINC) -M $1.d $(INCLUDE_SCANINC_ARGS) -I "" $2
342-
-include $1.d
334+
-include $(addprefix $(OBJ_DIR)/,$(C_ASM_SRCS:.s=.d))
343335
endif
344-
endef
345336

346-
# Dummy rules or real rules
347-
ifeq ($(NODEP),1)
348-
$(eval $(call ASM_DEP,$(ASM_BUILDDIR)/%,$(ASM_SUBDIR)/%.s))
349-
$(eval $(call ASM_DEP_PREPROC,$(C_BUILDDIR)/%,$(C_SUBDIR)/%.s))
350-
$(eval $(call ASM_DEP_PREPROC,$(DATA_ASM_BUILDDIR)/%,$(DATA_ASM_SUBDIR)/%.s))
351-
else
352-
$(foreach src, $(ASM_SRCS), $(eval $(call ASM_DEP,$(src:%.s=$(OBJ_DIR)/%),$(src))))
353-
$(foreach src, $(C_ASM_SRCS), $(eval $(call ASM_DEP_PREPROC,$(src:%.s=$(OBJ_DIR)/%),$(src))))
354-
$(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call ASM_DEP_PREPROC,$(src:%.s=$(OBJ_DIR)/%),$(src))))
337+
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s
338+
$(PREPROC) $< charmap.txt | $(CPP) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
339+
340+
$(DATA_ASM_BUILDDIR)/%.d: $(DATA_ASM_SUBDIR)/%.s
341+
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
342+
343+
ifneq ($(NODEP),1)
344+
-include $(addprefix $(OBJ_DIR)/,$(REGULAR_DATA_ASM_SRCS:.s=.d))
355345
endif
356346

357347
$(OBJ_DIR)/sym_bss.ld: sym_bss.txt
@@ -375,8 +365,10 @@ endif
375365
# Final rules
376366

377367
# Elf from object files
368+
LDFLAGS = -Map ../../$(MAP)
378369
$(ELF): $(LD_SCRIPT) $(LD_SCRIPT_DEPS) $(OBJS)
379370
@cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ../../$< --print-memory-usage -o ../../$@ $(OBJS_REL) $(LIB) | cat
371+
@echo "cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ../../$< --print-memory-usage -o ../../$@ <objs> <libs> | cat"
380372
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(GAME_REVISION) --silent
381373

382374
# Builds the rom from the elf file

common_syms/AgbRfu_LinkManager.txt

-1
This file was deleted.

common_syms/agb_flash.txt

-10
This file was deleted.

common_syms/battle_anim_special.txt

-3
This file was deleted.

common_syms/battle_controller_pokedude.txt

-1
This file was deleted.

common_syms/battle_main.txt

-9
This file was deleted.

common_syms/berry_fix_program.txt

-4
This file was deleted.

common_syms/bg.txt

-1
This file was deleted.

common_syms/cable_club.txt

-1
This file was deleted.

common_syms/ereader_screen.txt

-1
This file was deleted.

common_syms/event_data.txt

-1
This file was deleted.

common_syms/evolution_scene.txt

-1
This file was deleted.

common_syms/fame_checker.txt

-2
This file was deleted.

common_syms/field_camera.txt

-3
This file was deleted.

common_syms/field_control_avatar.txt

-1
This file was deleted.

common_syms/field_specials.txt

-2
This file was deleted.

common_syms/fieldmap.txt

-1
This file was deleted.

common_syms/help_system.txt

-2
This file was deleted.

common_syms/help_system_util.txt

-1
This file was deleted.

common_syms/image_processing_effects.txt

-10
This file was deleted.

common_syms/librfu_rfu.txt

-5
This file was deleted.

common_syms/librfu_sio32id.txt

-1
This file was deleted.

common_syms/librfu_stwi.txt

-1
This file was deleted.

common_syms/link.txt

-35
This file was deleted.

common_syms/link_rfu_2.txt

-3
This file was deleted.

common_syms/list_menu.txt

-2
This file was deleted.

common_syms/load_save.txt

-4
This file was deleted.

common_syms/m4a.txt

-12
This file was deleted.

common_syms/main.txt

-12
This file was deleted.

common_syms/overworld.txt

-8
This file was deleted.

common_syms/party_menu.txt

-1
This file was deleted.

common_syms/quest_log.txt

-4
This file was deleted.

common_syms/random.txt

-1
This file was deleted.

common_syms/save.txt

-12
This file was deleted.

common_syms/save_failed_screen.txt

-1
This file was deleted.

common_syms/scrcmd.txt

-2
This file was deleted.

common_syms/sound.txt

-1
This file was deleted.

common_syms/sprite.txt

-2
This file was deleted.

common_syms/task.txt

-1
This file was deleted.

common_syms/text.txt

-1
This file was deleted.

common_syms/text_printer.txt

-2
This file was deleted.

common_syms/window.txt

-2
This file was deleted.

include/gba/defines.h

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#define IWRAM_DATA __attribute__((section("iwram_data")))
1414
#define EWRAM_DATA __attribute__((section("ewram_data")))
1515
#endif
16+
#define COMMON_DATA __attribute__((section("common_data")))
1617

1718
#if MODERN
1819
#define NOINLINE __attribute__((noinline))

ld_script.ld

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ SECTIONS {
3838

3939
/* COMMON starts at 0x30030E0 */
4040
INCLUDE "sym_common.ld"
41+
src/*.o(COMMON);
4142

4243
*libc.a:sbrkr.o(COMMON);
4344
end = .;

ld_script_modern.ld

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ SECTIONS {
3030

3131
/* COMMON starts at 0x30022A8 */
3232
*(COMMON);
33+
*(common_data);
3334
end = .;
3435
__end__ = .;
3536
} > IWRAM

0 commit comments

Comments
 (0)