Skip to content

Commit ff1298a

Browse files
committed
Apply cmake-init fcfcec92f6974734b0ebb78c8ba521e9dd93ed5c
1 parent fd194cb commit ff1298a

File tree

7 files changed

+49
-25
lines changed

7 files changed

+49
-25
lines changed

CMakeLists.txt

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,17 @@ cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
99
# Include cmake modules
1010

1111
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
12-
set(WriterCompilerDetectionHeaderFound NOTFOUND)
12+
1313

1414
include(GenerateExportHeader)
15-
include(ExternalProject)
16-
include(WriteCompilerDetectionHeader OPTIONAL RESULT_VARIABLE WriterCompilerDetectionHeaderFound)
15+
16+
set(WriterCompilerDetectionHeaderFound NOTFOUND)
17+
# This module is only available with CMake >=3.1, so check whether it could be found
18+
# BUT in CMake 3.1 this module doesn't recognize AppleClang as compiler, so just use it as of CMake 3.2
19+
if (${CMAKE_VERSION} VERSION_GREATER "3.2")
20+
include(WriteCompilerDetectionHeader OPTIONAL RESULT_VARIABLE WriterCompilerDetectionHeaderFound)
21+
endif()
22+
1723
include(cmake/GetGitRevisionDescription.cmake)
1824
include(cmake/Custom.cmake)
1925

@@ -45,6 +51,9 @@ set(META_VERSION_REVISION "${GIT_REV}")
4551
set(META_VERSION "${META_VERSION_MAJOR}.${META_VERSION_MINOR}.${META_VERSION_PATCH}")
4652
set(META_NAME_VERSION "${META_PROJECT_NAME} v${META_VERSION} (${META_VERSION_REVISION})")
4753

54+
string(MAKE_C_IDENTIFIER ${META_PROJECT_NAME} META_PROJECT_ID)
55+
string(TOUPPER ${META_PROJECT_ID} META_PROJECT_ID)
56+
4857

