Reverted back to the CheckC99CompilerFlag and CheckCXX11CompilerFlag macro files.

c_std_99 was added in CMake 3.8, which is a fairly recent version.
Ubuntu 17.04 has CMake 3.9, but 16.10 has 3.7.2. Hence, we shouldn't
use it in order to remain compatible with at least Ubuntu 16.04 LTS.
This commit is contained in:
David Korth 2018-01-17 20:53:55 -05:00
parent 231445a69b
commit f9fc1a0119
5 changed files with 138 additions and 9 deletions

View File

@ -0,0 +1,60 @@
# - Check what flag is needed to activate C99 mode.
# CHECK_C99_COMPILER_FLAG(VARIABLE)
#
# VARIABLE - variable to store the result
#
# This actually calls the check_c_source_compiles macro.
# See help for CheckCSourceCompiles for a listing of variables
# that can modify the build.
# Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
# Based on CHECK_C_COMPILER_FLAG(). (CheckCCompilerFlag.cmake)
INCLUDE(CheckCSourceCompiles)
MACRO(CHECK_C99_COMPILER_FLAG _RESULT)
# Flag listing borrowed from GNU autoconf's AC_PROG_CC_C99 macro.
UNSET(${_RESULT})
# MSVC doesn't allow setting the C standard.
IF(NOT MSVC)
# Check if C99 is present without any flags.
# gcc-5.1 uses C11 mode by default.
MESSAGE(STATUS "Checking if C99 is enabled by default:")
CHECK_C_SOURCE_COMPILES("
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L
#error C99 is not enabled
#endif
int main() { return 0; }" CHECK_C99_ENABLED_DEFAULT)
IF (${CHECK_C99_ENABLED_DEFAULT})
UNSET(${_RESULT})
MESSAGE(STATUS "Checking if C99 is enabled by default: yes")
ELSE()
MESSAGE(STATUS "Checking if C99 is enabled by default: no")
MESSAGE(STATUS "Checking what CFLAG is required for C99:")
FOREACH(CHECK_C99_CFLAG "-std=gnu99" "-std=c99" "-c99" "-AC99" "-xc99=all" "-qlanglvl=extc99")
SET(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
SET(CMAKE_REQUIRED_DEFINITIONS "${CHECK_C99_CFLAG}")
CHECK_C_SOURCE_COMPILES("int main() { return 0; }" CFLAG_${CHECK_C99_CFLAG})
SET(CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
IF(CFLAG_${CHECK_C99_CFLAG})
SET(${_RESULT} ${CHECK_C99_CFLAG})
BREAK()
ENDIF(CFLAG_${CHECK_C99_CFLAG})
UNSET(CFLAG_${CHECK_C99_CFLAG})
ENDFOREACH()
IF(${_RESULT})
MESSAGE(STATUS "Checking what CFLAG is required for C99: ${${_RESULT}}")
ELSE(${_RESULT})
MESSAGE(STATUS "Checking what CFLAG is required for C99: none")
ENDIF(${_RESULT})
ENDIF()
UNSET(CHECK_C99_ENABLED_DEFAULT)
ENDIF(NOT MSVC)
ENDMACRO (CHECK_C99_COMPILER_FLAG)

View File

@ -0,0 +1,67 @@
# - Check what flag is needed to activate C++ 2011 mode.
# CHECK_CXX11_COMPILER_FLAG(VARIABLE)
#
# VARIABLE - variable to store the result
#
# This actually calls the check_c_source_compiles macro.
# See help for CheckCSourceCompiles for a listing of variables
# that can modify the build.
# Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
# C++ 2011 version Copyright (c) 2011 by David Korth.
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
# Based on CHECK_C99_COMPILER_FLAG(). (CheckC99CompilerFlag.cmake)
INCLUDE(CheckCXXSourceCompiles)
MACRO(CHECK_CXX11_COMPILER_FLAG _RESULT)
UNSET(${_RESULT})
# MSVC doesn't allow setting the C standard.
IF(NOT MSVC)
# Check if C++ 2011 is present without any flags.
# g++-5.1 uses C++ 1998 by default, but this may change
# in future versions of gcc.
MESSAGE(STATUS "Checking if C++ 2011 is enabled by default:")
CHECK_CXX_SOURCE_COMPILES("
#if !defined(__cplusplus) || __cplusplus < 201103L
#error C++ 2011 is not enabled
#endif
int main() { return 0; }" CHECK_CXX11_ENABLED_DEFAULT)
IF (${CHECK_CXX11_ENABLED_DEFAULT})
UNSET(${_RESULT})
MESSAGE(STATUS "Checking if C++ 2011 is enabled by default: yes")
ELSE()
MESSAGE(STATUS "Checking if C++ 2011 is enabled by default: no")
MESSAGE(STATUS "Checking what CXXFLAG is required for C++ 2011:")
FOREACH(CHECK_CXX11_CXXFLAG "-std=gnu++11" "-std=gnu++0x" "-std=c++11" "-std=c++0x")
# CMake doesn't like "+" characters in variable names.
STRING(REPLACE "+" "_" CHECK_CXX11_CXXFLAG_VARNAME "CHECK_CXXFLAG_${CHECK_CXX11_CXXFLAG}")
SET(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
SET(CMAKE_REQUIRED_DEFINITIONS "${CHECK_CXX11_CXXFLAG}")
CHECK_CXX_SOURCE_COMPILES("int main() { static_assert(0 == 0, \"test assertion\"); return 0; }" ${CHECK_CXX11_CXXFLAG_VARNAME})
SET(CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
IF(${${CHECK_CXX11_CXXFLAG_VARNAME}})
SET(${_RESULT} ${CHECK_CXX11_CXXFLAG})
UNSET(${CHECK_CXX11_CXXFLAG_VARNAME})
UNSET(CHECK_CXX11_CXXFLAG_VARNAME)
BREAK()
ENDIF(${${CHECK_CXX11_CXXFLAG_VARNAME}})
UNSET(${CHECK_CXX11_CXXFLAG_VARNAME})
UNSET(CHECK_CXX11_CXXFLAG_VARNAME)
ENDFOREACH()
IF(${_RESULT})
MESSAGE(STATUS "Checking what CXXFLAG is required for C++ 2011: ${${_RESULT}}")
ELSE(${_RESULT})
MESSAGE(STATUS "Checking what CXXFLAG is required for C++ 2011: none")
ENDIF(${_RESULT})
ENDIF()
UNSET(CHECK_CXX11_ENABLED_DEFAULT)
ENDIF(NOT MSVC)
ENDMACRO(CHECK_CXX11_COMPILER_FLAG)

View File

@ -14,8 +14,16 @@ ENDIF()
INCLUDE(CheckCCompilerFlag)
INCLUDE(CheckCXXCompilerFlag)
SET(RP_C_FLAGS_COMMON "-D_GNU_SOURCE=1")
SET(RP_CXX_FLAGS_COMMON "-D_GNU_SOURCE=1")
# Check what flag is needed for C99 support.
INCLUDE(CheckC99CompilerFlag)
CHECK_C99_COMPILER_FLAG(RP_C99_CFLAG)
# Check what flag is needed for C++ 2011 support.
INCLUDE(CheckCXX11CompilerFlag)
CHECK_CXX11_COMPILER_FLAG(RP_CXX11_CXXFLAG)
SET(RP_C_FLAGS_COMMON "-D_GNU_SOURCE=1 ${RP_C99_CFLAG}")
SET(RP_CXX_FLAGS_COMMON "-D_GNU_SOURCE=1 ${RP_CXX11_CXXFLAG}")
SET(RP_EXE_LINKER_FLAGS_COMMON "")
UNSET(RP_C99_CFLAG)
@ -31,7 +39,7 @@ FOREACH(FLAG_TEST "-Wall" "-Wextra" "-fstrict-aliasing" "-Wno-multichar")
SET(RP_C_FLAGS_COMMON "${RP_C_FLAGS_COMMON} ${FLAG_TEST}")
ENDIF(CFLAG_${FLAG_TEST})
UNSET(CFLAG_${FLAG_TEST})
CHECK_CXX_COMPILER_FLAG("${FLAG_TEST}" CXXFLAG_${FLAG_TEST})
IF(CXXFLAG_${FLAG_TEST})
SET(RP_CXX_FLAGS_COMMON "${RP_CXX_FLAGS_COMMON} ${FLAG_TEST}")

View File

@ -31,9 +31,6 @@ SET(librvth_H
######################
ADD_LIBRARY(rvth STATIC ${librvth_SRCS} ${librvth_H})
IF(NOT MSVC)
TARGET_COMPILE_FEATURES(rvth PUBLIC c_std_99)
ENDIF(NOT MSVC)
# Include paths:
# - Public: Current source and binary directories.

View File

@ -12,9 +12,6 @@ ADD_EXECUTABLE(rvthtool
${rvthtool_SRCS}
${rvthtool_H}
)
IF(NOT MSVC)
TARGET_COMPILE_FEATURES(rvthtool PUBLIC c_std_99)
ENDIF(NOT MSVC)
SET_TARGET_PROPERTIES(rvthtool PROPERTIES PREFIX "")
DO_SPLIT_DEBUG(rvthtool)
SET_WINDOWS_SUBSYSTEM(rvthtool CONSOLE)