blob: a398d665662f78f26119efb2d59cf18002e89da6 (
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
# Setup the project and settings
project(raylib)
include("../utils.cmake")
set(raylib_VERSION_MAJOR 1)
set(raylib_VERSION_MINOR 8)
set(RAYLIB raylib) # Name of the generated library
### Config options ###
# Build a static or shared raylib?
set(SHARED_RAYLIB OFF CACHE BOOL "Build raylib as a dynamic library")
# Platform
set(PLATFORM "Desktop" CACHE STRING "Platform to build for.")
set_property(CACHE PLATFORM PROPERTY STRINGS "Desktop" "Web" "Android" "Raspberry Pi")
# OpenGL version
set(OPENGL_VERSION "3.3" CACHE STRING "OpenGL Version to build raylib with")
set_property(CACHE OPENGL_VERSION PROPERTY STRINGS "3.3" "2.1" "1.1" "ES 2.0")
### Config options ###
# Translate the config options to what raylib wants
if(${PLATFORM} MATCHES "Desktop")
set(PLATFORM "PLATFORM_DESKTOP")
# OpenGL version
if (${OPENGL_VERSION} MATCHES "3.3")
set(GRAPHICS "GRAPHICS_API_OPENGL_33")
elseif (${OPENGL_VERSION} MATCHES "2.1")
set(GRAPHICS "GRAPHICS_API_OPENGL_21")
elseif (${OPENGL_VERSION} MATCHES "1.1")
set(GRAPHICS "GRAPHICS_API_OPENGL_11")
elseif (${OPENGL_VERSION} MATCHES "ES 2.0")
set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
endif()
# Need to force OpenGL 3.3 on OS X
# See: https://github.com/raysan5/raylib/issues/341
if(APPLE)
set(GRAPHICS "GRAPHICS_API_OPENGL_33")
endif()
elseif(${PLATFORM} MATCHES "Web")
set(PLATFORM "PLATFORM_WEB")
set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
# Need to use `emcc`
set(CMAKE_C_COMPILER "emcc")
set(CMAKE_CXX_COMPILER "em++")
# Change the name of the output library
set(RAYLIB "libraylib.bc")
elseif(${PLATFORM} MATCHES "Android")
set(PLATFORM "PLATFORM_ANDROID")
set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
elseif(${PLATFORM} MATCHES "Raspberry Pi")
set(PLATFORM "PLATFORM_RPI")
set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
endif()
# Get the sources together
file(GLOB raylib_sources *.c)
file(GLOB stb_vorbis external/stb_vorbis.c)
set(sources ${raylib_sources} ${stb_vorbis})
# Which platform?
if(${PLATFORM} MATCHES "PLATFORM_DESKTOP")
# Build a static or shared raylib?
# TODO clean this up a bit?
if(${SHARED_RAYLIB})
# Shared library
add_library(${RAYLIB} SHARED ${sources})
# Will link -framework (if on OS X)
link_os_x_frameworks(raylib)
else()
# Static library
add_library(${RAYLIB} STATIC ${sources})
if(LINUX)
# On Linux, need to link a few extra things for static
target_link_libraries(${RAYLIB} m pthread dl)
target_link_libraries(${RAYLIB} X11 Xrandr Xinerama Xi Xxf86vm Xcursor) # X11 stuff
endif()
endif()
# Always need to link OpenAL and OpenGL
if(LINUX)
# Elsewhere (such as Linux), need `-lopenal -lGL`
target_link_libraries(${RAYLIB} openal)
target_link_libraries(${RAYLIB} GL)
endif()
# Add in GLFW as a linking target
target_link_libraries(${RAYLIB} glfw)
# Library file & Header
set_target_properties(${RAYLIB} PROPERTIES PUBLIC_HEADER "raylib.h")
install(
TARGETS ${RAYLIB}
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include
)
# Copy the header files to the build directory
file(COPY "raylib.h" DESTINATION ".")
file(COPY "rlgl.h" DESTINATION ".")
file(COPY "physac.h" DESTINATION ".")
file(COPY "raymath.h" DESTINATION ".")
file(COPY "audio.h" DESTINATION ".")
elseif(${PLATFORM} MATCHES "PLATFORM_WEB")
# For the web.
add_executable(${RAYLIB} ${sources})
endif()
# Set the compile flags to raylib
target_compile_definitions(${RAYLIB}
PUBLIC ${PLATFORM}
PUBLIC ${GRAPHICS}
)
# Print the flags for the user
message(STATUS "Compiling with the flags:")
message(STATUS " PLATFORM=" ${PLATFORM})
message(STATUS " GRAPHICS=" ${GRAPHICS})
|