mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-09-06 03:18:13 +00:00
xcode: cmake scripts inside frameworks in side xcframework differ from the top cmake script
This commit is contained in:

committed by
Anonymous Maarten

parent
e10207e831
commit
8954e42bcb
11
.github/workflows/release.yml
vendored
11
.github/workflows/release.yml
vendored
@@ -168,6 +168,17 @@ jobs:
|
|||||||
-Werror=dev \
|
-Werror=dev \
|
||||||
-B build_darwin
|
-B build_darwin
|
||||||
cmake --build build_darwin --config Release --verbose
|
cmake --build build_darwin --config Release --verbose
|
||||||
|
|
||||||
|
cmake -S "${{ steps.src.outputs.path }}/cmake/test" \
|
||||||
|
-DTEST_FULL=FALSE \
|
||||||
|
-DTEST_STATIC=FALSE \
|
||||||
|
-DTEST_TEST=FALSE \
|
||||||
|
-DCMAKE_PREFIX_PATH="${{ steps.mount.outputs.mount_point }}/SDL3.xcframework/macos-arm64_x86_64" \
|
||||||
|
-DCMAKE_SYSTEM_NAME=Darwin \
|
||||||
|
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
|
||||||
|
-Werror=dev \
|
||||||
|
-B build_darwin_2
|
||||||
|
cmake --build build_darwin --config Release --verbose
|
||||||
- name: 'CMake (configure + build) iOS'
|
- name: 'CMake (configure + build) iOS'
|
||||||
run: |
|
run: |
|
||||||
cmake -S "${{ steps.src.outputs.path }}/cmake/test" \
|
cmake -S "${{ steps.src.outputs.path }}/cmake/test" \
|
||||||
|
@@ -2624,7 +2624,7 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "set -ex\n\nmkdir -p build/dmg-tmp/share/cmake/SDL3\ncp -a build/SDL3.xcframework build/dmg-tmp/\n\ncp pkg-support/resources/License.txt build/dmg-tmp\ncp pkg-support/resources/ReadMe.txt build/dmg-tmp\ncp pkg-support/resources/CMake/sdl3-config.cmake build/dmg-tmp/share/cmake/SDL3\ncp pkg-support/resources/CMake/sdl3-config-version.cmake build/dmg-tmp/share/cmake/SDL3\n\n# remove the .DS_Store files if any (we may want to provide one in the future for fancy .dmgs)\nfind build/dmg-tmp -name .DS_Store -exec rm -f \"{}\" \\;\n\n# for fancy .dmg\nmkdir -p build/dmg-tmp/.logo\ncp pkg-support/resources/SDL_DS_Store build/dmg-tmp/.DS_Store\ncp pkg-support/sdl_logo.pdf build/dmg-tmp/.logo\n\n# create the dmg\nhdiutil create -ov -fs HFS+ -volname SDL3 -srcfolder build/dmg-tmp build/SDL3.dmg\n\n# clean up\nrm -rf build/dmg-tmp\n";
|
shellScript = "set -ex\n\nmkdir -p build/dmg-tmp/share/cmake/SDL3\ncp -a build/SDL3.xcframework build/dmg-tmp/\n\ncp pkg-support/resources/License.txt build/dmg-tmp\ncp pkg-support/resources/ReadMe.txt build/dmg-tmp\ncp pkg-support/resources/share/cmake/SDL3/sdl3-config.cmake build/dmg-tmp/share/cmake/SDL3\ncp pkg-support/resources/share/cmake/SDL3/sdl3-config-version.cmake build/dmg-tmp/share/cmake/SDL3\n\n# remove the .DS_Store files if any (we may want to provide one in the future for fancy .dmgs)\nfind build/dmg-tmp -name .DS_Store -exec rm -f \"{}\" \\;\n\n# for fancy .dmg\nmkdir -p build/dmg-tmp/.logo\ncp pkg-support/resources/SDL_DS_Store build/dmg-tmp/.DS_Store\ncp pkg-support/sdl_logo.pdf build/dmg-tmp/.logo\n\n# create the dmg\nhdiutil create -ov -fs HFS+ -volname SDL3 -srcfolder build/dmg-tmp build/SDL3.dmg\n\n# clean up\nrm -rf build/dmg-tmp\n";
|
||||||
};
|
};
|
||||||
F3B38CF0296F63D1005DA6D3 /* ShellScript */ = {
|
F3B38CF0296F63D1005DA6D3 /* ShellScript */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
@@ -1,31 +1,16 @@
|
|||||||
# based on the files generated by CMake's write_basic_package_version_file
|
# based on the files generated by CMake's write_basic_package_version_file
|
||||||
|
|
||||||
# SDL CMake version configuration file:
|
# SDL CMake version configuration file:
|
||||||
# This file is meant to be placed in share/cmake/SDL3, next to SDL3.xcframework
|
# This file is meant to be placed in Resources/CMake of a SDL3 framework
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.12)
|
cmake_minimum_required(VERSION 3.12)
|
||||||
|
|
||||||
get_filename_component(_sdl3_xcframework_parent_path "${CMAKE_CURRENT_LIST_DIR}" REALPATH) # /share/cmake/SDL3/
|
if(NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/../../Headers/SDL_version.h")
|
||||||
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" REALPATH) # /share/cmake/SDL3/
|
message(AUTHOR_WARNING "Could not find SDL_version.h. This script is meant to be placed in the Resources/CMake directory of SDL2.framework")
|
||||||
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /share/cmake
|
|
||||||
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /share
|
|
||||||
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /
|
|
||||||
set(_sdl3_xcframework "${_sdl3_xcframework_parent_path}/SDL3.xcframework") # /SDL3.xcframework
|
|
||||||
set(_sdl3_framework "${_sdl3_xcframework}/macos-arm64_x86_64/SDL3.framework") # /SDL3.xcframework/macos-arm64_x86_64/SDL3.framework
|
|
||||||
set(_sdl3_version_h "${_sdl3_framework}/Headers/SDL_version.h") # /SDL3.xcframework/macos-arm64_x86_64/SDL3.framework/Headers/SDL_version.h
|
|
||||||
|
|
||||||
if(NOT EXISTS "${_sdl3_version_h}")
|
|
||||||
message(AUTHOR_WARNING "Cannot not find ${_sdl3_framework}. This script is meant to be placed in share/cmake/SDL3, next to SDL3.xcframework")
|
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(READ "${_sdl3_version_h}" _sdl_version_h)
|
file(READ "${CMAKE_CURRENT_LIST_DIR}/../../Headers/SDL_version.h" _sdl_version_h)
|
||||||
|
|
||||||
unset(_sdl3_xcframework_parent_path)
|
|
||||||
unset(_sdl3_framework)
|
|
||||||
unset(_sdl3_xcframework)
|
|
||||||
unset(_sdl3_version_h)
|
|
||||||
|
|
||||||
string(REGEX MATCH "#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)" _sdl_major_re "${_sdl_version_h}")
|
string(REGEX MATCH "#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)" _sdl_major_re "${_sdl_version_h}")
|
||||||
set(_sdl_major "${CMAKE_MATCH_1}")
|
set(_sdl_major "${CMAKE_MATCH_1}")
|
||||||
string(REGEX MATCH "#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)" _sdl_minor_re "${_sdl_version_h}")
|
string(REGEX MATCH "#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)" _sdl_minor_re "${_sdl_version_h}")
|
||||||
@@ -70,7 +55,3 @@ endif()
|
|||||||
if(NOT "${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
|
if(NOT "${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
|
||||||
set(PACKAGE_VERSION_UNSUITABLE TRUE)
|
set(PACKAGE_VERSION_UNSUITABLE TRUE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT CMAKE_SYSTEM_NAME MATCHES "^(Darwin|iOS|tvOS)$")
|
|
||||||
set(PACKAGE_VERSION_UNSUITABLE TRUE)
|
|
||||||
endif()
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
# SDL CMake configuration file:
|
# SDL3 CMake configuration file:
|
||||||
# This file is meant to be placed in share/cmake/SDL3, next to SDL3.xcframework
|
# This file is meant to be placed in Resources/CMake of a SDL3 framework
|
||||||
|
|
||||||
# INTERFACE_LINK_OPTIONS needs CMake 3.12
|
# INTERFACE_LINK_OPTIONS needs CMake 3.12
|
||||||
cmake_minimum_required(VERSION 3.12)
|
cmake_minimum_required(VERSION 3.12)
|
||||||
@@ -31,49 +31,15 @@ endmacro()
|
|||||||
|
|
||||||
set(SDL3_FOUND TRUE)
|
set(SDL3_FOUND TRUE)
|
||||||
|
|
||||||
macro(_check_target_is_simulator)
|
|
||||||
include(CheckCSourceCompiles)
|
|
||||||
check_c_source_compiles([===[
|
|
||||||
#include <TargetConditionals.h>
|
|
||||||
#if defined(TARGET_OS_SIMULATOR)
|
|
||||||
int target_is_simulator;
|
|
||||||
#endif
|
|
||||||
int main(int argc, char *argv[]) { return target_is_simulator; }
|
|
||||||
]===] SDL_TARGET_IS_SIMULATOR)
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
|
|
||||||
_check_target_is_simulator()
|
|
||||||
if(SDL_TARGET_IS_SIMULATOR)
|
|
||||||
set(_xcfw_target_subdir "ios-arm64_x86_64-simulator")
|
|
||||||
else()
|
|
||||||
set(_xcfw_target_subdir "ios-arm64")
|
|
||||||
endif()
|
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "tvOS")
|
|
||||||
_check_target_is_simulator()
|
|
||||||
if(SDL_TARGET_IS_SIMULATOR)
|
|
||||||
set(_xcfw_target_subdir "tvos-arm64_x86_64-simulator")
|
|
||||||
else()
|
|
||||||
set(_xcfw_target_subdir "tvos-arm64")
|
|
||||||
endif()
|
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
|
||||||
set(_xcfw_target_subdir "macos-arm64_x86_64")
|
|
||||||
else()
|
|
||||||
message(WARNING "Unsupported Apple platform (${CMAKE_SYSTEM_NAME}) and broken sdl3-config-version.cmake")
|
|
||||||
set(SDL3_FOUND FALSE)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Compute the installation prefix relative to this file.
|
# Compute the installation prefix relative to this file.
|
||||||
get_filename_component(_sdl3_xcframework_parent_path "${CMAKE_CURRENT_LIST_DIR}" REALPATH) # /share/cmake/SDL3/
|
set(_sdl3_framework_path "${CMAKE_CURRENT_LIST_DIR}") # > /SDL3.framework/Resources/CMake/
|
||||||
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" REALPATH) # /share/cmake/SDL3/
|
get_filename_component(_sdl3_framework_path "${_sdl3_framework_path}" REALPATH) # > /SDL3.framework/Versions/Current/Resources/CMake
|
||||||
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /share/cmake
|
get_filename_component(_sdl3_framework_path "${_sdl3_framework_path}" REALPATH) # > /SDL3.framework/Versions/A/Resources/CMake/
|
||||||
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /share
|
get_filename_component(_sdl3_framework_path "${_sdl3_framework_path}" PATH) # > /SDL3.framework/Versions/A/Resources/
|
||||||
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /
|
get_filename_component(_sdl3_framework_path "${_sdl3_framework_path}" PATH) # > /SDL3.framework/Versions/A/
|
||||||
set_and_check(_sdl3_xcframework_path "${_sdl3_xcframework_parent_path}/SDL3.xcframework") # /SDL3.xcframework
|
get_filename_component(_sdl3_framework_path "${_sdl3_framework_path}" PATH) # > /SDL3.framework/Versions/
|
||||||
set_and_check(_sdl3_framework_parent_path "${_sdl3_xcframework_path}/${_xcfw_target_subdir}") # /SDL3.xcframework/macos-arm64_x86_64
|
get_filename_component(_sdl3_framework_path "${_sdl3_framework_path}" PATH) # > /SDL3.framework/
|
||||||
set_and_check(_sdl3_framework_path "${_sdl3_framework_parent_path}/SDL3.framework") # /SDL3.xcframework/macos-arm64_x86_64/SDL3.framework
|
get_filename_component(_sdl3_framework_parent_path "${_sdl3_framework_path}" PATH) # > /
|
||||||
set_and_check(_sdl3_include_dirs "${_sdl3_framework_path}/Headers")
|
|
||||||
|
|
||||||
|
|
||||||
# All targets are created, even when some might not be requested though COMPONENTS.
|
# All targets are created, even when some might not be requested though COMPONENTS.
|
||||||
@@ -84,30 +50,17 @@ if(NOT TARGET SDL3::Headers)
|
|||||||
set_target_properties(SDL3::Headers
|
set_target_properties(SDL3::Headers
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
INTERFACE_COMPILE_OPTIONS "SHELL:-F \"${_sdl3_framework_parent_path}\""
|
INTERFACE_COMPILE_OPTIONS "SHELL:-F \"${_sdl3_framework_parent_path}\""
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${_sdl3_include_dirs}"
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
set(SDL3_Headers_FOUND TRUE)
|
set(SDL3_Headers_FOUND TRUE)
|
||||||
|
|
||||||
if(NOT TARGET SDL3::SDL3-shared)
|
if(NOT TARGET SDL3::SDL3-shared)
|
||||||
add_library(SDL3::SDL3-shared SHARED IMPORTED)
|
add_library(SDL3::SDL3-shared SHARED IMPORTED)
|
||||||
if(CMAKE_VERSION GREATER_EQUAL "3.28")
|
|
||||||
set_target_properties(SDL3::SDL3-shared
|
|
||||||
PROPERTIES
|
|
||||||
FRAMEWORK "TRUE"
|
|
||||||
IMPORTED_LOCATION "${_sdl3_xcframework_path}"
|
|
||||||
INTERFACE_LINK_LIBRARIES "SDL3::Headers"
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
set_target_properties(SDL3::SDL3-shared
|
set_target_properties(SDL3::SDL3-shared
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
FRAMEWORK "TRUE"
|
FRAMEWORK "TRUE"
|
||||||
IMPORTED_LOCATION "${_sdl3_framework_path}/SDL3"
|
IMPORTED_LOCATION "${_sdl3_framework_path}/SDL3"
|
||||||
INTERFACE_LINK_LIBRARIES "SDL3::Headers"
|
INTERFACE_LINK_LIBRARIES "SDL3::Headers"
|
||||||
)
|
|
||||||
endif()
|
|
||||||
set_target_properties(SDL3::SDL3-shared
|
|
||||||
PROPERTIES
|
|
||||||
COMPATIBLE_INTERFACE_BOOL "SDL3_SHARED"
|
COMPATIBLE_INTERFACE_BOOL "SDL3_SHARED"
|
||||||
INTERFACE_SDL3_SHARED "ON"
|
INTERFACE_SDL3_SHARED "ON"
|
||||||
COMPATIBLE_INTERFACE_STRING "SDL_VERSION"
|
COMPATIBLE_INTERFACE_STRING "SDL_VERSION"
|
||||||
@@ -120,11 +73,8 @@ set(SDL3_SDL3-static FALSE)
|
|||||||
|
|
||||||
set(SDL3_SDL3_test FALSE)
|
set(SDL3_SDL3_test FALSE)
|
||||||
|
|
||||||
unset(_sdl3_xcframework_parent_path)
|
|
||||||
unset(_sdl3_xcframework_path)
|
|
||||||
unset(_sdl3_framework_parent_path)
|
unset(_sdl3_framework_parent_path)
|
||||||
unset(_sdl3_framework_path)
|
unset(_sdl3_framework_path)
|
||||||
unset(_sdl3_include_dirs)
|
|
||||||
|
|
||||||
if(SDL3_SDL3-shared_FOUND)
|
if(SDL3_SDL3-shared_FOUND)
|
||||||
set(SDL3_SDL3_FOUND TRUE)
|
set(SDL3_SDL3_FOUND TRUE)
|
||||||
|
@@ -15,15 +15,15 @@ contains both the SDL runtime component and development header files.
|
|||||||
|
|
||||||
|
|
||||||
To Install:
|
To Install:
|
||||||
Copy the SDL3.framework to /Library/Frameworks
|
Copy "SDL3.xcframework" and "share" to /Library/Frameworks
|
||||||
|
|
||||||
You may alternatively install it in <Your home directory>/Library/Frameworks
|
You may alternatively install it in <Your home directory>/Library/Frameworks
|
||||||
if your access privileges are not high enough.
|
if your access privileges are not high enough.
|
||||||
|
|
||||||
|
|
||||||
Use in CMake projects:
|
Use in CMake projects:
|
||||||
SDL3.framework can be used in CMake projects using the following pattern:
|
SDL3.xcframework can be used in CMake projects using the following pattern:
|
||||||
```
|
```cmake
|
||||||
find_package(SDL3 REQUIRED COMPONENTS SDL3)
|
find_package(SDL3 REQUIRED COMPONENTS SDL3)
|
||||||
add_executable(my_game ${MY_SOURCES})
|
add_executable(my_game ${MY_SOURCES})
|
||||||
target_link_libraries(my_game PRIVATE SDL3::SDL3)
|
target_link_libraries(my_game PRIVATE SDL3::SDL3)
|
||||||
|
@@ -0,0 +1,76 @@
|
|||||||
|
# based on the files generated by CMake's write_basic_package_version_file
|
||||||
|
|
||||||
|
# SDL CMake version configuration file:
|
||||||
|
# This file is meant to be placed in share/cmake/SDL3, next to SDL3.xcframework
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.12)
|
||||||
|
|
||||||
|
get_filename_component(_sdl3_xcframework_parent_path "${CMAKE_CURRENT_LIST_DIR}" REALPATH) # /share/cmake/SDL3/
|
||||||
|
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" REALPATH) # /share/cmake/SDL3/
|
||||||
|
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /share/cmake
|
||||||
|
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /share
|
||||||
|
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /
|
||||||
|
set(_sdl3_xcframework "${_sdl3_xcframework_parent_path}/SDL3.xcframework") # /SDL3.xcframework
|
||||||
|
set(_sdl3_framework "${_sdl3_xcframework}/macos-arm64_x86_64/SDL3.framework") # /SDL3.xcframework/macos-arm64_x86_64/SDL3.framework
|
||||||
|
set(_sdl3_version_h "${_sdl3_framework}/Headers/SDL_version.h") # /SDL3.xcframework/macos-arm64_x86_64/SDL3.framework/Headers/SDL_version.h
|
||||||
|
|
||||||
|
if(NOT EXISTS "${_sdl3_version_h}")
|
||||||
|
message(AUTHOR_WARNING "Cannot not find ${_sdl3_framework}. This script is meant to be placed in share/cmake/SDL3, next to SDL3.xcframework")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
file(READ "${_sdl3_version_h}" _sdl_version_h)
|
||||||
|
|
||||||
|
unset(_sdl3_xcframework_parent_path)
|
||||||
|
unset(_sdl3_framework)
|
||||||
|
unset(_sdl3_xcframework)
|
||||||
|
unset(_sdl3_version_h)
|
||||||
|
|
||||||
|
string(REGEX MATCH "#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)" _sdl_major_re "${_sdl_version_h}")
|
||||||
|
set(_sdl_major "${CMAKE_MATCH_1}")
|
||||||
|
string(REGEX MATCH "#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)" _sdl_minor_re "${_sdl_version_h}")
|
||||||
|
set(_sdl_minor "${CMAKE_MATCH_1}")
|
||||||
|
string(REGEX MATCH "#define[ \t]+SDL_MICRO_VERSION[ \t]+([0-9]+)" _sdl_micro_re "${_sdl_version_h}")
|
||||||
|
set(_sdl_micro "${CMAKE_MATCH_1}")
|
||||||
|
if(_sdl_major_re AND _sdl_minor_re AND _sdl_micro_re)
|
||||||
|
set(PACKAGE_VERSION "${_sdl_major}.${_sdl_minor}.${_sdl_micro}")
|
||||||
|
else()
|
||||||
|
message(AUTHOR_WARNING "Could not extract version from SDL_version.h.")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
unset(_sdl_major_re)
|
||||||
|
unset(_sdl_major)
|
||||||
|
unset(_sdl_minor_re)
|
||||||
|
unset(_sdl_minor)
|
||||||
|
unset(_sdl_micro_re)
|
||||||
|
unset(_sdl_micro)
|
||||||
|
|
||||||
|
if(PACKAGE_FIND_VERSION_RANGE)
|
||||||
|
# Package version must be in the requested version range
|
||||||
|
if ((PACKAGE_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MIN)
|
||||||
|
OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_GREATER PACKAGE_FIND_VERSION_MAX)
|
||||||
|
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_GREATER_EQUAL PACKAGE_FIND_VERSION_MAX)))
|
||||||
|
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||||
|
else()
|
||||||
|
set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
|
||||||
|
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||||
|
else()
|
||||||
|
set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
||||||
|
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
|
||||||
|
set(PACKAGE_VERSION_EXACT TRUE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# The SDL3.xcframework only contains 64-bit archives
|
||||||
|
if(NOT "${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
|
||||||
|
set(PACKAGE_VERSION_UNSUITABLE TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_SYSTEM_NAME MATCHES "^(Darwin|iOS|tvOS)$")
|
||||||
|
set(PACKAGE_VERSION_UNSUITABLE TRUE)
|
||||||
|
endif()
|
@@ -0,0 +1,154 @@
|
|||||||
|
# SDL3 CMake configuration file:
|
||||||
|
# This file is meant to be placed in share/cmake/SDL3, next to SDL3.xcframework
|
||||||
|
|
||||||
|
# INTERFACE_LINK_OPTIONS needs CMake 3.12
|
||||||
|
cmake_minimum_required(VERSION 3.12)
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(SDL3 PROPERTIES
|
||||||
|
URL "https://www.libsdl.org/"
|
||||||
|
DESCRIPTION "low level access to audio, keyboard, mouse, joystick, and graphics hardware"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Copied from `configure_package_config_file`
|
||||||
|
macro(set_and_check _var _file)
|
||||||
|
set(${_var} "${_file}")
|
||||||
|
if(NOT EXISTS "${_file}")
|
||||||
|
message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
# Copied from `configure_package_config_file`
|
||||||
|
macro(check_required_components _NAME)
|
||||||
|
foreach(comp ${${_NAME}_FIND_COMPONENTS})
|
||||||
|
if(NOT ${_NAME}_${comp}_FOUND)
|
||||||
|
if(${_NAME}_FIND_REQUIRED_${comp})
|
||||||
|
set(${_NAME}_FOUND FALSE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
set(SDL3_FOUND TRUE)
|
||||||
|
|
||||||
|
macro(_check_target_is_simulator)
|
||||||
|
include(CheckCSourceCompiles)
|
||||||
|
check_c_source_compiles([===[
|
||||||
|
#include <TargetConditionals.h>
|
||||||
|
#if defined(TARGET_OS_SIMULATOR)
|
||||||
|
int target_is_simulator;
|
||||||
|
#endif
|
||||||
|
int main(int argc, char *argv[]) { return target_is_simulator; }
|
||||||
|
]===] SDL_TARGET_IS_SIMULATOR)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
|
||||||
|
_check_target_is_simulator()
|
||||||
|
if(SDL_TARGET_IS_SIMULATOR)
|
||||||
|
set(_xcfw_target_subdir "ios-arm64_x86_64-simulator")
|
||||||
|
else()
|
||||||
|
set(_xcfw_target_subdir "ios-arm64")
|
||||||
|
endif()
|
||||||
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "tvOS")
|
||||||
|
_check_target_is_simulator()
|
||||||
|
if(SDL_TARGET_IS_SIMULATOR)
|
||||||
|
set(_xcfw_target_subdir "tvos-arm64_x86_64-simulator")
|
||||||
|
else()
|
||||||
|
set(_xcfw_target_subdir "tvos-arm64")
|
||||||
|
endif()
|
||||||
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
|
set(_xcfw_target_subdir "macos-arm64_x86_64")
|
||||||
|
else()
|
||||||
|
message(WARNING "Unsupported Apple platform (${CMAKE_SYSTEM_NAME}) and broken sdl3-config-version.cmake")
|
||||||
|
set(SDL3_FOUND FALSE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Compute the installation prefix relative to this file.
|
||||||
|
get_filename_component(_sdl3_xcframework_parent_path "${CMAKE_CURRENT_LIST_DIR}" REALPATH) # /share/cmake/SDL3/
|
||||||
|
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" REALPATH) # /share/cmake/SDL3/
|
||||||
|
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /share/cmake
|
||||||
|
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /share
|
||||||
|
get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /
|
||||||
|
set_and_check(_sdl3_xcframework_path "${_sdl3_xcframework_parent_path}/SDL3.xcframework") # /SDL3.xcframework
|
||||||
|
set_and_check(_sdl3_framework_parent_path "${_sdl3_xcframework_path}/${_xcfw_target_subdir}") # /SDL3.xcframework/macos-arm64_x86_64
|
||||||
|
set_and_check(_sdl3_framework_path "${_sdl3_framework_parent_path}/SDL3.framework") # /SDL3.xcframework/macos-arm64_x86_64/SDL3.framework
|
||||||
|
|
||||||
|
|
||||||
|
# All targets are created, even when some might not be requested though COMPONENTS.
|
||||||
|
# This is done for compatibility with CMake generated SDL3-target.cmake files.
|
||||||
|
|
||||||
|
if(NOT TARGET SDL3::Headers)
|
||||||
|
add_library(SDL3::Headers INTERFACE IMPORTED)
|
||||||
|
set_target_properties(SDL3::Headers
|
||||||
|
PROPERTIES
|
||||||
|
INTERFACE_COMPILE_OPTIONS "SHELL:-F \"${_sdl3_framework_parent_path}\""
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
set(SDL3_Headers_FOUND TRUE)
|
||||||
|
|
||||||
|
if(NOT TARGET SDL3::SDL3-shared)
|
||||||
|
add_library(SDL3::SDL3-shared SHARED IMPORTED)
|
||||||
|
if(CMAKE_VERSION GREATER_EQUAL "3.28")
|
||||||
|
set_target_properties(SDL3::SDL3-shared
|
||||||
|
PROPERTIES
|
||||||
|
FRAMEWORK "TRUE"
|
||||||
|
IMPORTED_LOCATION "${_sdl3_xcframework_path}"
|
||||||
|
INTERFACE_LINK_LIBRARIES "SDL3::Headers"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
set_target_properties(SDL3::SDL3-shared
|
||||||
|
PROPERTIES
|
||||||
|
FRAMEWORK "TRUE"
|
||||||
|
IMPORTED_LOCATION "${_sdl3_framework_path}/SDL3"
|
||||||
|
INTERFACE_LINK_LIBRARIES "SDL3::Headers"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
set_target_properties(SDL3::SDL3-shared
|
||||||
|
PROPERTIES
|
||||||
|
COMPATIBLE_INTERFACE_BOOL "SDL3_SHARED"
|
||||||
|
INTERFACE_SDL3_SHARED "ON"
|
||||||
|
COMPATIBLE_INTERFACE_STRING "SDL_VERSION"
|
||||||
|
INTERFACE_SDL_VERSION "SDL3"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
set(SDL3_SDL3-shared_FOUND TRUE)
|
||||||
|
|
||||||
|
set(SDL3_SDL3-static FALSE)
|
||||||
|
|
||||||
|
set(SDL3_SDL3_test FALSE)
|
||||||
|
|
||||||
|
unset(_sdl3_xcframework_parent_path)
|
||||||
|
unset(_sdl3_xcframework_path)
|
||||||
|
unset(_sdl3_framework_parent_path)
|
||||||
|
unset(_sdl3_framework_path)
|
||||||
|
unset(_sdl3_include_dirs)
|
||||||
|
|
||||||
|
if(SDL3_SDL3-shared_FOUND)
|
||||||
|
set(SDL3_SDL3_FOUND TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
function(_sdl_create_target_alias_compat NEW_TARGET TARGET)
|
||||||
|
if(CMAKE_VERSION VERSION_LESS "3.18")
|
||||||
|
# Aliasing local targets is not supported on CMake < 3.18, so make it global.
|
||||||
|
add_library(${NEW_TARGET} INTERFACE IMPORTED)
|
||||||
|
set_target_properties(${NEW_TARGET} PROPERTIES INTERFACE_LINK_LIBRARIES "${TARGET}")
|
||||||
|
else()
|
||||||
|
add_library(${NEW_TARGET} ALIAS ${TARGET})
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Make sure SDL3::SDL3 always exists
|
||||||
|
if(NOT TARGET SDL3::SDL3)
|
||||||
|
if(TARGET SDL3::SDL3-shared)
|
||||||
|
_sdl_create_target_alias_compat(SDL3::SDL3 SDL3::SDL3-shared)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
check_required_components(SDL3)
|
||||||
|
|
||||||
|
set(SDL3_LIBRARIES SDL3::SDL3)
|
||||||
|
set(SDL3_STATIC_LIBRARIES SDL3::SDL3-static)
|
||||||
|
set(SDL3_STATIC_PRIVATE_LIBS)
|
||||||
|
|
||||||
|
set(SDL3TEST_LIBRARY SDL3::SDL3_test)
|
Reference in New Issue
Block a user