diff --git a/CMakeLists.txt b/CMakeLists.txt index 9db9646f7..245910c6d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,7 +77,11 @@ if(NINTENDO_SWITCH) elseif(LIBRETRO) add_library(${PROJECT_NAME} SHARED core/emulator.cpp) - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") + if(APPLE) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined,error") + else() + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") + endif() set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "flycast_libretro") set(CMAKE_SHARED_LIBRARY_PREFIX "") set(CMAKE_POSITION_INDEPENDENT_CODE ON) @@ -90,7 +94,9 @@ elseif(LIBRETRO) target_link_libraries(${PROJECT_NAME} PRIVATE "-lGLESv2") else() target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_OPENGL) - if(NOT APPLE) + if(APPLE) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-framework,OpenGL") + else() target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_OIT) endif() if(WIN32) @@ -1154,9 +1160,9 @@ if(NOT LIBRETRO) MACOSX_BUNDLE_INFO_STRING "" MACOSX_BUNDLE_GUI_IDENTIFIER "com.flyinghead.Flycast" MACOSX_BUNDLE_BUNDLE_NAME "com.flyinghead.Flycast" - MACOSX_BUNDLE_LONG_VERSION_STRING "1.0" - MACOSX_BUNDLE_SHORT_VERSION_STRING "1.0" - MACOSX_BUNDLE_BUNDLE_VERSION "1" + MACOSX_BUNDLE_LONG_VERSION_STRING "${GIT_VERSION}" + MACOSX_BUNDLE_SHORT_VERSION_STRING "${GIT_VERSION}" + MACOSX_BUNDLE_BUNDLE_VERSION "" MACOSX_BUNDLE_COPYRIGHT "Copyright © 2021 Flycast contributors. All rights reserved." MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/shell/apple/emulator-ios/plist.in @@ -1218,7 +1224,9 @@ if(NOT LIBRETRO) MACOSX_BUNDLE_INFO_STRING "" MACOSX_BUNDLE_ICON_FILE "AppIcon" MACOSX_BUNDLE_GUI_IDENTIFIER "com.flyinghead.Flycast" - MACOSX_BUNDLE_LONG_VERSION_STRING "" + MACOSX_BUNDLE_LONG_VERSION_STRING "${GIT_VERSION}" + MACOSX_BUNDLE_SHORT_VERSION_STRING "${GIT_VERSION}" + MACOSX_BUNDLE_BUNDLE_VERSION "" MACOSX_BUNDLE_BUNDLE_NAME "Flycast" MACOSX_BUNDLE_SHORT_VERSION_STRING "1.0" MACOSX_BUNDLE_BUNDLE_VERSION "1" diff --git a/core/cfg/option.cpp b/core/cfg/option.cpp index 9066ad169..23472a660 100644 --- a/core/cfg/option.cpp +++ b/core/cfg/option.cpp @@ -77,7 +77,11 @@ Option Fog("rend.Fog", true); Option FloatVMUs("rend.FloatVMUs"); Option Rotate90("rend.Rotate90"); Option PerStripSorting("rend.PerStripSorting"); +#ifdef __APPLE__ +Option DelayFrameSwapping("rend.DelayFrameSwapping", false); +#else Option DelayFrameSwapping("rend.DelayFrameSwapping", true); +#endif Option WidescreenGameHacks("rend.WidescreenGameHacks"); std::array, 4> CrosshairColor { Option("rend.CrossHairColor1"), diff --git a/core/linux/common.cpp b/core/linux/common.cpp index 24fac641e..04033b400 100644 --- a/core/linux/common.cpp +++ b/core/linux/common.cpp @@ -122,7 +122,7 @@ double os_GetSeconds() return a.tv_sec-tvs_base+a.tv_usec/1000000.0; } -#if !defined(__unix__) +#if !defined(__unix__) && !defined(LIBRETRO) void os_DebugBreak() { __builtin_trap(); diff --git a/shell/libretro/libretro.cpp b/shell/libretro/libretro.cpp index 8db1484fc..12d905106 100644 --- a/shell/libretro/libretro.cpp +++ b/shell/libretro/libretro.cpp @@ -417,8 +417,9 @@ static void setGameGeometry(retro_game_geometry& geometry) geometry.aspect_ratio = 1 / geometry.aspect_ratio; geometry.max_width = std::max(framebufferHeight * 16 / 9, framebufferWidth); geometry.max_height = geometry.max_width; - geometry.base_width = framebufferWidth; - geometry.base_height = framebufferHeight; + // Avoid gigantic window size at startup + geometry.base_width = 640; + geometry.base_height = 480; } static void setAVInfo(retro_system_av_info& avinfo) @@ -1440,6 +1441,9 @@ static bool set_opengl_hw_render(u32 preferred) #endif params.imm_vbo_draw = NULL; params.imm_vbo_disable = NULL; +#if defined(__APPLE__) && defined(HAVE_OPENGL) + preferred = RETRO_HW_CONTEXT_OPENGL_CORE; +#endif #ifdef HAVE_OIT if (config::RendererType == RenderType::OpenGL_OIT) {