summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/Compiler/IntelLLVM.cmake12
-rw-r--r--Modules/FindMatlab.cmake1
-rw-r--r--Modules/FindPkgConfig.cmake17
-rw-r--r--Source/cmCoreTryCompile.cxx2
-rw-r--r--Tests/RunCMake/try_compile/ProjectVars-stdout.txt8
-rw-r--r--Tests/RunCMake/try_compile/ProjectVars.cmake18
-rw-r--r--Tests/RunCMake/try_compile/RunCMakeTest.cmake2
-rw-r--r--Tests/RunCMake/try_compile/proj_vars/CMakeLists.txt12
-rw-r--r--Utilities/cmlibuv/src/unix/process.c10
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