forked from trilinos/Trilinos
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTribitsPackageSetupCompilerFlags.cmake
More file actions
141 lines (101 loc) · 4.08 KB
/
Copy pathTribitsPackageSetupCompilerFlags.cmake
File metadata and controls
141 lines (101 loc) · 4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# @HEADER
# *****************************************************************************
# TriBITS: Tribal Build, Integrate, and Test System
#
# Copyright 2013-2016 NTESS and the TriBITS contributors.
# SPDX-License-Identifier: BSD-3-Clause
# *****************************************************************************
# @HEADER
include(TribitsSetupStrongCompileWarnings)
include(PrependCmndlineArgs)
include(DualScopeAppendCmndlineArgs)
#
# Helper macros and functions
#
macro(tribits_apply_warnings_as_error_flags_lang LANG)
prepend_cmndline_args(CMAKE_${LANG}_FLAGS
"${${PROJECT_NAME}_WARNINGS_AS_ERRORS_FLAGS}")
if (${PROJECT_NAME}_VERBOSE_CONFIGURE)
message(STATUS "Setting up for ${LANG} warnings as errors just in this package ...")
print_var(CMAKE_${LANG}_FLAGS)
endif()
endmacro()
macro(tribits_set_package_compiler_lang_flags LANG)
#message("Entering tribits_set_package_compiler_lang_flags(${LANG})")
#print_var(${PROJECT_NAME}_ENABLE_STRONG_${LANG}_COMPILE_WARNINGS)
if (${PACKAGE_NAME}_${LANG}_FLAGS)
dual_scope_append_cmndline_args(CMAKE_${LANG}_FLAGS
"${${PACKAGE_NAME}_${LANG}_FLAGS}")
endif()
endmacro()
function(tribits_print_package_compiler_lang_flags LANG SUFFIX)
message("-- " "${PACKAGE_NAME}: CMAKE_${LANG}_FLAGS${SUFFIX}=\"${CMAKE_${LANG}_FLAGS${SUFFIX}}\"")
endfunction()
# Function that appends package-specific compiler flags for each language
#
function(tribits_append_package_specific_compiler_flags)
#message("Entering tribits_append_package_specific_compiler_flags() for ${PACKAGE_NAME}")
# C compiler options
assert_defined(${PROJECT_NAME}_ENABLE_C CMAKE_C_COMPILER_ID)
if (${PROJECT_NAME}_ENABLE_C)
tribits_set_package_compiler_lang_flags(C)
endif()
# C++ compiler options
assert_defined(${PROJECT_NAME}_ENABLE_CXX CMAKE_CXX_COMPILER_ID)
if (${PROJECT_NAME}_ENABLE_CXX)
tribits_set_package_compiler_lang_flags(CXX)
endif()
# Fortran compiler options
assert_defined(${PROJECT_NAME}_ENABLE_Fortran)
if (${PROJECT_NAME}_ENABLE_Fortran)
tribits_set_package_compiler_lang_flags(Fortran)
endif()
endfunction()
# Function that prints out all of the compiler flags for a package
#
function(tribits_print_package_compiler_flags)
if(${PROJECT_NAME}_VERBOSE_CONFIGURE OR ${PROJECT_NAME}_PRINT_PACKAGE_COMPILER_FLAGS)
string(TOUPPER "${CMAKE_BUILD_TYPE}" upperBuildType)
set(buildNameSuffix "_${upperBuildType}")
# C compiler options
if (${PROJECT_NAME}_ENABLE_C)
tribits_print_package_compiler_lang_flags(C "")
tribits_print_package_compiler_lang_flags(C ${buildNameSuffix})
endif()
# C++ compiler options
if (${PROJECT_NAME}_ENABLE_CXX)
tribits_print_package_compiler_lang_flags(CXX "")
tribits_print_package_compiler_lang_flags(CXX ${buildNameSuffix})
endif()
# Fortran compiler options
if (${PROJECT_NAME}_ENABLE_Fortran)
tribits_print_package_compiler_lang_flags(Fortran "")
tribits_print_package_compiler_lang_flags(Fortran ${buildNameSuffix})
endif()
endif()
endfunction()
# Macro that sets up compiler flags for a top-level package (not subpackage)
#
# This CMake code is broken out in order to allow it to be unit tested.
#
macro(tribits_setup_compiler_flags PACKAGE_NAME_IN)
# Set up strong warning flags
if (NOT PARSE_DISABLE_STRONG_WARNINGS AND NOT ${PACKAGE_NAME_IN}_DISABLE_STRONG_WARNINGS)
tribits_setup_strong_compile_warnings(${PARSE_ENABLE_SHADOWING_WARNINGS})
endif()
# Set up for warnings as errors if requested
assert_defined(PARSE_CLEANED)
assert_defined(${PROJECT_NAME}_ENABLE_C)
if (PARSE_CLEANED AND ${PROJECT_NAME}_ENABLE_STRONG_C_COMPILE_WARNINGS)
tribits_apply_warnings_as_error_flags_lang(C)
endif()
assert_defined(${PROJECT_NAME}_ENABLE_CXX)
if (PARSE_CLEANED AND ${PROJECT_NAME}_ENABLE_STRONG_CXX_COMPILE_WARNINGS)
tribits_apply_warnings_as_error_flags_lang(CXX)
endif()
tribits_append_package_specific_compiler_flags()
if(${PROJECT_NAME}_VERBOSE_CONFIGURE)
message("Final package compiler flags:")
endif()
tribits_print_package_compiler_flags()
endmacro()