CMake: Move reusable code to new cmake/ directory
This commit is contained in:
parent
ae26e083b4
commit
ff55af14f9
@ -1,4 +1,5 @@
|
|||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.0)
|
||||||
|
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||||
|
|
||||||
# Config options
|
# Config options
|
||||||
option(BUILD_EXAMPLES "Build the examples." ON)
|
option(BUILD_EXAMPLES "Build the examples." ON)
|
||||||
@ -15,47 +16,25 @@ else()
|
|||||||
set (CMAKE_C_STANDARD 99)
|
set (CMAKE_C_STANDARD 99)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(CheckCCompilerFlag)
|
include(AddIfFlagCompiles)
|
||||||
function(add_if_flag_works flag)
|
add_if_flag_compiles(-Werror=pointer-arith CMAKE_C_FLAGS)
|
||||||
CHECK_C_COMPILER_FLAG("${flag}" COMPILER_HAS_THOSE_TOGGLES)
|
add_if_flag_compiles(-Werror=implicit-function-declaration CMAKE_C_FLAGS)
|
||||||
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)
|
|
||||||
# src/external/jar_xm.h does shady stuff
|
# 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")
|
include(CheckFileSystemSymlinkSupport)
|
||||||
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()
|
|
||||||
|
|
||||||
if (ENABLE_ASAN)
|
if (ENABLE_ASAN)
|
||||||
add_if_flag_works(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
|
add_if_flag_compiles(-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(-fsanitize=address CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
|
||||||
endif()
|
endif()
|
||||||
if (ENABLE_UBSAN)
|
if (ENABLE_UBSAN)
|
||||||
add_if_flag_works(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
|
add_if_flag_compiles(-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(-fsanitize=undefined CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
|
||||||
endif()
|
endif()
|
||||||
if (ENABLE_MSAN)
|
if (ENABLE_MSAN)
|
||||||
add_if_flag_works(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
|
add_if_flag_compiles(-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(-fsanitize=memory CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ENABLE_MSAN AND ENABLE_ASAN)
|
if (ENABLE_MSAN AND ENABLE_ASAN)
|
||||||
|
12
cmake/AddIfFlagCompiles.cmake
Normal file
12
cmake/AddIfFlagCompiles.cmake
Normal file
@ -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
cmake/CheckFileSystemSymlinkSupport.cmake
Normal file
13
cmake/CheckFileSystemSymlinkSupport.cmake
Normal file
@ -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,7 +1,7 @@
|
|||||||
# Setup the project and settings
|
# Setup the project and settings
|
||||||
project(raylib)
|
project(raylib)
|
||||||
include(GNUInstallDirs)
|
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(PROJECT_VERSION 2.0.0)
|
||||||
set(API_VERSION 2)
|
set(API_VERSION 2)
|
||||||
|
Loading…
Reference in New Issue
Block a user