Skip to content

Commit ff55af1

Browse files
committed
CMake: Move reusable code to new cmake/ directory
1 parent ae26e08 commit ff55af1

File tree

4 files changed

+38
-34
lines changed

4 files changed

+38
-34
lines changed

CMakeLists.txt

Lines changed: 12 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
cmake_minimum_required(VERSION 3.0)
2+
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
23

34
# Config options
45
option(BUILD_EXAMPLES "Build the examples." ON)
@@ -15,47 +16,25 @@ else()
1516
set (CMAKE_C_STANDARD 99)
1617
endif()
1718

18-
include(CheckCCompilerFlag)
19-
function(add_if_flag_works flag)
20-
CHECK_C_COMPILER_FLAG("${flag}" COMPILER_HAS_THOSE_TOGGLES)
21-
set(outcome "Failed")
22-
if(COMPILER_HAS_THOSE_TOGGLES)
23-
foreach(var ${ARGN})
24-
set(${var} "${flag} ${${var}}" PARENT_SCOPE)
25-
endforeach()
26-
set(outcome "works")
27-
endif()
28-
message(STATUS "Testing if ${flag} can be used -- ${outcome}")
29-
endfunction()
30-
31-
add_if_flag_works(-Werror=pointer-arith CMAKE_C_FLAGS)
32-
add_if_flag_works(-Werror=implicit-function-declaration CMAKE_C_FLAGS)
19+
include(AddIfFlagCompiles)
20+
add_if_flag_compiles(-Werror=pointer-arith CMAKE_C_FLAGS)
21+
add_if_flag_compiles(-Werror=implicit-function-declaration CMAKE_C_FLAGS)
3322
# src/external/jar_xm.h does shady stuff
34-
add_if_flag_works(-fno-strict-aliasing CMAKE_C_FLAGS)
23+
add_if_flag_compiles(-fno-strict-aliasing CMAKE_C_FLAGS)
3524

36-
message(STATUS "Testing if file system supports symlinks")
37-
execute_process(
38-
COMMAND ${CMAKE_COMMAND} -E create_symlink CMakeLists.txt "${CMAKE_CURRENT_BINARY_DIR}/TestingIfSymlinkWorks"
39-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
40-
RESULT_VARIABLE FILESYSTEM_LACKS_SYMLINKS
41-
)
42-
If (FILESYSTEM_LACKS_SYMLINKS)
43-
message(STATUS "Testing if file system supports symlinks -- unsupported")
44-
else()
45-
message(STATUS "Testing if file system supports symlinks -- supported")
46-
endif()
25+
include(CheckFileSystemSymlinkSupport)
4726

4827
if (ENABLE_ASAN)
49-
add_if_flag_works(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
50-
add_if_flag_works(-fsanitize=address CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
28+
add_if_flag_compiles(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
29+
add_if_flag_compiles(-fsanitize=address CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
5130
endif()
5231
if (ENABLE_UBSAN)
53-
add_if_flag_works(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
54-
add_if_flag_works(-fsanitize=undefined CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
32+
add_if_flag_compiles(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
33+
add_if_flag_compiles(-fsanitize=undefined CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
5534
endif()
5635
if (ENABLE_MSAN)
57-
add_if_flag_works(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
58-
add_if_flag_works(-fsanitize=memory CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
36+
add_if_flag_compiles(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
37+
add_if_flag_compiles(-fsanitize=memory CMAKE_C_FLAGS CMAKE_LINKER_FLAGS)
5938
endif()
6039

6140
if (ENABLE_MSAN AND ENABLE_ASAN)

cmake/AddIfFlagCompiles.cmake

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
include(CheckCCompilerFlag)
2+
function(add_if_flag_compiles flag)
3+
CHECK_C_COMPILER_FLAG("${flag}" COMPILER_HAS_THOSE_TOGGLES)
4+
set(outcome "Failed")
5+
if(COMPILER_HAS_THOSE_TOGGLES)
6+
foreach(var ${ARGN})
7+
set(${var} "${flag} ${${var}}" PARENT_SCOPE)
8+
endforeach()
9+
set(outcome "compiles")
10+
endif()
11+
message(STATUS "Testing if ${flag} can be used -- ${outcome}")
12+
endfunction()
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Populates a ${FILESYSTEM_LACKS_SYMLINKS} variable
2+
message(STATUS "Testing if file system supports symlinks")
3+
execute_process(
4+
COMMAND ${CMAKE_COMMAND} -E create_symlink CMakeLists.txt "${CMAKE_CURRENT_BINARY_DIR}/TestingIfSymlinkWorks"
5+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
6+
RESULT_VARIABLE FILESYSTEM_LACKS_SYMLINKS
7+
)
8+
If (FILESYSTEM_LACKS_SYMLINKS)
9+
message(STATUS "Testing if file system supports symlinks -- unsupported")
10+
else()
11+
message(STATUS "Testing if file system supports symlinks -- supported")
12+
endif()
13+

src/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Setup the project and settings
22
project(raylib)
33
include(GNUInstallDirs)
4-
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")
4+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")
55

66
set(PROJECT_VERSION 2.0.0)
77
set(API_VERSION 2)

0 commit comments

Comments
 (0)