mirror of
https://github.com/zeldaret/ph
synced 2026-07-08 21:55:05 -04:00
Keep original file ext in .o files
This commit is contained in:
@@ -19,8 +19,8 @@ ASSETS_TXT := $(ROOT)/assets.txt
|
||||
|
||||
ASM_FILES := $(wildcard asm/*.s) $(wildcard asm/*/*.s)
|
||||
CXX_FILES := $(wildcard src/*.cpp) $(wildcard src/*/*.cpp)
|
||||
ASM_OBJS = $(ASM_FILES:%.s=$(TARGET_DIR)/%.o)
|
||||
CXX_OBJS = $(CXX_FILES:%.cpp=$(TARGET_DIR)/%.o)
|
||||
ASM_OBJS = $(ASM_FILES:%.s=$(TARGET_DIR)/%.s.o)
|
||||
CXX_OBJS = $(CXX_FILES:%.cpp=$(TARGET_DIR)/%.cpp.o)
|
||||
|
||||
OV_BINS := $(wildcard $(TARGET_DIR)/overlays/*.bin)
|
||||
OV_LZS = $(OV_BINS:%.bin=%.lz)
|
||||
@@ -77,11 +77,11 @@ clean:
|
||||
lcf: setup $(TOOLS_DIR)/lcf.py
|
||||
python $(TOOLS_DIR)/lcf.py
|
||||
|
||||
$(ASM_OBJS): $(TARGET_DIR)/%.o: %.s
|
||||
$(ASM_OBJS): $(TARGET_DIR)/%.o: %
|
||||
mkdir -p $(dir $@)
|
||||
LM_LICENSE_FILE=$(MW_LICENSE) $(MW_ASM) $(ASM_FLAGS) $< -o $@
|
||||
|
||||
$(CXX_OBJS): $(TARGET_DIR)/%.o: %.cpp
|
||||
$(CXX_OBJS): $(TARGET_DIR)/%.o: %
|
||||
mkdir -p $(dir $@)
|
||||
LM_LICENSE_FILE=$(MW_LICENSE) $(MW_CC) $(CC_FLAGS) $< -o $@
|
||||
|
||||
|
||||
+106
-105
@@ -8,221 +8,222 @@ class Overlay:
|
||||
def name(path: str): return path.split("/")[-1]
|
||||
|
||||
ARM9_OBJECTS = [
|
||||
'asm/main.o'
|
||||
'asm/main.s'
|
||||
]
|
||||
|
||||
ITCM_OBJECTS = [
|
||||
'asm/itcm.o'
|
||||
'asm/itcm.s'
|
||||
]
|
||||
|
||||
DTCM_OBJECTS = [
|
||||
'asm/dtcm.o'
|
||||
'asm/dtcm.s'
|
||||
]
|
||||
|
||||
ov00 = Overlay(name='ov00', after='ARM9', objects=[
|
||||
'asm/ov00/ov00_020773c0.o',
|
||||
'asm/ov00/ov00_02078e00.o',
|
||||
'asm/ov00/ov00_02079d28.o',
|
||||
'asm/ov00/ov00_0207cc84.o',
|
||||
'asm/ov00/ov00_02084eac.o',
|
||||
'asm/ov00/ov00_0208b220.o',
|
||||
'asm/ov00/ov00_02096160.o',
|
||||
'asm/ov00/ov00_0209afc4.o',
|
||||
'asm/ov00/ov00_0209bea0.o',
|
||||
'asm/ov00/ov00_020a03e4.o',
|
||||
'asm/ov00/inventory.o',
|
||||
'asm/ov00/ov00_020ae7a4.o',
|
||||
'asm/ov00/ov00_020b4940.o',
|
||||
'asm/ov00/ov00_020c36b4.o',
|
||||
'asm/ov00/ov00_020c43c8.o',
|
||||
'asm/ov00/ov00_020c9a68.o',
|
||||
'asm/ov00/ov00_020d0000.o',
|
||||
'asm/ov00/ov00_020d1870.o',
|
||||
'asm/ov00/ov00_020d5458.o',
|
||||
'asm/ov00/ov00_init.o'
|
||||
'asm/ov00/ov00_020773c0.s',
|
||||
'asm/ov00/ov00_02078e00.s',
|
||||
'asm/ov00/ov00_02079d28.s',
|
||||
'asm/ov00/ov00_0207cc84.s',
|
||||
'asm/ov00/ov00_02084eac.s',
|
||||
'asm/ov00/ov00_0208b220.s',
|
||||
'asm/ov00/ov00_02096160.s',
|
||||
'asm/ov00/ov00_0209afc4.s',
|
||||
'asm/ov00/ov00_0209bea0.s',
|
||||
'asm/ov00/ov00_020a03e4.s',
|
||||
'src/Inventory.s',
|
||||
'asm/ov00/inventory.s',
|
||||
'asm/ov00/ov00_020ae7a4.s',
|
||||
'asm/ov00/ov00_020b4940.s',
|
||||
'asm/ov00/ov00_020c36b4.s',
|
||||
'asm/ov00/ov00_020c43c8.s',
|
||||
'asm/ov00/ov00_020c9a68.s',
|
||||
'asm/ov00/ov00_020d0000.s',
|
||||
'asm/ov00/ov00_020d1870.s',
|
||||
'asm/ov00/ov00_020d5458.s',
|
||||
'asm/ov00/ov00_init.s'
|
||||
])
|
||||
ov01 = Overlay(name='ov01', after=ov00, objects=[
|
||||
'asm/ov01.o'
|
||||
'asm/ov01.s'
|
||||
])
|
||||
ov02 = Overlay(name='ov02', after=ov00, objects=[
|
||||
'asm/ov02.o'
|
||||
'asm/ov02.s'
|
||||
])
|
||||
ov03 = Overlay(name='ov03', after=ov00, objects=[
|
||||
'asm/ov03.o'
|
||||
'asm/ov03.s'
|
||||
])
|
||||
ov04 = Overlay(name='ov04', after=ov03, objects=[
|
||||
'asm/ov04.o'
|
||||
'asm/ov04.s'
|
||||
])
|
||||
ov05 = Overlay(name='ov05', after=ov03, objects=[
|
||||
'asm/ov05.o'
|
||||
'asm/ov05.s'
|
||||
])
|
||||
ov06 = Overlay(name='ov06', after=ov03, objects=[
|
||||
'asm/ov06.o'
|
||||
'asm/ov06.s'
|
||||
])
|
||||
ov07 = Overlay(name='ov07', after=ov03, objects=[
|
||||
'asm/ov07.o'
|
||||
'asm/ov07.s'
|
||||
])
|
||||
ov08 = Overlay(name='ov08', after=ov05, objects=[
|
||||
'asm/ov08.o'
|
||||
'asm/ov08.s'
|
||||
])
|
||||
ov09 = Overlay(name='ov09', after=ov05, objects=[
|
||||
'asm/ov09.o'
|
||||
'asm/ov09.s'
|
||||
])
|
||||
ov10 = Overlay(name='ov10', after=ov05, objects=[
|
||||
'asm/ov10.o'
|
||||
'asm/ov10.s'
|
||||
])
|
||||
ov11 = Overlay(name='ov11', after=ov05, objects=[
|
||||
'asm/ov11.o'
|
||||
'asm/ov11.s'
|
||||
])
|
||||
ov12 = Overlay(name='ov12', after=ov05, objects=[
|
||||
'asm/ov12.o'
|
||||
'asm/ov12.s'
|
||||
])
|
||||
ov13 = Overlay(name='ov13', after=ov05, objects=[
|
||||
'asm/ov13.o'
|
||||
'asm/ov13.s'
|
||||
])
|
||||
ov14 = Overlay(name='ov14', after=ov09, objects=[
|
||||
'asm/ov14.o'
|
||||
'asm/ov14.s'
|
||||
])
|
||||
ov15 = Overlay(name='ov15', after=ov09, objects=[
|
||||
'asm/ov15.o'
|
||||
'asm/ov15.s'
|
||||
])
|
||||
ov16 = Overlay(name='ov16', after=ov09, objects=[
|
||||
'asm/ov16.o'
|
||||
'asm/ov16.s'
|
||||
])
|
||||
ov17 = Overlay(name='ov17', after=ov14, objects=[
|
||||
'asm/ov17.o'
|
||||
'asm/ov17.s'
|
||||
])
|
||||
ov18 = Overlay(name='ov18', after=ov14, objects=[
|
||||
'asm/ov18.o'
|
||||
'asm/ov18.s'
|
||||
])
|
||||
ov19 = Overlay(name='ov19', after=ov18, objects=[
|
||||
'asm/ov19.o'
|
||||
'asm/ov19.s'
|
||||
])
|
||||
ov20 = Overlay(name='ov20', after=ov18, objects=[
|
||||
'asm/ov20.o'
|
||||
'asm/ov20.s'
|
||||
])
|
||||
ov21 = Overlay(name='ov21', after=ov18, objects=[
|
||||
'asm/ov21.o'
|
||||
'asm/ov21.s'
|
||||
])
|
||||
ov22 = Overlay(name='ov22', after=ov18, objects=[
|
||||
'asm/ov22.o'
|
||||
'asm/ov22.s'
|
||||
])
|
||||
ov23 = Overlay(name='ov23', after=ov18, objects=[
|
||||
'asm/ov23.o'
|
||||
'asm/ov23.s'
|
||||
])
|
||||
ov24 = Overlay(name='ov24', after=ov18, objects=[
|
||||
'asm/ov24.o'
|
||||
'asm/ov24.s'
|
||||
])
|
||||
ov25 = Overlay(name='ov25', after=ov18, objects=[
|
||||
'asm/ov25.o'
|
||||
'asm/ov25.s'
|
||||
])
|
||||
ov26 = Overlay(name='ov26', after=ov18, objects=[
|
||||
'asm/ov26.o'
|
||||
'asm/ov26.s'
|
||||
])
|
||||
ov27 = Overlay(name='ov27', after=ov18, objects=[
|
||||
'asm/ov27.o'
|
||||
'asm/ov27.s'
|
||||
])
|
||||
ov28 = Overlay(name='ov28', after=ov18, objects=[
|
||||
'asm/ov28.o'
|
||||
'asm/ov28.s'
|
||||
])
|
||||
ov29 = Overlay(name='ov29', after=ov18, objects=[
|
||||
'asm/ov29.o'
|
||||
'asm/ov29.s'
|
||||
])
|
||||
ov30 = Overlay(name='ov30', after=ov29, objects=[
|
||||
'asm/ov30.o'
|
||||
'asm/ov30.s'
|
||||
])
|
||||
ov31 = Overlay(name='ov31', after=ov29, objects=[
|
||||
'asm/ov31.o'
|
||||
'asm/ov31.s'
|
||||
])
|
||||
ov32 = Overlay(name='ov32', after=ov29, objects=[
|
||||
'asm/ov32.o'
|
||||
'asm/ov32.s'
|
||||
])
|
||||
ov33 = Overlay(name='ov33', after=ov29, objects=[
|
||||
'asm/ov33.o'
|
||||
'asm/ov33.s'
|
||||
])
|
||||
ov34 = Overlay(name='ov34', after=ov29, objects=[
|
||||
'asm/ov34.o'
|
||||
'asm/ov34.s'
|
||||
])
|
||||
ov35 = Overlay(name='ov35', after=ov29, objects=[
|
||||
'asm/ov35.o'
|
||||
'asm/ov35.s'
|
||||
])
|
||||
ov36 = Overlay(name='ov36', after=ov29, objects=[
|
||||
'asm/ov36.o'
|
||||
'asm/ov36.s'
|
||||
])
|
||||
ov37 = Overlay(name='ov37', after=ov29, objects=[
|
||||
'asm/ov37.o'
|
||||
'asm/ov37.s'
|
||||
])
|
||||
ov38 = Overlay(name='ov38', after=ov29, objects=[
|
||||
'asm/ov38.o'
|
||||
'asm/ov38.s'
|
||||
])
|
||||
ov39 = Overlay(name='ov39', after=ov29, objects=[
|
||||
'asm/ov39.o'
|
||||
'asm/ov39.s'
|
||||
])
|
||||
ov40 = Overlay(name='ov40', after=ov29, objects=[
|
||||
'asm/ov40.o'
|
||||
'asm/ov40.s'
|
||||
])
|
||||
ov41 = Overlay(name='ov41', after=ov30, objects=[
|
||||
'asm/ov41.o'
|
||||
'asm/ov41.s'
|
||||
])
|
||||
ov42 = Overlay(name='ov42', after=ov30, objects=[
|
||||
'asm/ov42.o'
|
||||
'asm/ov42.s'
|
||||
])
|
||||
ov43 = Overlay(name='ov43', after=ov30, objects=[
|
||||
'asm/ov43.o'
|
||||
'asm/ov43.s'
|
||||
])
|
||||
ov44 = Overlay(name='ov44', after=ov30, objects=[
|
||||
'asm/ov44.o'
|
||||
'asm/ov44.s'
|
||||
])
|
||||
ov45 = Overlay(name='ov45', after=ov30, objects=[
|
||||
'asm/ov45.o'
|
||||
'asm/ov45.s'
|
||||
])
|
||||
ov46 = Overlay(name='ov46', after=ov44, objects=[
|
||||
'asm/ov46.o'
|
||||
'asm/ov46.s'
|
||||
])
|
||||
ov47 = Overlay(name='ov47', after=ov44, objects=[
|
||||
'asm/ov47.o'
|
||||
'asm/ov47.s'
|
||||
])
|
||||
ov48 = Overlay(name='ov48', after=ov44, objects=[
|
||||
'asm/ov48.o'
|
||||
'asm/ov48.s'
|
||||
])
|
||||
ov49 = Overlay(name='ov49', after=ov48, objects=[
|
||||
'asm/ov49.o'
|
||||
'asm/ov49.s'
|
||||
])
|
||||
ov50 = Overlay(name='ov50', after=ov48, objects=[
|
||||
'asm/ov50.o'
|
||||
'asm/ov50.s'
|
||||
])
|
||||
ov51 = Overlay(name='ov51', after=ov48, objects=[
|
||||
'asm/ov51.o'
|
||||
'asm/ov51.s'
|
||||
])
|
||||
ov52 = Overlay(name='ov52', after=ov48, objects=[
|
||||
'asm/ov52.o'
|
||||
'asm/ov52.s'
|
||||
])
|
||||
ov53 = Overlay(name='ov53', after=ov50, objects=[
|
||||
'asm/ov53.o'
|
||||
'asm/ov53.s'
|
||||
])
|
||||
ov54 = Overlay(name='ov54', after=ov50, objects=[
|
||||
'asm/ov54.o'
|
||||
'asm/ov54.s'
|
||||
])
|
||||
ov55 = Overlay(name='ov55', after=ov50, objects=[
|
||||
'asm/ov55.o'
|
||||
'asm/ov55.s'
|
||||
])
|
||||
ov56 = Overlay(name='ov56', after=ov50, objects=[
|
||||
'asm/ov56.o'
|
||||
'asm/ov56.s'
|
||||
])
|
||||
ov57 = Overlay(name='ov57', after=ov50, objects=[
|
||||
'asm/ov57.o'
|
||||
'asm/ov57.s'
|
||||
])
|
||||
ov58 = Overlay(name='ov58', after=ov50, objects=[
|
||||
'asm/ov58.o'
|
||||
'asm/ov58.s'
|
||||
])
|
||||
ov59 = Overlay(name='ov59', after=ov50, objects=[
|
||||
'asm/ov59.o'
|
||||
'asm/ov59.s'
|
||||
])
|
||||
ov60 = Overlay(name='ov60', after=ov12, objects=[
|
||||
'asm/ov60.o'
|
||||
'asm/ov60.s'
|
||||
])
|
||||
ov61 = Overlay(name='ov61', after=ov12, objects=[
|
||||
'asm/ov61.o'
|
||||
'asm/ov61.s'
|
||||
])
|
||||
|
||||
OVERLAYS = [
|
||||
@@ -261,34 +262,34 @@ with open(f'{BUILD}arm9_linker_script.lcf', 'w') as file:
|
||||
file.write('\n')
|
||||
file.write('SECTIONS {\n')
|
||||
file.write(' .arm9 : {\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}(.text)\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}(.init)\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}(.rodata)\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}(.sinit)\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}.o(.text)\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}.o(.init)\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}.o(.rodata)\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}.o(.sinit)\n')
|
||||
file.write(' . = ALIGN(32);\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}(.data)\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}(.bss)\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}(.sbss)\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}.o(.data)\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}.o(.bss)\n')
|
||||
for obj in ARM9_OBJECTS: file.write(f' {name(obj)}.o(.sbss)\n')
|
||||
file.write(' . = ALIGN(32);\n')
|
||||
file.write(' } > ARM9\n')
|
||||
file.write('\n')
|
||||
file.write(' .itcm : {\n')
|
||||
file.write(' itcm_start = .;\n')
|
||||
for obj in ITCM_OBJECTS: file.write(f' {name(obj)}(.text)\n')
|
||||
for obj in ITCM_OBJECTS: file.write(f' {name(obj)}(.rodata)\n')
|
||||
for obj in ITCM_OBJECTS: file.write(f' {name(obj)}.o(.text)\n')
|
||||
for obj in ITCM_OBJECTS: file.write(f' {name(obj)}.o(.rodata)\n')
|
||||
file.write(' itcm_end = .;\n')
|
||||
file.write(' itcm_size = itcm_end - itcm_start;\n')
|
||||
for obj in ITCM_OBJECTS: file.write(f' {name(obj)}(.bss)\n')
|
||||
for obj in ITCM_OBJECTS: file.write(f' {name(obj)}(.sbss)\n')
|
||||
for obj in ITCM_OBJECTS: file.write(f' {name(obj)}.o(.bss)\n')
|
||||
for obj in ITCM_OBJECTS: file.write(f' {name(obj)}.o(.sbss)\n')
|
||||
file.write(' } > ITCM\n')
|
||||
file.write('\n')
|
||||
file.write(' .dtcm : {\n')
|
||||
file.write(' dtcm_start = .;\n')
|
||||
for obj in DTCM_OBJECTS: file.write(f' {name(obj)}(.data)\n')
|
||||
for obj in DTCM_OBJECTS: file.write(f' {name(obj)}.o(.data)\n')
|
||||
file.write(' dtcm_end = .;\n')
|
||||
file.write(' dtcm_size = dtcm_end - dtcm_start;\n')
|
||||
for obj in DTCM_OBJECTS: file.write(f' {name(obj)}(.bss)\n')
|
||||
for obj in DTCM_OBJECTS: file.write(f' {name(obj)}(.sbss)\n')
|
||||
for obj in DTCM_OBJECTS: file.write(f' {name(obj)}.o(.bss)\n')
|
||||
for obj in DTCM_OBJECTS: file.write(f' {name(obj)}.o(.sbss)\n')
|
||||
file.write(' } > DTCM\n')
|
||||
file.write('\n')
|
||||
file.write(' .autoloads : {\n')
|
||||
@@ -312,23 +313,23 @@ with open(f'{BUILD}arm9_linker_script.lcf', 'w') as file:
|
||||
for ov in OVERLAYS:
|
||||
file.write(f' .{ov.name} : ' + '{\n')
|
||||
file.write(f' {ov.name}_start = .;\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}(.text)\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}(.rodata)\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}(.init)\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}.o(.text)\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}.o(.rodata)\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}.o(.init)\n')
|
||||
file.write('\n')
|
||||
file.write(f' {ov.name}_sinit_start = .;\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}(.sinit)\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}.o(.sinit)\n')
|
||||
file.write(' WRITEW 0;\n')
|
||||
file.write(f' {ov.name}_sinit_end = .;\n')
|
||||
file.write('\n')
|
||||
file.write(' . = ALIGN(32);\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}(.data)\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}.o(.data)\n')
|
||||
file.write(f' {ov.name}_end = .;\n')
|
||||
file.write(f' {ov.name}_size = {ov.name}_end - {ov.name}_start;\n')
|
||||
file.write('\n')
|
||||
file.write(f' {ov.name}_bss_start = .;\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}(.bss)\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}(.sbss)\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}.o(.bss)\n')
|
||||
for obj in ov.objects: file.write(f' {name(obj)}.o(.sbss)\n')
|
||||
file.write(f' {ov.name}_bss_end = .;\n')
|
||||
file.write(f' {ov.name}_bss_size = {ov.name}_bss_end - {ov.name}_bss_start;\n')
|
||||
file.write(' } > ' + ov.name + '\n')
|
||||
|
||||
Reference in New Issue
Block a user