Skip to content

Commit

Permalink
Add generic override for the c standard
Browse files Browse the repository at this point in the history
This modifies the TRIBITS_DEFINE_STANDARD_COMPILE_FLAGS_VARS
macro to respect a ${PROJECT_NAME}_C_Standard value when passed.
  • Loading branch information
prwolfe committed Nov 8, 2017
1 parent dcc2956 commit 09cc5c4
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 5 deletions.
29 changes: 28 additions & 1 deletion test/core/CompilerOptions_UnitTests.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,32 @@ FUNCTION(UNITEST_GCC_BASE_OPTIONS)
ENDFUNCTION()


FUNCTION(UNITEST_GCC_STD_OVERRIDE_OPTIONS)

MESSAGE("\n***")
MESSAGE("*** Testing GCC compiler options with override of c standard to c34")
MESSAGE("***\n")

TRIBITS_SET_ALL_COMPILER_ID(GNU)
SET(${PROJECT_NAME}_C_Standard "c34" )

TRIBITS_COMPILE_OPTIONS_COMMON_ACTIONS()

UNITTEST_COMPARE_CONST( CMAKE_C_FLAGS
" -pedantic -Wall -Wno-long-long -std=c34" )
UNITTEST_COMPARE_CONST( CMAKE_CXX_FLAGS
" -pedantic -Wall -Wno-long-long -std=c++98 -Wwrite-strings" )
UNITTEST_COMPARE_CONST( CMAKE_Fortran_FLAGS "" )
UNITTEST_COMPARE_CONST( CMAKE_C_FLAGS_DEBUG "-g -O0" )
UNITTEST_COMPARE_CONST( CMAKE_CXX_FLAGS_DEBUG "-g -O0" )
UNITTEST_COMPARE_CONST( CMAKE_Fortran_FLAGS_DEBUG "-g -O0" )
UNITTEST_COMPARE_CONST( CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" )
UNITTEST_COMPARE_CONST( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" )
UNITTEST_COMPARE_CONST( CMAKE_Fortran_FLAGS_RELEASE "-O3" )

ENDFUNCTION()


FUNCTION(UNITEST_GCC_ENABLE_CXX11_OPTIONS)

MESSAGE("\n***")
Expand Down Expand Up @@ -819,6 +845,7 @@ SET(CMAKE_BUILD_TYPE DEBUG)

UNITEST_GCC_ENABLE_CXX11_OPTIONS()
UNITEST_GCC_BASE_OPTIONS()
UNITEST_GCC_STD_OVERRIDE_OPTIONS()
UNITEST_GCC_PROJECT_DEFINED_STRONG_C_OPTIONS()
UNITEST_GCC_PROJECT_DEFINED_STRONG_CXX_OPTIONS()
UNITEST_GCC_PROJECT_DEFINED_STRONG_C_CXX_OPTIONS()
Expand All @@ -842,4 +869,4 @@ UNITEST_OTHER_BASE_OPTIONS()
UNITEST_OTHER_WITH_SHADOW_CLEANED_CHECKED_STL_COVERAGE_OPTIONS()

# Pass in the number of expected tests that must pass!
UNITTEST_FINAL_RESULT(198)
UNITTEST_FINAL_RESULT(207)
17 changes: 13 additions & 4 deletions tribits/core/package_arch/TribitsDefineStandardCompileVars.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ INCLUDE(PrependCmndlineArgs)
# Macro that just defines the basic flags
#

SET(Tribits_C_Standard_Default "c99" )

MACRO(TRIBITS_DEFINE_STANDARD_COMPILE_FLAGS_VARS ENABLE_SHADOWING_WARNINGS)

#
Expand Down Expand Up @@ -94,10 +96,17 @@ MACRO(TRIBITS_DEFINE_STANDARD_COMPILE_FLAGS_VARS ENABLE_SHADOWING_WARNINGS)
IF (${PROJECT_NAME}_C_STRONG_COMPILE_WARNING_FLAGS)
SET(C_STRONG_COMPILE_WARNING_FLAGS ${${PROJECT_NAME}_C_STRONG_COMPILE_WARNING_FLAGS})
ELSE()
MULTILINE_SET(C_STRONG_COMPILE_WARNING_FLAGS
${COMMON_STRONG_COMPILE_WARNING_FLAGS}
" -std=c99" # Check for C99
)
IF(${PROJECT_NAME}_C_Standard)
MULTILINE_SET(C_STRONG_COMPILE_WARNING_FLAGS
${COMMON_STRONG_COMPILE_WARNING_FLAGS}
" -std=${${PROJECT_NAME}_C_Standard}" # Check for the passed version
)
ELSE()
MULTILINE_SET(C_STRONG_COMPILE_WARNING_FLAGS
${COMMON_STRONG_COMPILE_WARNING_FLAGS}
" -std=${Tribits_C_Standard_Default}" # Check for C99
)
ENDIF()
ENDIF()

IF (${PROJECT_NAME}_CXX_STRONG_COMPILE_WARNING_FLAGS)
Expand Down

0 comments on commit 09cc5c4

Please sign in to comment.