@@ -40,7 +40,7 @@ ifeq ($(DEBUG),1)
4040IOP_CFLAGS += -DDEBUG
4141endif
4242# Linker flags
43- IOP_LDFLAGS := -nostdlib -s $(IOP_LDFLAGS )
43+ IOP_LDFLAGS := -nostdlib -dc -r $(IOP_LDFLAGS )
4444
4545# Additional C compiler flags for GCC >=v5.3.0
4646# -msoft-float is to "remind" GCC/Binutils that the soft-float ABI is to be used. This is due to a bug, which
6969# Assembler flags
7070IOP_ASFLAGS := $(ASFLAGS_TARGET ) -EL -G0 $(IOP_ASFLAGS )
7171
72+ # Default link file
73+ ifeq ($(IOP_LINKFILE ) ,)
74+ IOP_LINKFILE := $(PS2SDKSRC ) /iop/startup/src/linkfile
75+ endif
76+
7277IOP_OBJS := $(IOP_OBJS:%=$(IOP_OBJS_DIR ) % )
7378
79+ IOP_BIN_ELF := $(IOP_BIN:.irx=.notiopmod.elf )
80+
81+ IOP_BIN_STRIPPED_ELF := $(IOP_BIN:.irx=.notiopmod.stripped.elf )
82+
7483# Externally defined variables: IOP_BIN, IOP_OBJS, IOP_LIB
7584
7685# These macros can be used to simplify certain build rules.
@@ -95,6 +104,9 @@ $(IOP_OBJS_DIR)%.o: $(IOP_SRC_DIR)%.s
95104
96105.INTERMEDIATE :: $(IOP_LIB ) _tmp$(MAKE_CURPID ) $(IOP_OBJS_DIR ) build-imports.c $(IOP_OBJS_DIR ) build-exports.c
97106
107+ $(PS2SDKSRC ) /tools/srxfixup/bin/srxfixup : $(PS2SDKSRC ) /tools/srxfixup
108+ $(MAKEREC ) $<
109+
98110$(IOP_OBJS_DIR ) template-imports.h :
99111 $(DIR_GUARD )
100112 $(PRINTF ) ' %s\n' " #include \" irx_imports.h\" " > $@
@@ -121,9 +133,16 @@ $(IOP_OBJS_DIR)exports.o: $(IOP_OBJS_DIR)build-exports.c
121133 $(DIR_GUARD )
122134 $(IOP_C_COMPILE ) $(IOP_IETABLE_CFLAGS ) -c $< -o $@
123135
124- $(IOP_BIN ) : $(IOP_OBJS ) $(IOP_LIB_ARCHIVES ) $(IOP_ADDITIONAL_DEPS )
136+ $(IOP_BIN_ELF ) : $(IOP_OBJS ) $(IOP_LIB_ARCHIVES ) $(IOP_ADDITIONAL_DEPS )
137+ $(DIR_GUARD )
138+ $(IOP_C_COMPILE ) -T$(IOP_LINKFILE ) $(IOP_OPTFLAGS ) -o $@ $(IOP_OBJS ) $(IOP_LDFLAGS ) $(IOP_LIB_ARCHIVES ) $(IOP_LIBS )
139+
140+ $(IOP_BIN_STRIPPED_ELF ) : $(IOP_BIN_ELF )
125141 $(DIR_GUARD )
126- $(IOP_C_COMPILE ) $(IOP_OPTFLAGS ) -o $(IOP_BIN ) $(IOP_OBJS ) $(IOP_LDFLAGS ) $(IOP_LIB_ARCHIVES ) $(IOP_LIBS )
142+ $(IOP_STRIP ) --strip-unneeded --remove-section=.pdr --remove-section=.comment --remove-section=.mdebug.abi32 --remove-section=.gnu.attributes -o $@ $<
143+
144+ $(IOP_BIN ) : $(IOP_BIN_STRIPPED_ELF ) $(PS2SDKSRC ) /tools/srxfixup/bin/srxfixup
145+ $(PS2SDKSRC ) /tools/srxfixup/bin/srxfixup --irx1 -o $@ $<
127146
128147$(IOP_LIB ) _tmp$(MAKE_CURPID ) : $(IOP_OBJS )
129148 $(DIR_GUARD )
0 commit comments