diff --git a/Help/release/3.29.rst b/Help/release/3.29.rst index 6634cccd7..e6717d9fd 100644 --- a/Help/release/3.29.rst +++ b/Help/release/3.29.rst @@ -231,8 +231,8 @@ Changes made since CMake 3.29.0 include the following. to ``perMachine`` on their own schedule by setting ``CPACK_WIX_INSTALL_SCOPE``. -3.29.6, 3.29.7 --------------- +3.29.6, 3.29.7, 3.29.8 +---------------------- * These versions made no changes to documented features or interfaces. Some implementation updates were made to support ecosystem changes diff --git a/Help/release/3.30.rst b/Help/release/3.30.rst index 2d5724990..50fefe295 100644 --- a/Help/release/3.30.rst +++ b/Help/release/3.30.rst @@ -254,3 +254,12 @@ Changes made since CMake 3.30.0 include the following. * These versions made no changes to documented features or interfaces. Some implementation updates were made to support ecosystem changes and/or fix regressions. + +3.30.3 +------ + +* The :module:`FindPython` and :module:`FindPython3` modules now define, + respectively, the ``Python_DEFINITIONS`` and ``Python3_DEFINITIONS`` + variables on Windows to support development with the free threaded + version of Python. The :prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` target + property is also defined for the various targets provided by these modules. diff --git a/Modules/FindJNI.cmake b/Modules/FindJNI.cmake index abc76cfed..82e3d88f7 100644 --- a/Modules/FindJNI.cmake +++ b/Modules/FindJNI.cmake @@ -343,7 +343,9 @@ foreach(dir IN LISTS JAVA_AWT_LIBRARY_DIRECTORIES) list(APPEND JAVA_JVM_LIBRARY_DIRECTORIES "${dir}" "${dir}/client" + "${dir}/minimal" "${dir}/server" + "${dir}/zero" # IBM SDK, Java Technology Edition, specific paths "${dir}/j9vm" "${dir}/default" @@ -389,8 +391,10 @@ if(APPLE) execute_process( COMMAND xcodebuild -version OUTPUT_VARIABLE _FindJNI_XCODEBUILD_VERSION + ERROR_VARIABLE _FindJNI_XCODEBUILD_VERSION + RESULT_VARIABLE _FindJNI_XCODEBUILD_RESULT ) - if(_FindJNI_XCODEBUILD_VERSION MATCHES "Xcode ([0-9]+(\\.[0-9]+)*)") + if(_FindJNI_XCODEBUILD_RESULT EQUAL 0 AND _FindJNI_XCODEBUILD_VERSION MATCHES "Xcode ([0-9]+(\\.[0-9]+)*)") set(_FindJNI_XCODE_VERSION "${CMAKE_MATCH_1}") else() set(_FindJNI_XCODE_VERSION "") diff --git a/Modules/FindPython.cmake b/Modules/FindPython.cmake index 345afc55b..58e134801 100644 --- a/Modules/FindPython.cmake +++ b/Modules/FindPython.cmake @@ -224,6 +224,11 @@ This module will set the following variables in your project The Python include directories. +``Python_DEFINITIONS`` + .. versionadded:: 3.30.3 + + The Python preprocessor definitions. + ``Python_DEBUG_POSTFIX`` .. versionadded.. 3.30 diff --git a/Modules/FindPython/Support.cmake b/Modules/FindPython/Support.cmake index 1386117c9..35a1d6793 100644 --- a/Modules/FindPython/Support.cmake +++ b/Modules/FindPython/Support.cmake @@ -3740,6 +3740,14 @@ if (("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_RELEASE _${_PYTHON_PREFIX}_RUNTIME_LIBRARY_DEBUG) endif() + + if (WIN32 AND _${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "t${CMAKE_IMPORT_LIBRARY_SUFFIX}$") + # On windows, header file is shared between the different implementations + # So Py_GIL_DISABLED should be set explicitly + set (${_PYTHON_PREFIX}_DEFINITIONS Py_GIL_DISABLED=1) + else() + unset (${_PYTHON_PREFIX}_DEFINITIONS) + endif() endif() if ("SABI_LIBRARY" IN_LIST _${_PYTHON_PREFIX}_FIND_DEVELOPMENT_ARTIFACTS) @@ -3769,6 +3777,14 @@ if (("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS _${_PYTHON_PREFIX}_RUNTIME_SABI_LIBRARY_RELEASE _${_PYTHON_PREFIX}_RUNTIME_SABI_LIBRARY_DEBUG) endif() + + if (WIN32 AND _${_PYTHON_PREFIX}_SABI_LIBRARY_RELEASE MATCHES "t${CMAKE_IMPORT_LIBRARY_SUFFIX}$") + # On windows, header file is shared between the different implementations + # So Py_GIL_DISABLED should be set explicitly + set (${_PYTHON_PREFIX}_DEFINITIONS Py_GIL_DISABLED=1) + else() + unset (${_PYTHON_PREFIX}_DEFINITIONS) + endif() endif() if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE OR _${_PYTHON_PREFIX}_SABI_LIBRARY_RELEASE OR _${_PYTHON_PREFIX}_INCLUDE_DIR) @@ -3903,11 +3919,12 @@ if ("NumPy" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS AND ${_PYTHON_PREFIX}_Inte # Workaround Intel MKL library outputting a message in stdout, which cause # incorrect detection of numpy.get_include() and numpy.__version__ - # See https://github.com/numpy/numpy/issues/23775 - if(DEFINED ENV{MKL_ENABLE_INSTRUCTIONS}) - set(_${_PYTHON_PREFIX}_BACKUP_ENV_VAR_MKL_ENABLE_INSTRUCTIONS ENV{MKL_ENABLE_INSTRUCTIONS}) + # See https://github.com/numpy/numpy/issues/23775 and + # https://gitlab.kitware.com/cmake/cmake/-/issues/26240 + if(NOT DEFINED ENV{MKL_ENABLE_INSTRUCTIONS}) + set(_${_PYTHON_PREFIX}_UNSET_ENV_VAR_MKL_ENABLE_INSTRUCTIONS YES) + set(ENV{MKL_ENABLE_INSTRUCTIONS} "SSE4_2") endif() - set(ENV{MKL_ENABLE_INSTRUCTIONS} "SSE4_2") if (NOT _${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR) execute_process(COMMAND ${${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c @@ -3949,11 +3966,9 @@ if ("NumPy" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS AND ${_PYTHON_PREFIX}_Inte set (${_PYTHON_PREFIX}_NumPy_FOUND FALSE) endif() - # Restore previous value of MKL_ENABLE_INSTRUCTIONS - if(DEFINED _${_PYTHON_PREFIX}_BACKUP_ENV_VAR_MKL_ENABLE_INSTRUCTIONS) - set(ENV{MKL_ENABLE_INSTRUCTIONS} ${_${_PYTHON_PREFIX}_BACKUP_ENV_VAR_MKL_ENABLE_INSTRUCTIONS}) - unset(_${_PYTHON_PREFIX}_BACKUP_ENV_VAR_MKL_ENABLE_INSTRUCTIONS) - else() + # Unset MKL_ENABLE_INSTRUCTIONS if set by us + if(DEFINED _${_PYTHON_PREFIX}_UNSET_ENV_VAR_MKL_ENABLE_INSTRUCTIONS) + unset(_${_PYTHON_PREFIX}_UNSET_ENV_VAR_MKL_ENABLE_INSTRUCTIONS) unset(ENV{MKL_ENABLE_INSTRUCTIONS}) endif() @@ -4067,6 +4082,12 @@ if(_${_PYTHON_PREFIX}_CMAKE_ROLE STREQUAL "PROJECT") set_property (TARGET ${__name} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${${_PYTHON_PREFIX}_INCLUDE_DIRS}") + if (${_PYTHON_PREFIX}_DEFINITIONS) + set_property (TARGET ${__name} + PROPERTY INTERFACE_COMPILE_DEFINITIONS "${${_PYTHON_PREFIX}_DEFINITIONS}") + endif() + + if (${_PYTHON_PREFIX}_${_PREFIX}LIBRARY_RELEASE AND ${_PYTHON_PREFIX}_RUNTIME_${_PREFIX}LIBRARY_RELEASE) # System manage shared libraries in two parts: import and runtime if (${_PYTHON_PREFIX}_${_PREFIX}LIBRARY_RELEASE AND ${_PYTHON_PREFIX}_${_PREFIX}LIBRARY_DEBUG) @@ -4123,6 +4144,11 @@ if(_${_PYTHON_PREFIX}_CMAKE_ROLE STREQUAL "PROJECT") set_property (TARGET ${__name} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${${_PYTHON_PREFIX}_INCLUDE_DIRS}") + if (${_PYTHON_PREFIX}_DEFINITIONS) + set_property (TARGET ${__name} + PROPERTY INTERFACE_COMPILE_DEFINITIONS "${${_PYTHON_PREFIX}_DEFINITIONS}") + endif() + # When available, enforce shared library generation with undefined symbols if (APPLE) set_property (TARGET ${__name} diff --git a/Modules/FindPython3.cmake b/Modules/FindPython3.cmake index 9002209be..55d33a248 100644 --- a/Modules/FindPython3.cmake +++ b/Modules/FindPython3.cmake @@ -226,6 +226,11 @@ This module will set the following variables in your project The Python 3 include directories. +``Python3_DEFINITIONS`` + .. versionadded:: 3.30.3 + + The Python 3 preprocessor definitions. + ``Python3_DEBUG_POSTFIX`` .. versionadded.. 3.30 diff --git a/Modules/Platform/Android-Determine.cmake b/Modules/Platform/Android-Determine.cmake index cecdde85f..342586d4b 100644 --- a/Modules/Platform/Android-Determine.cmake +++ b/Modules/Platform/Android-Determine.cmake @@ -375,21 +375,21 @@ endif() if(CMAKE_ANDROID_ARCH_ABI AND NOT DEFINED "NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC") message(FATAL_ERROR "Android: Unknown ABI CMAKE_ANDROID_ARCH_ABI='${CMAKE_ANDROID_ARCH_ABI}'.") endif() -if(CMAKE_SYSTEM_PROCESSOR AND NOT DEFINED "NDK_PROC_${CMAKE_SYSTEM_PROCESSOR}_ABI") - message(FATAL_ERROR "Android: Unknown processor CMAKE_SYSTEM_PROCESSOR='${CMAKE_SYSTEM_PROCESSOR}'.") -endif() -if(_ANDROID_SYSROOT_ARCH AND NOT DEFINED "NDK_ARCH_${_ANDROID_SYSROOT_ARCH}_ABI") - message(FATAL_ERROR - "Android: Unknown architecture '${_ANDROID_SYSROOT_ARCH}' specified in CMAKE_SYSROOT:\n" - " ${CMAKE_SYSROOT}" - ) -endif() # Select an ABI. if(NOT CMAKE_ANDROID_ARCH_ABI) if(CMAKE_SYSTEM_PROCESSOR) + if(NOT DEFINED "NDK_PROC_${CMAKE_SYSTEM_PROCESSOR}_ABI") + message(FATAL_ERROR "Android: Unknown processor CMAKE_SYSTEM_PROCESSOR='${CMAKE_SYSTEM_PROCESSOR}'.") + endif() set(CMAKE_ANDROID_ARCH_ABI "${NDK_PROC_${CMAKE_SYSTEM_PROCESSOR}_ABI}") elseif(_ANDROID_SYSROOT_ARCH) + if(NOT DEFINED "NDK_ARCH_${_ANDROID_SYSROOT_ARCH}_ABI") + message(FATAL_ERROR + "Android: Unknown architecture '${_ANDROID_SYSROOT_ARCH}' specified in CMAKE_SYSROOT:\n" + " ${CMAKE_SYSROOT}" + ) + endif() set(CMAKE_ANDROID_ARCH_ABI "${NDK_ARCH_${_ANDROID_SYSROOT_ARCH}_ABI}") elseif(_INCLUDED_ABIS) # Default to the oldest ARM ABI. diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 804363f53..7573fe19e 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,7 +1,7 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 30) -set(CMake_VERSION_PATCH 2) +set(CMake_VERSION_PATCH 3) #set(CMake_VERSION_RC 0) set(CMake_VERSION_IS_DIRTY 0) @@ -21,7 +21,7 @@ endif() if(NOT CMake_VERSION_NO_GIT) # If this source was exported by 'git archive', use its commit info. - set(git_info [==[d88682dff6 CMake 3.30.2]==]) + set(git_info [==[3cc9cb6ee2 CMake 3.30.3]==]) # Otherwise, try to identify the current development source version. if(NOT git_info MATCHES "^([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]?[0-9a-f]?)[0-9a-f]* " diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx index 03b87660c..b02557050 100644 --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -1552,6 +1552,7 @@ std::string cmCPackGenerator::GetSanitizedDirOrFileName( #ifdef _WIN32 // Given name matches a reserved name (on Windows)? // Then return it prepended with an underscore. + // See https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file cmsys::RegularExpression reserved_pattern("^(" "[Cc][Oo][Nn]|" "[Pp][Rr][Nn]|" @@ -1559,7 +1560,7 @@ std::string cmCPackGenerator::GetSanitizedDirOrFileName( "[Nn][Uu][Ll]|" "[Cc][Oo][Mm][1-9]|" "[Ll][Pp][Tt][1-9]" - ")([.].+)?"); + ")[.]?$"); if (reserved_pattern.find(name)) { return "_" + name; } diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx index 43b1d76a2..155bc9e95 100644 --- a/Source/CPack/cmCPackNSISGenerator.cxx +++ b/Source/CPack/cmCPackNSISGenerator.cxx @@ -863,8 +863,8 @@ std::string cmCPackNSISGenerator::CreateComponentDescription( /* clang-format on */ componentCode += out.str(); } else { - componentCode += - " File /r \"${INST_DIR}\\" + component->Name + "\\*.*\"\n"; + componentCode += " File /r \"${INST_DIR}\\" + + this->GetSanitizedDirOrFileName(component->Name) + "\\*.*\"\n"; } componentCode += "SectionEnd\n"; diff --git a/Source/CTest/cmCTestCurl.cxx b/Source/CTest/cmCTestCurl.cxx index b8e5db1c9..7137e63aa 100644 --- a/Source/CTest/cmCTestCurl.cxx +++ b/Source/CTest/cmCTestCurl.cxx @@ -22,7 +22,7 @@ cmCTestCurl::cmCTestCurl(cmCTest* ctest) cmCurlInitOnce(); // In windows, this will init the winsock stuff ::curl_global_init(CURL_GLOBAL_ALL); - this->Curl = curl_easy_init(); + this->Curl = cm_curl_easy_init(); } cmCTestCurl::~cmCTestCurl() diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx index 85c77bea0..fdf3178d3 100644 --- a/Source/CTest/cmCTestSubmitHandler.cxx +++ b/Source/CTest/cmCTestSubmitHandler.cxx @@ -177,7 +177,7 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP( cmCTestCurlOpts curlOpts(this->CTest); for (std::string const& file : files) { /* get a curl handle */ - curl = curl_easy_init(); + curl = cm_curl_easy_init(); if (curl) { cmCurlSetCAInfo(curl); if (curlOpts.TLSVersionOpt) { diff --git a/Source/cmCurl.cxx b/Source/cmCurl.cxx index 65fccd035..51b95c3c1 100644 --- a/Source/cmCurl.cxx +++ b/Source/cmCurl.cxx @@ -226,3 +226,15 @@ std::string cmCurlFixFileURL(std::string url) return url; } + +::CURL* cm_curl_easy_init() +{ + ::CURL* curl = curl_easy_init(); + if (curl_version_info_data* cv = curl_version_info(CURLVERSION_FIRST)) { + // curl 8.7.x returns incorrect HTTP/2 error codes. + if (cv->version_num >= 0x080700 && cv->version_num < 0x080800) { + curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); + } + } + return curl; +} diff --git a/Source/cmCurl.h b/Source/cmCurl.h index bb2221f25..2088e3db8 100644 --- a/Source/cmCurl.h +++ b/Source/cmCurl.h @@ -18,3 +18,5 @@ std::string cmCurlSetCAInfo(::CURL* curl, const std::string& cafile = {}); std::string cmCurlSetNETRCOption(::CURL* curl, const std::string& netrc_level, const std::string& netrc_file); std::string cmCurlFixFileURL(std::string url); + +::CURL* cm_curl_easy_init(); diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 6265f8217..08baca060 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -2117,7 +2117,7 @@ bool HandleDownloadCommand(std::vector const& args, ::CURL* curl; cmCurlInitOnce(); ::curl_global_init(CURL_GLOBAL_DEFAULT); - curl = ::curl_easy_init(); + curl = cm_curl_easy_init(); if (!curl) { status.SetError("DOWNLOAD error initializing curl."); return false; @@ -2131,7 +2131,10 @@ bool HandleDownloadCommand(std::vector const& args, res = ::curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1); check_curl_result(res, "DOWNLOAD cannot set http failure option: "); - res = ::curl_easy_setopt(curl, CURLOPT_USERAGENT, "curl/" LIBCURL_VERSION); + curl_version_info_data* cv = curl_version_info(CURLVERSION_FIRST); + res = ::curl_easy_setopt( + curl, CURLOPT_USERAGENT, + cmStrCat("curl/", cv ? cv->version : LIBCURL_VERSION).c_str()); check_curl_result(res, "DOWNLOAD cannot set user agent option: "); res = ::curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, cmWriteToFileCallback); @@ -2491,7 +2494,7 @@ bool HandleUploadCommand(std::vector const& args, ::CURL* curl; cmCurlInitOnce(); ::curl_global_init(CURL_GLOBAL_DEFAULT); - curl = ::curl_easy_init(); + curl = cm_curl_easy_init(); if (!curl) { status.SetError("UPLOAD error initializing curl."); fclose(fin); diff --git a/Source/cmProjectCommand.cxx b/Source/cmProjectCommand.cxx index 53166c1bd..13070ddf9 100644 --- a/Source/cmProjectCommand.cxx +++ b/Source/cmProjectCommand.cxx @@ -59,9 +59,14 @@ bool cmProjectCommand(std::vector const& args, mf.AddCacheDefinition(projectName + "_BINARY_DIR", mf.GetCurrentBinaryDirectory(), "Value Computed by CMake", cmStateEnums::STATIC); + mf.AddDefinition(projectName + "_BINARY_DIR", + mf.GetCurrentBinaryDirectory()); + mf.AddCacheDefinition(projectName + "_SOURCE_DIR", mf.GetCurrentSourceDirectory(), "Value Computed by CMake", cmStateEnums::STATIC); + mf.AddDefinition(projectName + "_SOURCE_DIR", + mf.GetCurrentSourceDirectory()); mf.AddDefinition("PROJECT_BINARY_DIR", mf.GetCurrentBinaryDirectory()); mf.AddDefinition("PROJECT_SOURCE_DIR", mf.GetCurrentSourceDirectory()); @@ -72,6 +77,8 @@ bool cmProjectCommand(std::vector const& args, mf.AddCacheDefinition(projectName + "_IS_TOP_LEVEL", mf.IsRootMakefile() ? "ON" : "OFF", "Value Computed by CMake", cmStateEnums::STATIC); + mf.AddDefinition(projectName + "_IS_TOP_LEVEL", + mf.IsRootMakefile() ? "ON" : "OFF"); // Set the CMAKE_PROJECT_NAME variable to be the highest-level // project name in the tree. If there are two project commands diff --git a/Tests/CPackNSISGenerator/CMakeLists.txt b/Tests/CPackNSISGenerator/CMakeLists.txt index 5d6320b8b..cb0b13d00 100644 --- a/Tests/CPackNSISGenerator/CMakeLists.txt +++ b/Tests/CPackNSISGenerator/CMakeLists.txt @@ -10,6 +10,26 @@ install(TARGETS hello LIBRARY DESTINATION . BUNDLE DESTINATION .) +# Component that is a reserved name on Windows. +# See https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file +install( + DIRECTORY . + DESTINATION txt + COMPONENT CON + FILES_MATCHING PATTERN *.txt) +# Component name that is similar to a reserved name on Windows. +install( + DIRECTORY . + DESTINATION txt + COMPONENT Console + FILES_MATCHING PATTERN *.txt) +# Component name that is strongly discouraged on Windows. +install( + DIRECTORY . + DESTINATION txt + COMPONENT EndsWithDot. + FILES_MATCHING PATTERN *.txt) + set(CPACK_NSIS_MUI_HEADERIMAGE "${PROJECT_SOURCE_DIR}\\\\header-image.bmp") set(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}\\\\header-icon.bmp") set(CPACK_NSIS_MUI_ICON "${PROJECT_SOURCE_DIR}\\\\install.ico") diff --git a/Tests/CPackNSISGenerator/RunCPackVerifyResult.cmake b/Tests/CPackNSISGenerator/RunCPackVerifyResult.cmake index 31a2560e1..3e4d7b4dc 100644 --- a/Tests/CPackNSISGenerator/RunCPackVerifyResult.cmake +++ b/Tests/CPackNSISGenerator/RunCPackVerifyResult.cmake @@ -69,3 +69,24 @@ if("${output_index}" EQUAL "-1") else() message(FATAL_ERROR "License found in the project") endif() + +file(STRINGS "${project_file}" line REGEX [[\\_CON\\]]) +string(FIND "${line}" [[\_CON\]] output_index) +message(STATUS "Found CON component reserved directory name as _CON") +if("${output_index}" EQUAL "-1") + message(FATAL_ERROR "CON component reserved directory name not found as _CON in the project") +endif() + +file(STRINGS "${project_file}" line REGEX [[\\Console\\]]) +string(FIND "${line}" [[\Console\]] output_index) +message(STATUS "Found Console component directory name as Console") +if("${output_index}" EQUAL "-1") + message(FATAL_ERROR "Console component directory name not found as Console in the project") +endif() + +file(STRINGS "${project_file}" line REGEX [[\\EndsWithDot._\\]]) +string(FIND "${line}" [[\EndsWithDot._\]] output_index) +message(STATUS "Found EndsWithDot. component directory name as EndsWithDot._") +if("${output_index}" EQUAL "-1") + message(FATAL_ERROR "EndsWithDot. component directory name not found as EndsWithDot._ in the project") +endif() diff --git a/Tests/RunCMake/project/ProjectCMP0126.cmake b/Tests/RunCMake/project/ProjectCMP0126.cmake new file mode 100644 index 000000000..65e398257 --- /dev/null +++ b/Tests/RunCMake/project/ProjectCMP0126.cmake @@ -0,0 +1,11 @@ +cmake_policy(SET CMP0126 NEW) +set(example_SOURCE_DIR "bad/path") +set(example_BINARY_DIR "bad/path") +project(example LANGUAGES) + +if(NOT "${example_SOURCE_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}") + message(FATAL_ERROR "example_SOURCE_DIR not set to expected value") +endif() +if(NOT "${example_BINARY_DIR}" STREQUAL "${PROJECT_BINARY_DIR}") + message(FATAL_ERROR "example_BINARY_DIR not set to expected value") +endif() diff --git a/Tests/RunCMake/project/RunCMakeTest.cmake b/Tests/RunCMake/project/RunCMakeTest.cmake index 16f10bef2..9c49281c6 100644 --- a/Tests/RunCMake/project/RunCMakeTest.cmake +++ b/Tests/RunCMake/project/RunCMakeTest.cmake @@ -33,6 +33,7 @@ run_cmake(LanguagesUnordered) if(RunCMake_GENERATOR MATCHES "Make|Ninja") run_cmake(LanguagesUsedButNotEnabled) endif() +run_cmake(ProjectCMP0126) run_cmake(ProjectDescription) run_cmake(ProjectDescription2) run_cmake(ProjectDescriptionNoArg) diff --git a/Utilities/cmcppdap/include/dap/network.h b/Utilities/cmcppdap/include/dap/network.h index 9d14f6b70..dd3e00624 100644 --- a/Utilities/cmcppdap/include/dap/network.h +++ b/Utilities/cmcppdap/include/dap/network.h @@ -17,6 +17,7 @@ #include #include +#include namespace dap { class ReaderWriter;