Skip to content

Commit

Permalink
Merge branch 'add_c_standard_input_flag' (TriBITSPub#239)
Browse files Browse the repository at this point in the history
This is needed for trilinos/Trilinos#1974.

Build/Test Cases Summary
Enabled Packages:
Enabled all Packages
0) MPI_DEBUG => passed: passed=263,notpassed=0 (0.74 min)
1) SERIAL_RELEASE => passed: passed=263,notpassed=0 (0.62 min)
2) MPI_DEBUG_CMAKE-3.6.2 => passed: passed=284,notpassed=0 (0.62 min)
3) SERIAL_RELEASE_CMAKE-3.6.2 => passed: passed=284,notpassed=0 (0.53 min)
Other local commits for this build/test group: 6e3d7d2, f22a20e, 09cc5c4
  • Loading branch information
bartlettroscoe committed Nov 10, 2017
2 parents dcc2956 + 6e3d7d2 commit fd1f66e
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 4 deletions.
2 changes: 1 addition & 1 deletion test/core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ TRIBITS_ADD_ADVANCED_TEST( CompilerOptions_UnitTests
-D${PROJECT_NAME}_TRIBITS_DIR=${${PROJECT_NAME}_TRIBITS_DIR}
-P "${CMAKE_CURRENT_SOURCE_DIR}/CompilerOptions_UnitTests.cmake"
PASS_REGULAR_EXPRESSION_ALL
"Final UnitTests Result: num_run = 198"
"Final UnitTests Result: num_run = 207"
"Final UnitTests Result: PASSED"
)

Expand Down
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)
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,14 @@ 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()
IF ("${${PROJECT_NAME}_C_Standard}" STREQUAL "")
SET(${PROJECT_NAME}_C_Standard_USED c99)
ELSE()
SET(${PROJECT_NAME}_C_Standard_USED ${${PROJECT_NAME}_C_Standard})
ENDIF()
MULTILINE_SET(C_STRONG_COMPILE_WARNING_FLAGS
${COMMON_STRONG_COMPILE_WARNING_FLAGS}
" -std=c99" # Check for C99
" -std=${${PROJECT_NAME}_C_Standard_USED}"
)
ENDIF()

Expand Down
8 changes: 8 additions & 0 deletions tribits/core/package_arch/TribitsGlobalMacros.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,14 @@ MACRO(TRIBITS_DEFINE_GLOBAL_OPTIONS_AND_DEFINE_EXTRA_REPOS)
"Enable the C compiler and related code"
${${PROJECT_NAME}_ENABLE_C_DEFAULT} )

IF ("${${PROJECT_NAME}_C_Standard_DEFAULT}" STREQUAL "")
SET(${PROJECT_NAME}_C_Standard_DEFAULT c99)
ENDIF()
ADVANCED_SET(${PROJECT_NAME}_C_Standard
${${PROJECT_NAME}_C_Standard_DEFAULT}
CACHE STRING
"The standard <cstd> to use in --std=<cstd> for GCC compilers." )

IF ("${${PROJECT_NAME}_ENABLE_CXX_DEFAULT}" STREQUAL "")
SET(${PROJECT_NAME}_ENABLE_CXX_DEFAULT ON)
ENDIF()
Expand Down
13 changes: 12 additions & 1 deletion tribits/doc/developers_guide/TribitsDevelopersGuide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7811,6 +7811,7 @@ be documented in `TribitsBuildReference`_.
The global project-level TriBITS options for which defaults can be provided by
a given TriBITS project are:

* `${PROJECT_NAME}_C_Standard`_
* `${PROJECT_NAME}_CHECK_FOR_UNPARSED_ARGUMENTS`_
* `${PROJECT_NAME}_CONFIGURE_OPTIONS_FILE_APPEND`_
* `${PROJECT_NAME}_CPACK_SOURCE_GENERATOR`_
Expand Down Expand Up @@ -7842,9 +7843,19 @@ a given TriBITS project are:
* `MPI_EXEC_MAX_NUMPROCS`_
* `PythonInterp_FIND_VERSION`_


These options are described below.

.. _${PROJECT_NAME}_C_Standard:

**${PROJECT_NAME}_C_Standard**

The variable ``${PROJECT_NAME}_C_Standard`` is used define the C standard
pass to the compiler in ``--std=<cstd>`` for GCC builds of the project.
TriBITS sets the default as ``c99`` but the project can set a new default in
the project's base `<projectDir>/CMakeLists.txt`_ file with, for example::

SET(${PROJECT_NAME}_C_Standard_DEFAULT c11)

.. _${PROJECT_NAME}_CHECK_FOR_UNPARSED_ARGUMENTS:

**${PROJECT_NAME}_CHECK_FOR_UNPARSED_ARGUMENTS**
Expand Down

0 comments on commit fd1f66e

Please sign in to comment.