sdl2-config.cmake 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # SDL2 CMake configuration file:
  2. # This file is meant to be placed in Resources/CMake of a SDL2 framework
  3. # INTERFACE_LINK_OPTIONS needs CMake 3.12
  4. cmake_minimum_required(VERSION 3.12)
  5. include(FeatureSummary)
  6. set_package_properties(SDL2 PROPERTIES
  7. URL "https://www.libsdl.org/"
  8. DESCRIPTION "low level access to audio, keyboard, mouse, joystick, and graphics hardware"
  9. )
  10. # Copied from `configure_package_config_file`
  11. macro(set_and_check _var _file)
  12. set(${_var} "${_file}")
  13. if(NOT EXISTS "${_file}")
  14. message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
  15. endif()
  16. endmacro()
  17. # Copied from `configure_package_config_file`
  18. macro(check_required_components _NAME)
  19. foreach(comp ${${_NAME}_FIND_COMPONENTS})
  20. if(NOT ${_NAME}_${comp}_FOUND)
  21. if(${_NAME}_FIND_REQUIRED_${comp})
  22. set(${_NAME}_FOUND FALSE)
  23. endif()
  24. endif()
  25. endforeach()
  26. endmacro()
  27. set(SDL2_FOUND TRUE)
  28. string(REGEX REPLACE "SDL2\\.framework.*" "SDL2.framework" SDL2_FRAMEWORK_PATH "${CMAKE_CURRENT_LIST_DIR}")
  29. string(REGEX REPLACE "SDL2\\.framework.*" "" SDL2_FRAMEWORK_PARENT_PATH "${CMAKE_CURRENT_LIST_DIR}")
  30. # For compatibility with autotools sdl2-config.cmake, provide SDL2_* variables.
  31. set_and_check(SDL2_PREFIX "${SDL2_FRAMEWORK_PATH}")
  32. set_and_check(SDL2_EXEC_PREFIX "${SDL2_FRAMEWORK_PATH}")
  33. set_and_check(SDL2_INCLUDE_DIR "${SDL2_FRAMEWORK_PATH}/Headers")
  34. set(SDL2_INCLUDE_DIRS "${SDL2_INCLUDE_DIR};${SDL2_FRAMEWORK_PATH}")
  35. set_and_check(SDL2_BINDIR "${SDL2_FRAMEWORK_PATH}")
  36. set_and_check(SDL2_LIBDIR "${SDL2_FRAMEWORK_PATH}")
  37. set(SDL2_LIBRARIES "SDL2::SDL2")
  38. # All targets are created, even when some might not be requested though COMPONENTS.
  39. # This is done for compatibility with CMake generated SDL2-target.cmake files.
  40. if(NOT TARGET SDL2::SDL2)
  41. add_library(SDL2::SDL2 INTERFACE IMPORTED)
  42. set_target_properties(SDL2::SDL2
  43. PROPERTIES
  44. INTERFACE_COMPILE_OPTIONS "SHELL:-F \"${SDL2_FRAMEWORK_PARENT_PATH}\""
  45. INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}"
  46. INTERFACE_LINK_OPTIONS "SHELL:-F \"${SDL2_FRAMEWORK_PARENT_PATH}\";SHELL:-framework SDL2"
  47. COMPATIBLE_INTERFACE_BOOL "SDL2_SHARED"
  48. INTERFACE_SDL2_SHARED "ON"
  49. COMPATIBLE_INTERFACE_STRING "SDL_VERSION"
  50. INTERFACE_SDL_VERSION "SDL2"
  51. )
  52. endif()
  53. set(SDL2_SDL2_FOUND TRUE)
  54. if(NOT TARGET SDL2::SDL2main)
  55. add_library(SDL2::SDL2main INTERFACE IMPORTED)
  56. endif()
  57. set(SDL2_SDL2main_FOUND TRUE)
  58. check_required_components(SDL2)