aboutsummaryrefslogtreecommitdiff
path: root/src/CMakeLists.txt
blob: 6f8fbc9c73306786daf9903a363592d941c750de (plain)
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
IF(BOOTSTRAP)
    ADD_SUBDIRECTORY(external)
    RETURN()
ENDIF()

SET(PLATFORM_TO_USE "PLATFORM_DESKTOP" CACHE STRING "Platform to compile for")
SET_PROPERTY(CACHE PLATFORM_TO_USE PROPERTY STRINGS PLATFORM_DESKTOP PLATFORM_RPI PLATFORM_WEB)

SET(CMAKE_INCLUDE_CURRENT_DIR ON)

SET(SOURCES
    audio.c
    camera.c
    core.c
    external/stb_vorbis.c
    external/tinfl.c
    gestures.c
    models.c
    rlgl.c
    shapes.c
    text.c
    textures.c
    utils.c
)

ADD_LIBRARY(raylib STATIC ${SOURCES})

FIND_PACKAGE(glfw3 REQUIRED)
TARGET_LINK_LIBRARIES(raylib PUBLIC glfw)

INSTALL(TARGETS raylib EXPORT raylibTargets
    LIBRARY DESTINATION lib
    ARCHIVE DESTINATION lib
    RUNTIME DESTINATION bin
    INCLUDES DESTINATION include
)

INSTALL(FILES raylib.h raymath.h DESTINATION include/raylib)

IF(CMAKE_COMPILER_IS_GNUCC)
    TARGET_COMPILE_OPTIONS(raylib PRIVATE -O1 -Wall -std=gnu99 -fgnu89-inline
        -Wno-missing-braces)
ELSEIF(MSVC)
    # TODO: Set these to something that corresponds to the GCC flags?
ENDIF()

IF(${PLATFORM_TO_USE} MATCHES "PLATFORM_DESKTOP")

     TARGET_COMPILE_DEFINITIONS(raylib PUBLIC -DPLATFORM_DESKTOP -DGRAPHICS_API_OPENGL_33)
     TARGET_INCLUDE_DIRECTORIES(raylib PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR}/external/openal_soft/include
        ${CMAKE_INSTALL_PREFIX}/include)

     IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
         TARGET_LINK_LIBRARIES(raylib PUBLIC m dl pthread X11 Xrandr Xinerama
            Xi Xxf86vm Xcursor)
     ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
         TARGET_LINK_LIBRARIES(raylib PUBLIC gdi32)
     ENDIF()

ENDIF()

IF(${PLATFORM_TO_USE} MATCHES "PLATFORM_RPI")

     TARGET_COMPILE_DEFINITIONS(raylib PUBLIC -DPLATFORM_RPI -GRAPHICS_API_OPENGL_ES2)
     TARGET_INCLUDE_DIRECTORIES(raylib PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR}/external
        "/opt/vc/include"
        "/opt/vc/include/interface/vmcs_host/linux"
        "/opt/vc/include/interface/vcos/pthreads")

ENDIF()

IF(${PLATFORM_TO_USE} MATCHES "PLATFORM_WEB")

     TARGET_COMPILE_DEFINITIONS(raylib PUBLIC -DPLATFORM_WEB -GRAPHICS_API_OPENGL_ES2)
     TARGET_INCLUDE_DIRECTORIES(raylib PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR}/external
        ${CMAKE_CURRENT_SOURCE_DIR}/external/openal_soft/include
        ${CMAKE_INSTALL_PREFIX}/include)

ENDIF()

INCLUDE(CMakePackageConfigHelpers)
CONFIGURE_PACKAGE_CONFIG_FILE(raylibConfig.cmake.in
    ${CMAKE_CURRENT_BINARY_DIR}/raylibConfig.cmake
    INSTALL_DESTINATION lib/cmake/raylib
)

INSTALL(EXPORT raylibTargets
    DESTINATION lib/cmake/raylib
)

INSTALL(FILES
    ${CMAKE_CURRENT_BINARY_DIR}/raylibConfig.cmake
    DESTINATION lib/cmake/raylib
)