aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2016-09-08 19:27:43 +0300
committerOskari Timperi <oskari.timperi@iki.fi>2016-09-08 19:27:43 +0300
commit5145705722c48dde7a2f19b2c1411ae783f600b7 (patch)
tree2f45e24df8ceaab3209cd9ba1e6c52619f36c32f /src
parent53056f3e7e84e18b8ebfc4a2ab2f7f1fbe7ae36c (diff)
downloadraylib-5145705722c48dde7a2f19b2c1411ae783f600b7.tar.gz
raylib-5145705722c48dde7a2f19b2c1411ae783f600b7.zip
Make CMake build a bit better
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt62
-rw-r--r--src/external/CMakeLists.txt1
-rw-r--r--src/external/glfw3/CMakeLists.txt9
3 files changed, 58 insertions, 14 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c094ad96..18778b08 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,32 +1,66 @@
-cmake_minimum_required (VERSION 3.0)
-project (raylib)
+ADD_SUBDIRECTORY(external)
+
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_C_FLAGS "-O1 -Wall -std=gnu99 -fgnu89-inline -Wno-missing-braces")
+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})
+
+ADD_DEPENDENCIES(raylib glfw3)
+
+INSTALL(TARGETS raylib DESTINATION lib)
+INSTALL(FILES raylib.h DESTINATION include)
+
+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")
- add_definitions(-DPLATFORM_DESKTOP, -DGRAPHICS_API_OPENGL_33)
- include_directories("." "external/" "external/openal_soft/include" "external/glfw3/include")
+ TARGET_COMPILE_DEFINITIONS(raylib PUBLIC -DPLATFORM_DESKTOP -DGRAPHICS_API_OPENGL_33)
+ TARGET_INCLUDE_DIRECTORIES(raylib PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/external/openal_soft/include
+ ${CMAKE_INSTALL_PREFIX}/include)
ENDIF()
IF(${PLATFORM_TO_USE} MATCHES "PLATFORM_RPI")
- add_definitions(-DPLATFORM_RPI, -GRAPHICS_API_OPENGL_ES2)
- include_directories("." "external/" "/opt/vc/include" "/opt/vc/include/interface/vmcs_host/linux" "/opt/vc/include/interface/vcos/pthreads")
+ TARGET_COMPILE_DEFINITIONS(raylib PUBLIC -DPLATFORM_RPI -GRAPHICS_API_OPENGL_ES2)
+ TARGET_INCLUDE_DIRECTORIES(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${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")
- add_definitions(-DPLATFORM_WEB, -GRAPHICS_API_OPENGL_ES2)
- include_directories("." "external/" "external/openal_soft/include" "external/glfw3/include")
+ TARGET_COMPILE_DEFINITIONS(raylib PUBLIC -DPLATFORM_WEB -GRAPHICS_API_OPENGL_ES2)
+ TARGET_INCLUDE_DIRECTORIES(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/external
+ ${CMAKE_CURRENT_SOURCE_DIR}/external/openal_soft/include
+ ${CMAKE_INSTALL_PREFIX}/include)
ENDIF()
-
-
-file(GLOB SOURCES "*.c" "external/*.c")
-add_library(raylib STATIC ${SOURCES})
-install(TARGETS raylib DESTINATION ../lib/) \ No newline at end of file
diff --git a/src/external/CMakeLists.txt b/src/external/CMakeLists.txt
new file mode 100644
index 00000000..1954053f
--- /dev/null
+++ b/src/external/CMakeLists.txt
@@ -0,0 +1 @@
+ADD_SUBDIRECTORY(glfw3)
diff --git a/src/external/glfw3/CMakeLists.txt b/src/external/glfw3/CMakeLists.txt
new file mode 100644
index 00000000..9222b20d
--- /dev/null
+++ b/src/external/glfw3/CMakeLists.txt
@@ -0,0 +1,9 @@
+INCLUDE(ExternalProject)
+
+ExternalProject_Add(glfw3
+ GIT_REPOSITORY https://github.com/glfw/glfw.git
+ GIT_TAG 3.2.1
+ CMAKE_ARGS -DGLFW_BUILD_EXAMPLES=OFF -DGLFW_BUILD_TESTS=OFF
+ -DGLFW_BUILD_DOCS=OFF
+ -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
+)