summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/CMakePrintHelpers.cmake75
-rw-r--r--Modules/FindPython/Support.cmake13
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Tests/CMakeLists.txt2
-rw-r--r--Tests/RunCMake/CMakeLists.txt1
-rw-r--r--Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake6
-rw-r--r--Tests/RunCMake/PrintHelpers/CMakeLists.txt3
-rw-r--r--Tests/RunCMake/PrintHelpers/Properties-stdout.txt14
-rw-r--r--Tests/RunCMake/PrintHelpers/Properties.cmake26
-rw-r--r--Tests/RunCMake/PrintHelpers/PropertiesSources-stdout.cmake8
-rw-r--r--Tests/RunCMake/PrintHelpers/PropertiesSources.cmake19
-rw-r--r--Tests/RunCMake/PrintHelpers/RunCMakeTest.cmake5
-rw-r--r--Tests/RunCMake/PrintHelpers/Variables-stdout.txt1
-rw-r--r--Tests/RunCMake/PrintHelpers/Variables.cmake6
-rw-r--r--Tests/RunCMake/PrintHelpers/nothing.c6
-rw-r--r--Tests/RunCMake/PrintHelpers/nothing.h8
-rw-r--r--Tests/RunCMake/PrintHelpers/rot13.c15
-rw-r--r--Tests/RunCMake/PrintHelpers/rot13.h9
-rw-r--r--Tests/RunCMake/PrintHelpers/something.c7
-rw-r--r--Tests/RunCMake/PrintHelpers/something.h8
-rw-r--r--Utilities/Release/linux/aarch64/cache.txt3
-rw-r--r--Utilities/Release/linux/x86_64/cache.txt3
22 files changed, 198 insertions, 42 deletions
diff --git a/Modules/CMakePrintHelpers.cmake b/Modules/CMakePrintHelpers.cmake
index 8c25a73..fb201dc 100644
--- a/Modules/CMakePrintHelpers.cmake
+++ b/Modules/CMakePrintHelpers.cmake
@@ -10,16 +10,19 @@ e.g. for debugging.
::
- cmake_print_properties([TARGETS target1 .. targetN]
- [SOURCES source1 .. sourceN]
- [DIRECTORIES dir1 .. dirN]
- [TESTS test1 .. testN]
- [CACHE_ENTRIES entry1 .. entryN]
- PROPERTIES prop1 .. propN )
+ cmake_print_properties(<TARGETS [<target1> ...] |
+ SOURCES [<source1> ...] |
+ DIRECTORIES [<dir1> ...] |
+ TESTS [<test1> ...] |
+ CACHE_ENTRIES [<entry1> ...] >
+ PROPERTIES [<prop1> ...] )
This function prints the values of the properties of the given targets,
source files, directories, tests or cache entries. Exactly one of the
-scope keywords must be used. Example::
+scope keywords must be used. The scope keyword and its arguments must
+come before the ``PROPERTIES`` keyword, in the arguments list.
+
+Example::
cmake_print_properties(TARGETS foo bar PROPERTIES
LOCATION INTERFACE_INCLUDE_DIRECTORIES)
@@ -56,17 +59,34 @@ endfunction()
function(cmake_print_properties)
set(options )
set(oneValueArgs )
- set(multiValueArgs TARGETS SOURCES TESTS DIRECTORIES CACHE_ENTRIES PROPERTIES )
+ set(cpp_multiValueArgs PROPERTIES )
+ set(cppmode_multiValueArgs TARGETS SOURCES TESTS DIRECTORIES CACHE_ENTRIES )
+
+ string(JOIN " " _mode_names ${cppmode_multiValueArgs})
+ set(_missing_mode_message
+ "Mode keyword missing in cmake_print_properties() call, there must be exactly one of ${_mode_names}")
- cmake_parse_arguments(CPP "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+ cmake_parse_arguments(
+ CPP "${options}" "${oneValueArgs}" "${cpp_multiValueArgs}" ${ARGN})
- if(CPP_UNPARSED_ARGUMENTS)
- message(FATAL_ERROR "Unknown keywords given to cmake_print_properties(): \"${CPP_UNPARSED_ARGUMENTS}\"")
+ if(NOT CPP_PROPERTIES)
+ message(FATAL_ERROR
+ "Required argument PROPERTIES missing in cmake_print_properties() call")
return()
endif()
- if(NOT CPP_PROPERTIES)
- message(FATAL_ERROR "Required argument PROPERTIES missing in cmake_print_properties() call")
+ if(NOT CPP_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR "${_missing_mode_message}")
+ return()
+ endif()
+
+ cmake_parse_arguments(
+ CPPMODE "${options}" "${oneValueArgs}" "${cppmode_multiValueArgs}"
+ ${CPP_UNPARSED_ARGUMENTS})
+
+ if(CPPMODE_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR
+ "Unknown keywords given to cmake_print_properties(): \"${CPPMODE_UNPARSED_ARGUMENTS}\"")
return()
endif()
@@ -74,32 +94,32 @@ function(cmake_print_properties)
set(items)
set(keyword)
- if(CPP_TARGETS)
- set(items ${CPP_TARGETS})
+ if(CPPMODE_TARGETS)
+ set(items ${CPPMODE_TARGETS})
set(mode ${mode} TARGETS)
set(keyword TARGET)
endif()
- if(CPP_SOURCES)
- set(items ${CPP_SOURCES})
+ if(CPPMODE_SOURCES)
+ set(items ${CPPMODE_SOURCES})
set(mode ${mode} SOURCES)
set(keyword SOURCE)
endif()
- if(CPP_TESTS)
- set(items ${CPP_TESTS})
+ if(CPPMODE_TESTS)
+ set(items ${CPPMODE_TESTS})
set(mode ${mode} TESTS)
set(keyword TEST)
endif()
- if(CPP_DIRECTORIES)
- set(items ${CPP_DIRECTORIES})
+ if(CPPMODE_DIRECTORIES)
+ set(items ${CPPMODE_DIRECTORIES})
set(mode ${mode} DIRECTORIES)
set(keyword DIRECTORY)
endif()
- if(CPP_CACHE_ENTRIES)
- set(items ${CPP_CACHE_ENTRIES})
+ if(CPPMODE_CACHE_ENTRIES)
+ set(items ${CPPMODE_CACHE_ENTRIES})
set(mode ${mode} CACHE_ENTRIES)
# This is a workaround for the fact that passing `CACHE` as an argument to
# set() causes a cache variable to be set.
@@ -108,13 +128,14 @@ function(cmake_print_properties)
endif()
if(NOT mode)
- message(FATAL_ERROR "Mode keyword missing in cmake_print_properties() call, must be one of TARGETS SOURCES TESTS DIRECTORIES CACHE_ENTRIES PROPERTIES")
+ message(FATAL_ERROR "${_missing_mode_message}")
return()
endif()
list(LENGTH mode modeLength)
if("${modeLength}" GREATER 1)
- message(FATAL_ERROR "Multiple mode keyword used in cmake_print_properties() call, it must be exactly one of TARGETS SOURCES TESTS DIRECTORIES CACHE_ENTRIES PROPERTIES")
+ message(FATAL_ERROR
+ "Multiple mode keywords used in cmake_print_properties() call, there must be exactly one of ${_mode_names}.")
return()
endif()
@@ -124,8 +145,8 @@ function(cmake_print_properties)
set(itemExists TRUE)
if(keyword STREQUAL "TARGET")
if(NOT TARGET ${item})
- set(itemExists FALSE)
- string(APPEND msg "\n No such TARGET \"${item}\" !\n\n")
+ set(itemExists FALSE)
+ string(APPEND msg "\n No such TARGET \"${item}\" !\n\n")
endif()
endif()
diff --git a/Modules/FindPython/Support.cmake b/Modules/FindPython/Support.cmake
index cbb6c1c..8e98500 100644
--- a/Modules/FindPython/Support.cmake
+++ b/Modules/FindPython/Support.cmake
@@ -1248,9 +1248,18 @@ endif()
# Python and Anaconda distributions: define which architectures can be used
if (CMAKE_SIZEOF_VOID_P)
- # In this case, search only for 64bit or 32bit
math (EXPR _${_PYTHON_PREFIX}_ARCH "${CMAKE_SIZEOF_VOID_P} * 8")
- set (_${_PYTHON_PREFIX}_ARCH2 ${_${_PYTHON_PREFIX}_ARCH})
+ if ("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
+ OR "Development.Embed" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
+ # In this case, search only for 64bit or 32bit
+ set (_${_PYTHON_PREFIX}_ARCH2 ${_${_PYTHON_PREFIX}_ARCH})
+ else()
+ if (_${_PYTHON_PREFIX}_ARCH EQUAL "32")
+ set (_${_PYTHON_PREFIX}_ARCH2 64)
+ else()
+ set (_${_PYTHON_PREFIX}_ARCH2 32)
+ endif()
+ endif()
else()
# architecture unknown, search for both 64bit and 32bit
set (_${_PYTHON_PREFIX}_ARCH 64)
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index 3a8573a..91a9bf7 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 23)
-set(CMake_VERSION_PATCH 20220606)
+set(CMake_VERSION_PATCH 20220607)
#set(CMake_VERSION_RC 0)
set(CMake_VERSION_IS_DIRTY 0)
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 7fdfaea..24e98f4 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -3367,7 +3367,7 @@ if(BUILD_TESTING)
set(JavaExportImport_BUILD_OPTIONS -DCMake_TEST_NESTED_MAKE_PROGRAM:FILEPATH=${CMake_TEST_EXPLICIT_MAKE_PROGRAM})
ADD_TEST_MACRO(JavaExportImport JavaExportImport)
- get_filename_component(JNIPATH ${JAVA_COMPILE} PATH)
+ get_filename_component(JNIPATH ${Java_JAVAC_EXECUTABLE} PATH)
find_file(JNI_H jni.h
"${JNIPATH}/../include"
"${JNIPATH}/../java/include")
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 7e17450..4b00212 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -465,6 +465,7 @@ add_RunCMake_test(load_cache)
add_RunCMake_test(math)
add_RunCMake_test(message)
add_RunCMake_test(option)
+add_RunCMake_test(PrintHelpers)
add_RunCMake_test(project -DCMake_TEST_RESOURCES=${CMake_TEST_RESOURCES})
add_RunCMake_test(project_injected)
add_RunCMake_test(DependencyProviders)
diff --git a/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake b/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake
index ad9619e..a001c5d 100644
--- a/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake
@@ -71,11 +71,7 @@ macro(mangle_flags variable)
endmacro()
function(test_cmp0128_old_same_standard)
- if(extensions_default)
- set(flag_ext "_EXT")
- endif()
-
- set(flag "${${lang}${${lang}_STANDARD_DEFAULT}${flag_ext}_FLAG}")
+ set(flag "${${lang}${${lang}_STANDARD_DEFAULT}_EXT_FLAG}")
if(NOT flag)
return()
diff --git a/Tests/RunCMake/PrintHelpers/CMakeLists.txt b/Tests/RunCMake/PrintHelpers/CMakeLists.txt
new file mode 100644
index 0000000..6d4fe63
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/CMakeLists.txt
@@ -0,0 +1,3 @@
+cmake_minimum_required(VERSION 3.23)
+project(${RunCMake_TEST} C)
+include(${RunCMake_TEST}.cmake)
diff --git a/Tests/RunCMake/PrintHelpers/Properties-stdout.txt b/Tests/RunCMake/PrintHelpers/Properties-stdout.txt
new file mode 100644
index 0000000..c52f7b6
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/Properties-stdout.txt
@@ -0,0 +1,14 @@
+.*Properties for TARGET nothing:.*
+.*nothing.LINKER_LANGUAGE = <NOTFOUND>.*
+.*nothing.TYPE = \"STATIC_LIBRARY\".*
+.*Properties for TARGET something:.*
+.*something.LINKER_LANGUAGE = <NOTFOUND>.*
+.*something.TYPE = \"EXECUTABLE\".*
++
+.*
+.*Properties for SOURCE nothing.c:.*
+.*nothing.c.COMPILE_DEFINITIONS = <NOTFOUND>.*
+.*nothing.c.LANGUAGE = \"C\".*
+.*Properties for SOURCE something.c:.*
+.*something.c.COMPILE_DEFINITIONS = \"SOMETHING=1\".*
+.*something.c.LANGUAGE = \"C\".*
diff --git a/Tests/RunCMake/PrintHelpers/Properties.cmake b/Tests/RunCMake/PrintHelpers/Properties.cmake
new file mode 100644
index 0000000..3e8ecd1
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/Properties.cmake
@@ -0,0 +1,26 @@
+enable_language(C)
+
+set_property(SOURCE nothing.c PROPERTY LANGUAGE C)
+set_property(SOURCE something.c PROPERTY
+ COMPILE_DEFINITIONS SOMETHING=1)
+
+add_library(nothing STATIC nothing.c nothing.h)
+
+add_executable(something something.c something.h)
+target_link_libraries(something PUBLIC nothing)
+
+include(CMakePrintHelpers)
+
+cmake_print_properties(
+ TARGETS nothing something
+ PROPERTIES
+ LINKER_LANGUAGE
+ TYPE
+)
+
+cmake_print_properties(
+ SOURCES nothing.c something.c
+ PROPERTIES
+ COMPILE_DEFINITIONS
+ LANGUAGE
+)
diff --git a/Tests/RunCMake/PrintHelpers/PropertiesSources-stdout.cmake b/Tests/RunCMake/PrintHelpers/PropertiesSources-stdout.cmake
new file mode 100644
index 0000000..93b3df0
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/PropertiesSources-stdout.cmake
@@ -0,0 +1,8 @@
+.*Properties for TARGET rot13:.*
+.*rot13.SOURCES = \"rot13.c;rot13.h\".*
+.*rot13.POSITION_INDEPENDENT_CODE = \"True\".*
++
+.*--.*
+.*Properties for SOURCE rot13.c:.*
+.*rot13.c.LOCATION = \"[^\"]*/PrintHelpers/rot13.c\".*
+.*rot13.c.LANGUAGE = \"C\".*
diff --git a/Tests/RunCMake/PrintHelpers/PropertiesSources.cmake b/Tests/RunCMake/PrintHelpers/PropertiesSources.cmake
new file mode 100644
index 0000000..f102b94
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/PropertiesSources.cmake
@@ -0,0 +1,19 @@
+set_property(SOURCE rot13.c PROPERTY LANGUAGE C)
+
+add_library(rot13 SHARED rot13.c rot13.h)
+
+include(CMakePrintHelpers)
+
+cmake_print_properties(
+ TARGETS rot13
+ PROPERTIES
+ SOURCES
+ POSITION_INDEPENDENT_CODE
+)
+
+cmake_print_properties(
+ SOURCES rot13.c
+ PROPERTIES
+ LOCATION
+ LANGUAGE
+)
diff --git a/Tests/RunCMake/PrintHelpers/RunCMakeTest.cmake b/Tests/RunCMake/PrintHelpers/RunCMakeTest.cmake
new file mode 100644
index 0000000..5b8ad0c
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/RunCMakeTest.cmake
@@ -0,0 +1,5 @@
+include(RunCMake)
+
+run_cmake(Variables)
+run_cmake(Properties)
+run_cmake(PropertiesSources)
diff --git a/Tests/RunCMake/PrintHelpers/Variables-stdout.txt b/Tests/RunCMake/PrintHelpers/Variables-stdout.txt
new file mode 100644
index 0000000..ca95c8d
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/Variables-stdout.txt
@@ -0,0 +1 @@
+-- source_dir="src" ; binary_dir="build"
diff --git a/Tests/RunCMake/PrintHelpers/Variables.cmake b/Tests/RunCMake/PrintHelpers/Variables.cmake
new file mode 100644
index 0000000..88f5ad1
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/Variables.cmake
@@ -0,0 +1,6 @@
+
+set(source_dir "src")
+set(binary_dir "build")
+
+include(CMakePrintHelpers)
+cmake_print_variables(source_dir binary_dir)
diff --git a/Tests/RunCMake/PrintHelpers/nothing.c b/Tests/RunCMake/PrintHelpers/nothing.c
new file mode 100644
index 0000000..32b7b39
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/nothing.c
@@ -0,0 +1,6 @@
+#include "nothing.h"
+
+void nothing()
+{
+ (void*)0;
+}
diff --git a/Tests/RunCMake/PrintHelpers/nothing.h b/Tests/RunCMake/PrintHelpers/nothing.h
new file mode 100644
index 0000000..ae86667
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/nothing.h
@@ -0,0 +1,8 @@
+#ifndef NOTHING_H
+#define NOTHING_H
+
+#include <stdlib.h>
+
+void nothing();
+
+#endif
diff --git a/Tests/RunCMake/PrintHelpers/rot13.c b/Tests/RunCMake/PrintHelpers/rot13.c
new file mode 100644
index 0000000..053bebd
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/rot13.c
@@ -0,0 +1,15 @@
+#include "rot13.h"
+
+void rot13(char* in)
+{
+ char* end = in + strlen(in);
+ for (char* c = in; c < end; c++) {
+ if (*c >= 'a' && *c <= 'z') {
+ *c += (*c < 'n') ? 13 : -13;
+ continue;
+ }
+ if (*c >= 'A' && *c <= 'Z') {
+ *c += (*c < 'N') ? 13 : -13;
+ }
+ }
+}
diff --git a/Tests/RunCMake/PrintHelpers/rot13.h b/Tests/RunCMake/PrintHelpers/rot13.h
new file mode 100644
index 0000000..9afea5f
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/rot13.h
@@ -0,0 +1,9 @@
+#ifndef ROT13_H
+#define ROT13_H
+
+#include <stdlib.h>
+#include <string.h>
+
+void rot13(char* in);
+
+#endif
diff --git a/Tests/RunCMake/PrintHelpers/something.c b/Tests/RunCMake/PrintHelpers/something.c
new file mode 100644
index 0000000..a2bc425
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/something.c
@@ -0,0 +1,7 @@
+#include "something.h"
+
+int main()
+{
+ nothing();
+ return 0;
+}
diff --git a/Tests/RunCMake/PrintHelpers/something.h b/Tests/RunCMake/PrintHelpers/something.h
new file mode 100644
index 0000000..667ee99
--- /dev/null
+++ b/Tests/RunCMake/PrintHelpers/something.h
@@ -0,0 +1,8 @@
+#ifndef SOMETHING_H
+#define SOMETHING_H
+
+#include <stdlib.h>
+
+#include "nothing.h"
+
+#endif
diff --git a/Utilities/Release/linux/aarch64/cache.txt b/Utilities/Release/linux/aarch64/cache.txt
index ebfed73..87851d5 100644
--- a/Utilities/Release/linux/aarch64/cache.txt
+++ b/Utilities/Release/linux/aarch64/cache.txt
@@ -3,9 +3,6 @@ CMAKE_BUILD_TYPE:STRING=Release
CMAKE_C_STANDARD:STRING=11
CMAKE_CXX_STANDARD:STRING=14
-# Require only older APIs where possible.
-CMAKE_C_FLAGS:STRING=-D_POSIX_C_SOURCE=199506L -D_POSIX_SOURCE=1 -D_SVID_SOURCE=1 -D_BSD_SOURCE=1
-
# Link C++ library statically.
CMAKE_EXE_LINKER_FLAGS:STRING=-static-libstdc++ -static-libgcc
diff --git a/Utilities/Release/linux/x86_64/cache.txt b/Utilities/Release/linux/x86_64/cache.txt
index a422af3..d32c3dd 100644
--- a/Utilities/Release/linux/x86_64/cache.txt
+++ b/Utilities/Release/linux/x86_64/cache.txt
@@ -3,9 +3,6 @@ CMAKE_BUILD_TYPE:STRING=Release
CMAKE_C_STANDARD:STRING=11
CMAKE_CXX_STANDARD:STRING=14
-# Require only older APIs where possible.
-CMAKE_C_FLAGS:STRING=-D_POSIX_C_SOURCE=199506L -D_POSIX_SOURCE=1 -D_SVID_SOURCE=1 -D_BSD_SOURCE=1
-
# Link C++ library statically.
CMAKE_EXE_LINKER_FLAGS:STRING=-static-libstdc++ -static-libgcc