From a135f0b196aff48836e2e68051bca095ee873be9 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Wed, 16 May 2018 02:07:24 +0200 Subject: [PATCH] libretro: use separate library file names for Carbon and Classic PPC --- build-toolchain.bash | 5 +++++ gcc/gcc/config/rs6000/macos.h | 4 ++-- libretro/CMakeLists.txt | 6 ++++++ libretro/syscalls.c | 6 +++--- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/build-toolchain.bash b/build-toolchain.bash index 4c741465dc..05b4d2a97a 100755 --- a/build-toolchain.bash +++ b/build-toolchain.bash @@ -494,6 +494,11 @@ for arch in $ARCHS; do "$PREFIX/bin/${arch}-apple-macos-ar" cqs "$PREFIX/${arch}-apple-macos/lib/libretrocrt.a" fi done +if [ ! -e "$PREFIX/powerpc-apple-macos/lib/libretrocrt-carbon.a" ]; then + echo "Creating dummy libretrocrt-carbon.a for $arch..." + "$PREFIX/bin/powerpc-apple-macos-ar" cqs "$PREFIX/powerpc-apple-macos/lib/libretrocrt-carbon.a" +fi + # the real libretrocrt.a is built and installed by # `cmake --build build-target --target install` later diff --git a/gcc/gcc/config/rs6000/macos.h b/gcc/gcc/config/rs6000/macos.h index 80cbcf57f3..a239878e57 100644 --- a/gcc/gcc/config/rs6000/macos.h +++ b/gcc/gcc/config/rs6000/macos.h @@ -169,9 +169,9 @@ %{shared:-bM:SRE}" #define LIB_SPEC "-lc" -#define LIBGCC_SPEC "-lgcc -lretrocrt -lgcc %{carbon: -lCarbonLib} %{!carbon: -lInterfaceLib}" +#define LIBGCC_SPEC "-lgcc %{carbon: -lretrocrt-carbon} %{!carbon: -lretrocrt} -lgcc %{carbon: -lCarbonLib} %{!carbon: -lInterfaceLib}" -#define LINK_GCC_C_SEQUENCE_SPEC "--start-group -lgcc -lc -lretrocrt %{carbon: -lCarbonLib} %{!carbon: -lInterfaceLib} --end-group" +#define LINK_GCC_C_SEQUENCE_SPEC "--start-group -lgcc -lc %{carbon: -lretrocrt-carbon} %{!carbon: -lretrocrt} %{carbon: -lCarbonLib} %{!carbon: -lInterfaceLib} --end-group" #undef STARTFILE_SPEC #define STARTFILE_SPEC "" diff --git a/libretro/CMakeLists.txt b/libretro/CMakeLists.txt index 7ac77e7044..339a112bfd 100644 --- a/libretro/CMakeLists.txt +++ b/libretro/CMakeLists.txt @@ -78,3 +78,9 @@ set_target_properties(retrocrt COMPILE_OPTIONS -ffunction-sections) install(TARGETS retrocrt DESTINATION lib) + + # different library name for Carbon + # (Carbon shares the powerpc-apple-macos/ directory with Classic PPC) +if(CMAKE_SYSTEM_NAME MATCHES RetroCarbon) + set_target_properties(retrocrt PROPERTIES OUTPUT_NAME retrocrt-carbon) +endif() diff --git a/libretro/syscalls.c b/libretro/syscalls.c index f61f87b930..6d7b6ee52b 100644 --- a/libretro/syscalls.c +++ b/libretro/syscalls.c @@ -85,17 +85,17 @@ ssize_t _read_r(struct _reent *reent, int fd, void *buf, size_t count) int _open_r(struct _reent *reent, const char* name, int flags, int mode) { Str255 pname; -/*#if TARGET_API_MAC_CARBON +#if TARGET_API_MAC_CARBON // Carbon has the new, sane version. c2pstrcpy(pname,name); -#else*/ +#else // It is also availble in various glue code libraries and // in some versions of InterfaceLib, but it's confusing. // Using the inplace variant, c2pstr, isn't much better than // doing things by hand: strncpy(&pname[1],name,255); pname[0] = strlen(name); -//#endif +#endif short ref; SInt8 permission;