mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-22 14:23:10 -05:00
72e7c45e98
Since 3.19, CMake generates a deprecation warning when using a minimum version less than 2.8.12. This eliminates those warnings generated during tests, which are typically hidden from the user and developer but are being generated nonetheless.
94 lines
4.8 KiB
CMake
94 lines
4.8 KiB
CMake
cmake_minimum_required(VERSION 2.8.12)
|
|
|
|
project(CheckStructHasMember)
|
|
|
|
set(CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
|
|
include(CheckStructHasMember)
|
|
|
|
foreach(_config_type Release RelWithDebInfo Debug)
|
|
set(CMAKE_TRY_COMPILE_CONFIGURATION ${_config_type})
|
|
unset(CSHM_RESULT_S1_${_config_type} CACHE)
|
|
unset(CSHM_RESULT_S2_${_config_type} CACHE)
|
|
unset(CSHM_RESULT_S3_${_config_type} CACHE)
|
|
message(STATUS "Testing configuration ${_config_type}")
|
|
|
|
check_struct_has_member("struct non_existent_struct" "foo" "cm_cshm.h" CSHM_RESULT_S1_${_config_type})
|
|
check_struct_has_member("struct struct_with_member" "non_existent_member" "cm_cshm.h" CSHM_RESULT_S2_${_config_type})
|
|
check_struct_has_member("struct struct_with_member" "member" "cm_cshm.h" CSHM_RESULT_S3_${_config_type})
|
|
|
|
if(CSHM_RESULT_S1_${_config_type} OR CSHM_RESULT_S2_${_config_type})
|
|
message(SEND_ERROR "CheckStructHasMember reported a nonexistent member as existing in configuration ${_config_type}")
|
|
endif()
|
|
|
|
if(NOT CSHM_RESULT_S3_${_config_type})
|
|
message(SEND_ERROR "CheckStructHasMember did not report an existent member as existing in configuration ${_config_type}")
|
|
endif()
|
|
endforeach()
|
|
|
|
foreach(_config_type Release RelWithDebInfo Debug)
|
|
set(CMAKE_TRY_COMPILE_CONFIGURATION ${_config_type})
|
|
unset(CSHM_RESULT_S1_${_config_type}_C CACHE)
|
|
unset(CSHM_RESULT_S2_${_config_type}_C CACHE)
|
|
unset(CSHM_RESULT_S3_${_config_type}_C CACHE)
|
|
message(STATUS "Testing configuration ${_config_type}")
|
|
|
|
check_struct_has_member("struct non_existent_struct" "foo" "cm_cshm.h" CSHM_RESULT_S1_${_config_type}_C LANGUAGE C)
|
|
check_struct_has_member("struct struct_with_member" "non_existent_member" "cm_cshm.h" CSHM_RESULT_S2_${_config_type}_C LANGUAGE C)
|
|
check_struct_has_member("struct struct_with_member" "member" "cm_cshm.h" CSHM_RESULT_S3_${_config_type}_C LANGUAGE C)
|
|
|
|
if(CSHM_RESULT_S1_${_config_type}_C OR CSHM_RESULT_S2_${_config_type}_C)
|
|
message(SEND_ERROR "CheckStructHasMember reported a nonexistent member as existing in configuration ${_config_type}")
|
|
endif()
|
|
|
|
if(NOT CSHM_RESULT_S3_${_config_type}_C)
|
|
message(SEND_ERROR "CheckStructHasMember did not report an existent member as existing in configuration ${_config_type}")
|
|
endif()
|
|
endforeach()
|
|
|
|
foreach(_config_type Release RelWithDebInfo Debug)
|
|
set(CMAKE_TRY_COMPILE_CONFIGURATION ${_config_type})
|
|
unset(CSHM_RESULT_S1_${_config_type}_CXX CACHE)
|
|
unset(CSHM_RESULT_S2_${_config_type}_CXX CACHE)
|
|
unset(CSHM_RESULT_S3_${_config_type}_CXX CACHE)
|
|
unset(CSHM_RESULT_C1_${_config_type}_CXX CACHE)
|
|
unset(CSHM_RESULT_C2_${_config_type}_CXX CACHE)
|
|
unset(CSHM_RESULT_C3_${_config_type}_CXX CACHE)
|
|
|
|
message(STATUS "Testing configuration ${_config_type}")
|
|
|
|
check_struct_has_member("non_existent_struct" "foo" "cm_cshm.h" CSHM_RESULT_S1_${_config_type}_CXX LANGUAGE CXX)
|
|
check_struct_has_member("struct_with_non_existent_members" "non_existent_member" "cm_cshm.h" CSHM_RESULT_S2_${_config_type}_CXX LANGUAGE CXX)
|
|
check_struct_has_member("struct struct_with_member" "member" "cm_cshm.h" CSHM_RESULT_S3_${_config_type}_CXX LANGUAGE CXX)
|
|
check_struct_has_member("ns::non_existent_class" "foo" "cm_cshm.hxx" CSHM_RESULT_C1_${_config_type}_CXX LANGUAGE CXX)
|
|
check_struct_has_member("ns::class_with_non_existent_members" "foo" "cm_cshm.hxx" CSHM_RESULT_C2_${_config_type}_CXX LANGUAGE CXX)
|
|
check_struct_has_member("ns::class_with_member" "foo" "cm_cshm.hxx" CSHM_RESULT_C3_${_config_type}_CXX LANGUAGE CXX)
|
|
|
|
if(CSHM_RESULT_S1_${_config_type}_CXX OR CSHM_RESULT_S2_${_config_type}_CXX OR CSHM_RESULT_C1_${_config_type}_CXX OR CSHM_RESULT_C2_${_config_type}_CXX)
|
|
message(SEND_ERROR "CheckStructHasMember reported a nonexistent member as existing in configuration ${_config_type}")
|
|
endif()
|
|
|
|
if(NOT CSHM_RESULT_S3_${_config_type}_CXX OR NOT CSHM_RESULT_C3_${_config_type}_CXX)
|
|
message(SEND_ERROR "CheckStructHasMember did not report an existent member as existing in configuration ${_config_type}")
|
|
endif()
|
|
endforeach()
|
|
|
|
|
|
set(CMAKE_TRY_COMPILE_CONFIGURATION ${CMAKE_BUILD_TYPE})
|
|
|
|
if (CMAKE_COMPILER_IS_GNUCC)
|
|
string(APPEND CMAKE_C_FLAGS " -O3")
|
|
unset(CSHM_RESULT_O3 CACHE)
|
|
unset(CSHM_RESULT_O3_C CACHE)
|
|
unset(CSHM_RESULT_O3_CXX CACHE)
|
|
message(STATUS "Testing with optimization -O3")
|
|
|
|
check_struct_has_member("class_with_non_existent_members" foo "cm_cshm.h" CSHM_RESULT_O3)
|
|
check_struct_has_member("class_with_non_existent_members" foo "cm_cshm.h" CSHM_RESULT_O3_C LANGUAGE C)
|
|
check_struct_has_member("class_with_non_existent_members" foo "cm_cshm.h" CSHM_RESULT_O3_CXX LANGUAGE CXX)
|
|
|
|
if (CSE_RESULT_O3 OR CSHM_RESULT_O3_C OR CSHM_RESULT_O3_CXX)
|
|
message(SEND_ERROR "CheckSymbolExists reported a nonexistent symbol as existing with optimization -O3")
|
|
endif ()
|
|
endif ()
|