From 3a91922e8926aad35b06234262c9f3df7dd0de5e Mon Sep 17 00:00:00 2001 From: Rozelette Date: Sun, 14 Mar 2021 21:12:14 -0500 Subject: [PATCH] Generate dependencies for C files with GLOBAL_ASM (#70) --- Makefile | 53 ++- file_setup.sh | 3 +- tables/files_with_nonmatching.txt | 593 ------------------------------ tools/depend.py | 29 ++ 4 files changed, 63 insertions(+), 615 deletions(-) delete mode 100644 tables/files_with_nonmatching.txt create mode 100755 tools/depend.py diff --git a/Makefile b/Makefile index 1608bcdf9f..b495c26ab6 100644 --- a/Makefile +++ b/Makefile @@ -35,6 +35,7 @@ endif CC := tools/ido_recomp/$(DETECTED_OS)/7.1/cc CC_OLD := tools/ido_recomp/$(DETECTED_OS)/5.3/cc +GCC := gcc QEMU_IRIX ?= ./tools/qemu-mips # if ORIG_COMPILER is 1, check that either QEMU_IRIX is set or qemu-irix package installed @@ -91,8 +92,9 @@ SRC_DIRS := $(shell find src -type d) # Instead, generate a list of assembly files based on what's listed in the linker script. S_FILES := $(shell grep build/asm ./linker_scripts/code_script.txt | sed 's/\s*build\///g; s/\.o(\..*)/\.asm/g') C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)) -O_FILES := $(C_FILES:src/%.c=build/src/%.o) \ - $(S_FILES:asm/%.asm=build/asm/%.o) +C_O_FILES := $(C_FILES:src/%.c=build/src/%.o) +S_O_FILES := $(S_FILES:asm/%.asm=build/asm/%.o) +O_FILES := $(C_O_FILES) $(S_O_FILES) ROM_FILES := $(shell cat ./tables/makerom_files.txt) UNCOMPRESSED_ROM_FILES := $(shell cat ./tables/makerom_uncompressed_files.txt) @@ -119,6 +121,8 @@ CC := ./tools/preprocess.py $(CC) -- $(AS) $(ASFLAGS) -- .PHONY: all clean setup diff-init init # disasm is not a file so we must tell make not to check it when evaluating timestamps .INTERMEDIATE: disasm +# make will delete any generated assembly files that are not a prerequisite for anything, so keep it from doing so +.PRECIOUS: asm/%.asm $(UNCOMPRESSED_ROM): $(UNCOMPRESSED_ROM_FILES) ./tools/makerom.py ./tables/dmadata_table.txt $@ @@ -160,15 +164,15 @@ build/decomp/code: build/code.bin cp $< $@ build/decomp/ovl_%: build/code.elf - $(OBJCOPY) --dump-section ovl_$*=$@ $< /dev/null + @$(OBJCOPY) --dump-section ovl_$*=$@ $< /dev/null -$(S_FILES): disasm +asm/non_matchings/%: asm/%.asm + @./tools/split_asm.py $< $@ -disasm: tables/files.txt tables/functions.txt tables/objects.txt tables/variables.txt tables/vrom_variables.txt tables/pre_boot_variables.txt tables/files_with_nonmatching.txt +asm/%.asm: disasm ; + +disasm: tables/files.txt tables/functions.txt tables/objects.txt tables/variables.txt tables/vrom_variables.txt tables/pre_boot_variables.txt ./tools/disasm.py -d ./asm -u . -l ./tables/files.txt -f ./tables/functions.txt -o ./tables/objects.txt -v ./tables/variables.txt -v ./tables/vrom_variables.txt -v ./tables/pre_boot_variables.txt - @while read -r file; do \ - ./tools/split_asm.py ./asm/$$file.asm ./asm/non_matchings/$$file; \ - done < ./tables/files_with_nonmatching.txt clean: rm -f $(ROM) $(UNCOMPRESSED_ROM) -r build asm @@ -195,33 +199,42 @@ init: # Recipes build/%.bin: build/code.elf - $(OBJCOPY) --dump-section $*=$@ $< /dev/null + @$(OBJCOPY) --dump-section $*=$@ $< /dev/null build/baserom/%: baserom/% - cp $< $@ + @cp $< $@ -build/asm/%.o: asm/%.asm +# FIXME: The process of splitting rodata changes the assembly files, so we must avoid making .o files for them until that is done. +# The simplest way to do that is to give them an order dependency on .c files' .o files +build/asm/%.o: asm/%.asm | $(C_O_FILES) $(AS) $(ASFLAGS) $^ -o $@ -build/src/overlays/%.o: src/overlays/%.c include/* $(S_FILES) +build/src/overlays/%.o: src/overlays/%.c $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< - ./tools/overlay.py $@ build/src/overlays/$*_overlay.s - $(AS) $(ASFLAGS) build/src/overlays/$*_overlay.s -o build/src/overlays/$*_overlay.o + @./tools/overlay.py $@ build/src/overlays/$*_overlay.s + @$(AS) $(ASFLAGS) build/src/overlays/$*_overlay.s -o build/src/overlays/$*_overlay.o -build/src/%.o: src/%.c include/* $(S_FILES) +build/src/%.o: src/%.c $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< -build/src/libultra/libc/ll.o: src/libultra/libc/ll.c include/* +build/src/libultra/libc/ll.o: src/libultra/libc/ll.c $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< - ./tools/set_o32abi_bit.py $@ + @./tools/set_o32abi_bit.py $@ -build/src/libultra/libc/llcvt.o: src/libultra/libc/llcvt.c include/* +build/src/libultra/libc/llcvt.o: src/libultra/libc/llcvt.c $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< - ./tools/set_o32abi_bit.py $@ + @./tools/set_o32abi_bit.py $@ build/decomp/%: decomp/% - cp $< $@ + @cp $< $@ build/comp/%.yaz0: build/decomp/% ./tools/yaz0 $< $@ +build/src/%.d: src/%.c + @./tools/depend.py $< $@ + @$(GCC) $< -Iinclude -MM -MT 'build/src/$*.o' >> $@ + +ifneq ($(MAKECMDGOALS), clean) +include $(C_FILES:src/%.c=build/src/%.d) +endif diff --git a/file_setup.sh b/file_setup.sh index 66fd90a71f..c980a50496 100755 --- a/file_setup.sh +++ b/file_setup.sh @@ -18,9 +18,8 @@ else code_bucket=$3 fi -# Split asm file, create base c file, and add it to the list of non-matchings +# Split asm file and create base c file tools/split_asm.py -c "./src/$code_path/$code_file.c" "./asm/$code_bucket/$code_file.asm" "./asm/non_matchings/$code_bucket/$code_file" -echo "$code_bucket/$code_file" >> tables/files_with_nonmatching.txt # Edit linker script to use new .c file sed -i "s/asm\/$code_file.o/src\/${2//\//\\\/}\/$code_file.o/g" linker_scripts/code_script.txt diff --git a/tables/files_with_nonmatching.txt b/tables/files_with_nonmatching.txt deleted file mode 100644 index 804cda7dbd..0000000000 --- a/tables/files_with_nonmatching.txt +++ /dev/null @@ -1,593 +0,0 @@ -boot/boot_0x800968B0 -code/code_0x800AF710 -boot/fault -boot/fault_drawer -boot/idle -boot/loadfragment -boot/loadfragment2 -boot/stackcheck -boot/viconfig -code/z_actor -code/z_bgcheck -code/z_DLF -code/z_effect_soft_sprite -code/z_lib -code/z_lights -code/z_room -code/z_scene_proc -boot/z_std_dma -code/z_scene -code/z_view -code/z_rcp -code/z_prenmi -overlays/ovl_En_Test_0x80862B70 -overlays/ovl_En_GirlA_0x80863870 -overlays/ovl_En_Part_0x80865370 -overlays/ovl_En_Light_0x80865990 -overlays/ovl_En_Door_0x80866800 -overlays/ovl_En_Box_0x80867BD0 -overlays/ovl_En_Pametfrog_0x80869D90 -overlays/ovl_En_Okuta_0x8086DE20 -overlays/ovl_En_Bom_0x80870DB0 -overlays/ovl_En_Wallmas_0x80874810 -overlays/ovl_En_Dodongo_0x80876670 -overlays/ovl_En_Firefly_0x808796F0 -overlays/ovl_En_Horse_0x8087B730 -overlays/ovl_En_Arrow_0x8088A240 -overlays/ovl_En_Elf_0x8088C510 -overlays/ovl_En_Niw_0x80891060 -overlays/ovl_En_Tite_0x808937F0 -overlays/ovl_En_Peehat_0x80896F30 -overlays/ovl_En_Butte_0x8091C0A0 -overlays/ovl_En_Insect_0x8091A8A0 -overlays/ovl_En_Fish_0x8091D630 -overlays/ovl_En_Holl_0x80899960 -overlays/ovl_En_Dinofos_0x8089A6E0 -overlays/ovl_En_Hata_0x8089E8E0 -overlays/ovl_En_Zl1_0x8089ED90 -overlays/ovl_En_Viewer_0x8089EE20 -overlays/ovl_En_Bubble_0x8089F4E0 -overlays/ovl_Door_Shutter_0x808A08F0 -overlays/ovl_En_Boom_0x808A24D0 -overlays/ovl_En_Torch2_0x808A31B0 -overlays/ovl_En_Minifrog_0x808A3670 -overlays/ovl_En_St_0x808A5050 -overlays/ovl_Obj_Wturn_0x808A7930 -overlays/ovl_En_River_Sound_0x808A7E30 -overlays/ovl_En_Ossan_0x808A80A0 -overlays/ovl_En_Famos_0x808AC920 -overlays/ovl_En_Bombf_0x808AE8C0 -overlays/ovl_En_Am_0x808AFCD0 -overlays/ovl_En_Dekubaba_0x808B1330 -overlays/ovl_En_M_Fire1_0x808B5230 -overlays/ovl_En_M_Thunder_0x808B53C0 -overlays/ovl_Bg_Breakwall_0x808B7360 -overlays/ovl_Door_Warp1_0x808B8490 -overlays/ovl_Obj_Syokudai_0x808BC010 -overlays/ovl_Item_B_Heart_0x808BCDF0 -overlays/ovl_En_Dekunuts_0x808BD1E0 -overlays/ovl_En_Bbfall_0x808BF220 -overlays/ovl_Arms_Hook_0x808C1030 -overlays/ovl_En_Bb_0x808C1D40 -overlays/ovl_Bg_Keikoku_Spr_0x808C3A50 -overlays/ovl_En_Wood02_0x808C3C00 -overlays/ovl_En_Death_0x808C4F80 -overlays/ovl_En_Minideath_0x808CA0B0 -overlays/ovl_En_Vm_0x808CC260 -overlays/ovl_Demo_Effect_0x808CD740 -overlays/ovl_Demo_Kankyo_0x808CE450 -overlays/ovl_En_Floormas_0x808D0680 -overlays/ovl_En_Rd_0x808D3E20 -overlays/ovl_Bg_F40_Flift_0x808D7550 -overlays/ovl_Obj_Mure_0x808D78D0 -overlays/ovl_En_Sw_0x808D8940 -overlays/ovl_Object_Kankyo_0x808DBE80 -overlays/ovl_En_Horse_Link_Child_0x808DE5C0 -overlays/ovl_Door_Ana_0x808E01A0 -overlays/ovl_En_Encount1_0x808E0830 -overlays/ovl_Demo_Tre_Lgt_0x808E0E40 -overlays/ovl_En_Encount2_0x808E1560 -overlays/ovl_En_Fire_Rock_0x808E1FE0 -overlays/ovl_Bg_Ctower_Rot_0x808E2070 -overlays/ovl_Mir_Ray_0x808E2600 -overlays/ovl_En_Sb_0x808E3EF0 -overlays/ovl_En_Bigslime_0x808E4FC0 -overlays/ovl_En_Karebaba_0x808F1200 -overlays/ovl_En_In_0x808F30B0 -overlays/ovl_En_Ru_0x80A389A0 -overlays/ovl_En_Bom_Chu_0x808F74B0 -overlays/ovl_En_Horse_Game_Check_0x808F8AA0 -overlays/ovl_En_Rr_0x808F9E00 -overlays/ovl_En_Fr_0x808FC550 -overlays/ovl_Obj_Oshihiki_0x80917290 -overlays/ovl_Eff_Dust_0x80918B40 -overlays/ovl_Bg_Umajump_0x80919F30 -overlays/ovl_Arrow_Fire_0x80920340 -overlays/ovl_Arrow_Ice_0x80922430 -overlays/ovl_Arrow_Light_0x80924300 -overlays/ovl_Item_Etcetera_0x8091FEF0 -overlays/ovl_Obj_Kibako_0x809261B0 -overlays/ovl_Obj_Tsubo_0x809275C0 -overlays/ovl_En_Ik_0x80929910 -overlays/ovl_Demo_Shd_0x8092C530 -overlays/ovl_En_Dns_0x8092C5C0 -overlays/ovl_Elf_Msg_0x8092DF90 -overlays/ovl_En_Honotrap_0x8092E510 -overlays/ovl_En_Tubo_Trap_0x809307E0 -overlays/ovl_Obj_Ice_Poly_0x80931560 -overlays/ovl_En_Fz_0x80932490 -overlays/ovl_En_Kusa_0x809349E0 -overlays/ovl_Obj_Bean_0x80936CF0 -overlays/ovl_Obj_Bombiwa_0x809393B0 -overlays/ovl_Obj_Switch_0x8093ABD0 -overlays/ovl_Obj_Lift_0x8093D3C0 -overlays/ovl_Obj_Hsblock_0x8093DEA0 -overlays/ovl_En_Okarina_Tag_0x8093E420 -overlays/ovl_En_Goroiwa_0x8093E8A0 -overlays/ovl_En_Daiku_0x809434B0 -overlays/ovl_En_Nwc_0x809441E0 -overlays/ovl_Item_Inbox_0x809454F0 -overlays/ovl_En_Ge1_0x80945650 -overlays/ovl_Obj_Blockstop_0x809466A0 -overlays/ovl_En_Sda_0x809468D0 -overlays/ovl_En_Clear_Tag_0x80947F60 -overlays/ovl_En_Gm_0x8094DEE0 -overlays/ovl_En_Ms_0x80952620 -overlays/ovl_En_Hs_0x80952C50 -overlays/ovl_Bg_Ingate_0x80953A90 -overlays/ovl_En_Kanban_0x80954960 -overlays/ovl_En_Attack_Niw_0x809580C0 -overlays/ovl_En_Mk_0x809592E0 -overlays/ovl_En_Owl_0x8095A510 -overlays/ovl_En_Ishi_0x8095D6E0 -overlays/ovl_Obj_Hana_0x8095FB10 -overlays/ovl_Obj_Lightswitch_0x8095FBF0 -overlays/ovl_Obj_Mure2_0x80960CF0 -overlays/ovl_En_Fu_0x809616E0 -overlays/ovl_En_Stream_0x80965650 -overlays/ovl_En_Mm_0x80965BB0 -overlays/ovl_En_Weather_Tag_0x80966410 -overlays/ovl_En_Ani_0x809679D0 -overlays/ovl_En_Js_0x809687B0 -overlays/ovl_En_Okarina_Effect_0x8096B0A0 -overlays/ovl_En_Mag_0x8096B310 -overlays/ovl_Elf_Msg2_0x8096EC40 -overlays/ovl_Bg_F40_Swlift_0x8096F160 -overlays/ovl_En_Kakasi_0x8096F5E0 -overlays/ovl_Obj_Makeoshihiki_0x80972350 -overlays/ovl_Oceff_Spot_0x80972680 -overlays/ovl_En_Torch_0x80973550 -overlays/ovl_Shot_Sun_0x80973640 -overlays/ovl_Obj_Roomtimer_0x80973C50 -overlays/ovl_En_Ssh_0x80973EF0 -overlays/ovl_Oceff_Wipe_0x809764B0 -overlays/ovl_Oceff_Storm_0x80981760 -overlays/ovl_Obj_Demo_0x80983520 -overlays/ovl_En_Minislime_0x809838F0 -overlays/ovl_En_Nutsball_0x80985C40 -overlays/ovl_Oceff_Wipe2_0x80986270 -overlays/ovl_Oceff_Wipe3_0x809879E0 -overlays/ovl_En_Dg_0x80989140 -overlays/ovl_En_Si_0x8098CA20 -overlays/ovl_Obj_Comb_0x8098CE40 -overlays/ovl_Obj_Kibako2_0x8098E5C0 -overlays/ovl_En_Hs2_0x8098EF60 -overlays/ovl_Obj_Mure3_0x8098F040 -overlays/ovl_En_Tg_0x8098F800 -overlays/ovl_En_Wf_0x80990310 -overlays/ovl_En_Skb_0x809947B0 -overlays/ovl_En_Gs_0x80997A90 -overlays/ovl_Obj_Sound_0x8099A920 -overlays/ovl_En_Crow_0x8099AB30 -overlays/ovl_En_Cow_0x8099C290 -overlays/ovl_Oceff_Wipe4_0x8099D780 -overlays/ovl_En_Zo_0x8099E790 -overlays/ovl_Obj_Makekinsuta_0x8099FA40 -overlays/ovl_En_Ge3_0x8099FEB0 -overlays/ovl_Obj_Hamishi_0x809A0F20 -overlays/ovl_En_Zl4_0x809A1BB0 -overlays/ovl_En_Mm2_0x809A2030 -overlays/ovl_Door_Spiral_0x809A2B60 -overlays/ovl_Obj_Pzlblock_0x809A33E0 -overlays/ovl_Obj_Toge_0x809A41C0 -overlays/ovl_Obj_Armos_0x809A4E00 -overlays/ovl_Obj_Boyo_0x809A5D10 -overlays/ovl_En_Grasshopper_0x809A6280 -overlays/ovl_Obj_Grass_0x809A9110 -overlays/ovl_Obj_Grass_Carry_0x809AAE60 -overlays/ovl_Obj_Grass_Unit_0x809ABDE0 -overlays/ovl_Bg_Fire_Wall_0x809AC4B0 -overlays/ovl_En_Bu_0x809ACD90 -overlays/ovl_En_Encount3_0x809ACF40 -overlays/ovl_En_Jso_0x809AD8E0 -overlays/ovl_Obj_Chikuwa_0x809B1550 -overlays/ovl_En_Knight_0x809B20F0 -overlays/ovl_En_Warp_tag_0x809C0760 -overlays/ovl_En_Aob_01_0x809C10B0 -overlays/ovl_En_Boj_01_0x809C3D80 -overlays/ovl_En_Boj_02_0x809C3E10 -overlays/ovl_En_Boj_03_0x809C3EA0 -overlays/ovl_En_Encount4_0x809C3F30 -overlays/ovl_En_Bom_Bowl_Man_0x809C4790 -overlays/ovl_En_Syateki_Man_0x809C64C0 -overlays/ovl_Bg_Icicle_0x809C9A60 -overlays/ovl_En_Syateki_Crow_0x809CA3F0 -overlays/ovl_En_Boj_04_0x809CB200 -overlays/ovl_En_Cne_01_0x809CB290 -overlays/ovl_En_Bba_01_0x809CC060 -overlays/ovl_En_Bji_01_0x809CCDE0 -overlays/ovl_Bg_Spdweb_0x809CDEC0 -overlays/ovl_En_Mt_tag_0x809CF350 -overlays/ovl_Boss_01_0x809D0530 -overlays/ovl_Boss_02_0x809DA1D0 -overlays/ovl_Boss_03_0x809E2760 -overlays/ovl_Boss_04_0x809EC040 -overlays/ovl_Boss_05_0x809EE4E0 -overlays/ovl_Boss_06_0x809F2120 -overlays/ovl_Boss_07_0x809F4980 -overlays/ovl_Bg_Dy_Yoseizo_0x80A0A8A0 -overlays/ovl_En_Boj_05_0x80A0C780 -overlays/ovl_En_Sob1_0x80A0C810 -overlays/ovl_En_Go_0x80A10FD0 -overlays/ovl_En_Raf_0x80A16D40 -overlays/ovl_Obj_Funen_0x80A19740 -overlays/ovl_Obj_Raillift_0x80A19910 -overlays/ovl_Bg_Numa_Hana_0x80A1A500 -overlays/ovl_Obj_Flowerpot_0x80A1B3D0 -overlays/ovl_Obj_Spinyroll_0x80A1DA50 -overlays/ovl_Dm_Hina_0x80A1F410 -overlays/ovl_En_Syateki_Wf_0x80A1FE50 -overlays/ovl_Obj_Skateblock_0x80A21150 -overlays/ovl_Obj_Iceblock_0x80A23090 -overlays/ovl_En_Bigpamet_0x80A27520 -overlays/ovl_En_Syateki_Dekunuts_0x80A2BC00 -overlays/ovl_Elf_Msg3_0x80A2CD10 -overlays/ovl_En_Fg_0x80A2D280 -overlays/ovl_Dm_Ravine_0x80A2E7A0 -overlays/ovl_Dm_Sa_0x80A2E960 -overlays/ovl_En_Slime_0x80A2EDA0 -overlays/ovl_En_Pr_0x80A32210 -overlays/ovl_Obj_Toudai_0x80A33B00 -overlays/ovl_Obj_Entotu_0x80A34700 -overlays/ovl_Obj_Bell_0x80A35510 -overlays/ovl_En_Syateki_Okuta_0x80A35FF0 -overlays/ovl_Obj_Shutter_0x80A37ED0 -overlays/ovl_Dm_Zl_0x80A38190 -overlays/ovl_En_Elfgrp_0x80A396B0 -overlays/ovl_Dm_Tsg_0x80A3AC60 -overlays/ovl_En_Baguo_0x80A3B080 -overlays/ovl_Obj_Vspinyroll_0x80A3C4E0 -overlays/ovl_Obj_Smork_0x80A3D680 -overlays/ovl_En_Test2_0x80A3E390 -overlays/ovl_En_Test3_0x80A3E7E0 -overlays/ovl_En_Test4_0x80A41D70 -overlays/ovl_En_Bat_0x80A434E0 -overlays/ovl_En_Sekihi_0x80A44C80 -overlays/ovl_En_Wiz_0x80A45360 -overlays/ovl_En_Wiz_Brock_0x80A48FE0 -overlays/ovl_En_Wiz_Fire_0x80A496A0 -overlays/ovl_Eff_Change_0x80A4C490 -overlays/ovl_Dm_Statue_0x80A4C9B0 -overlays/ovl_Obj_Fireshield_0x80A4CA90 -overlays/ovl_Bg_Ladder_0x80A4D9F0 -overlays/ovl_En_Mkk_0x80A4DED0 -overlays/ovl_Demo_Getitem_0x80A4FA40 -overlays/ovl_En_Dnb_0x80A4FDD0 -overlays/ovl_En_Dnh_0x80A50D40 -overlays/ovl_En_Dnk_0x80A514F0 -overlays/ovl_En_Dnq_0x80A52530 -overlays/ovl_Bg_Keikoku_Saku_0x80A537D0 -overlays/ovl_Obj_Hugebombiwa_0x80A53BE0 -overlays/ovl_En_Firefly2_0x80A560C0 -overlays/ovl_En_Rat_0x80A56150 -overlays/ovl_En_Water_Effect_0x80A587A0 -overlays/ovl_En_Kusa2_0x80A5B160 -overlays/ovl_Bg_Spout_Fire_0x80A60B20 -overlays/ovl_Bg_Dblue_Movebg_0x80A29A80 -overlays/ovl_En_Dy_Extra_0x80A612B0 -overlays/ovl_En_Bal_0x80A61810 -overlays/ovl_En_Ginko_Man_0x80A644A0 -overlays/ovl_En_Warp_Uzu_0x80A66180 -overlays/ovl_Obj_Driftice_0x80A66570 -overlays/ovl_En_Look_Nuts_0x80A678B0 -overlays/ovl_En_Mushi2_0x80A687A0 -overlays/ovl_En_Fall_0x80A6BF90 -overlays/ovl_En_Mm3_0x80A6F0A0 -overlays/ovl_Bg_Crace_Movebg_0x80A706F0 -overlays/ovl_En_Dno_0x80A711D0 -overlays/ovl_En_Pr2_0x80A73FA0 -overlays/ovl_En_Prz_0x80A75DC0 -overlays/ovl_En_Jso2_0x80A773C0 -overlays/ovl_Obj_Etcetera_0x80A7BC70 -overlays/ovl_En_Egol_0x80A7C990 -overlays/ovl_Obj_Mine_0x80A811D0 -overlays/ovl_Obj_Purify_0x80A84CD0 -overlays/ovl_En_Tru_0x80A85620 -overlays/ovl_En_Trt_0x80A8B770 -overlays/ovl_En_Test5_0x80A903B0 -overlays/ovl_En_Test6_0x80A90730 -overlays/ovl_En_Az_0x80A94A30 -overlays/ovl_En_Estone_0x80A99EA0 -overlays/ovl_Bg_Hakugin_Post_0x80A9ACD0 -overlays/ovl_Dm_Opstage_0x80A9F950 -overlays/ovl_Dm_Stk_0x80A9FDB0 -overlays/ovl_Dm_Char00_0x80AA5580 -overlays/ovl_Dm_Char01_0x80AA81E0 -overlays/ovl_Dm_Char02_0x80AAAE30 -overlays/ovl_Dm_Char03_0x80AAB4A0 -overlays/ovl_Dm_Char04_0x80AABC40 -overlays/ovl_Dm_Char05_0x80AAC5A0 -overlays/ovl_Dm_Char06_0x80AAE680 -overlays/ovl_Dm_Char07_0x80AAE9C0 -overlays/ovl_Dm_Char08_0x80AAF050 -overlays/ovl_Dm_Char09_0x80AB1E10 -overlays/ovl_Obj_Tokeidai_0x80AB2790 -overlays/ovl_En_Mnk_0x80AB4D10 -overlays/ovl_En_Egblock_0x80ABA7A0 -overlays/ovl_En_Guard_Nuts_0x80ABB0E0 -overlays/ovl_Bg_Hakugin_Bombwall_0x80ABBFC0 -overlays/ovl_Obj_Tokei_Tobira_0x80ABD1D0 -overlays/ovl_Bg_Hakugin_Elvpole_0x80ABD830 -overlays/ovl_En_Ma4_0x80ABDCA0 -overlays/ovl_En_Twig_0x80AC0830 -overlays/ovl_En_Po_Fusen_0x80AC1270 -overlays/ovl_En_Door_Etc_0x80AC1ED0 -overlays/ovl_En_Bigokuta_0x80AC26F0 -overlays/ovl_Bg_Icefloe_0x80AC48F0 -overlays/ovl_Obj_Ocarinalift_0x80AC94C0 -overlays/ovl_En_Time_Tag_0x80AC9EA0 -overlays/ovl_Bg_Open_Shutter_0x80ACAB10 -overlays/ovl_Bg_Open_Spot_0x80ACB1E0 -overlays/ovl_Obj_Aqua_0x80ACB6A0 -overlays/ovl_En_Elforg_0x80ACC470 -overlays/ovl_En_Elfbub_0x80ACDCD0 -overlays/ovl_En_Fu_Mato_0x80ACE330 -overlays/ovl_En_Fu_Kago_0x80ACF780 -overlays/ovl_En_Osn_0x80AD0830 -overlays/ovl_Bg_Ctower_Gear_0x80AD2B70 -overlays/ovl_En_Trt2_0x80AD3380 -overlays/ovl_Obj_Tokei_Step_0x80AD5BB0 -overlays/ovl_Bg_Lotus_0x80AD6760 -overlays/ovl_En_Kame_0x80AD6DD0 -overlays/ovl_Obj_Takaraya_Wall_0x80AD9240 -overlays/ovl_Bg_Fu_Mizu_0x80ADAAF0 -overlays/ovl_En_Sellnuts_0x80ADADD0 -overlays/ovl_Bg_Dkjail_Ivy_0x80ADE230 -overlays/ovl_Obj_Visiblock_0x80ADEA70 -overlays/ovl_En_Takaraya_0x80ADEB90 -overlays/ovl_En_Tsn_0x80ADFCA0 -overlays/ovl_En_Ds2n_0x80AE1650 -overlays/ovl_En_Fsn_0x80AE1B70 -overlays/ovl_En_Shn_0x80AE6130 -overlays/ovl_En_Stop_heishi_0x80AE73A0 -overlays/ovl_Obj_Bigicicle_0x80AE8B70 -overlays/ovl_En_Lift_Nuts_0x80AE9A20 -overlays/ovl_En_Tk_0x80AEC460 -overlays/ovl_Bg_Market_Step_0x80AF0060 -overlays/ovl_Obj_Lupygamelift_0x80AF0170 -overlays/ovl_En_Test7_0x80AF0820 -overlays/ovl_Obj_Lightblock_0x80AF3910 -overlays/ovl_Mir_Ray2_0x80AF3F70 -overlays/ovl_En_Wdhand_0x80AF43F0 -overlays/ovl_En_Gamelupy_0x80AF6760 -overlays/ovl_Bg_Danpei_Movebg_0x80AF6DE0 -overlays/ovl_En_Snowwd_0x80AF7640 -overlays/ovl_En_Pm_0x80AF7B40 -overlays/ovl_En_Gakufu_0x80AFC960 -overlays/ovl_Elf_Msg4_0x80AFD380 -overlays/ovl_Elf_Msg5_0x80AFD990 -overlays/ovl_En_Col_Man_0x80AFDC40 -overlays/ovl_En_Talk_Gibud_0x80AFE8A0 -overlays/ovl_En_Giant_0x80B01990 -overlays/ovl_Obj_Snowball_0x80B02CD0 -overlays/ovl_Boss_Hakugin_0x80B05290 -overlays/ovl_En_Gb2_0x80B0F5E0 -overlays/ovl_En_Onpuman_0x80B11E60 -overlays/ovl_Bg_Tobira01_0x80B12430 -overlays/ovl_En_Tag_Obj_0x80B12870 -overlays/ovl_Obj_Dhouse_0x80B12980 -overlays/ovl_Obj_Hakaisi_0x80B14180 -overlays/ovl_Bg_Hakugin_Switch_0x80B15790 -overlays/ovl_En_Snowman_0x80B16B00 -overlays/ovl_En_Po_Sisters_0x80B1A3B0 -overlays/ovl_En_Pp_0x80B1DEB0 -overlays/ovl_En_Hakurock_0x80B21B00 -overlays/ovl_En_Hanabi_0x80B22C00 -overlays/ovl_Obj_Dowsing_0x80B23D50 -overlays/ovl_Obj_Wind_0x80B23ED0 -overlays/ovl_En_Racedog_0x80B24630 -overlays/ovl_En_Kendo_Js_0x80B262A0 -overlays/ovl_Bg_Botihasira_0x80B28080 -overlays/ovl_En_Fish2_0x80B28370 -overlays/ovl_En_Pst_0x80B2B830 -overlays/ovl_En_Poh_0x80B2C6F0 -overlays/ovl_Obj_Spidertent_0x80B2FB10 -overlays/ovl_En_Zoraegg_0x80B31590 -overlays/ovl_En_Kbt_0x80B33D30 -overlays/ovl_En_Gg_0x80B34F70 -overlays/ovl_En_Maruta_0x80B37080 -overlays/ovl_Obj_Snowball2_0x80B38E20 -overlays/ovl_En_Gg2_0x80B3AC50 -overlays/ovl_Obj_Ghaka_0x80B3C260 -overlays/ovl_En_Dnp_0x80B3CA20 -overlays/ovl_En_Dai_0x80B3DFF0 -overlays/ovl_Bg_Goron_Oyu_0x80B40080 -overlays/ovl_En_Kgy_0x80B40800 -overlays/ovl_En_Invadepoh_0x80B439B0 -overlays/ovl_En_Gk_0x80B50410 -overlays/ovl_En_An_0x80B53840 -overlays/ovl_En_Bee_0x80B5A720 -overlays/ovl_En_Ot_0x80B5B2E0 -overlays/ovl_En_Dragon_0x80B5E890 -overlays/ovl_Obj_Dora_0x80B60AD0 -overlays/ovl_En_Bigpo_0x80B615E0 -overlays/ovl_Obj_Kendo_Kanban_0x80B654C0 -overlays/ovl_Obj_Hariko_0x80B66A20 -overlays/ovl_En_Sth_0x80B66D30 -overlays/ovl_Bg_Sinkai_Kabe_0x80B6D660 -overlays/ovl_Bg_Haka_Curtain_0x80B6DBE0 -overlays/ovl_Bg_Kin2_Bombwall_0x80B6E020 -overlays/ovl_Bg_Kin2_Fence_0x80B6E820 -overlays/ovl_Bg_Kin2_Picture_0x80B6EFA0 -overlays/ovl_Bg_Kin2_Shelf_0x80B6FB30 -overlays/ovl_En_Rail_Skb_0x80B708C0 -overlays/ovl_En_Jg_0x80B73A90 -overlays/ovl_En_Tru_Mt_0x80B76030 -overlays/ovl_Obj_Um_0x80B77770 -overlays/ovl_En_Neo_Reeba_0x80B7C890 -overlays/ovl_Bg_Mbar_Chair_0x80B7E930 -overlays/ovl_Bg_Ikana_Block_0x80B7EA60 -overlays/ovl_Bg_Ikana_Mirror_0x80B7F730 -overlays/ovl_Bg_Ikana_Rotaryroom_0x80B802E0 -overlays/ovl_Bg_Dblue_Balance_0x80B823B0 -overlays/ovl_Bg_Dblue_Waterfall_0x80B83C80 -overlays/ovl_En_Kaizoku_0x80B85590 -overlays/ovl_En_Ge2_0x80B8B2D0 -overlays/ovl_En_Ma_Yts_0x80B8D030 -overlays/ovl_En_Ma_Yto_0x80B8E520 -overlays/ovl_Obj_Tokei_Turret_0x80B91CC0 -overlays/ovl_Bg_Dblue_Elevator_0x80B91F20 -overlays/ovl_Obj_Warpstone_0x80B92B10 -overlays/ovl_En_Zog_0x80B93310 -overlays/ovl_Obj_Rotlift_0x80B95E20 -overlays/ovl_Obj_Jg_Gakki_0x80B961E0 -overlays/ovl_Bg_Inibs_Movebg_0x80B96410 -overlays/ovl_En_Zot_0x80B965D0 -overlays/ovl_Obj_Tree_0x80B9A0B0 -overlays/ovl_Obj_Y2lift_0x80B9A650 -overlays/ovl_Obj_Y2shutter_0x80B9A980 -overlays/ovl_Obj_Boat_0x80B9AF50 -overlays/ovl_Obj_Taru_0x80B9B6E0 -overlays/ovl_Obj_Hunsui_0x80B9C450 -overlays/ovl_En_Jc_Mato_0x80B9DEE0 -overlays/ovl_Mir_Ray3_0x80B9E2C0 -overlays/ovl_En_Zob_0x80B9F570 -overlays/ovl_Elf_Msg6_0x80BA15A0 -overlays/ovl_Obj_Nozoki_0x80BA2420 -overlays/ovl_En_Toto_0x80BA36C0 -overlays/ovl_En_Railgibud_0x80BA5400 -overlays/ovl_En_Baba_0x80BA8820 -overlays/ovl_En_Suttari_0x80BAA6D0 -overlays/ovl_En_Zod_0x80BAEF70 -overlays/ovl_En_Kujiya_0x80BB08E0 -overlays/ovl_En_Geg_0x80BB16D0 -overlays/ovl_Obj_Kinoko_0x80BB4700 -overlays/ovl_Obj_Yasi_0x80BB4AF0 -overlays/ovl_En_Tanron1_0x80BB4E00 -overlays/ovl_En_Tanron2_0x80BB67D0 -overlays/ovl_En_Tanron3_0x80BB85A0 -overlays/ovl_Obj_Chan_0x80BB98E0 -overlays/ovl_En_Zos_0x80BBACA0 -overlays/ovl_En_S_Goro_0x80BBCA80 -overlays/ovl_En_Nb_0x80BBFDB0 -overlays/ovl_En_Ja_0x80BC1900 -overlays/ovl_Bg_F40_Block_0x80BC3980 -overlays/ovl_Bg_F40_Switch_0x80BC47B0 -overlays/ovl_En_Po_Composer_0x80BC4F30 -overlays/ovl_En_Guruguru_0x80BC6BF0 -overlays/ovl_Oceff_Wipe5_0x80BC7AD0 -overlays/ovl_En_Stone_heishi_0x80BC9270 -overlays/ovl_Oceff_Wipe6_0x80BCA5A0 -overlays/ovl_En_Scopenuts_0x80BCABF0 -overlays/ovl_En_Scopecrow_0x80BCD000 -overlays/ovl_Oceff_Wipe7_0x80BCDCB0 -overlays/ovl_Eff_Kamejima_Wave_0x80BCEB20 -overlays/ovl_En_Hg_0x80BCF1D0 -overlays/ovl_En_Hgo_0x80BD02B0 -overlays/ovl_En_Zov_0x80BD11E0 -overlays/ovl_En_Ah_0x80BD2A30 -overlays/ovl_Obj_Hgdoor_0x80BD4090 -overlays/ovl_Bg_Ikana_Bombwall_0x80BD4720 -overlays/ovl_Bg_Ikana_Shutter_0x80BD5690 -overlays/ovl_Bg_Haka_Bombwall_0x80BD5E00 -overlays/ovl_Bg_Haka_Tomb_0x80BD6580 -overlays/ovl_En_Sc_Ruppe_0x80BD6910 -overlays/ovl_Bg_Iknv_Doukutu_0x80BD6F10 -overlays/ovl_Bg_Iknv_Obj_0x80BD7AB0 -overlays/ovl_En_Pamera_0x80BD82B0 -overlays/ovl_Obj_HsStump_0x80BDAA30 -overlays/ovl_En_Hidden_Nuts_0x80BDB040 -overlays/ovl_En_Zow_0x80BDC270 -overlays/ovl_En_Talk_0x80BDDFE0 -overlays/ovl_En_Al_0x80BDE1A0 -overlays/ovl_En_Tab_0x80BE04E0 -overlays/ovl_En_Nimotsu_0x80BE1C80 -overlays/ovl_En_Hit_Tag_0x80BE2030 -overlays/ovl_En_Ruppecrow_0x80BE2260 -overlays/ovl_En_Tanron4_0x80BE3B80 -overlays/ovl_En_Tanron5_0x80BE4930 -overlays/ovl_En_Tanron6_0x80BE6040 -overlays/ovl_En_Daiku2_0x80BE61D0 -overlays/ovl_En_Muto_0x80BE7B00 -overlays/ovl_En_Baisen_0x80BE84F0 -overlays/ovl_En_Heishi_0x80BE8F20 -overlays/ovl_En_Demo_heishi_0x80BE9510 -overlays/ovl_En_Dt_0x80BE9B20 -overlays/ovl_En_Cha_0x80BEB520 -overlays/ovl_Obj_Dinner_0x80BEB940 -overlays/ovl_Eff_Lastday_0x80BEBAC0 -overlays/ovl_Bg_Ikana_Dharma_0x80BEC240 -overlays/ovl_En_Akindonuts_0x80BECBE0 -overlays/ovl_Eff_Stk_0x80BF0D90 -overlays/ovl_En_Ig_0x80BF1150 -overlays/ovl_En_Rg_0x80BF3920 -overlays/ovl_En_Osk_0x80BF5C20 -overlays/ovl_En_Sth2_0x80BF74E0 -overlays/ovl_En_Yb_0x80BFA100 -overlays/ovl_En_Rz_0x80BFB480 -overlays/ovl_En_Scopecoin_0x80BFCFA0 -overlays/ovl_En_Bjt_0x80BFD2E0 -overlays/ovl_En_Bomjima_0x80BFE170 -overlays/ovl_En_Bomjimb_0x80C00EA0 -overlays/ovl_En_Bombers_0x80C03530 -overlays/ovl_En_Bombers2_0x80C04930 -overlays/ovl_En_Bombal_0x80C05A70 -overlays/ovl_Obj_Moon_Stone_0x80C06510 -overlays/ovl_Obj_Mu_Pict_0x80C06AA0 -overlays/ovl_Bg_Ikninside_0x80C07110 -overlays/ovl_Eff_Zoraband_0x80C07740 -overlays/ovl_Obj_Kepn_Koya_0x80C07B20 -overlays/ovl_Obj_Usiyane_0x80C07C80 -overlays/ovl_En_Nnh_0x80C08760 -overlays/ovl_Obj_Kzsaku_0x80C08A80 -overlays/ovl_Obj_Milk_Bin_0x80C08E40 -overlays/ovl_En_Kitan_0x80C090D0 -overlays/ovl_Bg_Astr_Bombwall_0x80C09ED0 -overlays/ovl_Bg_Iknin_Susceil_0x80C0A740 -overlays/ovl_En_Bsb_0x80C0B290 -overlays/ovl_En_Recepgirl_0x80C0FFD0 -overlays/ovl_En_Thiefbird_0x80C10770 -overlays/ovl_En_Jgame_Tsn_0x80C13930 -overlays/ovl_Obj_Jgame_Light_0x80C152F0 -overlays/ovl_Obj_Yado_0x80C161E0 -overlays/ovl_Demo_Syoten_0x80C16480 -overlays/ovl_Demo_Moonend_0x80C17A10 -overlays/ovl_Bg_Lbfshot_0x80C18120 -overlays/ovl_Bg_Last_Bwall_0x80C18240 -overlays/ovl_En_And_0x80C18B90 -overlays/ovl_En_Invadepoh_Demo_0x80C192A0 -overlays/ovl_Obj_Danpeilift_0x80C1ADC0 -overlays/ovl_En_Fall2_0x80C1B640 -overlays/ovl_Dm_Al_0x80C1BD90 -overlays/ovl_Dm_An_0x80C1C410 -overlays/ovl_Dm_Ah_0x80C1D410 -overlays/ovl_Dm_Nb_0x80C1DED0 -overlays/ovl_En_Drs_0x80C1E290 -overlays/ovl_En_Ending_Hero_0x80C1E690 -overlays/ovl_Dm_Bal_0x80C1E9E0 -overlays/ovl_En_Paper_0x80C1F3D0 -overlays/ovl_En_Hint_Skb_0x80C1FCF0 -overlays/ovl_Dm_Tag_0x80C22350 -overlays/ovl_En_Bh_0x80C22D40 -overlays/ovl_En_Ending_Hero2_0x80C23230 -overlays/ovl_En_Ending_Hero3_0x80C23460 -overlays/ovl_En_Ending_Hero4_0x80C23690 -overlays/ovl_En_Ending_Hero5_0x80C238C0 -overlays/ovl_En_Ending_Hero6_0x80C23C90 -overlays/ovl_Dm_Gm_0x80C24360 -overlays/ovl_Obj_Swprize_0x80C25360 -overlays/ovl_En_Invisible_Ruppe_0x80C258A0 -overlays/ovl_Obj_Ending_0x80C25BC0 -overlays/ovl_En_Rsn_0x80C25D40 -code/z_skelanime -code/z_collision_check diff --git a/tools/depend.py b/tools/depend.py new file mode 100755 index 0000000000..5349c8a254 --- /dev/null +++ b/tools/depend.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 +import argparse, os + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + + parser.add_argument('input', help='input .c file') + parser.add_argument('output', help='output .d file') + args = parser.parse_args() + + asm_file = None + with open(args.input, 'r') as f: + lines = f.readlines() + # Search for the first GLOBAL_ASM and use that as a dependency + # We won't list all split assembly files as it is tricky to properly set up make recipes with multiple outputs + for line in lines: + if line.startswith('#pragma GLOBAL_ASM('): + lines = line.replace('//', '/').split('/') + asm_file = '/'.join(lines[1:-1]).replace('non_matchings/', '') + '.asm ' # base .asm file + asm_file += '/'.join(lines[1:-1]) # split function .asm file + break + + with open(args.output, 'w') as f: + f.write('build/' + args.input.replace('.c', '.o' + ': ')) + if asm_file is not None: + f.write(asm_file + ' ') + + f.write('\n') +