Atlas - CMakeLists.txt

Home / ext / SDL / cmake / test Lines: 1 | Size: 5204 bytes [Download] [Show on GitHub] [Search similar files] [Raw] [Raw (proxy)]
[FILE BEGIN]
1# This cmake build script is meant for verifying the various CMake configuration scripts. 2 3cmake_minimum_required(VERSION 3.12) 4project(SDL_cmake_selftest LANGUAGES C) 5 6include(CheckLanguage) 7 8# FIXME: how to target ios/tvos with Swift? 9# https://gitlab.kitware.com/cmake/cmake/-/issues/20104 10if(APPLE AND CMAKE_SYSTEM_NAME MATCHES ".*(Darwin|MacOS).*") 11 # multiple values for CMAKE_OSX_ARCHITECTURES not supported with Swift 12 list(LENGTH CMAKE_OSX_ARCHITECTURES count_osx_archs) 13 if(count_osx_archs LESS_EQUAL 1) 14 check_language(Swift) 15 if(CMAKE_Swift_COMPILER) 16 enable_language(Swift) 17 endif() 18 endif() 19endif() 20 21message(STATUS "CMAKE_SYSTEM_NAME= ${CMAKE_SYSTEM_NAME}") 22message(STATUS "CMAKE_SYSTEM_PROCESSOR= ${CMAKE_SYSTEM_PROCESSOR}") 23 24include(GenerateExportHeader) 25 26if(ANDROID) 27 macro(add_executable NAME) 28 set(args ${ARGN}) 29 list(REMOVE_ITEM args WIN32) 30 add_library(${NAME} SHARED ${args}) 31 unset(args) 32 endmacro() 33endif() 34 35cmake_policy(SET CMP0074 NEW) 36 37# Override CMAKE_FIND_ROOT_PATH_MODE to allow search for SDL3 outside of sysroot 38set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER) 39 40include(FeatureSummary) 41 42option(TEST_SHARED "Test linking to shared SDL3 library" ON) 43add_feature_info("TEST_SHARED" TEST_SHARED "Test linking with shared library") 44 45option(TEST_STATIC "Test linking to static SDL3 library" ON) 46add_feature_info("TEST_STATIC" TEST_STATIC "Test linking with static library") 47 48option(TEST_TEST "Test linking to SDL3_test library" ON) 49add_feature_info("TEST_TEST" TEST_STATIC "Test linking to SDL test library") 50 51option(TEST_FULL "Run complete SDL test suite" OFF) 52add_feature_info("TEST_FULL" TEST_FULL "Build full SDL testsuite") 53 54find_package(SDL3 REQUIRED CONFIG COMPONENTS Headers) 55add_library(headers_test_slash OBJECT inc_sdl_slash.c) 56target_link_libraries(headers_test_slash PRIVATE SDL3::Headers) 57 58if(TEST_SHARED) 59 find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3-shared) 60 add_executable(gui-shared WIN32 main_gui.c) 61 target_link_libraries(gui-shared PRIVATE SDL3::SDL3-shared) 62 if(WIN32) 63 add_custom_command(TARGET gui-shared POST_BUILD 64 COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_FILE:SDL3::SDL3-shared>" "$<TARGET_FILE_DIR:gui-shared>" 65 ) 66 endif() 67 68 add_library(sharedlib-shared SHARED main_lib.c) 69 target_link_libraries(sharedlib-shared PRIVATE SDL3::SDL3-shared) 70 generate_export_header(sharedlib-shared EXPORT_MACRO_NAME MYLIBRARY_EXPORT) 71 target_compile_definitions(sharedlib-shared PRIVATE "EXPORT_HEADER=\"${CMAKE_CURRENT_BINARY_DIR}/sharedlib-shared_export.h\"") 72 set_target_properties(sharedlib-shared PROPERTIES C_VISIBILITY_PRESET "hidden") 73 74 add_executable(cli-shared main_cli.c) 75 target_link_libraries(cli-shared PRIVATE SDL3::SDL3-shared) 76 if(WIN32) 77 add_custom_command(TARGET cli-shared POST_BUILD 78 COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_FILE:SDL3::SDL3-shared>" "$<TARGET_FILE_DIR:cli-shared>" 79 ) 80 endif() 81 82 if(TEST_TEST) 83 add_executable(sdltest-shared sdltest.c) 84 target_link_libraries(sdltest-shared PRIVATE SDL3::SDL3_test SDL3::SDL3-shared) 85 endif() 86 87 if(CMAKE_Swift_COMPILER) 88 add_executable(swift-shared main.swift) 89 target_include_directories(swift-shared PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/swift") 90 target_link_libraries(swift-shared PRIVATE SDL3::SDL3-shared) 91 endif() 92endif() 93 94if(TEST_STATIC) 95 find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3-static) 96 add_executable(gui-static WIN32 main_gui.c) 97 target_link_libraries(gui-static PRIVATE SDL3::SDL3-static) 98 99 if(TEST_SHARED) 100 # Assume SDL library has been built with `set(CMAKE_POSITION_INDEPENDENT_CODE ON)` 101 add_library(sharedlib-static SHARED main_lib.c) 102 target_link_libraries(sharedlib-static PRIVATE SDL3::SDL3-static) 103 generate_export_header(sharedlib-static EXPORT_MACRO_NAME MYLIBRARY_EXPORT) 104 target_compile_definitions(sharedlib-static PRIVATE "EXPORT_HEADER=\"${CMAKE_CURRENT_BINARY_DIR}/sharedlib-static_export.h\"") 105 set_target_properties(sharedlib-static PROPERTIES C_VISIBILITY_PRESET "hidden") 106 endif() 107 108 if(TEST_TEST) 109 add_executable(sdltest-static sdltest.c) 110 target_link_libraries(sdltest-static PRIVATE SDL3::SDL3_test SDL3::SDL3-static) 111 endif() 112 113 if(CMAKE_Swift_COMPILER) 114 add_executable(swift-static main.swift) 115 target_include_directories(swift-static PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/swift") 116 target_link_libraries(swift-static PRIVATE SDL3::SDL3-static) 117 endif() 118endif() 119 120find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3) 121add_executable(gui-whatever WIN32 main_gui.c) 122target_link_libraries(gui-whatever PRIVATE SDL3::SDL3) 123 124if(TEST_FULL) 125 enable_testing() 126 set(SDL_TESTS_TIMEOUT_MULTIPLIER "1" CACHE STRING "Test timeout multiplier") 127 set(SDL_TESTS_LINK_SHARED ${TEST_SHARED}) 128 129 add_definitions(-DNO_BUILD_CONFIG) 130 add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/../../test" SDL_test) 131endif() 132 133if(ANDROID) 134 find_package(SDL3 REQUIRED CONFIG COMPONENTS Jar) 135endif() 136 137feature_summary(WHAT ALL) 138
[FILE END]
(C) 2025 0x4248 (C) 2025 4248 Media and 4248 Systems, All part of 0x4248 See LICENCE files for more information. Not all files are by 0x4248 always check Licencing.