cmake_minimum_required(VERSION 3.8)
include(CMakePushCheckState)

set(CMAKE_EXTRA_INCLUDE_FILES file1)
set(CMAKE_REQUIRED_INCLUDES dir1)
set(CMAKE_REQUIRED_DEFINITIONS defs1 )
set(CMAKE_REQUIRED_LIBRARIES lib1)
set(CMAKE_REQUIRED_FLAGS flag1)
set(CMAKE_REQUIRED_QUIET 1)

cmake_push_check_state()

set(CMAKE_EXTRA_INCLUDE_FILES file2)
set(CMAKE_REQUIRED_INCLUDES dir2)
set(CMAKE_REQUIRED_DEFINITIONS defs2)
set(CMAKE_REQUIRED_LIBRARIES lib2)
set(CMAKE_REQUIRED_FLAGS flag2)
set(CMAKE_REQUIRED_QUIET 2)

cmake_push_check_state()

set(CMAKE_EXTRA_INCLUDE_FILES file3)
set(CMAKE_REQUIRED_DEFINITIONS defs3)
set(CMAKE_REQUIRED_INCLUDES dir3)
set(CMAKE_REQUIRED_DEFINITIONS defs3)
set(CMAKE_REQUIRED_LIBRARIES lib3)
set(CMAKE_REQUIRED_FLAGS flag3)
set(CMAKE_REQUIRED_QUIET 3)

cmake_push_check_state(RESET)

foreach(pair IN ITEMS
  EXTRA_INCLUDE_FILES|
  REQUIRED_INCLUDES|
  REQUIRED_DEFINITIONS|
  REQUIRED_LIBRARIES|
  REQUIRED_FLAGS|
  REQUIRED_QUIET|
  )
  string(REPLACE "|" ";" pair "${pair}")
  list(GET pair 0 var)
  list(GET pair 1 expected)
  if (NOT "${CMAKE_${var}}" STREQUAL "${expected}")
    set(fatal TRUE)
    message("ERROR: CMAKE_${var} is \"${CMAKE_${var}}\" (expected \"${expected}\")" )
  endif()
endforeach()

cmake_pop_check_state()

cmake_pop_check_state()

foreach(pair IN ITEMS
  EXTRA_INCLUDE_FILES|file2
  REQUIRED_INCLUDES|dir2
  REQUIRED_DEFINITIONS|defs2
  REQUIRED_LIBRARIES|lib2
  REQUIRED_FLAGS|flag2
  REQUIRED_QUIET|2
  )
  string(REPLACE "|" ";" pair "${pair}")
  list(GET pair 0 var)
  list(GET pair 1 expected)
  if (NOT "${CMAKE_${var}}" STREQUAL "${expected}")
    set(fatal TRUE)
    message("ERROR: CMAKE_${var} is \"${CMAKE_${var}}\" (expected \"${expected}\")" )
  endif()
endforeach()

cmake_pop_check_state()

foreach(pair IN ITEMS
  EXTRA_INCLUDE_FILES|file1
  REQUIRED_INCLUDES|dir1
  REQUIRED_DEFINITIONS|defs1
  REQUIRED_LIBRARIES|lib1
  REQUIRED_FLAGS|flag1
  REQUIRED_QUIET|1
  )
  string(REPLACE "|" ";" pair "${pair}")
  list(GET pair 0 var)
  list(GET pair 1 expected)
  if (NOT "${CMAKE_${var}}" STREQUAL "${expected}")
    set(fatal TRUE)
    message("ERROR: CMAKE_${var} is \"${CMAKE_${var}}\" (expected \"${expected}\")" )
  endif()
endforeach()

if(fatal)
  message(FATAL_ERROR "cmake_push_check_state() test failed")
endif()
