123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- macro(check_line_exists TARGET_FILE REG_EXP_REF)
- set(IS_FOUND "FALSE")
- file(STRINGS ${TARGET_FILE} FOUND_LINE LIMIT_COUNT 1 REGEX "${${REG_EXP_REF}}")
- list(LENGTH FOUND_LINE _VAR_LEN)
- if(_VAR_LEN GREATER 0)
- set(IS_FOUND "TRUE")
- endif()
- endmacro()
- macro(parse_project_section TARGET_FILE PROJECT_NAME)
- set(REG_EXP "^Project\\(\\\"{(.+)}\\\"\\) = \\\"${PROJECT_NAME}\\\", \\\".+\\..+\\\", \\\"{(.+)}\\\"$")
- check_line_exists(${TARGET_FILE} REG_EXP)
- if(NOT IS_FOUND)
- return()
- endif()
- string(REGEX REPLACE "${REG_EXP}" "\\1;\\2" _GUIDS "${FOUND_LINE}")
- list(GET _GUIDS 0 FOUND_TYPE)
- list(GET _GUIDS 1 FOUND_GUID)
- endmacro()
- function(check_project_type TARGET_FILE PROJECT_NAME PROJECT_TYPE RESULT)
- set(${RESULT} "FALSE" PARENT_SCOPE)
- parse_project_section(${TARGET_FILE} ${PROJECT_NAME})
- if(IS_FOUND AND FOUND_TYPE STREQUAL PROJECT_TYPE)
- set(${RESULT} "TRUE" PARENT_SCOPE)
- endif()
- endfunction()
- function(check_project_guid TARGET_FILE PROJECT_NAME PROJECT_GUID RESULT)
- set(${RESULT} "FALSE" PARENT_SCOPE)
- parse_project_section(${TARGET_FILE} ${PROJECT_NAME})
- if(IS_FOUND AND FOUND_GUID STREQUAL PROJECT_GUID)
- set(${RESULT} "TRUE" PARENT_SCOPE)
- endif()
- endfunction()
- function(check_custom_platform TARGET_FILE PROJECT_NAME PLATFORM_NAME RESULT)
- set(${RESULT} "FALSE" PARENT_SCOPE)
-
- parse_project_section(${TARGET_FILE} ${PROJECT_NAME})
- if(NOT IS_FOUND)
- return()
- endif()
-
-
- set(REG_EXP "^(\t)*\\{${FOUND_GUID}\\}\\.Debug[^ ]*\\.ActiveCfg = Debug\\|${PLATFORM_NAME}$")
- check_line_exists(${TARGET_FILE} REG_EXP)
- set(${RESULT} ${IS_FOUND} PARENT_SCOPE)
- endfunction()
- function(check_custom_configuration TARGET_FILE PROJECT_NAME SLN_CONFIG DST_CONFIG RESULT)
- set(${RESULT} "FALSE" PARENT_SCOPE)
-
- parse_project_section(${TARGET_FILE} ${PROJECT_NAME})
- if(NOT IS_FOUND)
- return()
- endif()
- set(REG_EXP "^(\t)*\\{${FOUND_GUID}\\}\\.${SLN_CONFIG}[^ ]*\\.ActiveCfg = ${DST_CONFIG}\\|.*$")
- check_line_exists(${TARGET_FILE} REG_EXP)
- set(${RESULT} ${IS_FOUND} PARENT_SCOPE)
- endfunction()
- function(check_project test name guid type platform imported_release_config_name)
- set(sln "${RunCMake_TEST_BINARY_DIR}/${test}.sln")
- set(sep "")
- set(failed "")
- if(NOT type)
- set(type 8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942)
- endif()
- if(NOT platform)
- if(RunCMake_GENERATOR_PLATFORM)
- set(platform "${RunCMake_GENERATOR_PLATFORM}")
- elseif("${RunCMake_GENERATOR}" MATCHES "Win64")
- set(platform "x64")
- else()
- set(platform "Win32")
- endif()
- endif()
- if(NOT imported_release_config_name)
- set(imported_release_config_name "Release")
- endif()
- if(guid)
- check_project_guid("${sln}" "${name}" "${guid}" passed_guid)
- if(NOT passed_guid)
- string(APPEND failed "${sep}${name} solution has no project with expected GUID=${guid}")
- set(sep "\n")
- endif()
- else()
- set(passed_guid 1)
- endif()
- check_project_type("${sln}" "${name}" "${type}" passed_type)
- if(NOT passed_type)
- string(APPEND failed "${sep}${name} solution has no project with expected TYPE=${type}")
- set(sep "\n")
- endif()
- check_custom_platform("${sln}" "${name}" "${platform}" passed_platform)
- if(NOT passed_platform)
- string(APPEND failed "${sep}${name} solution has no project with expected PLATFORM=${platform}")
- set(sep "\n")
- endif()
- check_custom_configuration("${sln}" "${name}" "Release" "${imported_release_config_name}" passed_configuration)
- if(NOT passed_configuration)
- string(APPEND failed "${sep}${name} solution has no project with expected CONFIG=${imported_release_config_name}")
- set(sep "\n")
- endif()
- set(RunCMake_TEST_FAILED "${failed}" PARENT_SCOPE)
- endfunction()
|