4958
#
5059
# Project configuration options
@@ -65,7 +74,7 @@ option(OPTION_ERRORS_AS_EXCEPTION "Throw exceptions instead of printing OpenGL r
6574

6675
# Generate folders for IDE targets (e.g., VisualStudio solutions)
6776
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
68-
set(IDE_FOLDER "")
77+
set(IDE_FOLDER "")
6978

7079
# Declare project
7180
project(${META_PROJECT_NAME} C CXX)

cmake/CompileOptions.cmake

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ endif()
1919

2020
set(DEFAULT_PROJECT_OPTIONS
2121
DEBUG_POSTFIX "d"
22-
CXX_STANDARD 11
22+
CXX_STANDARD 11 # Not available before CMake 3.1; see below for manual command line argument addition
2323
LINKER_LANGUAGE "CXX"
2424
POSITION_INDEPENDENT_CODE ON
2525
CXX_VISIBILITY_PRESET "hidden"
@@ -66,6 +66,7 @@ set(DEFAULT_COMPILE_OPTIONS)
6666
# MSVC compiler options
6767
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC")
6868
set(DEFAULT_COMPILE_OPTIONS ${DEFAULT_COMPILE_OPTIONS}
69+
PRIVATE
6970
/MP # -> build with multiple processes
7071
/W4 # -> warning level 4
7172
# /WX # -> treat warnings as errors
@@ -85,12 +86,19 @@ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC")
8586
/GL # -> whole program optimization: enable link-time code generation (disables Zi)
8687
/GF # -> enable string pooling
8788
>
89+
90+
# No manual c++11 enable for MSVC as all supported MSVC versions for cmake-init have C++11 implicitly enabled (MSVC >=2013)
91+
92+
PUBLIC
8893
)
8994
endif ()
9095

9196
# GCC and Clang compiler options
9297
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
9398
set(DEFAULT_COMPILE_OPTIONS ${DEFAULT_COMPILE_OPTIONS}
99+
PRIVATE
100+
#-fno-exceptions # since we use stl and stl is intended to use exceptions, exceptions should not be disabled
101+
94102
-Wall
95103
-Wextra
96104
-Wunused
@@ -124,6 +132,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCH
124132
-pthread
125133
>
126134

135+
# Required for CMake < 3.1; should be removed if minimum required CMake version is raised.
127136
$<$<VERSION_LESS:${CMAKE_VERSION},3.1>:
128137
-std=c++11
129138
>
@@ -140,6 +149,7 @@ set(DEFAULT_LINKER_OPTIONS)
140149
# Use pthreads on mingw and linux
141150
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" OR "${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
142151
set(DEFAULT_LINKER_OPTIONS
152+
PUBLIC
143153
-pthread
144154
)
145155
endif()

cmake/Custom.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ endfunction(set_policy)
1313
# to group source files in folders (e.g. for MSVC solutions).
1414
#
1515
# Example:
16-
# source_group_by_path("${CMAKE_CURRENT_SOURCE_DIR}/src" "\\\\.h$|\\\\.hpp$|\\\\.cpp$|\\\\.c$|\\\\.ui$|\\\\.qrc$" "Source Files" ${sources})
16+
# source_group_by_path("${CMAKE_CURRENT_SOURCE_DIR}/src" "\\\\.h$|\\\\.inl$|\\\\.cpp$|\\\\.c$|\\\\.ui$|\\\\.qrc$" "Source Files" ${sources})
1717
function(source_group_by_path PARENT_PATH REGEX GROUP)
1818

1919
foreach (FILENAME ${ARGN})

globjects-config.cmake

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
# This config script tries to locate the project either in its source tree
3-
# of from an install location.
3+
# or from an install location.
44
#
55
# Please adjust the list of submodules to search for.
66

@@ -36,5 +36,10 @@ if(MODULE_FOUND)
3636
endif()
3737

3838
# Try common build locations
39-
find_modules("build/cmake")
40-
find_modules("build-debug/cmake")
39+
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
40+
find_modules("build-debug/cmake")
41+
find_modules("build/cmake")
42+
else()
43+
find_modules("build/cmake")
44+
find_modules("build-debug/cmake")
45+
endif()

source/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
#
55

66
# Generate version-header
7-
string(TOUPPER ${META_PROJECT_NAME} META_PROJECT_NAME_UPPER)
87
configure_file(version.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/${META_PROJECT_NAME}/${META_PROJECT_NAME}-version.h)
98

109

source/globjects/CMakeLists.txt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ set(target globjects)
1717
message(STATUS "Lib ${target}")
1818

1919
# Set API export file and macro
20-
string(TOUPPER ${target} target_upper)
20+
string(MAKE_C_IDENTIFIER ${target} target_id)
21+
string(TOUPPER ${target_id} target_id)
2122
set(feature_file "include/${target}/${target}_features.h")
2223
set(export_file "include/${target}/${target}_api.h")
23-
set(export_macro "${target_upper}_API")
24+
set(export_macro "${target_id}_API")
2425

2526

2627
#
@@ -301,7 +302,7 @@ generate_export_header(${target}
301302
if (WriterCompilerDetectionHeaderFound)
302303
write_compiler_detection_header(
303304
FILE ${feature_file}
304-
PREFIX ${target_upper}
305+
PREFIX ${target_id}
305306
COMPILERS AppleClang Clang GNU MSVC
306307
FEATURES cxx_thread_local
307308
VERSION 3.2
@@ -371,7 +372,7 @@ target_compile_definitions(${target}
371372

372373
PUBLIC
373374
GLM_FORCE_RADIANS
374-
$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:${target_upper}_STATIC_DEFINE>
375+
$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:${target_id}_STATIC_DEFINE>
375376
${DEFAULT_COMPILE_DEFINITIONS}
376377
$<$<BOOL:${OPTION_ERRORS_AS_EXCEPTION}>:GLOBJECTS_GL_ERROR_RAISE_EXCEPTION>
377378

source/version.h.in

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11

2-
#define ${META_PROJECT_NAME_UPPER}_PROJECT_NAME "@META_PROJECT_NAME@"
3-
#define ${META_PROJECT_NAME_UPPER}_PROJECT_DESCRIPTION "@META_PROJECT_DESCRIPTION@"
2+
#define ${META_PROJECT_ID}_PROJECT_NAME "@META_PROJECT_NAME@"
3+
#define ${META_PROJECT_ID}_PROJECT_DESCRIPTION "@META_PROJECT_DESCRIPTION@"
44

5-
#define ${META_PROJECT_NAME_UPPER}_AUTHOR_ORGANIZATION "@META_AUTHOR_ORGANIZATION@"
6-
#define ${META_PROJECT_NAME_UPPER}_AUTHOR_DOMAIN "@META_AUTHOR_DOMAIN@"
7-
#define ${META_PROJECT_NAME_UPPER}_AUTHOR_MAINTAINER "@META_AUTHOR_MAINTAINER@"
5+
#define ${META_PROJECT_ID}_AUTHOR_ORGANIZATION "@META_AUTHOR_ORGANIZATION@"
6+
#define ${META_PROJECT_ID}_AUTHOR_DOMAIN "@META_AUTHOR_DOMAIN@"
7+
#define ${META_PROJECT_ID}_AUTHOR_MAINTAINER "@META_AUTHOR_MAINTAINER@"
88

9-
#define ${META_PROJECT_NAME_UPPER}_VERSION_MAJOR "@META_VERSION_MAJOR@"
10-
#define ${META_PROJECT_NAME_UPPER}_VERSION_MINOR "@META_VERSION_MINOR@"
11-
#define ${META_PROJECT_NAME_UPPER}_VERSION_PATCH "@META_VERSION_PATCH@"
12-
#define ${META_PROJECT_NAME_UPPER}_VERSION_REVISION "@META_VERSION_REVISION@"
9+
#define ${META_PROJECT_ID}_VERSION_MAJOR "@META_VERSION_MAJOR@"
10+
#define ${META_PROJECT_ID}_VERSION_MINOR "@META_VERSION_MINOR@"
11+
#define ${META_PROJECT_ID}_VERSION_PATCH "@META_VERSION_PATCH@"
12+
#define ${META_PROJECT_ID}_VERSION_REVISION "@META_VERSION_REVISION@"
1313

14-
#define ${META_PROJECT_NAME_UPPER}_VERSION "@META_VERSION@"
15-
#define ${META_PROJECT_NAME_UPPER}_NAME_VERSION "@META_NAME_VERSION@"
14+
#define ${META_PROJECT_ID}_VERSION "@META_VERSION@"
15+
#define ${META_PROJECT_ID}_NAME_VERSION "@META_NAME_VERSION@"

0 commit comments

Comments
 (0)