build the ps2 platform entirely with freesce: --freesce premake option

premake5 gmake --freesce retargets the one ps2 platform at freesce
(its own ee-gcc 2.9 + newlib; FREESCE/FREESCE_GCC roots, defaulting
to /usr/local/freesce) -- a premake-time choice since the 2.9 and 3.2
C++ ABIs don't link. The tools/freesce wrappers strip premake's
gcc-3-style dep flags. demoreel_cd_freesce.elf now links with zero
SCE inputs: freesce crt chain, newlib libc/libm, and ctorgen to
register the PluginList ctors gcc 2.9 leaves orphaned.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
aap
2026-08-26 17:53:21 +02:00
parent ecb52a56f7
commit 18532c2e13
6 changed files with 212 additions and 25 deletions
+18
View File
@@ -0,0 +1,18 @@
#!/bin/sh
# ee-gcc 2.9 wrapper for the premake gmake build (--freesce): the
# generated rules pass gcc-3-style dependency flags; the 2.9 driver
# treats -MF's argument as a second input file and dies. Strip -MD,
# -MP and -MF <file>, then run the real driver.
# FREESCE_GCC is the compiler root (the xtc convention): the compiler
# is not SDK-versioned, so it does not derive from FREESCE.
skip=
for a in "$@"; do
shift
if [ -n "$skip" ]; then skip=; continue; fi
case "$a" in
-MD|-MP) continue ;;
-MF) skip=1; continue ;;
esac
set -- "$@" "$a"
done
exec "${FREESCE_GCC:-/usr/local/freesce/ee/gcc}/bin/ee-g++" "$@"