From 5145705722c48dde7a2f19b2c1411ae783f600b7 Mon Sep 17 00:00:00 2001 From: Oskari Timperi Date: Thu, 8 Sep 2016 19:27:43 +0300 Subject: Make CMake build a bit better --- src/CMakeLists.txt | 62 ++++++++++++++++++++++++++++++--------- src/external/CMakeLists.txt | 1 + src/external/glfw3/CMakeLists.txt | 9 ++++++ 3 files changed, 58 insertions(+), 14 deletions(-) create mode 100644 src/external/CMakeLists.txt create mode 100644 src/external/glfw3/CMakeLists.txt (limited to 'src') 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} +) -- cgit v1.2.3