mirror of
https://github.com/reactos/CMake.git
synced 2025-01-10 13:41:20 +00:00
9db3116226
Ancient versions of CMake required else(), endif(), and similar block termination commands to have arguments matching the command starting the block. This is no longer the preferred style. Run the following shell code: for c in else endif endforeach endfunction endmacro endwhile; do echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/' done >convert.sed && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' | egrep -z -v '^(Utilities/cm|Source/kwsys/)' | egrep -z -v 'Tests/CMakeTests/While-Endwhile-' | xargs -0 sed -i -f convert.sed && rm convert.sed
46 lines
2.2 KiB
CMake
46 lines
2.2 KiB
CMake
# - Check whether the C compiler supports a given flag.
|
|
# CHECK_C_COMPILER_FLAG(<flag> <var>)
|
|
# <flag> - the compiler flag
|
|
# <var> - variable to store the result
|
|
# This internally calls the check_c_source_compiles macro.
|
|
# See help for CheckCSourceCompiles for a listing of variables
|
|
# that can modify the build.
|
|
|
|
#=============================================================================
|
|
# Copyright 2006-2011 Kitware, Inc.
|
|
# Copyright 2006 Alexander Neundorf <neundorf@kde.org>
|
|
# Copyright 2011 Matthias Kretz <kretz@kde.org>
|
|
#
|
|
# Distributed under the OSI-approved BSD License (the "License");
|
|
# see accompanying file Copyright.txt for details.
|
|
#
|
|
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
# See the License for more information.
|
|
#=============================================================================
|
|
# (To distribute this file outside of CMake, substitute the full
|
|
# License text for the above reference.)
|
|
|
|
include(CheckCSourceCompiles)
|
|
|
|
macro (CHECK_C_COMPILER_FLAG _FLAG _RESULT)
|
|
set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
|
|
set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
|
|
CHECK_C_SOURCE_COMPILES("int main(void) { return 0; }" ${_RESULT}
|
|
# Some compilers do not fail with a bad flag
|
|
FAIL_REGEX "command line option .* is valid for .* but not for C" # GNU
|
|
FAIL_REGEX "unrecognized .*option" # GNU
|
|
FAIL_REGEX "unknown .*option" # Clang
|
|
FAIL_REGEX "ignoring unknown option" # MSVC
|
|
FAIL_REGEX "warning D9002" # MSVC, any lang
|
|
FAIL_REGEX "option.*not supported" # Intel
|
|
FAIL_REGEX "invalid argument .*option" # Intel
|
|
FAIL_REGEX "ignoring option .*argument required" # Intel
|
|
FAIL_REGEX "[Uu]nknown option" # HP
|
|
FAIL_REGEX "[Ww]arning: [Oo]ption" # SunPro
|
|
FAIL_REGEX "command option .* is not recognized" # XL
|
|
FAIL_REGEX "WARNING: unknown flag:" # Open64
|
|
)
|
|
set (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
|
|
endmacro ()
|