Browse Source

CMake: Move reusable code to new cmake/ directory

Ahmad Fatoum 7 years ago
parent
commit
ff55af14f9
4 changed files with 38 additions and 34 deletions
  1. 12 33
      CMakeLists.txt
  2. 12 0
      cmake/AddIfFlagCompiles.cmake
  3. 13 0
      cmake/CheckFileSystemSymlinkSupport.cmake
  4. 1 1
      src/CMakeLists.txt

+ 12 - 33
CMakeLists.txt

@@ -1,4 +1,5 @@
 cmake_minimum_required(VERSION 3.0)
+set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
 
 # Config options
 option(BUILD_EXAMPLES "Build the examples." ON)
@@ -15,47 +16,25 @@ else()
   set (CMAKE_C_STANDARD 99)
 endif()
 
-include(CheckCCompilerFlag)
-function(add_if_flag_works flag)
-    CHECK_C_COMPILER_FLAG("${flag}" COMPILER_HAS_THOSE_TOGGLES)
-    set(outcome "Failed")
-    if(COMPILER_HAS_THOSE_TOGGLES)
-        foreach(var ${ARGN})
-            set(${var} "${flag} ${${var}}" PARENT_SCOPE)
-        endforeach()
-        set(outcome "works")
-    endif()
-    message(STATUS "Testing if ${flag} can be used -- ${outcome}")
-endfunction()
-
-add_if_flag_works(-Werror=pointer-arith CMAKE_C_FLAGS)
-add_if_flag_works(-Werror=implicit-function-declaration CMAKE_C_FLAGS)
+include(AddIfFlagCompiles)
+add_if_flag_compiles(-Werror=pointer-arith CMAKE_C_FLAGS)
+add_if_flag_compiles(-Werror=implicit-function-declaration CMAKE_C_FLAGS)
 # src/external/jar_xm.h does shady stuff
-add_if_flag_works(-fno-strict-aliasing CMAKE_C_FLAGS)
+add_if_flag_compiles(-fno-strict-aliasing CMAKE_C_FLAGS)
 
-message(STATUS "Testing if file system supports symlinks")
-execute_process(
-  COMMAND ${CMAKE_COMMAND} -E create_symlink CMakeLists.txt "${CMAKE_CURRENT_BINARY_DIR}/TestingIfSymlinkWorks"
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-    RESULT_VARIABLE FILESYSTEM_LACKS_SYMLINKS
-)
-If (FILESYSTEM_LACKS_SYMLINKS)
-  message(STATUS "Testing if file system supports symlinks -- unsupported")
-else()
-  message(STATUS "Testing if file system supports symlinks -- supported")
-endif()
+include(CheckFileSystemSymlinkSupport)
 
 if (ENABLE_ASAN)
-    add_if_flag_works(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
-    add_if_flag_works(-fsanitize=address CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
+    add_if_flag_compiles(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
+    add_if_flag_compiles(-fsanitize=address CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
 endif()
 if (ENABLE_UBSAN)
-    add_if_flag_works(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
-    add_if_flag_works(-fsanitize=undefined CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
+    add_if_flag_compiles(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
+    add_if_flag_compiles(-fsanitize=undefined CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
 endif()
 if (ENABLE_MSAN)
-    add_if_flag_works(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
-    add_if_flag_works(-fsanitize=memory CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
+    add_if_flag_compiles(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
+    add_if_flag_compiles(-fsanitize=memory CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
 endif()
 
 if (ENABLE_MSAN AND ENABLE_ASAN)

+ 12 - 0
cmake/AddIfFlagCompiles.cmake

@@ -0,0 +1,12 @@
+include(CheckCCompilerFlag)
+function(add_if_flag_compiles flag)
+  CHECK_C_COMPILER_FLAG("${flag}" COMPILER_HAS_THOSE_TOGGLES)
+  set(outcome "Failed")
+  if(COMPILER_HAS_THOSE_TOGGLES)
+    foreach(var ${ARGN})
+      set(${var} "${flag} ${${var}}" PARENT_SCOPE)
+    endforeach()
+    set(outcome "compiles")
+  endif()
+  message(STATUS "Testing if ${flag} can be used -- ${outcome}")
+endfunction()

+ 13 - 0
cmake/CheckFileSystemSymlinkSupport.cmake

@@ -0,0 +1,13 @@
+# Populates a ${FILESYSTEM_LACKS_SYMLINKS} variable
+message(STATUS "Testing if file system supports symlinks")
+execute_process(
+  COMMAND ${CMAKE_COMMAND} -E create_symlink CMakeLists.txt "${CMAKE_CURRENT_BINARY_DIR}/TestingIfSymlinkWorks"
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    RESULT_VARIABLE FILESYSTEM_LACKS_SYMLINKS
+)
+If (FILESYSTEM_LACKS_SYMLINKS)
+  message(STATUS "Testing if file system supports symlinks -- unsupported")
+else()
+  message(STATUS "Testing if file system supports symlinks -- supported")
+endif()
+

+ 1 - 1
src/CMakeLists.txt

@@ -1,7 +1,7 @@
 # Setup the project and settings
 project(raylib)
 include(GNUInstallDirs)
-set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")
 
 set(PROJECT_VERSION 2.0.0)
 set(API_VERSION 2)