Skip to content

Commit

Permalink
Add compilation and running test for C++20 to GCC and Clang (nonstd-l…
Browse files Browse the repository at this point in the history
…ite-project issue 64)

martinmoene/nonstd-lite-project#64

Also, use toplevel unit_name and enable_testing().
  • Loading branch information
martinmoene committed Aug 19, 2022
1 parent 829c569 commit 6be2290
Showing 1 changed file with 20 additions and 4 deletions.
24 changes: 20 additions & 4 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2020 by Martin Moene
# Copyright 2020-2022 by Martin Moene
#
# https://github.com/martinmoene/bit-lite
#
Expand All @@ -11,10 +11,11 @@ endif()

project( test LANGUAGES CXX )

set( unit_name "bit" )
# unit_name provided by toplevel CMakeLists.txt [set( unit_name "xxx" )]
set( PACKAGE ${unit_name}-lite )
set( PROGRAM ${unit_name}-lite )
set( SOURCES ${unit_name}-main.t.cpp ${unit_name}.t.cpp )
set( TWEAKD "." )

message( STATUS "Subproject '${PROJECT_NAME}', programs '${PROGRAM}-*'")

Expand Down Expand Up @@ -69,6 +70,9 @@ elseif( CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang" )
if( NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.1.0 )
set( HAS_CPP17_FLAG TRUE )
endif()
if( NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0.0 )
set( HAS_CPP20_FLAG TRUE )
endif()

# AppleClang: available -std flags depends on version
elseif( CMAKE_CXX_COMPILER_ID MATCHES "AppleClang" )
Expand All @@ -83,6 +87,9 @@ elseif( CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang" )
if( NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.2.0 )
set( HAS_CPP17_FLAG TRUE )
endif()
# if( NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS x.x.x )
# set( HAS_CPP20_FLAG TRUE )
# endif()

# Clang: available -std flags depends on version
elseif( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
Expand All @@ -97,6 +104,9 @@ elseif( CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang" )
if( NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0.0 )
set( HAS_CPP17_FLAG TRUE )
endif()
if( NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0.0 )
set( HAS_CPP20_FLAG TRUE )
endif()
endif()

elseif( CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
Expand Down Expand Up @@ -125,6 +135,7 @@ function( make_target target std )

add_executable ( ${target} ${SOURCES} )
target_include_directories( ${target} SYSTEM PRIVATE lest )
target_include_directories( ${target} PRIVATE ${TWEAKD} )
target_link_libraries ( ${target} PRIVATE ${PACKAGE} )
target_compile_options ( ${target} PRIVATE ${OPTIONS} )
target_compile_definitions( ${target} PRIVATE ${DEFINITIONS} )
Expand Down Expand Up @@ -172,6 +183,10 @@ else()
enable_msvs_guideline_checker( ${PROGRAM}-cpp17.t )
endif()

if( HAS_CPP20_FLAG )
make_target( ${PROGRAM}-cpp20.t 20 )
endif()

if( HAS_CPPLATEST_FLAG )
make_target( ${PROGRAM}-cpplatest.t latest )
endif()
Expand All @@ -197,8 +212,6 @@ endif()

# configure unit tests via CTest:

enable_testing()

if( HAS_STD_FLAGS )
# unconditionally add C++98 variant for MSVC:
add_test( NAME test-cpp98 COMMAND ${PROGRAM}-cpp98.t )
Expand All @@ -212,6 +225,9 @@ if( HAS_STD_FLAGS )
if( HAS_CPP17_FLAG )
add_test( NAME test-cpp17 COMMAND ${PROGRAM}-cpp17.t )
endif()
if( HAS_CPP20_FLAG )
add_test( NAME test-cpp20 COMMAND ${PROGRAM}-cpp20.t )
endif()
if( HAS_CPPLATEST_FLAG )
add_test( NAME test-cpplatest COMMAND ${PROGRAM}-cpplatest.t )
endif()
Expand Down

0 comments on commit 6be2290

Please sign in to comment.