diff options
-rw-r--r-- | Modules/Compiler/IntelLLVM.cmake | 12 | ||||
-rw-r--r-- | Modules/FindMatlab.cmake | 1 | ||||
-rw-r--r-- | Modules/FindPkgConfig.cmake | 17 | ||||
-rw-r--r-- | Source/cmCoreTryCompile.cxx | 2 | ||||
-rw-r--r-- | Tests/RunCMake/try_compile/ProjectVars-stdout.txt | 8 | ||||
-rw-r--r-- | Tests/RunCMake/try_compile/ProjectVars.cmake | 18 | ||||
-rw-r--r-- | Tests/RunCMake/try_compile/RunCMakeTest.cmake | 2 | ||||
-rw-r--r-- | Tests/RunCMake/try_compile/proj_vars/CMakeLists.txt | 12 | ||||
-rw-r--r-- | Utilities/cmlibuv/src/unix/process.c | 10 |
9 files changed, 71 insertions, 11 deletions
diff --git a/Modules/Compiler/IntelLLVM.cmake b/Modules/Compiler/IntelLLVM.cmake index 5afb1ce..079c894 100644 --- a/Modules/Compiler/IntelLLVM.cmake +++ b/Modules/Compiler/IntelLLVM.cmake @@ -32,16 +32,16 @@ if(CMAKE_HOST_WIN32) else() set(CMAKE_${lang}_COMPILE_OPTIONS_INVALID_PCH -Winvalid-pch) set(CMAKE_${lang}_COMPILE_OPTIONS_WARNING_AS_ERROR "-WX") + if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL "2021.4") + set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-external:I") + if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL "2022.2") + set(_CMAKE_INCLUDE_SYSTEM_FLAG_${lang}_WARNING "-external:W0 ") + endif() + endif() endif() __compiler_intel_llvm_common(${lang}) set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-Qipo") set(CMAKE_${lang}_LINK_OPTIONS_IPO "-Qipo") - if (CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL "2021.4") - set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-external:I") - if (CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL "2022.2") - set(_CMAKE_INCLUDE_SYSTEM_FLAG_${lang}_WARNING "-external:W0 ") - endif () - endif () endmacro() else() # GNU-like diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake index 6c80506..2488bd9 100644 --- a/Modules/FindMatlab.cmake +++ b/Modules/FindMatlab.cmake @@ -298,6 +298,7 @@ if(NOT MATLAB_ADDITIONAL_VERSIONS) endif() set(MATLAB_VERSIONS_MAPPING + "R2024a=24.1" "R2023b=23.2" "R2023a=9.14" "R2022b=9.13" diff --git a/Modules/FindPkgConfig.cmake b/Modules/FindPkgConfig.cmake index 1b6a72a..f3bacc3 100644 --- a/Modules/FindPkgConfig.cmake +++ b/Modules/FindPkgConfig.cmake @@ -56,14 +56,29 @@ endif() set(PKG_CONFIG_NAMES "pkg-config") if(CMAKE_HOST_WIN32) list(PREPEND PKG_CONFIG_NAMES "pkg-config.bat") + set(_PKG_CONFIG_VALIDATOR VALIDATOR __FindPkgConfig_EXECUTABLE_VALIDATOR) + function(__FindPkgConfig_EXECUTABLE_VALIDATOR result_var candidate) + if(candidate MATCHES "\\.[Ee][Xx][Ee]$") + return() + endif() + # Exclude the pkg-config distributed with Strawberry Perl. + execute_process(COMMAND "${candidate}" --help OUTPUT_VARIABLE _output ERROR_VARIABLE _output RESULT_VARIABLE _result) + if(NOT _result EQUAL 0 OR _output MATCHES "Pure-Perl") + set("${result_var}" FALSE PARENT_SCOPE) + endif() + endfunction() +else() + set(_PKG_CONFIG_VALIDATOR "") endif() list(APPEND PKG_CONFIG_NAMES "pkgconf") find_program(PKG_CONFIG_EXECUTABLE NAMES ${PKG_CONFIG_NAMES} NAMES_PER_DIR - DOC "pkg-config executable") + DOC "pkg-config executable" + ${_PKG_CONFIG_VALIDATOR}) mark_as_advanced(PKG_CONFIG_EXECUTABLE) +unset(_PKG_CONFIG_VALIDATOR) set(PKG_CONFIG_ARGN "${PKG_CONFIG_ARGN}" CACHE STRING "Arguments to supply to pkg-config") mark_as_advanced(PKG_CONFIG_ARGN) diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index a4f36cc..324c5ad 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -1163,7 +1163,7 @@ cm::optional<cmTryCompileResult> cmCoreTryCompile::TryCompileCode( vars.insert(kCMAKE_LINKER_TYPE); auto defs = this->Makefile->GetDefinitions(); cmsys::RegularExpression linkerTypeDef{ - "^CMAKE_[A-Za-z]+_USING_LINKER_" + "^CMAKE_[A-Za-z_-]+_USING_LINKER_" }; for (auto const& def : defs) { if (linkerTypeDef.find(def)) { diff --git a/Tests/RunCMake/try_compile/ProjectVars-stdout.txt b/Tests/RunCMake/try_compile/ProjectVars-stdout.txt new file mode 100644 index 0000000..1744bbc --- /dev/null +++ b/Tests/RunCMake/try_compile/ProjectVars-stdout.txt @@ -0,0 +1,8 @@ +CMAKE_LINKER_TYPE = DEFAULT +.*CMAKE_C_USING_LINKER_MODE = [^ +]* +.*CMAKE_C_USING_LINKER_abc123 = /path/to/somewhere +.*CMAKE_C_USING_LINKER_Hi_There = some-tool +.*CMAKE_ASM_NASM_USING_LINKER_custom = /place/holder +.*CMAKE_ASM-ATT_USING_LINKER_custom = /more/text +.*CMAKE_ASM-ATT_USING_LINKER_MODE = TOOL diff --git a/Tests/RunCMake/try_compile/ProjectVars.cmake b/Tests/RunCMake/try_compile/ProjectVars.cmake new file mode 100644 index 0000000..f51fa7d --- /dev/null +++ b/Tests/RunCMake/try_compile/ProjectVars.cmake @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 3.29) + +enable_language(C) + +set(CMAKE_LINKER_TYPE DEFAULT) +set(CMAKE_C_USING_LINKER_abc123 /path/to/somewhere) +set(CMAKE_C_USING_LINKER_Hi_There some-tool) +set(CMAKE_ASM_NASM_USING_LINKER_custom /place/holder) +set(CMAKE_ASM-ATT_USING_LINKER_custom /more/text) +set(CMAKE_ASM-ATT_USING_LINKER_MODE TOOL) + +try_compile(RESULT + PROJECT TestProject + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/proj_vars + OUTPUT_VARIABLE output +) + +message(STATUS "\n${output}") diff --git a/Tests/RunCMake/try_compile/RunCMakeTest.cmake b/Tests/RunCMake/try_compile/RunCMakeTest.cmake index 29c0538..229c102 100644 --- a/Tests/RunCMake/try_compile/RunCMakeTest.cmake +++ b/Tests/RunCMake/try_compile/RunCMakeTest.cmake @@ -47,6 +47,8 @@ run_cmake(NonSourceCompileDefinitions) run_cmake(Verbose) +run_cmake(ProjectVars) + set(RunCMake_TEST_OPTIONS --debug-trycompile) run_cmake(PlatformVariables) run_cmake(WarnDeprecated) diff --git a/Tests/RunCMake/try_compile/proj_vars/CMakeLists.txt b/Tests/RunCMake/try_compile/proj_vars/CMakeLists.txt new file mode 100644 index 0000000..7f97ff2 --- /dev/null +++ b/Tests/RunCMake/try_compile/proj_vars/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.29) +project(TestProject LANGUAGES NONE) + +add_custom_target(show_vars ALL + COMMAND ${CMAKE_COMMAND} -E echo "CMAKE_LINKER_TYPE = ${CMAKE_LINKER_TYPE}" + COMMAND ${CMAKE_COMMAND} -E echo "CMAKE_C_USING_LINKER_MODE = ${CMAKE_C_USING_LINKER_MODE}" + COMMAND ${CMAKE_COMMAND} -E echo "CMAKE_C_USING_LINKER_abc123 = ${CMAKE_C_USING_LINKER_abc123}" + COMMAND ${CMAKE_COMMAND} -E echo "CMAKE_C_USING_LINKER_Hi_There = ${CMAKE_C_USING_LINKER_Hi_There}" + COMMAND ${CMAKE_COMMAND} -E echo "CMAKE_ASM_NASM_USING_LINKER_custom = ${CMAKE_ASM_NASM_USING_LINKER_custom}" + COMMAND ${CMAKE_COMMAND} -E echo "CMAKE_ASM-ATT_USING_LINKER_custom = ${CMAKE_ASM-ATT_USING_LINKER_custom}" + COMMAND ${CMAKE_COMMAND} -E echo "CMAKE_ASM-ATT_USING_LINKER_MODE = ${CMAKE_ASM-ATT_USING_LINKER_MODE}" +) diff --git a/Utilities/cmlibuv/src/unix/process.c b/Utilities/cmlibuv/src/unix/process.c index 39ec451..5c39da6 100644 --- a/Utilities/cmlibuv/src/unix/process.c +++ b/Utilities/cmlibuv/src/unix/process.c @@ -37,7 +37,11 @@ #include <sched.h> #if defined(__APPLE__) -# include <spawn.h> + /* macOS 10.8 and later have a working posix_spawn */ +# if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 +# define UV_USE_APPLE_POSIX_SPAWN +# include <spawn.h> +# endif # include <paths.h> # include <sys/kauth.h> # include <sys/types.h> @@ -430,7 +434,7 @@ static void uv__process_child_init(const uv_process_options_t* options, #endif -#if defined(__APPLE__) +#if defined(UV_USE_APPLE_POSIX_SPAWN) typedef struct uv__posix_spawn_fncs_tag { struct { int (*addchdir_np)(const posix_spawn_file_actions_t *, const char *); @@ -882,7 +886,7 @@ static int uv__spawn_and_init_child( int exec_errorno; ssize_t r; -#if defined(__APPLE__) +#if defined(UV_USE_APPLE_POSIX_SPAWN) uv_once(&posix_spawn_init_once, uv__spawn_init_posix_spawn); /* Special child process spawn case for macOS Big Sur (11.0) onwards |