File: SDL2.cmake

package info (click to toggle)
freespace2 25.0.0%2Brepack-1
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid
  • size: 47,232 kB
  • sloc: cpp: 657,500; ansic: 22,305; sh: 293; python: 200; makefile: 198; xml: 181
file content (81 lines) | stat: -rw-r--r-- 2,867 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81

if(PLATFORM_WINDOWS)
    add_library(sdlmain INTERFACE)

    get_prebuilt_path(PREBUILT_PATH)
    set(SDL2_ROOT_DIR "${PREBUILT_PATH}/sdl2")

    if(MSVC)
        add_library(sdl2 SHARED IMPORTED GLOBAL)
        set_target_properties(sdl2
            PROPERTIES
            IMPORTED_LOCATION "${SDL2_ROOT_DIR}/lib/SDL2.dll"
            IMPORTED_IMPLIB "${SDL2_ROOT_DIR}/lib/SDL2.lib"
        )
        target_link_libraries(sdlmain INTERFACE "${SDL2_ROOT_DIR}/lib/SDL2main.lib")
    else(MSVC) # MINGW
        add_library(sdl2 INTERFACE)
        target_link_libraries(sdl2 INTERFACE "${SDL2_ROOT_DIR}/lib/SDL2.dll")
        target_link_libraries(sdlmain INTERFACE "${SDL2_ROOT_DIR}/lib/libSDL2main.a")
    endif(MSVC)

    set_target_properties(sdl2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SDL2_ROOT_DIR}/include")

    add_target_copy_files("${SDL2_ROOT_DIR}/lib/SDL2.dll")
    install(FILES "${SDL2_ROOT_DIR}/README-SDL.txt"
        DESTINATION ${BINARY_DESTINATION}
    )
elseif(PLATFORM_MAC)
    message(STATUS "Using pre-built SDL2 framework.")

    add_library(sdl2 INTERFACE)
    get_prebuilt_path(PREBUILT_PATH)
    unset(SDL2_LIBRARY CACHE)
    find_library(SDL2_LIBRARY SDL2 PATHS "${PREBUILT_PATH}" NO_DEFAULT_PATH)

    target_link_libraries(sdl2 INTERFACE "${SDL2_LIBRARY}")
    target_include_directories(sdl2 SYSTEM INTERFACE "${SDL2_LIBRARY}/Headers")

    add_target_copy_files("${SDL2_LIBRARY}")
else()
    option(SDL2_USE_PRECOMPILED "Use precompiled version of SDL2. If disabled the system libraries will be used." OFF)

    include(util)

    set(USING_PREBUILT_LIBS FALSE)
    set(SDL2_ROOT_DIR)

    if(SDL2_USE_PRECOMPILED)
        get_prebuilt_path(PREBUILT_PATH)
        set(SDL2_ROOT_DIR "${PREBUILT_PATH}/sdl2")
        set(USING_PREBUILT_LIBS TRUE)
    else()
        # CMake can't check for SDL2 so we'll just use PkgConfig
        find_package(PkgConfig)

        PKG_SEARCH_MODULE(SDL2 "sdl2 >= 2.26.5")
        if(SDL2_FOUND)
            PKG_CONFIG_LIB_RESOLVE(SDL2 SDL2_LIB)
            ADD_IMPORTED_LIB(sdl2 "${SDL2_INCLUDE_DIRS}" "${SDL2_LIB}")
        else()
            message("Suitable SDL2 library could not be found. Using prebuilt library...")

            get_prebuilt_path(PREBUILT_PATH)
            set(SDL2_ROOT_DIR "${PREBUILT_PATH}/sdl2")
            set(USING_PREBUILT_LIBS TRUE)
        endif()
    endif()

    if(USING_PREBUILT_LIBS)
        message(STATUS "Using pre-built SDL2 library.")

        unset(SDL2_LOCATION CACHE)
        find_library(SDL2_LOCATION NAMES SDL2 SDL2-2.0 PATHS "${SDL2_ROOT_DIR}/lib" NO_DEFAULT_PATH)

        get_filename_component(FULL_LIB_PATH "${SDL2_LOCATION}" REALPATH)
        ADD_IMPORTED_LIB(sdl2 "${SDL2_ROOT_DIR}/include" "${FULL_LIB_PATH}")

        file(GLOB SDL2_LIBS "${SDL2_ROOT_DIR}/lib/libSDL2-2*")
        add_target_copy_files("${SDL2_LIBS}")
    endif()
endif()