diff --git a/libretro-build-common.sh b/libretro-build-common.sh index 3fcd5c9d..c86cd5e3 100755 --- a/libretro-build-common.sh +++ b/libretro-build-common.sh @@ -342,23 +342,6 @@ build_libretro_test() { } -build_libretro_emux() { - if build_should_skip emux "$WORKDIR/libretro-emux"; then - echo "Cores for emux are already built, skipping..." - return - fi - - build_libretro_generic_makefile "emux" "libretro" "Makefile" $FORMAT_COMPILER_TARGET 1 - - copy_core_to_dist "emux_chip8" - copy_core_to_dist "emux_gb" - copy_core_to_dist "emux_nes" - copy_core_to_dist "emux_sms" - - # TODO: Check for more than emux_sms here... - build_save_revision $? "emux" -} - build_libretro_mame_modern() { build_dir="$WORKDIR/libretro-mame" if [ -d "$build_dir" ]; then @@ -393,55 +376,6 @@ build_libretro_mame_modern() { fi } -build_libretro_mame_prerule() { - build_dir="$WORKDIR/libretro-mame" - - if build_should_skip mame "$build_dir"; then - echo "Core mame is already built, skipping..." - return - fi - - if [ -d "$build_dir" ]; then - echo '' - echo "=== Building MAME ===" - echo_cmd "cd \"$build_dir\"" - - local extra_args - [ "$X86_64" = "true" ] && extra_args="PTR64=1" - - if [ -z "$NOCLEAN" ]; then - echo_cmd "$MAKE -f Makefile.libretro $extra_args platform=\"$FORMAT_COMPILER_TARGET\" \"-j$JOBS\" clean" || die 'Failed to clean MAME' - fi - - if [ -n "$IOS" ]; then - # FIXME: iOS doesn't build right now, so let's leave this simple until it does. - target=mame - echo_cmd "$MAKE -f Makefile.libretro \"TARGET=$target\" platform=\"$FORMAT_COMPILER_TARGET\" CC=\"$CC\" CXX=\"$CXX\" \"NATIVE=1\" buildtools \"-j$JOBS\"" - ret=$? - if [ "$ret" = 0 ]; then - echo_cmd "$MAKE -f Makefile.libretro \"TARGET=$target\" platform=\"$FORMAT_COMPILER_TARGET\" CC=\"$CC\" CXX=\"$CXX\" emulator \"-j$JOBS\"" - ret=$? - fi - [ "$ret" -gt 0 ] && die 'Failed to build MAME' - build_summary_log $ret "$target" - else - for target in mame mess ume; do - echo_cmd "$MAKE -f Makefile.libretro $extra_args \"TARGET=$target\" platform=\"$FORMAT_COMPILER_TARGET\" $COMPILER \"-j$JOBS\" emulator" || die "Failed to build $target" - copy_core_to_dist "$target" - ret=$? - - # If a target fails, stop here... - [ $ret -eq 0 ] || break - done - fi - - else - echo 'MAME not fetched, skipping ...' - fi - - build_save_revision $ret mame -} - # radius uses these, let's not pull them out from under him just yet build_libretro_mame() { build_libretro_mame_modern "MAME" "mame" "" @@ -459,145 +393,6 @@ rebuild_libretro_ume() { build_libretro_mame_modern "UME" "ume" "1" } -# $1 is corename -# $2 is profile shortname. -# $3 is profile name -build_libretro_bsnes_modern() { - build_dir="$WORKDIR/libretro-$1" - if [ -d "$build_dir" ]; then - echo "=== Building $1 $3 ===" - echo_cmd "cd \"$build_dir\"" - - if [ -z "$NOCLEAN" ]; then - echo_cmd "rm -f obj/*.{o,\"$FORMAT_EXT\"}" - echo_cmd "rm -f out/*.{o,\"$FORMAT_EXT\"}" - fi - - cmdline="$MAKE target=libretro -j$JOBS" - cmdline="$cmdline platform=\"$FORMAT_COMPILER_TARGET\"" - cmdline="$cmdline compiler=\"$CXX11\"" - ret=0 - for a in accuracy balanced performance; do - echo_cmd "$cmdline profile=$a" - copy_core_to_dist "out/${1}_$a" "${1}_$a" - [ $ret -eq 0 ] || break - done - - return $ret - else - echo "$1 not fetched, skipping ..." - fi -} - -build_libretro_bsnes() { - if build_should_skip bsnes "$WORKDIR/libretro-bsnes"; then - echo "Core bsnes is already built, skipping..." - return - fi - - build_libretro_bsnes_modern "bsnes" - build_save_revision $? bsnes -} - -build_libretro_bsnes_mercury() { - if build_should_skip bsnes_mercury "$WORKDIR/libretro-bsnes"; then - echo "Core bsnes_mercury is already built, skipping..." - return - fi - - build_libretro_bsnes_modern "bsnes_mercury" - build_save_revision $? bsnes_mercury -} - -build_libretro_bsnes_cplusplus98() { - CORENAME="bsnes_cplusplus98" - build_dir="$WORKDIR/libretro-$CORENAME" - - if build_should_skip $CORENAME "$build_dir"; then - echo "Core $CORENAME is already built, skipping..." - return - fi - - if [ -d "$build_dir" ]; then - echo "=== Building $CORENAME ===" - echo_cmd "cd \"$build_dir\"" - - if [ -z "$NOCLEAN" ]; then - # byuu's "make clean" doesn't - echo_cmd "rm -f obj/*.{o,\"$FORMAT_EXT\"}" - echo_cmd "rm -f out/*.{o,\"$FORMAT_EXT\"}" - fi - - echo_cmd "$MAKE platform=\"$FORMAT_COMPILER_TARGET\" $COMPILER \"-j$JOBS\"" - copy_core_to_dist "out/$CORENAME" "$CORENAME" - build_save_revision $? $CORENAME - else - echo "$CORENAME not fetched, skipping ..." - fi -} - -build_libretro_bnes() { - build_dir="$WORKDIR/libretro-bnes" - - if build_should_skip bnes "$build_dir"; then - echo "Core bnes is already built, skipping..." - return - fi - - if [ -d "$build_dir" ]; then - echo '=== Building bNES ===' - echo_cmd "cd \"$build_dir\"" - - mkdir -p obj - if [ -z "$NOCLEAN" ]; then - echo_cmd "$MAKE -f Makefile \"-j$JOBS\" clean" || die 'Failed to clean bNES' - fi - echo_cmd "$MAKE -f Makefile $COMPILER \"-j$JOBS\" compiler=\"${CXX11}\"" || die 'Failed to build bNES' - copy_core_to_dist "bnes" - build_save_revision $? "bnes" - else - echo 'bNES not fetched, skipping ...' - fi -} - -build_libretro_mupen64() { - if check_opengl; then - build_dir="$WORKDIR/libretro-mupen64plus" - - if build_should_skip mupen64plus "$build_dir"; then - echo "Core mupen64plus is already built, skipping..." - return - fi - - if [ -d "$build_dir" ]; then - echo_cmd "cd \"$build_dir\"" - - mkdir -p obj - - if iscpu_x86_64 $ARCH; then - dynarec="WITH_DYNAREC=x86_64" - elif iscpu_x86 $ARCH; then - dynarec="WITH_DYNAREC=x86" - elif [ "${CORTEX_A8}" ] || [ "${CORTEX_A9}" ] || [ "$platform" = "ios" ]; then - dynarec="WITH_DYNAREC=arm" - fi - - echo '=== Building Mupen 64 Plus ===' - if [ -z "$NOCLEAN" ]; then - echo_cmd "$MAKE $dynarec platform=\"$FORMAT_COMPILER_TARGET_ALT\" \"-j$JOBS\" clean" || die 'Failed to clean Mupen 64' - fi - - echo_cmd "$MAKE $dynarec platform=\"$FORMAT_COMPILER_TARGET_ALT\" $COMPILER \"-j$JOBS\"" || die 'Failed to build Mupen 64' - - copy_core_to_dist "mupen64plus" - build_save_revision $? "mupen64plus" - else - echo 'Mupen64 Plus not fetched, skipping ...' - fi - reset_compiler_targets - fi -} - build_summary() { if [ -z "$NOBUILD_SUMMARY" ]; then if command -v fmt > /dev/null; then @@ -638,7 +433,7 @@ create_dist_dir ########## LEGACY RULES -# TODO: delete these +# TODO: Safe to delete these when scripts no longer reference them build_libretro_2048() { libretro_build_core 2048 @@ -802,3 +597,208 @@ build_libretro_gw() { build_libretro_lutro() { libretro_build_core lutro } + +########## LEGACY RULES +# TODO: Port these to modern rules + +build_libretro_bsnes_modern() { + build_dir="$WORKDIR/libretro-$1" + if [ -d "$build_dir" ]; then + echo "=== Building $1 ===" + echo_cmd "cd \"$build_dir\"" + + if [ -z "$NOCLEAN" ]; then + echo_cmd "rm -f obj/*.{o,\"$FORMAT_EXT\"}" + echo_cmd "rm -f out/*.{o,\"$FORMAT_EXT\"}" + fi + + cmdline="$MAKE target=libretro -j$JOBS" + cmdline="$cmdline platform=\"$FORMAT_COMPILER_TARGET\"" + cmdline="$cmdline compiler=\"$CXX11\"" + ret=0 + for a in accuracy balanced performance; do + echo_cmd "$cmdline profile=$a" + copy_core_to_dist "out/${1}_$a" "${1}_$a" + [ $ret -eq 0 ] || break + done + + return $ret + else + echo "$1 not fetched, skipping ..." + fi +} + +build_libretro_bsnes() { + if build_should_skip bsnes "$WORKDIR/libretro-bsnes"; then + echo "Core bsnes is already built, skipping..." + return + fi + + build_libretro_bsnes_modern "bsnes" + build_save_revision $? bsnes +} +build_libretro_bnes() { + build_dir="$WORKDIR/libretro-bnes" + + if build_should_skip bnes "$build_dir"; then + echo "Core bnes is already built, skipping..." + return + fi + + if [ -d "$build_dir" ]; then + echo '=== Building bNES ===' + echo_cmd "cd \"$build_dir\"" + + mkdir -p obj + if [ -z "$NOCLEAN" ]; then + echo_cmd "$MAKE -f Makefile \"-j$JOBS\" clean" || die 'Failed to clean bNES' + fi + echo_cmd "$MAKE -f Makefile $COMPILER \"-j$JOBS\" compiler=\"${CXX11}\"" || die 'Failed to build bNES' + copy_core_to_dist "bnes" + build_save_revision $? "bnes" + else + echo 'bNES not fetched, skipping ...' + fi +} + +build_libretro_bsnes_cplusplus98() { + CORENAME="bsnes_cplusplus98" + build_dir="$WORKDIR/libretro-$CORENAME" + + if build_should_skip $CORENAME "$build_dir"; then + echo "Core $CORENAME is already built, skipping..." + return + fi + + if [ -d "$build_dir" ]; then + echo "=== Building $CORENAME ===" + echo_cmd "cd \"$build_dir\"" + + if [ -z "$NOCLEAN" ]; then + # byuu's "make clean" doesn't + echo_cmd "rm -f obj/*.{o,\"$FORMAT_EXT\"}" + echo_cmd "rm -f out/*.{o,\"$FORMAT_EXT\"}" + fi + + echo_cmd "$MAKE platform=\"$FORMAT_COMPILER_TARGET\" $COMPILER \"-j$JOBS\"" + copy_core_to_dist "out/$CORENAME" "$CORENAME" + build_save_revision $? $CORENAME + else + echo "$CORENAME not fetched, skipping ..." + fi +} + +build_libretro_bsnes_mercury() { + if build_should_skip bsnes_mercury "$WORKDIR/libretro-bsnes"; then + echo "Core bsnes_mercury is already built, skipping..." + return + fi + + build_libretro_bsnes_modern "bsnes_mercury" + build_save_revision $? bsnes_mercury +} + + +build_libretro_emux() { + if build_should_skip emux "$WORKDIR/libretro-emux"; then + echo "Cores for emux are already built, skipping..." + return + fi + + build_libretro_generic_makefile "emux" "libretro" "Makefile" $FORMAT_COMPILER_TARGET 1 + + copy_core_to_dist "emux_chip8" + copy_core_to_dist "emux_gb" + copy_core_to_dist "emux_nes" + copy_core_to_dist "emux_sms" + + # TODO: Check for more than emux_sms here... + build_save_revision $? "emux" +} + +build_libretro_mupen64() { + if check_opengl; then + build_dir="$WORKDIR/libretro-mupen64plus" + + if build_should_skip mupen64plus "$build_dir"; then + echo "Core mupen64plus is already built, skipping..." + return + fi + + if [ -d "$build_dir" ]; then + echo_cmd "cd \"$build_dir\"" + + mkdir -p obj + + if iscpu_x86_64 $ARCH; then + dynarec="WITH_DYNAREC=x86_64" + elif iscpu_x86 $ARCH; then + dynarec="WITH_DYNAREC=x86" + elif [ "${CORTEX_A8}" ] || [ "${CORTEX_A9}" ] || [ "$platform" = "ios" ]; then + dynarec="WITH_DYNAREC=arm" + fi + + echo '=== Building Mupen 64 Plus ===' + if [ -z "$NOCLEAN" ]; then + echo_cmd "$MAKE $dynarec platform=\"$FORMAT_COMPILER_TARGET_ALT\" \"-j$JOBS\" clean" || die 'Failed to clean Mupen 64' + fi + + echo_cmd "$MAKE $dynarec platform=\"$FORMAT_COMPILER_TARGET_ALT\" $COMPILER \"-j$JOBS\"" || die 'Failed to build Mupen 64' + + copy_core_to_dist "mupen64plus" + build_save_revision $? "mupen64plus" + else + echo 'Mupen64 Plus not fetched, skipping ...' + fi + reset_compiler_targets + fi +} + +build_libretro_mame_prerule() { + build_dir="$WORKDIR/libretro-mame" + + if build_should_skip mame "$build_dir"; then + echo "Core mame is already built, skipping..." + return + fi + + if [ -d "$build_dir" ]; then + echo '' + echo "=== Building MAME ===" + echo_cmd "cd \"$build_dir\"" + + local extra_args + [ "$X86_64" = "true" ] && extra_args="PTR64=1" + + if [ -z "$NOCLEAN" ]; then + echo_cmd "$MAKE -f Makefile.libretro $extra_args platform=\"$FORMAT_COMPILER_TARGET\" \"-j$JOBS\" clean" || die 'Failed to clean MAME' + fi + + if [ -n "$IOS" ]; then + # FIXME: iOS doesn't build right now, so let's leave this simple until it does. + target=mame + echo_cmd "$MAKE -f Makefile.libretro \"TARGET=$target\" platform=\"$FORMAT_COMPILER_TARGET\" CC=\"$CC\" CXX=\"$CXX\" \"NATIVE=1\" buildtools \"-j$JOBS\"" + ret=$? + if [ "$ret" = 0 ]; then + echo_cmd "$MAKE -f Makefile.libretro \"TARGET=$target\" platform=\"$FORMAT_COMPILER_TARGET\" CC=\"$CC\" CXX=\"$CXX\" emulator \"-j$JOBS\"" + ret=$? + fi + [ "$ret" -gt 0 ] && die 'Failed to build MAME' + build_summary_log $ret "$target" + else + for target in mame mess ume; do + echo_cmd "$MAKE -f Makefile.libretro $extra_args \"TARGET=$target\" platform=\"$FORMAT_COMPILER_TARGET\" $COMPILER \"-j$JOBS\" emulator" || die "Failed to build $target" + copy_core_to_dist "$target" + ret=$? + + # If a target fails, stop here... + [ $ret -eq 0 ] || break + done + fi + + else + echo 'MAME not fetched, skipping ...' + fi + + build_save_revision $ret mame +} diff --git a/libretro-build.sh b/libretro-build.sh index eea037d3..4e997c7f 100755 --- a/libretro-build.sh +++ b/libretro-build.sh @@ -126,12 +126,17 @@ build_default_cores() { # Nothing past here supports theos [ "$platform" = "theos_ios" ] && return + libretro_build_core bsnes + libretro_build_core bsnes_cplusplus98 + libretro_build_core bsnes_mercury libretro_build_core dinothawr + libretro_build_core emux libretro_build_core fuse libretro_build_core genesis_plus_gx libretro_build_core gw libretro_build_core hatari libretro_build_core lutro + libretro_build_core mame libretro_build_core mame078 libretro_build_core mednafen_gba libretro_build_core mednafen_lynx @@ -143,18 +148,12 @@ build_default_cores() { libretro_build_core mednafen_supergrafx libretro_build_core mednafen_vb libretro_build_core mednafen_wswan + libretro_build_core mupen64plus libretro_build_core picodrive libretro_build_core scummvm libretro_build_core stonesoup libretro_build_core yabause - build_libretro_bsnes - build_libretro_bsnes_cplusplus98 - build_libretro_bsnes_mercury - build_libretro_emux - build_libretro_mame_prerule - build_libretro_mupen64 - if [ $platform != "win" ]; then libretro_build_core pcsx_rearmed fi @@ -166,7 +165,7 @@ build_default_cores() { libretro_build_core ffmpeg libretro_build_core ppsspp - build_libretro_bnes + libretro_build_core bnes fi build_libretro_test diff --git a/rules.d/core-rules.sh b/rules.d/core-rules.sh index d894749e..f925a249 100644 --- a/rules.d/core-rules.sh +++ b/rules.d/core-rules.sh @@ -3,7 +3,8 @@ register_core "bsnes" -theos_ios -ngc -ps3 -psp1 -qnx -wii libretro_bsnes_name="bsnes/higan" libretro_bsnes_git_url="https://github.com/libretro/bsnes-libretro.git" -libretro_bsnes_build_rule=none # NEED CUSTOM RULE +libretro_bsnes_build_rule=legacy +libretro_bsnes_build_legacy=build_libretro_bsnes register_core "snes9x" -ngc -ps3 -psp1 -wii libretro_snes9x_name="SNES9x" @@ -183,7 +184,8 @@ libretro_mame139_build_rule=none # NEED A BUILD RULE register_core "mame" -theos_ios -ngc -ps3 -psp1 -qnx -wii libretro_mame_name="MAME (git)" libretro_mame_git_url="https://github.com/libretro/mame.git" -libretro_mame_build_rule=none # NEED CUSTOM RULE +libretro_mame_build_rule=legacy +libretro_mame_build_legacy=build_libretro_mame_prerule register_core "ffmpeg" -ios -theos_ios -osx -ngc -ps3 -psp1 -qnx -wii libretro_ffmpeg_name="FFmpeg" @@ -194,12 +196,14 @@ libretro_ffmpeg_build_opengl="optional" register_core "bsnes_cplusplus98" -theos_ios -ngc -ps3 -psp1 -wii libretro_bsnes_cplusplus98_name="bsnes C++98 (v0.85)" libretro_bsnes_cplusplus98_git_url="https://github.com/libretro/bsnes-libretro-cplusplus98.git" -libretro_bsnes_cplusplus98_build_rule=none # NEED CUSTOM RULE +libretro_bsnes_cplusplus98_build_rule=legacy +libretro_bsnes_cplusplus98_build_legacy=build_libretro_bsnes_cplusplus98 register_core "bsnes_mercury" -theos_ios -ngc -ps3 -psp1 -qnx -wii libretro_bsnes_mercury_name="bsnes-mercury" libretro_bsnes_mercury_git_url="https://github.com/libretro/bsnes-mercury.git" -libretro_bsnes_mercury_build_rule=none # NEED CUSTOM RULE +libretro_bsnes_mercury_build_rule=legacy +libretro_bsnes_mercury_build_legacy=build_libretro_bsnes_mercury register_core "picodrive" -theos_ios -ngc -ps3 -wii libretro_picodrive_name="Picodrive" @@ -214,7 +218,8 @@ libretro_tgbdual_git_url="https://github.com/libretro/tgbdual-libretro.git" register_core "mupen64plus" -theos_ios -ngc -ps3 -psp1 -wii libretro_mupen64plus_name="Mupen64Plus" libretro_mupen64plus_git_url="https://github.com/libretro/mupen64plus-libretro.git" -libretro_mupen64plus_build_rule=none # NEED CUSTOM RULE +libretro_mupen64plus_build_rule=legacy +libretro_mupen64plus_build_legacy=build_libretro_mupen64 register_core "dinothawr" -theos_ios -ngc -ps3 -psp1 -qnx -wii libretro_dinothawr_name="Dinothawr" @@ -300,7 +305,8 @@ libretro_gpsp_git_url="https://github.com/libretro/gpsp.git" register_core "emux" -theos_ios -ngc -ps3 -psp1 -qnx -wii libretro_emux_name="Emux" libretro_emux_git_url="https://github.com/libretro/emux.git" -libretro_emux_build_rule=none # NEED CUSTOM RULE +libretro_emux_build_rule=legacy +libretro_emux_build_legacy=build_libretro_emux register_core "fuse" -theos_ios -ngc -ps3 -psp1 -qnx -wii libretro_fuse_name="Fuse"