mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-04 13:19:51 -05:00
Merge branch 'master' into llvm-rc-preprocess-as-c
This commit is contained in:
@@ -48,6 +48,7 @@ set(CMAKE_C_LINKER_PREFERENCE 10)
|
||||
# Save compiler ABI information.
|
||||
set(CMAKE_C_SIZEOF_DATA_PTR "@CMAKE_C_SIZEOF_DATA_PTR@")
|
||||
set(CMAKE_C_COMPILER_ABI "@CMAKE_C_COMPILER_ABI@")
|
||||
set(CMAKE_C_BYTE_ORDER "@CMAKE_C_BYTE_ORDER@")
|
||||
set(CMAKE_C_LIBRARY_ARCHITECTURE "@CMAKE_C_LIBRARY_ARCHITECTURE@")
|
||||
|
||||
if(CMAKE_C_SIZEOF_DATA_PTR)
|
||||
|
||||
@@ -17,6 +17,8 @@ int main(int argc, char* argv[])
|
||||
{
|
||||
int require = 0;
|
||||
require += info_sizeof_dptr[argc];
|
||||
require += info_byte_order_big_endian[argc];
|
||||
require += info_byte_order_little_endian[argc];
|
||||
#if defined(ABI_ID)
|
||||
require += info_abi[argc];
|
||||
#endif
|
||||
|
||||
@@ -31,6 +31,7 @@ set(CMAKE_CUDA_LINKER_PREFERENCE_PROPAGATES 1)
|
||||
|
||||
set(CMAKE_CUDA_SIZEOF_DATA_PTR "@CMAKE_CUDA_SIZEOF_DATA_PTR@")
|
||||
set(CMAKE_CUDA_COMPILER_ABI "@CMAKE_CUDA_COMPILER_ABI@")
|
||||
set(CMAKE_CUDA_BYTE_ORDER "@CMAKE_CUDA_BYTE_ORDER@")
|
||||
set(CMAKE_CUDA_LIBRARY_ARCHITECTURE "@CMAKE_CUDA_LIBRARY_ARCHITECTURE@")
|
||||
|
||||
if(CMAKE_CUDA_SIZEOF_DATA_PTR)
|
||||
|
||||
@@ -8,6 +8,8 @@ int main(int argc, char* argv[])
|
||||
{
|
||||
int require = 0;
|
||||
require += info_sizeof_dptr[argc];
|
||||
require += info_byte_order_big_endian[argc];
|
||||
require += info_byte_order_little_endian[argc];
|
||||
#if defined(ABI_ID)
|
||||
require += info_abi[argc];
|
||||
#endif
|
||||
|
||||
@@ -60,6 +60,7 @@ set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
|
||||
# Save compiler ABI information.
|
||||
set(CMAKE_CXX_SIZEOF_DATA_PTR "@CMAKE_CXX_SIZEOF_DATA_PTR@")
|
||||
set(CMAKE_CXX_COMPILER_ABI "@CMAKE_CXX_COMPILER_ABI@")
|
||||
set(CMAKE_CXX_BYTE_ORDER "@CMAKE_CXX_BYTE_ORDER@")
|
||||
set(CMAKE_CXX_LIBRARY_ARCHITECTURE "@CMAKE_CXX_LIBRARY_ARCHITECTURE@")
|
||||
|
||||
if(CMAKE_CXX_SIZEOF_DATA_PTR)
|
||||
|
||||
@@ -8,6 +8,8 @@ int main(int argc, char* argv[])
|
||||
{
|
||||
int require = 0;
|
||||
require += info_sizeof_dptr[argc];
|
||||
require += info_byte_order_big_endian[argc];
|
||||
require += info_byte_order_little_endian[argc];
|
||||
#if defined(ABI_ID)
|
||||
require += info_abi[argc];
|
||||
#endif
|
||||
|
||||
@@ -9,6 +9,18 @@ const char info_sizeof_dptr[] = {
|
||||
/* clang-format on */
|
||||
};
|
||||
|
||||
/* Byte order. Only one of these will have bytes in the right order. */
|
||||
static unsigned short const info_byte_order_big_endian[] = {
|
||||
/* INFO:byte_order string for BIG_ENDIAN */
|
||||
0x494E, 0x464F, 0x3A62, 0x7974, 0x655F, 0x6F72, 0x6465, 0x725B,
|
||||
0x4249, 0x475F, 0x454E, 0x4449, 0x414E, 0x5D00, 0x0000
|
||||
};
|
||||
static unsigned short const info_byte_order_little_endian[] = {
|
||||
/* INFO:byte_order string for LITTLE_ENDIAN */
|
||||
0x4E49, 0x4F46, 0x623A, 0x7479, 0x5F65, 0x726F, 0x6564, 0x5B72,
|
||||
0x494C, 0x5454, 0x454C, 0x455F, 0x444E, 0x4149, 0x5D4E, 0x0000
|
||||
};
|
||||
|
||||
/* Application Binary Interface. */
|
||||
|
||||
/* Check for (some) ARM ABIs.
|
||||
|
||||
@@ -47,6 +47,10 @@ if(NOT $ENV{CUDAHOSTCXX} STREQUAL "")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT "$ENV{CUDAARCHS}" STREQUAL "")
|
||||
set(CMAKE_CUDA_ARCHITECTURES "$ENV{CUDAARCHS}" CACHE STRING "CUDA architectures")
|
||||
endif()
|
||||
|
||||
# Build a small source file to identify the compiler.
|
||||
if(NOT CMAKE_CUDA_COMPILER_ID_RUN)
|
||||
set(CMAKE_CUDA_COMPILER_ID_RUN 1)
|
||||
|
||||
@@ -75,12 +75,25 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
|
||||
message(CHECK_PASS "done")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||
"Detecting ${lang} compiler ABI info compiled with the following output:\n${OUTPUT}\n\n")
|
||||
file(STRINGS "${BIN}" ABI_STRINGS LIMIT_COUNT 2 REGEX "INFO:[A-Za-z0-9_]+\\[[^]]*\\]")
|
||||
file(STRINGS "${BIN}" ABI_STRINGS LIMIT_COUNT 32 REGEX "INFO:[A-Za-z0-9_]+\\[[^]]*\\]")
|
||||
set(ABI_SIZEOF_DPTR "NOTFOUND")
|
||||
set(ABI_BYTE_ORDER "NOTFOUND")
|
||||
set(ABI_NAME "NOTFOUND")
|
||||
foreach(info ${ABI_STRINGS})
|
||||
if("${info}" MATCHES "INFO:sizeof_dptr\\[0*([^]]*)\\]")
|
||||
if("${info}" MATCHES "INFO:sizeof_dptr\\[0*([^]]*)\\]" AND NOT ABI_SIZEOF_DPTR)
|
||||
set(ABI_SIZEOF_DPTR "${CMAKE_MATCH_1}")
|
||||
endif()
|
||||
if("${info}" MATCHES "INFO:abi\\[([^]]*)\\]")
|
||||
if("${info}" MATCHES "INFO:byte_order\\[(BIG_ENDIAN|LITTLE_ENDIAN)\\]")
|
||||
set(byte_order "${CMAKE_MATCH_1}")
|
||||
if(ABI_BYTE_ORDER STREQUAL "NOTFOUND")
|
||||
# Tentatively use the value because this is the first occurrence.
|
||||
set(ABI_BYTE_ORDER "${byte_order}")
|
||||
elseif(NOT ABI_BYTE_ORDER STREQUAL "${byte_order}")
|
||||
# Drop value because multiple occurrences do not match.
|
||||
set(ABI_BYTE_ORDER "")
|
||||
endif()
|
||||
endif()
|
||||
if("${info}" MATCHES "INFO:abi\\[([^]]*)\\]" AND NOT ABI_NAME)
|
||||
set(ABI_NAME "${CMAKE_MATCH_1}")
|
||||
endif()
|
||||
endforeach()
|
||||
@@ -91,6 +104,10 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
|
||||
set(CMAKE_${lang}_SIZEOF_DATA_PTR "${CMAKE_${lang}_SIZEOF_DATA_PTR_DEFAULT}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
if(ABI_BYTE_ORDER)
|
||||
set(CMAKE_${lang}_BYTE_ORDER "${ABI_BYTE_ORDER}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
if(ABI_NAME)
|
||||
set(CMAKE_${lang}_COMPILER_ABI "${ABI_NAME}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
@@ -152,7 +152,10 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src)
|
||||
set(CMAKE_EXECUTABLE_FORMAT "Unknown" CACHE INTERNAL "Executable file format")
|
||||
endif()
|
||||
|
||||
if(CMAKE_GENERATOR MATCHES "^Ninja" AND MSVC_${lang}_ARCHITECTURE_ID)
|
||||
if((CMAKE_GENERATOR MATCHES "^Ninja"
|
||||
OR ((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"))
|
||||
AND MSVC_${lang}_ARCHITECTURE_ID)
|
||||
foreach(userflags "${CMAKE_${lang}_COMPILER_ID_FLAGS_LIST}" "")
|
||||
CMAKE_DETERMINE_MSVC_SHOWINCLUDES_PREFIX(${lang} "${userflags}")
|
||||
endforeach()
|
||||
|
||||
@@ -45,6 +45,7 @@ endforeach()
|
||||
# Save compiler ABI information.
|
||||
set(CMAKE_OBJC_SIZEOF_DATA_PTR "@CMAKE_OBJC_SIZEOF_DATA_PTR@")
|
||||
set(CMAKE_OBJC_COMPILER_ABI "@CMAKE_OBJC_COMPILER_ABI@")
|
||||
set(CMAKE_OBJC_BYTE_ORDER "@CMAKE_OBJC_BYTE_ORDER@")
|
||||
set(CMAKE_OBJC_LIBRARY_ARCHITECTURE "@CMAKE_OBJC_LIBRARY_ARCHITECTURE@")
|
||||
|
||||
if(CMAKE_OBJC_SIZEOF_DATA_PTR)
|
||||
|
||||
@@ -12,6 +12,8 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
int require = 0;
|
||||
require += info_sizeof_dptr[argc];
|
||||
require += info_byte_order_big_endian[argc];
|
||||
require += info_byte_order_little_endian[argc];
|
||||
#if defined(ABI_ID)
|
||||
require += info_abi[argc];
|
||||
#endif
|
||||
|
||||
@@ -55,6 +55,7 @@ set(CMAKE_OBJCXX_LINKER_PREFERENCE_PROPAGATES 1)
|
||||
# Save compiler ABI information.
|
||||
set(CMAKE_OBJCXX_SIZEOF_DATA_PTR "@CMAKE_OBJCXX_SIZEOF_DATA_PTR@")
|
||||
set(CMAKE_OBJCXX_COMPILER_ABI "@CMAKE_OBJCXX_COMPILER_ABI@")
|
||||
set(CMAKE_OBJCXX_BYTE_ORDER "@CMAKE_OBJCXX_BYTE_ORDER@")
|
||||
set(CMAKE_OBJCXX_LIBRARY_ARCHITECTURE "@CMAKE_OBJCXX_LIBRARY_ARCHITECTURE@")
|
||||
|
||||
if(CMAKE_OBJCXX_SIZEOF_DATA_PTR)
|
||||
|
||||
@@ -12,6 +12,8 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
int require = 0;
|
||||
require += info_sizeof_dptr[argc];
|
||||
require += info_byte_order_big_endian[argc];
|
||||
require += info_byte_order_little_endian[argc];
|
||||
#if defined(ABI_ID)
|
||||
require += info_abi[argc];
|
||||
#endif
|
||||
|
||||
+16
-18
@@ -121,15 +121,6 @@ if(BUILD_TESTING)
|
||||
string(APPEND SUBMIT_URL "${DROP_SITE}${DROP_LOCATION}")
|
||||
endif()
|
||||
|
||||
find_program(CVSCOMMAND cvs )
|
||||
set(CVS_UPDATE_OPTIONS "-d -A -P" CACHE STRING
|
||||
"Options passed to the cvs update command.")
|
||||
find_program(SVNCOMMAND svn)
|
||||
find_program(BZRCOMMAND bzr)
|
||||
find_program(HGCOMMAND hg)
|
||||
find_program(GITCOMMAND git)
|
||||
find_program(P4COMMAND p4)
|
||||
|
||||
if(NOT UPDATE_TYPE)
|
||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CVS")
|
||||
set(UPDATE_TYPE cvs)
|
||||
@@ -146,21 +137,29 @@ if(BUILD_TESTING)
|
||||
|
||||
string(TOLOWER "${UPDATE_TYPE}" _update_type)
|
||||
if("${_update_type}" STREQUAL "cvs")
|
||||
find_program(CVSCOMMAND cvs )
|
||||
set(CVS_UPDATE_OPTIONS "-d -A -P" CACHE STRING
|
||||
"Options passed to the cvs update command.")
|
||||
set(UPDATE_COMMAND "${CVSCOMMAND}")
|
||||
set(UPDATE_OPTIONS "${CVS_UPDATE_OPTIONS}")
|
||||
elseif("${_update_type}" STREQUAL "svn")
|
||||
find_program(SVNCOMMAND svn)
|
||||
set(UPDATE_COMMAND "${SVNCOMMAND}")
|
||||
set(UPDATE_OPTIONS "${SVN_UPDATE_OPTIONS}")
|
||||
elseif("${_update_type}" STREQUAL "bzr")
|
||||
find_program(BZRCOMMAND bzr)
|
||||
set(UPDATE_COMMAND "${BZRCOMMAND}")
|
||||
set(UPDATE_OPTIONS "${BZR_UPDATE_OPTIONS}")
|
||||
elseif("${_update_type}" STREQUAL "hg")
|
||||
find_program(HGCOMMAND hg)
|
||||
set(UPDATE_COMMAND "${HGCOMMAND}")
|
||||
set(UPDATE_OPTIONS "${HG_UPDATE_OPTIONS}")
|
||||
elseif("${_update_type}" STREQUAL "git")
|
||||
find_program(GITCOMMAND git)
|
||||
set(UPDATE_COMMAND "${GITCOMMAND}")
|
||||
set(UPDATE_OPTIONS "${GIT_UPDATE_OPTIONS}")
|
||||
elseif("${_update_type}" STREQUAL "p4")
|
||||
find_program(P4COMMAND p4)
|
||||
set(UPDATE_COMMAND "${P4COMMAND}")
|
||||
set(UPDATE_OPTIONS "${P4_UPDATE_OPTIONS}")
|
||||
endif()
|
||||
@@ -179,12 +178,6 @@ if(BUILD_TESTING)
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Purify\\Setup;InstallFolder]"
|
||||
DOC "Path to the memory checking command, used for memory error detection."
|
||||
)
|
||||
find_program(SLURM_SBATCH_COMMAND sbatch DOC
|
||||
"Path to the SLURM sbatch executable"
|
||||
)
|
||||
find_program(SLURM_SRUN_COMMAND srun DOC
|
||||
"Path to the SLURM srun executable"
|
||||
)
|
||||
set(MEMORYCHECK_SUPPRESSIONS_FILE "" CACHE FILEPATH
|
||||
"File that contains suppressions for the memory checker")
|
||||
find_program(COVERAGE_COMMAND gcov DOC
|
||||
@@ -194,7 +187,14 @@ if(BUILD_TESTING)
|
||||
"Extra command line flags to pass to the coverage tool")
|
||||
|
||||
# set the site name
|
||||
site_name(SITE)
|
||||
if(COMMAND cmake_host_system_information)
|
||||
cmake_host_system_information(RESULT _ctest_hostname QUERY HOSTNAME)
|
||||
set(SITE "${_ctest_hostname}" CACHE STRING "Name of the computer/site where compile is being run")
|
||||
unset(_ctest_hostname)
|
||||
else()
|
||||
# This code path is needed for CMake itself during bootstrap.
|
||||
site_name(SITE)
|
||||
endif()
|
||||
# set the build name
|
||||
if(NOT BUILDNAME)
|
||||
set(DART_COMPILER "${CMAKE_CXX_COMPILER}")
|
||||
@@ -256,8 +256,6 @@ if(BUILD_TESTING)
|
||||
MAKECOMMAND
|
||||
MEMORYCHECK_COMMAND
|
||||
MEMORYCHECK_SUPPRESSIONS_FILE
|
||||
SLURM_SBATCH_COMMAND
|
||||
SLURM_SRUN_COMMAND
|
||||
SITE
|
||||
SVNCOMMAND
|
||||
)
|
||||
|
||||
@@ -68,6 +68,11 @@ file(WRITE \"\${CMAKE_CURRENT_BINARY_DIR}/result.cmake\"
|
||||
else()
|
||||
set(_D_CMAKE_MAKE_PROGRAM "-DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM}")
|
||||
endif()
|
||||
if(CMAKE_TOOLCHAIN_FILE)
|
||||
set(_D_CMAKE_TOOLCHAIN_FILE "-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_TOOLCHAIN_FILE}")
|
||||
else()
|
||||
set(_D_CMAKE_TOOLCHAIN_FILE "")
|
||||
endif()
|
||||
execute_process(
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}
|
||||
COMMAND ${CMAKE_COMMAND} . -G ${CMAKE_GENERATOR}
|
||||
@@ -75,6 +80,7 @@ file(WRITE \"\${CMAKE_CURRENT_BINARY_DIR}/result.cmake\"
|
||||
-T "${CMAKE_GENERATOR_TOOLSET}"
|
||||
${_D_CMAKE_GENERATOR_INSTANCE}
|
||||
${_D_CMAKE_MAKE_PROGRAM}
|
||||
${_D_CMAKE_TOOLCHAIN_FILE}
|
||||
OUTPUT_VARIABLE _cl_output
|
||||
ERROR_VARIABLE _cl_output
|
||||
RESULT_VARIABLE _cl_result
|
||||
|
||||
@@ -33,7 +33,7 @@ macro(__compiler_armcc lang)
|
||||
set(CMAKE_${lang}_LINK_EXECUTABLE "<CMAKE_LINKER> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS> -o <TARGET> --list <TARGET_BASE>.map")
|
||||
set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "<CMAKE_AR> --create -cr <TARGET> <LINK_FLAGS> <OBJECTS>")
|
||||
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "--depend=<DEPFILE> --depend_single_line --no_depend_system_headers")
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "--depend=<DEP_FILE> --depend_single_line --no_depend_system_headers")
|
||||
|
||||
set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Xlinker" " ")
|
||||
endmacro()
|
||||
|
||||
@@ -1,6 +1,18 @@
|
||||
include(Compiler/Clang)
|
||||
__compiler_clang(C)
|
||||
|
||||
|
||||
if(NOT "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles"
|
||||
AND CMAKE_DEPFILE_FLAGS_C)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_C_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.0)
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
|
||||
|
||||
@@ -2,6 +2,14 @@ include(Compiler/Clang)
|
||||
__compiler_clang(CXX)
|
||||
|
||||
if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles"
|
||||
AND CMAKE_DEPFILE_FLAGS_CXX)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_CXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
|
||||
endif()
|
||||
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
include(Compiler/Clang-OBJC)
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles"
|
||||
AND CMAKE_DEPFILE_FLAGS_OBJC)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_OBJC_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_OBJC_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
|
||||
if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 4.0)
|
||||
set(CMAKE_OBJC90_STANDARD_COMPILE_OPTION "-std=c90")
|
||||
set(CMAKE_OBJC90_EXTENSION_COMPILE_OPTION "-std=gnu90")
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
include(Compiler/Clang-OBJCXX)
|
||||
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles"
|
||||
AND CMAKE_DEPFILE_FLAGS_OBJCXX)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_OBJCXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_OBJCXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
|
||||
set(CMAKE_OBJCXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
|
||||
|
||||
if(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 4.0)
|
||||
|
||||
@@ -8,6 +8,19 @@ endif()
|
||||
|
||||
if("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
|
||||
set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_C)
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
elseif("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_C)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_C_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
|
||||
@@ -2,7 +2,13 @@ include(Compiler/Clang)
|
||||
__compiler_clang(CUDA)
|
||||
|
||||
# Set explicitly, because __compiler_clang() doesn't set this if we're simulating MSVC.
|
||||
set(CMAKE_DEPFILE_FLAGS_CUDA "-MD -MT <OBJECT> -MF <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_CUDA "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_CUDA_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_CUDA_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
# C++03 isn't supported for CXX, but is for CUDA, so we need to set these manually.
|
||||
# Do this before __compiler_clang_cxx_standards() since that adds the feature.
|
||||
|
||||
@@ -3,6 +3,14 @@ __compiler_clang(CXX)
|
||||
__compiler_clang_cxx_standards(CXX)
|
||||
|
||||
if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_CXX)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_CXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
|
||||
endif()
|
||||
|
||||
@@ -13,4 +21,9 @@ endif()
|
||||
|
||||
if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
|
||||
set(CMAKE_CXX_CLANG_TIDY_DRIVER_MODE "cl")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles"
|
||||
AND CMAKE_DEPFILE_FLAGS_CXX)
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
include(Compiler/Clang)
|
||||
__compiler_clang(OBJC)
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_OBJC)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_OBJC_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_OBJC_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
|
||||
if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
set(CMAKE_OBJC90_STANDARD_COMPILE_OPTION "-std=c90")
|
||||
set(CMAKE_OBJC90_EXTENSION_COMPILE_OPTION "-std=gnu90")
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
include(Compiler/Clang)
|
||||
__compiler_clang(OBJCXX)
|
||||
__compiler_clang_cxx_standards(OBJCXX)
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_OBJCXX)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_OBJCXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_OBJCXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
@@ -6,7 +6,7 @@ set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s;S;asm)
|
||||
__compiler_gnu(ASM)
|
||||
|
||||
if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_MATCH STREQUAL "GNU assembler")
|
||||
set(CMAKE_DEPFILE_FLAGS_ASM${ASM_DIALECT} "--MD <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_ASM${ASM_DIALECT} "--MD <DEP_FILE>")
|
||||
set(CMAKE_ASM${ASM_DIALECT}_LINK_EXECUTABLE
|
||||
"<CMAKE_LINKER> <FLAGS> <CMAKE_ASM${ASM_DIALECT}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||
set(CMAKE_ASM_DEFINE_FLAG "--defsym ")
|
||||
|
||||
@@ -1,6 +1,16 @@
|
||||
include(Compiler/GNU)
|
||||
__compiler_gnu(C)
|
||||
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_C)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_C_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5)
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
|
||||
|
||||
@@ -1,6 +1,16 @@
|
||||
include(Compiler/GNU)
|
||||
__compiler_gnu(CXX)
|
||||
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_CXX)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_CXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
|
||||
if (WIN32)
|
||||
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6)
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fno-keep-inline-dllexport")
|
||||
|
||||
@@ -1,2 +1,11 @@
|
||||
include(Compiler/GNU)
|
||||
__compiler_gnu(OBJC)
|
||||
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_OBJC)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_OBJC_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_OBJC_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
include(Compiler/GNU)
|
||||
__compiler_gnu(OBJCXX)
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_OBJCXX)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_OBJCXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_OBJCXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
|
||||
if(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 4.2)
|
||||
set(CMAKE_OBJCXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
|
||||
endif()
|
||||
|
||||
@@ -48,7 +48,7 @@ macro(__compiler_gnu lang)
|
||||
# distcc does not transform -o to -MT when invoking the preprocessor
|
||||
# internally, as it ought to. Work around this bug by setting -MT here
|
||||
# even though it isn't strictly necessary.
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "-MD -MT <OBJECT> -MF <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
|
||||
endif()
|
||||
|
||||
# Initial configuration flags.
|
||||
|
||||
@@ -49,7 +49,7 @@ macro(__compiler_iar_ilink lang)
|
||||
set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -lAH <ASSEMBLY_SOURCE> -o <OBJECT>.dummy")
|
||||
|
||||
set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "-f ")
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "--dependencies=ns <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "--dependencies=ns <DEP_FILE>")
|
||||
|
||||
string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
|
||||
string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -r")
|
||||
@@ -85,7 +85,7 @@ macro(__compiler_iar_xlink lang)
|
||||
set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -lAH <ASSEMBLY_SOURCE> -o <OBJECT>.dummy")
|
||||
|
||||
set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "-f ")
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "--dependencies=ns <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "--dependencies=ns <DEP_FILE>")
|
||||
|
||||
string(APPEND CMAKE_${lang}_FLAGS_INIT " ")
|
||||
string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -r")
|
||||
|
||||
@@ -5,7 +5,13 @@ string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
|
||||
string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
|
||||
string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -DNDEBUG")
|
||||
|
||||
set(CMAKE_DEPFILE_FLAGS_C "-MD -MT <OBJECT> -MF <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_C "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_C_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
|
||||
|
||||
@@ -5,7 +5,13 @@ string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
|
||||
string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG")
|
||||
string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT " -DNDEBUG")
|
||||
|
||||
set(CMAKE_DEPFILE_FLAGS_CXX "-MD -MT <OBJECT> -MF <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_CXX "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_CXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
|
||||
|
||||
@@ -3,7 +3,13 @@ include(Compiler/CMakeCommonCompilerMacros)
|
||||
# Not aware of any verbose flag for ISPC
|
||||
#set(CMAKE_ISPC_VERBOSE_FLAG )
|
||||
|
||||
set(CMAKE_DEPFILE_FLAGS_ISPC "-M -MT <OBJECT> -MF <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_ISPC "-M -MT <DEP_TARGET> -MF <DEP_FILE>")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_ISPC_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_ISPC_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
string(APPEND CMAKE_ISPC_FLAGS_INIT " ")
|
||||
string(APPEND CMAKE_ISPC_FLAGS_DEBUG_INIT "-O0 -g")
|
||||
|
||||
@@ -28,7 +28,15 @@ if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 10.2.89)
|
||||
# The -MD flag was only added to nvcc in 10.2 so
|
||||
# before that we had to invoke the compiler twice
|
||||
# to get header dependency information
|
||||
set(CMAKE_DEPFILE_FLAGS_CUDA "-MD -MT <OBJECT> -MF <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_CUDA "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
|
||||
endif()
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
|
||||
if (NOT CMAKE_DEPFILE_FLAGS_CUDA)
|
||||
set(CMAKE_CUDA_DEPENDS_EXTRA_COMMANDS "<CMAKE_CUDA_COMPILER> ${_CMAKE_CUDA_EXTRA_FLAGS} <DEFINES> <INCLUDES> <FLAGS> ${_CMAKE_COMPILE_AS_CUDA_FLAG} -M <SOURCE> -MT <OBJECT> -o <DEP_FILE>")
|
||||
endif()
|
||||
set(CMAKE_CUDA_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_CUDA_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
if(NOT "x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
|
||||
@@ -14,7 +14,7 @@ macro(__compiler_qcc lang)
|
||||
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_SYSROOT "-Wc,-isysroot,")
|
||||
set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-Wp,-isystem,")
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "-Wp,-MD,<DEPFILE> -Wp,-MT,<OBJECT> -Wp,-MF,<DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "-Wp,-MD,<DEP_FILE> -Wp,-MT,<DEP_TARGET> -Wp,-MF,<DEP_FILE>")
|
||||
|
||||
set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
|
||||
set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP ",")
|
||||
|
||||
@@ -22,7 +22,7 @@ string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -xO2 -xspace -DNDEBUG")
|
||||
string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -xO3 -DNDEBUG")
|
||||
string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -g -xO2 -DNDEBUG")
|
||||
|
||||
set(CMAKE_DEPFILE_FLAGS_C "-xMD -xMF <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_C "-xMD -xMF <DEP_FILE>")
|
||||
|
||||
# Initialize C link type selection flags. These flags are used when
|
||||
# building a shared library, shared module, or executable that links
|
||||
|
||||
@@ -22,7 +22,7 @@ string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -xO2 -xspace -DNDEBUG")
|
||||
string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -xO3 -DNDEBUG")
|
||||
string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT " -g -xO2 -DNDEBUG")
|
||||
|
||||
set(CMAKE_DEPFILE_FLAGS_CXX "-xMD -xMF <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_CXX "-xMD -xMF <DEP_FILE>")
|
||||
|
||||
# Initialize C link type selection flags. These flags are used when
|
||||
# building a shared library, shared module, or executable that links
|
||||
|
||||
@@ -18,7 +18,7 @@ macro(__compiler_ti lang)
|
||||
set(CMAKE_${lang}_RESPONSE_FILE_FLAG "--cmd_file=")
|
||||
|
||||
set(CMAKE_INCLUDE_FLAG_${lang} "--include_path=")
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "--preproc_with_compile --preproc_dependency=<DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "--preproc_with_compile --preproc_dependency=<DEP_FILE>")
|
||||
|
||||
set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> --preproc_only ${__COMPILER_TI_SOURCE_FLAG_${lang}}=<SOURCE> <DEFINES> <INCLUDES> <FLAGS> --output_file=<PREPROCESSED_SOURCE>")
|
||||
set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> --compile_only --skip_assembler ${__COMPILER_TI_SOURCE_FLAG_${lang}}=<SOURCE> <DEFINES> <INCLUDES> <FLAGS> --output_file=<ASSEMBLY_SOURCE>")
|
||||
|
||||
@@ -30,5 +30,5 @@ macro(__compiler_xl lang)
|
||||
set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
|
||||
set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
|
||||
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "-MF <DEPFILE> -qmakedep=gcc")
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "-MF <DEP_FILE> -qmakedep=gcc")
|
||||
endmacro()
|
||||
|
||||
@@ -83,10 +83,6 @@ MemoryCheckSuppressionFile: @MEMORYCHECK_SUPPRESSIONS_FILE@
|
||||
CoverageCommand: @COVERAGE_COMMAND@
|
||||
CoverageExtraFlags: @COVERAGE_EXTRA_FLAGS@
|
||||
|
||||
# Cluster commands
|
||||
SlurmBatchCommand: @SLURM_SBATCH_COMMAND@
|
||||
SlurmRunCommand: @SLURM_SRUN_COMMAND@
|
||||
|
||||
# Testing options
|
||||
# TimeOut is the amount of time in seconds to wait for processes
|
||||
# to complete during testing. After TimeOut seconds, the
|
||||
|
||||
@@ -78,7 +78,8 @@ Module Functions
|
||||
manage local instances of data files stored externally::
|
||||
|
||||
ExternalData_Add_Target(
|
||||
<target> # Name of data management target
|
||||
<target> # Name of data management target
|
||||
[SHOW_PROGRESS <ON|OFF>] # Show progress during the download
|
||||
)
|
||||
|
||||
It creates custom commands in the target as necessary to make data
|
||||
@@ -89,6 +90,11 @@ Module Functions
|
||||
in one of the paths specified in the ``ExternalData_OBJECT_STORES``
|
||||
variable.
|
||||
|
||||
The ``SHOW_PROGRESS`` argument may be passed to suppress progress information
|
||||
during the download of objects. If not provided, it defaults to ``OFF`` for
|
||||
:generator:`Ninja` and :generator:`Ninja Multi-Config` generators and ``ON``
|
||||
otherwise.
|
||||
|
||||
Typically only one target is needed to manage all external data within
|
||||
a project. Call this function once at the end of configuration after
|
||||
all data references have been processed.
|
||||
@@ -344,6 +350,30 @@ function(ExternalData_add_target target)
|
||||
endif()
|
||||
set(_ExternalData_CONFIG_CODE "")
|
||||
|
||||
cmake_parse_arguments(PARSE_ARGV 1 _ExternalData_add_target
|
||||
""
|
||||
"SHOW_PROGRESS"
|
||||
"")
|
||||
if (_ExternalData_add_target_UNPARSED_ARGUMENTS)
|
||||
message(AUTHOR_WARNING
|
||||
"Ignoring unrecognized arguments passed to ExternalData_add_target: "
|
||||
"`${_ExternalData_add_target_UNPARSED_ARGUMENTS}`")
|
||||
endif ()
|
||||
|
||||
# Turn `SHOW_PROGRESS` into a boolean
|
||||
if (NOT DEFINED _ExternalData_add_target_SHOW_PROGRESS)
|
||||
# The default setting
|
||||
if (CMAKE_GENERATOR MATCHES "Ninja")
|
||||
set(_ExternalData_add_target_SHOW_PROGRESS OFF)
|
||||
else ()
|
||||
set(_ExternalData_add_target_SHOW_PROGRESS ON)
|
||||
endif ()
|
||||
elseif (_ExternalData_add_target_SHOW_PROGRESS)
|
||||
set(_ExternalData_add_target_SHOW_PROGRESS ON)
|
||||
else ()
|
||||
set(_ExternalData_add_target_SHOW_PROGRESS OFF)
|
||||
endif ()
|
||||
|
||||
# Store custom script configuration.
|
||||
foreach(url_template IN LISTS ExternalData_URL_TEMPLATES)
|
||||
if("${url_template}" MATCHES "^ExternalDataCustomScript://([^/]*)/(.*)$")
|
||||
@@ -423,6 +453,7 @@ function(ExternalData_add_target target)
|
||||
COMMAND ${CMAKE_COMMAND} -Drelative_top=${CMAKE_BINARY_DIR}
|
||||
-Dfile=${file} -Dname=${name}
|
||||
-DExternalData_ACTION=local
|
||||
-DExternalData_SHOW_PROGRESS=${_ExternalData_add_target_SHOW_PROGRESS}
|
||||
-DExternalData_CONFIG=${config}
|
||||
-P ${_ExternalData_SELF}
|
||||
MAIN_DEPENDENCY "${name}"
|
||||
@@ -459,6 +490,7 @@ function(ExternalData_add_target target)
|
||||
COMMAND ${CMAKE_COMMAND} -Drelative_top=${CMAKE_BINARY_DIR}
|
||||
-Dfile=${file} -Dname=${name} -Dexts=${exts}
|
||||
-DExternalData_ACTION=fetch
|
||||
-DExternalData_SHOW_PROGRESS=${_ExternalData_add_target_SHOW_PROGRESS}
|
||||
-DExternalData_CONFIG=${config}
|
||||
-P ${_ExternalData_SELF}
|
||||
# Update whenever the object hash changes.
|
||||
@@ -925,7 +957,11 @@ function(_ExternalData_download_file url file err_var msg_var)
|
||||
else()
|
||||
set(absolute_timeout "")
|
||||
endif()
|
||||
file(DOWNLOAD "${url}" "${file}" STATUS status LOG log ${inactivity_timeout} ${absolute_timeout} SHOW_PROGRESS)
|
||||
set(show_progress_args)
|
||||
if (ExternalData_SHOW_PROGRESS)
|
||||
list(APPEND show_progress_args SHOW_PROGRESS)
|
||||
endif ()
|
||||
file(DOWNLOAD "${url}" "${file}" STATUS status LOG log ${inactivity_timeout} ${absolute_timeout} ${show_progress_args})
|
||||
list(GET status 0 err)
|
||||
list(GET status 1 msg)
|
||||
if(err)
|
||||
|
||||
@@ -586,16 +586,22 @@ if(BLA_VENDOR STREQUAL "OpenBLAS" OR BLA_VENDOR STREQUAL "All")
|
||||
else()
|
||||
find_package(Threads REQUIRED)
|
||||
endif()
|
||||
set(_threadlibs "${CMAKE_THREAD_LIBS_INIT}")
|
||||
if(BLA_STATIC)
|
||||
find_package(OpenMP COMPONENTS C)
|
||||
list(PREPEND _threadlibs "${OpenMP_C_LIBRARIES}")
|
||||
endif()
|
||||
check_blas_libraries(
|
||||
BLAS_LIBRARIES
|
||||
BLAS
|
||||
sgemm
|
||||
""
|
||||
"openblas"
|
||||
"${CMAKE_THREAD_LIBS_INIT}"
|
||||
"${_threadlibs}"
|
||||
""
|
||||
""
|
||||
)
|
||||
unset(_threadlibs)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
+62
-31
@@ -12,6 +12,15 @@ Imported targets
|
||||
|
||||
This module defines the following :prop_tgt:`IMPORTED` targets:
|
||||
|
||||
``GTest::gtest``
|
||||
The Google Test ``gtest`` library, if found; adds Thread::Thread
|
||||
automatically
|
||||
``GTest::gtest_main``
|
||||
The Google Test ``gtest_main`` library, if found
|
||||
|
||||
For backwards compatibility, this module defines additionally the
|
||||
following deprecated :prop_tgt:`IMPORTED` targets:
|
||||
|
||||
``GTest::GTest``
|
||||
The Google Test ``gtest`` library, if found; adds Thread::Thread
|
||||
automatically
|
||||
@@ -24,7 +33,7 @@ Result variables
|
||||
|
||||
This module will set the following variables in your project:
|
||||
|
||||
``GTEST_FOUND``
|
||||
``GTest_FOUND``
|
||||
Found the Google Testing framework
|
||||
``GTEST_INCLUDE_DIRS``
|
||||
the directory containing the Google Test headers
|
||||
@@ -62,7 +71,7 @@ Example usage
|
||||
find_package(GTest REQUIRED)
|
||||
|
||||
add_executable(foo foo.cc)
|
||||
target_link_libraries(foo GTest::GTest GTest::Main)
|
||||
target_link_libraries(foo GTest::gtest GTest::gtest_main)
|
||||
|
||||
add_test(AllTestsInFoo foo)
|
||||
|
||||
@@ -146,8 +155,41 @@ function(__gtest_import_library _target _var _config)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(__gtest_define_backwards_compatible_library_targets)
|
||||
set(GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} PARENT_SCOPE)
|
||||
|
||||
# Add targets mapping the same library names as defined in
|
||||
# older versions of CMake's FindGTest
|
||||
if(NOT TARGET GTest::GTest)
|
||||
add_library(GTest::GTest INTERFACE IMPORTED)
|
||||
target_link_libraries(GTest::GTest INTERFACE GTest::gtest)
|
||||
endif()
|
||||
if(NOT TARGET GTest::Main)
|
||||
add_library(GTest::Main INTERFACE IMPORTED)
|
||||
target_link_libraries(GTest::Main INTERFACE GTest::gtest_main)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
#
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
|
||||
|
||||
# first specifically look for the CMake version of GTest
|
||||
find_package(GTest QUIET NO_MODULE)
|
||||
|
||||
# if we found the GTest cmake package then we are done, and
|
||||
# can print what we found and return.
|
||||
if(GTest_FOUND)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTest HANDLE_COMPONENTS CONFIG_MODE)
|
||||
|
||||
set(GTEST_LIBRARIES GTest::gtest)
|
||||
set(GTEST_MAIN_LIBRARIES GTest::gtest_main)
|
||||
|
||||
__gtest_define_backwards_compatible_library_targets()
|
||||
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED GTEST_MSVC_SEARCH)
|
||||
set(GTEST_MSVC_SEARCH MD)
|
||||
endif()
|
||||
@@ -201,54 +243,43 @@ else()
|
||||
__gtest_find_library(GTEST_MAIN_LIBRARY_DEBUG gtest_maind)
|
||||
endif()
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTest DEFAULT_MSG GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)
|
||||
|
||||
if(GTEST_FOUND)
|
||||
if(GTest_FOUND)
|
||||
set(GTEST_INCLUDE_DIRS ${GTEST_INCLUDE_DIR})
|
||||
__gtest_append_debugs(GTEST_LIBRARIES GTEST_LIBRARY)
|
||||
__gtest_append_debugs(GTEST_MAIN_LIBRARIES GTEST_MAIN_LIBRARY)
|
||||
set(GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES})
|
||||
|
||||
find_package(Threads QUIET)
|
||||
|
||||
if(NOT TARGET GTest::GTest)
|
||||
if(NOT TARGET GTest::gtest)
|
||||
__gtest_determine_library_type(GTEST_LIBRARY)
|
||||
add_library(GTest::GTest ${GTEST_LIBRARY_TYPE} IMPORTED)
|
||||
add_library(GTest::gtest ${GTEST_LIBRARY_TYPE} IMPORTED)
|
||||
if(TARGET Threads::Threads)
|
||||
set_target_properties(GTest::GTest PROPERTIES
|
||||
set_target_properties(GTest::gtest PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES Threads::Threads)
|
||||
endif()
|
||||
if(GTEST_LIBRARY_TYPE STREQUAL "SHARED")
|
||||
set_target_properties(GTest::GTest PROPERTIES
|
||||
set_target_properties(GTest::gtest PROPERTIES
|
||||
INTERFACE_COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
|
||||
endif()
|
||||
if(GTEST_INCLUDE_DIRS)
|
||||
set_target_properties(GTest::GTest PROPERTIES
|
||||
set_target_properties(GTest::gtest PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}")
|
||||
endif()
|
||||
__gtest_import_library(GTest::GTest GTEST_LIBRARY "")
|
||||
__gtest_import_library(GTest::GTest GTEST_LIBRARY "RELEASE")
|
||||
__gtest_import_library(GTest::GTest GTEST_LIBRARY "DEBUG")
|
||||
endif()
|
||||
if(NOT TARGET GTest::Main)
|
||||
__gtest_determine_library_type(GTEST_MAIN_LIBRARY)
|
||||
add_library(GTest::Main ${GTEST_MAIN_LIBRARY_TYPE} IMPORTED)
|
||||
set_target_properties(GTest::Main PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "GTest::GTest")
|
||||
__gtest_import_library(GTest::Main GTEST_MAIN_LIBRARY "")
|
||||
__gtest_import_library(GTest::Main GTEST_MAIN_LIBRARY "RELEASE")
|
||||
__gtest_import_library(GTest::Main GTEST_MAIN_LIBRARY "DEBUG")
|
||||
endif()
|
||||
|
||||
# Add targets mapping the same library names as defined in
|
||||
# GTest's CMake package config.
|
||||
if(NOT TARGET GTest::gtest)
|
||||
add_library(GTest::gtest INTERFACE IMPORTED)
|
||||
target_link_libraries(GTest::gtest INTERFACE GTest::GTest)
|
||||
__gtest_import_library(GTest::gtest GTEST_LIBRARY "")
|
||||
__gtest_import_library(GTest::gtest GTEST_LIBRARY "RELEASE")
|
||||
__gtest_import_library(GTest::gtest GTEST_LIBRARY "DEBUG")
|
||||
endif()
|
||||
if(NOT TARGET GTest::gtest_main)
|
||||
add_library(GTest::gtest_main INTERFACE IMPORTED)
|
||||
target_link_libraries(GTest::gtest_main INTERFACE GTest::Main)
|
||||
__gtest_determine_library_type(GTEST_MAIN_LIBRARY)
|
||||
add_library(GTest::gtest_main ${GTEST_MAIN_LIBRARY_TYPE} IMPORTED)
|
||||
set_target_properties(GTest::gtest_main PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "GTest::gtest")
|
||||
__gtest_import_library(GTest::gtest_main GTEST_MAIN_LIBRARY "")
|
||||
__gtest_import_library(GTest::gtest_main GTEST_MAIN_LIBRARY "RELEASE")
|
||||
__gtest_import_library(GTest::gtest_main GTEST_MAIN_LIBRARY "DEBUG")
|
||||
endif()
|
||||
|
||||
__gtest_define_backwards_compatible_library_targets()
|
||||
endif()
|
||||
|
||||
+20
-15
@@ -31,7 +31,7 @@ Imported targets::
|
||||
ICU::<C>
|
||||
|
||||
Where ``<C>`` is the name of an ICU component, for example
|
||||
``ICU::i18n``.
|
||||
``ICU::i18n``; ``<C>`` is lower-case.
|
||||
|
||||
ICU programs are reported in::
|
||||
|
||||
@@ -54,16 +54,14 @@ ICU programs are reported in::
|
||||
|
||||
ICU component libraries are reported in::
|
||||
|
||||
ICU_<C>_FOUND - ON if component was found
|
||||
ICU_<C>_LIBRARIES - libraries for component
|
||||
ICU_<C>_FOUND - ON if component was found; ``<C>`` is upper-case.
|
||||
ICU_<C>_LIBRARIES - libraries for component; ``<C>`` is upper-case.
|
||||
|
||||
ICU datafiles are reported in::
|
||||
|
||||
ICU_MAKEFILE_INC - Makefile.inc
|
||||
ICU_PKGDATA_INC - pkgdata.inc
|
||||
|
||||
Note that ``<C>`` is the uppercased name of the component.
|
||||
|
||||
This module reads hints about search results from::
|
||||
|
||||
ICU_ROOT - the root of the ICU installation
|
||||
@@ -73,9 +71,9 @@ ICU_ROOT variable takes precedence.
|
||||
|
||||
The following cache variables may also be set::
|
||||
|
||||
ICU_<P>_EXECUTABLE - the path to executable <P>
|
||||
ICU_<P>_EXECUTABLE - the path to executable <P>; ``<P>`` is upper-case.
|
||||
ICU_INCLUDE_DIR - the directory containing the ICU headers
|
||||
ICU_<C>_LIBRARY - the library for component <C>
|
||||
ICU_<C>_LIBRARY - the library for component <C>; ``<C>`` is upper-case.
|
||||
|
||||
.. note::
|
||||
|
||||
@@ -188,7 +186,8 @@ function(_ICU_FIND)
|
||||
set(component_cache "ICU_${component_upcase}_LIBRARY")
|
||||
set(component_cache_release "${component_cache}_RELEASE")
|
||||
set(component_cache_debug "${component_cache}_DEBUG")
|
||||
set(component_found "${component_upcase}_FOUND")
|
||||
set(component_found "ICU_${component_upcase}_FOUND")
|
||||
set(component_found_compat "${component_upcase}_FOUND")
|
||||
set(component_libnames "icu${component}")
|
||||
set(component_debug_libnames "icu${component}d")
|
||||
|
||||
@@ -250,12 +249,15 @@ function(_ICU_FIND)
|
||||
mark_as_advanced("${component_cache_release}" "${component_cache_debug}")
|
||||
if(${component_cache})
|
||||
set("${component_found}" ON)
|
||||
set("${component_found_compat}" ON)
|
||||
list(APPEND ICU_LIBRARY "${${component_cache}}")
|
||||
endif()
|
||||
mark_as_advanced("${component_found}")
|
||||
mark_as_advanced("${component_found_compat}")
|
||||
set("${component_cache}" "${${component_cache}}" PARENT_SCOPE)
|
||||
set("${component_found}" "${${component_found}}" PARENT_SCOPE)
|
||||
if(${component_found})
|
||||
set("${component_found_compat}" "${${component_found_compat}}" PARENT_SCOPE)
|
||||
if(component_found OR component_found_compat)
|
||||
if (ICU_FIND_REQUIRED_${component})
|
||||
list(APPEND ICU_LIBS_FOUND "${component} (required)")
|
||||
else()
|
||||
@@ -346,7 +348,7 @@ if(ICU_FOUND)
|
||||
set(_ICU_component_cache_release "ICU_${_ICU_component_upcase}_LIBRARY_RELEASE")
|
||||
set(_ICU_component_cache_debug "ICU_${_ICU_component_upcase}_LIBRARY_DEBUG")
|
||||
set(_ICU_component_lib "ICU_${_ICU_component_upcase}_LIBRARIES")
|
||||
set(_ICU_component_found "${_ICU_component_upcase}_FOUND")
|
||||
set(_ICU_component_found "ICU_${_ICU_component_upcase}_FOUND")
|
||||
set(_ICU_imported_target "ICU::${_ICU_component}")
|
||||
if(${_ICU_component_found})
|
||||
set("${_ICU_component_lib}" "${${_ICU_component_cache}}")
|
||||
@@ -400,7 +402,7 @@ if(ICU_DEBUG)
|
||||
foreach(program IN LISTS icu_programs)
|
||||
string(TOUPPER "${program}" program_upcase)
|
||||
set(program_lib "ICU_${program_upcase}_EXECUTABLE")
|
||||
message(STATUS "${program} program: ${${program_lib}}")
|
||||
message(STATUS "${program} program: ${program_lib}=${${program_lib}}")
|
||||
unset(program_upcase)
|
||||
unset(program_lib)
|
||||
endforeach()
|
||||
@@ -409,7 +411,7 @@ if(ICU_DEBUG)
|
||||
string(TOUPPER "${data}" data_upcase)
|
||||
string(REPLACE "." "_" data_upcase "${data_upcase}")
|
||||
set(data_lib "ICU_${data_upcase}")
|
||||
message(STATUS "${data} data: ${${data_lib}}")
|
||||
message(STATUS "${data} data: ${data_lib}=${${data_lib}}")
|
||||
unset(data_upcase)
|
||||
unset(data_lib)
|
||||
endforeach()
|
||||
@@ -417,12 +419,15 @@ if(ICU_DEBUG)
|
||||
foreach(component IN LISTS ICU_FIND_COMPONENTS)
|
||||
string(TOUPPER "${component}" component_upcase)
|
||||
set(component_lib "ICU_${component_upcase}_LIBRARIES")
|
||||
set(component_found "${component_upcase}_FOUND")
|
||||
message(STATUS "${component} library found: ${${component_found}}")
|
||||
message(STATUS "${component} library: ${${component_lib}}")
|
||||
set(component_found "ICU_${component_upcase}_FOUND")
|
||||
set(component_found_compat "${component_upcase}_FOUND")
|
||||
message(STATUS "${component} library found: ${component_found}=${${component_found}}")
|
||||
message(STATUS "${component} library found (compat name): ${component_found_compat}=${${component_found_compat}}")
|
||||
message(STATUS "${component} library: ${component_lib}=${${component_lib}}")
|
||||
unset(component_upcase)
|
||||
unset(component_lib)
|
||||
unset(component_found)
|
||||
unset(component_found_compat)
|
||||
endforeach()
|
||||
message(STATUS "----------------")
|
||||
endif()
|
||||
|
||||
+36
-8
@@ -15,11 +15,16 @@ installation in several variables. General variables::
|
||||
Intl_FOUND - true if the libintl headers and libraries were found
|
||||
Intl_INCLUDE_DIRS - the directory containing the libintl headers
|
||||
Intl_LIBRARIES - libintl libraries to be linked
|
||||
Intl::Intl - imported target for Intl
|
||||
|
||||
The following cache variables may also be set::
|
||||
|
||||
Intl_INCLUDE_DIR - the directory containing the libintl headers
|
||||
Intl_LIBRARY - the libintl library (if any)
|
||||
Intl_HAVE_GETTEXT_BUILTIN - check if gettext is in the C library
|
||||
Intl_HAVE_DCGETTEXT_BUILTIN - check if dcgettext is in the C library
|
||||
Intl_IS_BUILTIN - whether intl is a part of the C library determined
|
||||
from the result of Intl_HAVE_GETTEXT_BUILTIN and Intl_HAVE_DCGETTEXT_BUILTIN
|
||||
|
||||
.. note::
|
||||
On some platforms, such as Linux with GNU libc, the gettext
|
||||
@@ -35,6 +40,22 @@ The following cache variables may also be set::
|
||||
|
||||
# Written by Roger Leigh <rleigh@codelibre.net>
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/CheckSymbolExists.cmake)
|
||||
|
||||
# Check if we have libintl is a part of libc
|
||||
cmake_push_check_state(RESET)
|
||||
set(CMAKE_REQUIRED_QUIET TRUE)
|
||||
check_symbol_exists(gettext libintl.h Intl_HAVE_GETTEXT_BUILTIN)
|
||||
check_symbol_exists(dcgettext libintl.h Intl_HAVE_DCGETTEXT_BUILTIN) # redundant check
|
||||
cmake_pop_check_state()
|
||||
|
||||
if(Intl_HAVE_GETTEXT_BUILTIN AND Intl_HAVE_DCGETTEXT_BUILTIN)
|
||||
set(Intl_IS_BUILTIN TRUE)
|
||||
else()
|
||||
set(Intl_IS_BUILTIN FALSE)
|
||||
endif()
|
||||
|
||||
# Find include directory
|
||||
find_path(Intl_INCLUDE_DIR
|
||||
NAMES "libintl.h"
|
||||
@@ -42,21 +63,28 @@ find_path(Intl_INCLUDE_DIR
|
||||
mark_as_advanced(Intl_INCLUDE_DIR)
|
||||
|
||||
# Find all Intl libraries
|
||||
find_library(Intl_LIBRARY "intl" NAMES_PER_DIR
|
||||
DOC "libintl libraries (if not in the C library)")
|
||||
mark_as_advanced(Intl_LIBRARY)
|
||||
set(Intl_REQUIRED_VARS)
|
||||
if(NOT Intl_IS_BUILTIN)
|
||||
find_library(Intl_LIBRARY "intl" "libintl" NAMES_PER_DIR
|
||||
DOC "libintl libraries (if not in the C library)")
|
||||
mark_as_advanced(Intl_LIBRARY)
|
||||
list(APPEND Intl_REQUIRED_VARS Intl_LIBRARY)
|
||||
endif()
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Intl
|
||||
FOUND_VAR Intl_FOUND
|
||||
REQUIRED_VARS Intl_INCLUDE_DIR
|
||||
REQUIRED_VARS Intl_INCLUDE_DIR ${Intl_REQUIRED_VARS}
|
||||
FAIL_MESSAGE "Failed to find Gettext libintl")
|
||||
unset(Intl_REQUIRED_VARS)
|
||||
|
||||
if(Intl_FOUND)
|
||||
set(Intl_INCLUDE_DIRS "${Intl_INCLUDE_DIR}")
|
||||
if(Intl_LIBRARY)
|
||||
set(Intl_LIBRARIES "${Intl_LIBRARY}")
|
||||
else()
|
||||
unset(Intl_LIBRARIES)
|
||||
set(Intl_LIBRARIES "${Intl_LIBRARY}")
|
||||
if(NOT TARGET Intl::Intl)
|
||||
add_library(Intl::Intl INTERFACE IMPORTED)
|
||||
set_target_properties(Intl::Intl PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${Intl_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${Intl_LIBRARIES}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -204,7 +204,7 @@ function(protobuf_generate)
|
||||
foreach(_proto ${protobuf_generate_PROTOS})
|
||||
get_filename_component(_abs_file ${_proto} ABSOLUTE)
|
||||
get_filename_component(_abs_dir ${_abs_file} DIRECTORY)
|
||||
get_filename_component(_basename ${_proto} NAME_WE)
|
||||
get_filename_component(_basename ${_proto} NAME_WLE)
|
||||
file(RELATIVE_PATH _rel_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_abs_dir})
|
||||
|
||||
set(_possible_rel_dir)
|
||||
|
||||
+99
-13
@@ -10,25 +10,32 @@ FindPython
|
||||
Find Python interpreter, compiler and development environment (include
|
||||
directories and libraries).
|
||||
|
||||
When a version is requested, it can be specified as a simple value or as a
|
||||
range. For a detailed description of version range usage and capabilities,
|
||||
refer to the :command:`find_package` command.
|
||||
.. versionadded:: 3.19
|
||||
When a version is requested, it can be specified as a simple value or as a
|
||||
range. For a detailed description of version range usage and capabilities,
|
||||
refer to the :command:`find_package` command.
|
||||
|
||||
The following components are supported:
|
||||
|
||||
* ``Interpreter``: search for Python interpreter.
|
||||
* ``Compiler``: search for Python compiler. Only offered by IronPython.
|
||||
* ``Development``: search for development artifacts (include directories and
|
||||
libraries). This component includes two sub-components which can be specified
|
||||
independently:
|
||||
libraries).
|
||||
|
||||
* ``Development.Module``: search for artifacts for Python module
|
||||
developments.
|
||||
* ``Development.Embed``: search for artifacts for Python embedding
|
||||
developments.
|
||||
.. versionadded:: 3.18
|
||||
This component includes two sub-components which can be specified
|
||||
independently:
|
||||
|
||||
* ``Development.Module``: search for artifacts for Python module
|
||||
developments.
|
||||
* ``Development.Embed``: search for artifacts for Python embedding
|
||||
developments.
|
||||
|
||||
* ``NumPy``: search for NumPy include directories.
|
||||
|
||||
.. versionadded:: 3.14
|
||||
Added ``NumPy`` component.
|
||||
|
||||
If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
|
||||
|
||||
If component ``Development`` is specified, it implies sub-components
|
||||
@@ -56,20 +63,30 @@ To manage concurrent versions 3 and 2 of Python, use :module:`FindPython3` and
|
||||
Imported Targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following :ref:`Imported Targets <Imported Targets>`
|
||||
(when :prop_gbl:`CMAKE_ROLE` is ``PROJECT``):
|
||||
This module defines the following :ref:`Imported Targets <Imported Targets>`:
|
||||
|
||||
.. versionchanged:: 3.14
|
||||
:ref:`Imported Targets <Imported Targets>` are only created when
|
||||
:prop_gbl:`CMAKE_ROLE` is ``PROJECT``.
|
||||
|
||||
``Python::Interpreter``
|
||||
Python interpreter. Target defined if component ``Interpreter`` is found.
|
||||
``Python::Compiler``
|
||||
Python compiler. Target defined if component ``Compiler`` is found.
|
||||
|
||||
``Python::Module``
|
||||
.. versionadded:: 3.15
|
||||
|
||||
Python library for Python module. Target defined if component
|
||||
``Development.Module`` is found.
|
||||
|
||||
``Python::Python``
|
||||
Python library for Python embedding. Target defined if component
|
||||
``Development.Embed`` is found.
|
||||
|
||||
``Python::NumPy``
|
||||
.. versionadded:: 3.14
|
||||
|
||||
NumPy Python library. Target defined if component ``NumPy`` is found.
|
||||
|
||||
Result Variables
|
||||
@@ -116,7 +133,10 @@ This module will set the following variables in your project
|
||||
Information returned by
|
||||
``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=False)``
|
||||
or else ``sysconfig.get_path('platlib')``.
|
||||
|
||||
``Python_SOABI``
|
||||
.. versionadded:: 3.17
|
||||
|
||||
Extension suffix for modules.
|
||||
|
||||
Information returned by
|
||||
@@ -125,6 +145,7 @@ This module will set the following variables in your project
|
||||
``python-config --extension-suffix``. If package ``distutils.sysconfig`` is
|
||||
not available, ``sysconfig.get_config_var('SOABI')`` or
|
||||
``sysconfig.get_config_var('EXT_SUFFIX')`` are used.
|
||||
|
||||
``Python_Compiler_FOUND``
|
||||
System has the Python compiler.
|
||||
``Python_COMPILER``
|
||||
@@ -132,19 +153,35 @@ This module will set the following variables in your project
|
||||
``Python_COMPILER_ID``
|
||||
A short string unique to the compiler. Possible values include:
|
||||
* IronPython
|
||||
|
||||
``Python_DOTNET_LAUNCHER``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
|
||||
|
||||
``Python_Development_FOUND``
|
||||
System has the Python development artifacts.
|
||||
|
||||
``Python_Development.Module_FOUND``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
System has the Python development artifacts for Python module.
|
||||
|
||||
``Python_Development.Embed_FOUND``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
System has the Python development artifacts for Python embedding.
|
||||
|
||||
``Python_INCLUDE_DIRS``
|
||||
|
||||
The Python include directories.
|
||||
|
||||
``Python_LINK_OPTIONS``
|
||||
.. versionadded:: 3.19
|
||||
|
||||
The Python link options. Some configurations require specific link options
|
||||
for a correct build and execution.
|
||||
|
||||
``Python_LIBRARIES``
|
||||
The Python libraries.
|
||||
``Python_LIBRARY_DIRS``
|
||||
@@ -159,13 +196,25 @@ This module will set the following variables in your project
|
||||
Python minor version.
|
||||
``Python_VERSION_PATCH``
|
||||
Python patch version.
|
||||
|
||||
``Python_PyPy_VERSION``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
Python PyPy version.
|
||||
|
||||
``Python_NumPy_FOUND``
|
||||
.. versionadded:: 3.14
|
||||
|
||||
System has the NumPy.
|
||||
|
||||
``Python_NumPy_INCLUDE_DIRS``
|
||||
.. versionadded:: 3.14
|
||||
|
||||
The NumPy include directories.
|
||||
|
||||
``Python_NumPy_VERSION``
|
||||
.. versionadded:: 3.14
|
||||
|
||||
The NumPy version.
|
||||
|
||||
Hints
|
||||
@@ -181,6 +230,8 @@ Hints
|
||||
* If set to FALSE, search **only** for shared libraries.
|
||||
|
||||
``Python_FIND_ABI``
|
||||
.. versionadded:: 3.16
|
||||
|
||||
This variable defines which ABIs, as defined in
|
||||
`PEP 3149 <https://www.python.org/dev/peps/pep-3149/>`_, should be searched.
|
||||
|
||||
@@ -226,6 +277,8 @@ Hints
|
||||
each flag is ``OFF`` or ``ANY``.
|
||||
|
||||
``Python_FIND_STRATEGY``
|
||||
.. versionadded:: 3.15
|
||||
|
||||
This variable defines how lookup will be done.
|
||||
The ``Python_FIND_STRATEGY`` variable can be set to one of the following:
|
||||
|
||||
@@ -238,6 +291,8 @@ Hints
|
||||
This is the default if policy :policy:`CMP0094` is set to ``NEW``.
|
||||
|
||||
``Python_FIND_REGISTRY``
|
||||
.. versionadded:: 3.13
|
||||
|
||||
On Windows the ``Python_FIND_REGISTRY`` variable determine the order
|
||||
of preference between registry and environment variables.
|
||||
the ``Python_FIND_REGISTRY`` variable can be set to one of the following:
|
||||
@@ -248,6 +303,8 @@ Hints
|
||||
* ``NEVER``: Never try to use registry.
|
||||
|
||||
``Python_FIND_FRAMEWORK``
|
||||
.. versionadded:: 3.15
|
||||
|
||||
On macOS the ``Python_FIND_FRAMEWORK`` variable determine the order of
|
||||
preference between Apple-style and unix-style package components.
|
||||
This variable can take same values as :variable:`CMAKE_FIND_FRAMEWORK`
|
||||
@@ -261,6 +318,8 @@ Hints
|
||||
variable will be used, if any.
|
||||
|
||||
``Python_FIND_VIRTUALENV``
|
||||
.. versionadded:: 3.15
|
||||
|
||||
This variable defines the handling of virtual environments managed by
|
||||
``virtualenv`` or ``conda``. It is meaningful only when a virtual environment
|
||||
is active (i.e. the ``activate`` script has been evaluated). In this case, it
|
||||
@@ -279,6 +338,9 @@ Hints
|
||||
``NEVER`` to select preferably the interpreter from the virtual
|
||||
environment.
|
||||
|
||||
.. versionadded:: 3.17
|
||||
Added support for ``conda`` environments.
|
||||
|
||||
.. note::
|
||||
|
||||
If the component ``Development`` is requested, it is **strongly**
|
||||
@@ -286,6 +348,8 @@ Hints
|
||||
result.
|
||||
|
||||
``Python_FIND_IMPLEMENTATIONS``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
This variable defines, in an ordered list, the different implementations
|
||||
which will be searched. The ``Python_FIND_IMPLEMENTATIONS`` variable can
|
||||
hold the following values:
|
||||
@@ -318,9 +382,26 @@ Hints
|
||||
``.Net`` interpreter (i.e. ``mono`` command) is expected to be available
|
||||
through the ``PATH`` variable.
|
||||
|
||||
``Python_FIND_UNVERSIONED_NAMES``
|
||||
.. versionadded:: 3.20
|
||||
|
||||
This variable defines how the generic names will be searched. Currently, it
|
||||
only applies to the generic names of the interpreter, namely, ``python3`` or
|
||||
``python2`` and ``python``.
|
||||
The ``Python_FIND_UNVERSIONED_NAMES`` variable can be set to one of the
|
||||
following values:
|
||||
|
||||
* ``FIRST``: The generic names are searched before the more specialized ones
|
||||
(such as ``python2.5`` for example).
|
||||
* ``LAST``: The generic names are searched after the more specialized ones.
|
||||
This is the default.
|
||||
* ``NEVER``: The generic name are not searched at all.
|
||||
|
||||
Artifacts Specification
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. versionadded:: 3.16
|
||||
|
||||
To solve special cases, it is possible to specify directly the artifacts by
|
||||
setting the following variables:
|
||||
|
||||
@@ -331,6 +412,8 @@ setting the following variables:
|
||||
The path to the compiler.
|
||||
|
||||
``Python_DOTNET_LAUNCHER``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
|
||||
|
||||
``Python_LIBRARY``
|
||||
@@ -367,6 +450,8 @@ specification. So, to enable also interactive specification, module behavior
|
||||
can be controlled with the following variable:
|
||||
|
||||
``Python_ARTIFACTS_INTERACTIVE``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
Selects the behavior of the module. This is a boolean variable:
|
||||
|
||||
* If set to ``TRUE``: Create CMake cache entries for the above artifact
|
||||
@@ -389,8 +474,9 @@ Python module naming rules::
|
||||
|
||||
If the library type is not specified, ``MODULE`` is assumed.
|
||||
|
||||
For ``MODULE`` library type, if option ``WITH_SOABI`` is specified, the
|
||||
module suffix will include the ``Python_SOABI`` value, if any.
|
||||
.. versionadded:: 3.17
|
||||
For ``MODULE`` library type, if option ``WITH_SOABI`` is specified, the
|
||||
module suffix will include the ``Python_SOABI`` value, if any.
|
||||
#]=======================================================================]
|
||||
|
||||
|
||||
|
||||
@@ -337,6 +337,9 @@ function (_PYTHON_GET_NAMES _PYTHON_PGN_NAMES)
|
||||
|
||||
foreach (implementation IN LISTS _PGN_IMPLEMENTATIONS)
|
||||
if (implementation STREQUAL "CPython")
|
||||
if (_PGN_INTERPRETER AND _${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES STREQUAL "FIRST")
|
||||
list (APPEND names python${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR} python)
|
||||
endif()
|
||||
foreach (version IN LISTS _PGN_VERSION)
|
||||
if (_PGN_WIN32)
|
||||
string (REPLACE "." "" version_no_dots ${version})
|
||||
@@ -386,7 +389,7 @@ function (_PYTHON_GET_NAMES _PYTHON_PGN_NAMES)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
if (_PGN_INTERPRETER)
|
||||
if (_PGN_INTERPRETER AND _${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES STREQUAL "LAST")
|
||||
list (APPEND names python${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR} python)
|
||||
endif()
|
||||
elseif (implementation STREQUAL "IronPython")
|
||||
@@ -1364,9 +1367,22 @@ else()
|
||||
endif()
|
||||
|
||||
|
||||
# Python naming handling
|
||||
if (DEFINED ${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES)
|
||||
if (NOT ${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES MATCHES "^(FIRST|LAST|NEVER)$")
|
||||
message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${_${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES}: invalid value for '${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES'. 'FIRST', 'LAST' or 'NEVER' expected. 'LAST' will be used instead.")
|
||||
set (_${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES LAST)
|
||||
else()
|
||||
set (_${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES ${${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES})
|
||||
endif()
|
||||
else()
|
||||
set (_${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES LAST)
|
||||
endif()
|
||||
|
||||
|
||||
# Compute search signature
|
||||
# This signature will be used to check validity of cached variables on new search
|
||||
set (_${_PYTHON_PREFIX}_SIGNATURE "${${_PYTHON_PREFIX}_ROOT_DIR}:${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS}:${_${_PYTHON_PREFIX}_FIND_STRATEGY}:${${_PYTHON_PREFIX}_FIND_VIRTUALENV}")
|
||||
set (_${_PYTHON_PREFIX}_SIGNATURE "${${_PYTHON_PREFIX}_ROOT_DIR}:${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS}:${_${_PYTHON_PREFIX}_FIND_STRATEGY}:${${_PYTHON_PREFIX}_FIND_VIRTUALENV}${_${_PYTHON_PREFIX}_FIND_UNVERSIONED_NAMES}")
|
||||
if (NOT WIN32)
|
||||
string (APPEND _${_PYTHON_PREFIX}_SIGNATURE ":${${_PYTHON_PREFIX}_USE_STATIC_LIBS}:")
|
||||
endif()
|
||||
@@ -2997,8 +3013,9 @@ if (("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
|
||||
unset(_${_PYTHON_PREFIX}_is_prefix)
|
||||
foreach (_${_PYTHON_PREFIX}_implementation IN LISTS _${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS)
|
||||
foreach (_${_PYTHON_PREFIX}_framework IN LISTS _${_PYTHON_PREFIX}_${_${_PYTHON_PREFIX}_implementation}_FRAMEWORKS)
|
||||
if (${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "^${_${_PYTHON_PREFIX}_framework}")
|
||||
get_filename_component (_${_PYTHON_PREFIX}_framework "${_${_PYTHON_PREFIX}_framework}" DIRECTORY)
|
||||
cmake_path (IS_PREFIX _${_PYTHON_PREFIX}_framework "${${_PYTHON_PREFIX}_LIBRARY_RELEASE}" _${_PYTHON_PREFIX}_is_prefix)
|
||||
if (_${_PYTHON_PREFIX}_is_prefix)
|
||||
cmake_path (GET _${_PYTHON_PREFIX}_framework PARENT_PATH _${_PYTHON_PREFIX}_framework)
|
||||
set (${_PYTHON_PREFIX}_LINK_OPTIONS "LINKER:-rpath,${_${_PYTHON_PREFIX}_framework}")
|
||||
break()
|
||||
endif()
|
||||
|
||||
+88
-11
@@ -10,25 +10,32 @@ FindPython2
|
||||
Find Python 2 interpreter, compiler and development environment (include
|
||||
directories and libraries).
|
||||
|
||||
When a version is requested, it can be specified as a simple value or as a
|
||||
range. For a detailed description of version range usage and capabilities,
|
||||
refer to the :command:`find_package` command.
|
||||
.. versionadded:: 3.19
|
||||
When a version is requested, it can be specified as a simple value or as a
|
||||
range. For a detailed description of version range usage and capabilities,
|
||||
refer to the :command:`find_package` command.
|
||||
|
||||
The following components are supported:
|
||||
|
||||
* ``Interpreter``: search for Python 2 interpreter
|
||||
* ``Compiler``: search for Python 2 compiler. Only offered by IronPython.
|
||||
* ``Development``: search for development artifacts (include directories and
|
||||
libraries). This component includes two sub-components which can be specified
|
||||
independently:
|
||||
libraries).
|
||||
|
||||
* ``Development.Module``: search for artifacts for Python 2 module
|
||||
developments.
|
||||
* ``Development.Embed``: search for artifacts for Python 2 embedding
|
||||
developments.
|
||||
.. versionadded:: 3.18
|
||||
This component includes two sub-components which can be specified
|
||||
independently:
|
||||
|
||||
* ``Development.Module``: search for artifacts for Python 2 module
|
||||
developments.
|
||||
* ``Development.Embed``: search for artifacts for Python 2 embedding
|
||||
developments.
|
||||
|
||||
* ``NumPy``: search for NumPy include directories.
|
||||
|
||||
.. versionadded:: 3.14
|
||||
Added ``NumPy`` component.
|
||||
|
||||
If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
|
||||
|
||||
If component ``Development`` is specified, it implies sub-components
|
||||
@@ -57,20 +64,29 @@ for you.
|
||||
Imported Targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following :ref:`Imported Targets <Imported Targets>`
|
||||
(when :prop_gbl:`CMAKE_ROLE` is ``PROJECT``):
|
||||
This module defines the following :ref:`Imported Targets <Imported Targets>`:
|
||||
|
||||
.. versionchanged:: 3.14
|
||||
:ref:`Imported Targets <Imported Targets>` are only created when
|
||||
:prop_gbl:`CMAKE_ROLE` is ``PROJECT``.
|
||||
|
||||
``Python2::Interpreter``
|
||||
Python 2 interpreter. Target defined if component ``Interpreter`` is found.
|
||||
``Python2::Compiler``
|
||||
Python 2 compiler. Target defined if component ``Compiler`` is found.
|
||||
``Python2::Module``
|
||||
.. versionadded:: 3.15
|
||||
|
||||
Python 2 library for Python module. Target defined if component
|
||||
``Development.Module`` is found.
|
||||
|
||||
``Python2::Python``
|
||||
Python 2 library for Python embedding. Target defined if component
|
||||
``Development.Embed`` is found.
|
||||
|
||||
``Python2::NumPy``
|
||||
.. versionadded:: 3.14
|
||||
|
||||
NumPy library for Python 2. Target defined if component ``NumPy`` is found.
|
||||
|
||||
Result Variables
|
||||
@@ -124,19 +140,34 @@ This module will set the following variables in your project
|
||||
``Python2_COMPILER_ID``
|
||||
A short string unique to the compiler. Possible values include:
|
||||
* IronPython
|
||||
|
||||
``Python2_DOTNET_LAUNCHER``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
|
||||
|
||||
``Python2_Development_FOUND``
|
||||
System has the Python 2 development artifacts.
|
||||
|
||||
``Python2_Development.Module_FOUND``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
System has the Python 2 development artifacts for Python module.
|
||||
|
||||
``Python2_Development.Embed_FOUND``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
System has the Python 2 development artifacts for Python embedding.
|
||||
|
||||
``Python2_INCLUDE_DIRS``
|
||||
The Python 2 include directories.
|
||||
|
||||
``Python2_LINK_OPTIONS``
|
||||
.. versionadded:: 3.19
|
||||
|
||||
The Python 2 link options. Some configurations require specific link options
|
||||
for a correct build and execution.
|
||||
|
||||
``Python2_LIBRARIES``
|
||||
The Python 2 libraries.
|
||||
``Python2_LIBRARY_DIRS``
|
||||
@@ -151,13 +182,25 @@ This module will set the following variables in your project
|
||||
Python 2 minor version.
|
||||
``Python2_VERSION_PATCH``
|
||||
Python 2 patch version.
|
||||
|
||||
``Python2_PyPy_VERSION``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
Python 2 PyPy version.
|
||||
|
||||
``Python2_NumPy_FOUND``
|
||||
.. versionadded:: 3.14
|
||||
|
||||
System has the NumPy.
|
||||
|
||||
``Python2_NumPy_INCLUDE_DIRS``
|
||||
.. versionadded:: 3.14
|
||||
|
||||
The NumPy include directories.
|
||||
|
||||
``Python2_NumPy_VERSION``
|
||||
.. versionadded:: 3.14
|
||||
|
||||
The NumPy version.
|
||||
|
||||
Hints
|
||||
@@ -173,6 +216,8 @@ Hints
|
||||
* If set to FALSE, search **only** for shared libraries.
|
||||
|
||||
``Python2_FIND_STRATEGY``
|
||||
.. versionadded:: 3.15
|
||||
|
||||
This variable defines how lookup will be done.
|
||||
The ``Python2_FIND_STRATEGY`` variable can be set to one of the following:
|
||||
|
||||
@@ -185,6 +230,8 @@ Hints
|
||||
This is the default if policy :policy:`CMP0094` is set to ``NEW``.
|
||||
|
||||
``Python2_FIND_REGISTRY``
|
||||
.. versionadded:: 3.13
|
||||
|
||||
On Windows the ``Python2_FIND_REGISTRY`` variable determine the order
|
||||
of preference between registry and environment variables.
|
||||
the ``Python2_FIND_REGISTRY`` variable can be set to one of the following:
|
||||
@@ -195,6 +242,8 @@ Hints
|
||||
* ``NEVER``: Never try to use registry.
|
||||
|
||||
``Python2_FIND_FRAMEWORK``
|
||||
.. versionadded:: 3.15
|
||||
|
||||
On macOS the ``Python2_FIND_FRAMEWORK`` variable determine the order of
|
||||
preference between Apple-style and unix-style package components.
|
||||
This variable can take same values as :variable:`CMAKE_FIND_FRAMEWORK`
|
||||
@@ -208,6 +257,8 @@ Hints
|
||||
variable will be used, if any.
|
||||
|
||||
``Python2_FIND_VIRTUALENV``
|
||||
.. versionadded:: 3.15
|
||||
|
||||
This variable defines the handling of virtual environments managed by
|
||||
``virtualenv`` or ``conda``. It is meaningful only when a virtual environment
|
||||
is active (i.e. the ``activate`` script has been evaluated). In this case, it
|
||||
@@ -226,6 +277,9 @@ Hints
|
||||
``NEVER`` to select preferably the interpreter from the virtual
|
||||
environment.
|
||||
|
||||
.. versionadded:: 3.17
|
||||
Added support for ``conda`` environments.
|
||||
|
||||
.. note::
|
||||
|
||||
If the component ``Development`` is requested, it is **strongly**
|
||||
@@ -233,6 +287,8 @@ Hints
|
||||
result.
|
||||
|
||||
``Python2_FIND_IMPLEMENTATIONS``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
This variable defines, in an ordered list, the different implementations
|
||||
which will be searched. The ``Python2_FIND_IMPLEMENTATIONS`` variable can
|
||||
hold the following values:
|
||||
@@ -265,9 +321,26 @@ Hints
|
||||
``.Net`` interpreter (i.e. ``mono`` command) is expected to be available
|
||||
through the ``PATH`` variable.
|
||||
|
||||
``Python2_FIND_UNVERSIONED_NAMES``
|
||||
.. versionadded:: 3.20
|
||||
|
||||
This variable defines how the generic names will be searched. Currently, it
|
||||
only applies to the generic names of the interpreter, namely, ``python2`` and
|
||||
``python``.
|
||||
The ``Python2_FIND_UNVERSIONED_NAMES`` variable can be set to one of the
|
||||
following values:
|
||||
|
||||
* ``FIRST``: The generic names are searched before the more specialized ones
|
||||
(such as ``python2.5`` for example).
|
||||
* ``LAST``: The generic names are searched after the more specialized ones.
|
||||
This is the default.
|
||||
* ``NEVER``: The generic name are not searched at all.
|
||||
|
||||
Artifacts Specification
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. versionadded:: 3.16
|
||||
|
||||
To solve special cases, it is possible to specify directly the artifacts by
|
||||
setting the following variables:
|
||||
|
||||
@@ -278,6 +351,8 @@ setting the following variables:
|
||||
The path to the compiler.
|
||||
|
||||
``Python2_DOTNET_LAUNCHER``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
|
||||
|
||||
``Python2_LIBRARY``
|
||||
@@ -314,6 +389,8 @@ specification. So, to enable also interactive specification, module behavior
|
||||
can be controlled with the following variable:
|
||||
|
||||
``Python2_ARTIFACTS_INTERACTIVE``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
Selects the behavior of the module. This is a boolean variable:
|
||||
|
||||
* If set to ``TRUE``: Create CMake cache entries for the above artifact
|
||||
|
||||
+100
-13
@@ -10,25 +10,32 @@ FindPython3
|
||||
Find Python 3 interpreter, compiler and development environment (include
|
||||
directories and libraries).
|
||||
|
||||
When a version is requested, it can be specified as a simple value or as a
|
||||
range. For a detailed description of version range usage and capabilities,
|
||||
refer to the :command:`find_package` command.
|
||||
.. versionadded:: 3.19
|
||||
When a version is requested, it can be specified as a simple value or as a
|
||||
range. For a detailed description of version range usage and capabilities,
|
||||
refer to the :command:`find_package` command.
|
||||
|
||||
The following components are supported:
|
||||
|
||||
* ``Interpreter``: search for Python 3 interpreter
|
||||
* ``Compiler``: search for Python 3 compiler. Only offered by IronPython.
|
||||
* ``Development``: search for development artifacts (include directories and
|
||||
libraries). This component includes two sub-components which can be specified
|
||||
independently:
|
||||
libraries).
|
||||
|
||||
* ``Development.Module``: search for artifacts for Python 3 module
|
||||
developments.
|
||||
* ``Development.Embed``: search for artifacts for Python 3 embedding
|
||||
developments.
|
||||
.. versionadded:: 3.18
|
||||
This component includes two sub-components which can be specified
|
||||
independently:
|
||||
|
||||
* ``Development.Module``: search for artifacts for Python 3 module
|
||||
developments.
|
||||
* ``Development.Embed``: search for artifacts for Python 3 embedding
|
||||
developments.
|
||||
|
||||
* ``NumPy``: search for NumPy include directories.
|
||||
|
||||
.. versionadded:: 3.14
|
||||
Added ``NumPy`` component.
|
||||
|
||||
If no ``COMPONENTS`` are specified, ``Interpreter`` is assumed.
|
||||
|
||||
If component ``Development`` is specified, it implies sub-components
|
||||
@@ -57,20 +64,30 @@ for you.
|
||||
Imported Targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following :ref:`Imported Targets <Imported Targets>`
|
||||
(when :prop_gbl:`CMAKE_ROLE` is ``PROJECT``):
|
||||
This module defines the following :ref:`Imported Targets <Imported Targets>`:
|
||||
|
||||
.. versionchanged:: 3.14
|
||||
:ref:`Imported Targets <Imported Targets>` are only created when
|
||||
:prop_gbl:`CMAKE_ROLE` is ``PROJECT``.
|
||||
|
||||
``Python3::Interpreter``
|
||||
Python 3 interpreter. Target defined if component ``Interpreter`` is found.
|
||||
``Python3::Compiler``
|
||||
Python 3 compiler. Target defined if component ``Compiler`` is found.
|
||||
|
||||
``Python3::Module``
|
||||
.. versionadded:: 3.15
|
||||
|
||||
Python 3 library for Python module. Target defined if component
|
||||
``Development.Module`` is found.
|
||||
|
||||
``Python3::Python``
|
||||
Python 3 library for Python embedding. Target defined if component
|
||||
``Development.Embed`` is found.
|
||||
|
||||
``Python3::NumPy``
|
||||
.. versionadded:: 3.14
|
||||
|
||||
NumPy library for Python 3. Target defined if component ``NumPy`` is found.
|
||||
|
||||
Result Variables
|
||||
@@ -117,7 +134,10 @@ This module will set the following variables in your project
|
||||
Information returned by
|
||||
``distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=False)``
|
||||
or else ``sysconfig.get_path('platlib')``.
|
||||
|
||||
``Python3_SOABI``
|
||||
.. versionadded:: 3.17
|
||||
|
||||
Extension suffix for modules.
|
||||
|
||||
Information returned by
|
||||
@@ -126,6 +146,7 @@ This module will set the following variables in your project
|
||||
``python3-config --extension-suffix``. If package ``distutils.sysconfig`` is
|
||||
not available, ``sysconfig.get_config_var('SOABI')`` or
|
||||
``sysconfig.get_config_var('EXT_SUFFIX')`` are used.
|
||||
|
||||
``Python3_Compiler_FOUND``
|
||||
System has the Python 3 compiler.
|
||||
``Python3_COMPILER``
|
||||
@@ -133,19 +154,36 @@ This module will set the following variables in your project
|
||||
``Python3_COMPILER_ID``
|
||||
A short string unique to the compiler. Possible values include:
|
||||
* IronPython
|
||||
|
||||
``Python3_DOTNET_LAUNCHER``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
|
||||
|
||||
``Python3_Development_FOUND``
|
||||
|
||||
System has the Python 3 development artifacts.
|
||||
|
||||
``Python3_Development.Module_FOUND``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
System has the Python 3 development artifacts for Python module.
|
||||
|
||||
``Python3_Development.Embed_FOUND``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
System has the Python 3 development artifacts for Python embedding.
|
||||
|
||||
``Python3_INCLUDE_DIRS``
|
||||
|
||||
The Python 3 include directories.
|
||||
|
||||
``Python3_LINK_OPTIONS``
|
||||
.. versionadded:: 3.19
|
||||
|
||||
The Python 3 link options. Some configurations require specific link options
|
||||
for a correct build and execution.
|
||||
|
||||
``Python3_LIBRARIES``
|
||||
The Python 3 libraries.
|
||||
``Python3_LIBRARY_DIRS``
|
||||
@@ -160,13 +198,25 @@ This module will set the following variables in your project
|
||||
Python 3 minor version.
|
||||
``Python3_VERSION_PATCH``
|
||||
Python 3 patch version.
|
||||
|
||||
``Python3_PyPy_VERSION``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
Python 3 PyPy version.
|
||||
|
||||
``Python3_NumPy_FOUND``
|
||||
.. versionadded:: 3.14
|
||||
|
||||
System has the NumPy.
|
||||
|
||||
``Python3_NumPy_INCLUDE_DIRS``
|
||||
.. versionadded:: 3.14
|
||||
|
||||
The NumPy include directories.
|
||||
|
||||
``Python3_NumPy_VERSION``
|
||||
.. versionadded:: 3.14
|
||||
|
||||
The NumPy version.
|
||||
|
||||
Hints
|
||||
@@ -182,6 +232,8 @@ Hints
|
||||
* If set to FALSE, search **only** for shared libraries.
|
||||
|
||||
``Python3_FIND_ABI``
|
||||
.. versionadded:: 3.16
|
||||
|
||||
This variable defines which ABIs, as defined in
|
||||
`PEP 3149 <https://www.python.org/dev/peps/pep-3149/>`_, should be searched.
|
||||
|
||||
@@ -223,6 +275,8 @@ Hints
|
||||
each flag is ``OFF`` or ``ANY``.
|
||||
|
||||
``Python3_FIND_STRATEGY``
|
||||
.. versionadded:: 3.15
|
||||
|
||||
This variable defines how lookup will be done.
|
||||
The ``Python3_FIND_STRATEGY`` variable can be set to one of the following:
|
||||
|
||||
@@ -235,6 +289,8 @@ Hints
|
||||
This is the default if policy :policy:`CMP0094` is set to ``NEW``.
|
||||
|
||||
``Python3_FIND_REGISTRY``
|
||||
.. versionadded:: 3.13
|
||||
|
||||
On Windows the ``Python3_FIND_REGISTRY`` variable determine the order
|
||||
of preference between registry and environment variables.
|
||||
The ``Python3_FIND_REGISTRY`` variable can be set to one of the following:
|
||||
@@ -245,6 +301,8 @@ Hints
|
||||
* ``NEVER``: Never try to use registry.
|
||||
|
||||
``Python3_FIND_FRAMEWORK``
|
||||
.. versionadded:: 3.15
|
||||
|
||||
On macOS the ``Python3_FIND_FRAMEWORK`` variable determine the order of
|
||||
preference between Apple-style and unix-style package components.
|
||||
This variable can take same values as :variable:`CMAKE_FIND_FRAMEWORK`
|
||||
@@ -258,6 +316,8 @@ Hints
|
||||
variable will be used, if any.
|
||||
|
||||
``Python3_FIND_VIRTUALENV``
|
||||
.. versionadded:: 3.15
|
||||
|
||||
This variable defines the handling of virtual environments managed by
|
||||
``virtualenv`` or ``conda``. It is meaningful only when a virtual environment
|
||||
is active (i.e. the ``activate`` script has been evaluated). In this case, it
|
||||
@@ -276,6 +336,9 @@ Hints
|
||||
``NEVER`` to select preferably the interpreter from the virtual
|
||||
environment.
|
||||
|
||||
.. versionadded:: 3.17
|
||||
Added support for ``conda`` environments.
|
||||
|
||||
.. note::
|
||||
|
||||
If the component ``Development`` is requested, it is **strongly**
|
||||
@@ -283,6 +346,8 @@ Hints
|
||||
result.
|
||||
|
||||
``Python3_FIND_IMPLEMENTATIONS``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
This variable defines, in an ordered list, the different implementations
|
||||
which will be searched. The ``Python3_FIND_IMPLEMENTATIONS`` variable can
|
||||
hold the following values:
|
||||
@@ -315,9 +380,26 @@ Hints
|
||||
``.Net`` interpreter (i.e. ``mono`` command) is expected to be available
|
||||
through the ``PATH`` variable.
|
||||
|
||||
``Python3_FIND_UNVERSIONED_NAMES``
|
||||
.. versionadded:: 3.20
|
||||
|
||||
This variable defines how the generic names will be searched. Currently, it
|
||||
only applies to the generic names of the interpreter, namely, ``python3`` and
|
||||
``python``.
|
||||
The ``Python3_FIND_UNVERSIONED_NAMES`` variable can be set to one of the
|
||||
following values:
|
||||
|
||||
* ``FIRST``: The generic names are searched before the more specialized ones
|
||||
(such as ``python3.5`` for example).
|
||||
* ``LAST``: The generic names are searched after the more specialized ones.
|
||||
This is the default.
|
||||
* ``NEVER``: The generic name are not searched at all.
|
||||
|
||||
Artifacts Specification
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. versionadded:: 3.16
|
||||
|
||||
To solve special cases, it is possible to specify directly the artifacts by
|
||||
setting the following variables:
|
||||
|
||||
@@ -328,6 +410,8 @@ setting the following variables:
|
||||
The path to the compiler.
|
||||
|
||||
``Python3_DOTNET_LAUNCHER``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
The ``.Net`` interpreter. Only used by ``IronPython`` implementation.
|
||||
|
||||
``Python3_LIBRARY``
|
||||
@@ -364,6 +448,8 @@ specification. So, to enable also interactive specification, module behavior
|
||||
can be controlled with the following variable:
|
||||
|
||||
``Python3_ARTIFACTS_INTERACTIVE``
|
||||
.. versionadded:: 3.18
|
||||
|
||||
Selects the behavior of the module. This is a boolean variable:
|
||||
|
||||
* If set to ``TRUE``: Create CMake cache entries for the above artifact
|
||||
@@ -386,8 +472,9 @@ of Python module naming rules::
|
||||
|
||||
If the library type is not specified, ``MODULE`` is assumed.
|
||||
|
||||
For ``MODULE`` library type, if option ``WITH_SOABI`` is specified, the
|
||||
module suffix will include the ``Python3_SOABI`` value, if any.
|
||||
.. versionadded:: 3.17
|
||||
For ``MODULE`` library type, if option ``WITH_SOABI`` is specified, the
|
||||
module suffix will include the ``Python3_SOABI`` value, if any.
|
||||
#]=======================================================================]
|
||||
|
||||
|
||||
|
||||
@@ -343,6 +343,13 @@ function(FortranCInterface_VERIFY)
|
||||
set(_desc "Verifying Fortran/${lang} Compiler Compatibility")
|
||||
message(CHECK_START "${_desc}")
|
||||
|
||||
cmake_policy(GET CMP0056 _FortranCInterface_CMP0056)
|
||||
if(_FortranCInterface_CMP0056 STREQUAL "NEW")
|
||||
set(_FortranCInterface_EXE_LINKER_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}")
|
||||
else()
|
||||
set(_FortranCInterface_EXE_LINKER_FLAGS "")
|
||||
endif()
|
||||
|
||||
# Build a sample project which reports symbols.
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION Release)
|
||||
try_compile(FortranCInterface_VERIFY_${lang}_COMPILED
|
||||
@@ -358,6 +365,7 @@ function(FortranCInterface_VERIFY)
|
||||
"-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}"
|
||||
"-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}"
|
||||
"-DCMAKE_Fortran_FLAGS_RELEASE:STRING=${CMAKE_Fortran_FLAGS_RELEASE}"
|
||||
${_FortranCInterface_EXE_LINKER_FLAGS}
|
||||
OUTPUT_VARIABLE _output)
|
||||
file(WRITE "${FortranCInterface_BINARY_DIR}/Verify${lang}/output.txt" "${_output}")
|
||||
|
||||
|
||||
@@ -26,6 +26,14 @@ unset(FortranCInterface_VERIFIED_CXX CACHE)
|
||||
|
||||
set(_result)
|
||||
|
||||
cmake_policy(GET CMP0056 _FortranCInterface_CMP0056)
|
||||
if(_FortranCInterface_CMP0056 STREQUAL "NEW")
|
||||
set(_FortranCInterface_EXE_LINKER_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}")
|
||||
else()
|
||||
set(_FortranCInterface_EXE_LINKER_FLAGS "")
|
||||
endif()
|
||||
unset(_FortranCInterface_CMP0056)
|
||||
|
||||
# Build a sample project which reports symbols.
|
||||
set(CMAKE_TRY_COMPILE_CONFIGURATION Release)
|
||||
try_compile(FortranCInterface_COMPILED
|
||||
@@ -38,9 +46,11 @@ try_compile(FortranCInterface_COMPILED
|
||||
"-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}"
|
||||
"-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}"
|
||||
"-DCMAKE_Fortran_FLAGS_RELEASE:STRING=${CMAKE_Fortran_FLAGS_RELEASE}"
|
||||
${_FortranCInterface_EXE_LINKER_FLAGS}
|
||||
OUTPUT_VARIABLE FortranCInterface_OUTPUT)
|
||||
set(FortranCInterface_COMPILED ${FortranCInterface_COMPILED})
|
||||
unset(FortranCInterface_COMPILED CACHE)
|
||||
unset(_FortranCInterface_EXE_LINKER_FLAGS)
|
||||
|
||||
# Locate the sample project executable.
|
||||
set(FortranCInterface_EXE)
|
||||
|
||||
@@ -113,7 +113,7 @@ Macros
|
||||
|
||||
::
|
||||
|
||||
GNUInstallDirs_get_absolute_install_dir(absvar var)
|
||||
GNUInstallDirs_get_absolute_install_dir(absvar var dirname)
|
||||
|
||||
Set the given variable ``absvar`` to the absolute path contained
|
||||
within the variable ``var``. This is to allow the computation of an
|
||||
@@ -121,7 +121,8 @@ Macros
|
||||
above. While this macro is used to compute the various
|
||||
``CMAKE_INSTALL_FULL_<dir>`` variables, it is exposed publicly to
|
||||
allow users who create additional path variables to also compute
|
||||
absolute paths where necessary, using the same logic.
|
||||
absolute paths where necessary, using the same logic. ``dirname`` is
|
||||
the directory name to get, e.g. ``BINDIR``.
|
||||
#]=======================================================================]
|
||||
|
||||
cmake_policy(PUSH)
|
||||
@@ -334,13 +335,25 @@ mark_as_advanced(
|
||||
)
|
||||
|
||||
macro(GNUInstallDirs_get_absolute_install_dir absvar var)
|
||||
set(GGAID_extra_args ${ARGN})
|
||||
list(LENGTH GGAID_extra_args GGAID_extra_arg_count)
|
||||
if(GGAID_extra_arg_count GREATER 0)
|
||||
list(GET GGAID_extra_args 0 GGAID_dir)
|
||||
else()
|
||||
# Historical behaviour: use ${dir} from caller's scope
|
||||
set(GGAID_dir "${dir}")
|
||||
message(AUTHOR_WARNING
|
||||
"GNUInstallDirs_get_absolute_install_dir called without third argument. "
|
||||
"Using \${dir} from the caller's scope for compatibility with CMake 3.19 and below.")
|
||||
endif()
|
||||
|
||||
if(NOT IS_ABSOLUTE "${${var}}")
|
||||
# Handle special cases:
|
||||
# - CMAKE_INSTALL_PREFIX == /
|
||||
# - CMAKE_INSTALL_PREFIX == /usr
|
||||
# - CMAKE_INSTALL_PREFIX == /opt/...
|
||||
if("${CMAKE_INSTALL_PREFIX}" STREQUAL "/")
|
||||
if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR" OR "${dir}" STREQUAL "RUNSTATEDIR")
|
||||
if("${GGAID_dir}" STREQUAL "SYSCONFDIR" OR "${GGAID_dir}" STREQUAL "LOCALSTATEDIR" OR "${GGAID_dir}" STREQUAL "RUNSTATEDIR")
|
||||
set(${absvar} "/${${var}}")
|
||||
else()
|
||||
if (NOT "${${var}}" MATCHES "^usr/")
|
||||
@@ -349,13 +362,13 @@ macro(GNUInstallDirs_get_absolute_install_dir absvar var)
|
||||
set(${absvar} "/${${var}}")
|
||||
endif()
|
||||
elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/?$")
|
||||
if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR" OR "${dir}" STREQUAL "RUNSTATEDIR")
|
||||
if("${GGAID_dir}" STREQUAL "SYSCONFDIR" OR "${GGAID_dir}" STREQUAL "LOCALSTATEDIR" OR "${GGAID_dir}" STREQUAL "RUNSTATEDIR")
|
||||
set(${absvar} "/${${var}}")
|
||||
else()
|
||||
set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
|
||||
endif()
|
||||
elseif("${CMAKE_INSTALL_PREFIX}" MATCHES "^/opt/.*")
|
||||
if("${dir}" STREQUAL "SYSCONFDIR" OR "${dir}" STREQUAL "LOCALSTATEDIR" OR "${dir}" STREQUAL "RUNSTATEDIR")
|
||||
if("${GGAID_dir}" STREQUAL "SYSCONFDIR" OR "${GGAID_dir}" STREQUAL "LOCALSTATEDIR" OR "${GGAID_dir}" STREQUAL "RUNSTATEDIR")
|
||||
set(${absvar} "/${${var}}${CMAKE_INSTALL_PREFIX}")
|
||||
else()
|
||||
set(${absvar} "${CMAKE_INSTALL_PREFIX}/${${var}}")
|
||||
@@ -366,6 +379,10 @@ macro(GNUInstallDirs_get_absolute_install_dir absvar var)
|
||||
else()
|
||||
set(${absvar} "${${var}}")
|
||||
endif()
|
||||
|
||||
unset(GGAID_dir)
|
||||
unset(GGAID_extra_arg_count)
|
||||
unset(GGAID_extra_args)
|
||||
endmacro()
|
||||
|
||||
# Result directories
|
||||
@@ -388,7 +405,7 @@ foreach(dir
|
||||
MANDIR
|
||||
DOCDIR
|
||||
)
|
||||
GNUInstallDirs_get_absolute_install_dir(CMAKE_INSTALL_FULL_${dir} CMAKE_INSTALL_${dir})
|
||||
GNUInstallDirs_get_absolute_install_dir(CMAKE_INSTALL_FULL_${dir} CMAKE_INSTALL_${dir} ${dir})
|
||||
endforeach()
|
||||
|
||||
cmake_policy(POP)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||
<metadata>
|
||||
<!-- Required elements-->
|
||||
<id>@CPACK_NUGET_PACKAGE_NAME@</id>
|
||||
@@ -12,11 +12,14 @@
|
||||
@_CPACK_NUGET_OWNERS_TAG@
|
||||
@_CPACK_NUGET_PROJECTURL_TAG@
|
||||
@_CPACK_NUGET_LICENSEURL_TAG@
|
||||
@_CPACK_NUGET_LICENSE_TAG@
|
||||
@_CPACK_NUGET_ICONURL_TAG@
|
||||
@_CPACK_NUGET_ICON_TAG@
|
||||
@_CPACK_NUGET_REQUIRELICENSEACCEPTANCE_TAG@
|
||||
@_CPACK_NUGET_SUMMARY_TAG@
|
||||
@_CPACK_NUGET_RELEASENOTES_TAG@
|
||||
@_CPACK_NUGET_COPYRIGHT_TAG@
|
||||
@_CPACK_NUGET_LANGUAGE_TAG@
|
||||
@_CPACK_NUGET_TAGS_TAG@
|
||||
@_CPACK_NUGET_DEPENDENCIES_TAG@
|
||||
</metadata>
|
||||
|
||||
@@ -768,6 +768,10 @@ function(cpack_deb_prepare_package_vars)
|
||||
set(GEN_CPACK_DBGSYM_OUTPUT_FILE_NAME "${CPACK_DBGSYM_OUTPUT_FILE_NAME}" PARENT_SCOPE)
|
||||
list(JOIN BUILD_IDS " " BUILD_IDS)
|
||||
set(GEN_BUILD_IDS "${BUILD_IDS}" PARENT_SCOPE)
|
||||
else()
|
||||
unset(GEN_DBGSYMDIR PARENT_SCOPE)
|
||||
unset(GEN_CPACK_DBGSYM_OUTPUT_FILE_NAME PARENT_SCOPE)
|
||||
unset(GEN_BUILD_IDS PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
|
||||
@@ -107,18 +107,41 @@ endfunction()
|
||||
function(_cpack_nuget_variable_fallback_and_wrap_into_element ELEMENT NUGET_VAR_NAME)
|
||||
set(_options)
|
||||
set(_one_value_args)
|
||||
set(_multi_value_args FALLBACK_VARS)
|
||||
cmake_parse_arguments(PARSE_ARGV 0 _args "${_options}" "${_one_value_args}" "${_multi_value_args}")
|
||||
set(_multi_value_args FALLBACK_VARS ATTRIBUTES)
|
||||
cmake_parse_arguments(PARSE_ARGV 2 _args "${_options}" "${_one_value_args}" "${_multi_value_args}")
|
||||
|
||||
if(_args_ATTRIBUTES)
|
||||
list(JOIN _args_ATTRIBUTES " " _attributes)
|
||||
string(PREPEND _attributes " ")
|
||||
endif()
|
||||
|
||||
_cpack_nuget_variable_fallback(_value ${NUGET_VAR_NAME} ${ARGN} USE_CDATA)
|
||||
|
||||
string(TOUPPER "${ELEMENT}" _ELEMENT_UP)
|
||||
if(_value)
|
||||
string(TOUPPER "${ELEMENT}" _ELEMENT_UP)
|
||||
set(
|
||||
_CPACK_NUGET_${_ELEMENT_UP}_TAG
|
||||
"<${ELEMENT}>${_value}</${ELEMENT}>"
|
||||
"<${ELEMENT}${_attributes}>${_value}</${ELEMENT}>"
|
||||
PARENT_SCOPE
|
||||
)
|
||||
elseif(_attributes)
|
||||
set(
|
||||
_CPACK_NUGET_${_ELEMENT_UP}_TAG
|
||||
"<${ELEMENT}${_attributes} />"
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Warn of obsolete nuspec fields, referencing CMake variables and suggested
|
||||
# replacement, if any
|
||||
function(_cpack_nuget_deprecation_warning NUGET_ELEMENT VARNAME REPLACEMENT)
|
||||
if(${VARNAME})
|
||||
if(REPLACEMENT)
|
||||
message(DEPRECATION "nuspec element `${NUGET_ELEMENT}` is deprecated in NuGet; consider replacing `${VARNAME}` with `${REPLACEMENT}`")
|
||||
else()
|
||||
message(DEPRECATION "nuspec element `${NUGET_ELEMENT}` is deprecated in NuGet; consider removing `${VARNAME}`")
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
@@ -168,6 +191,21 @@ function(_cpack_nuget_render_spec)
|
||||
set(CPACK_NUGET_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
|
||||
endif()
|
||||
|
||||
# Warn about deprecated nuspec elements; warnings only display if
|
||||
# variable is set
|
||||
# Note that while nuspec's "summary" element is deprecated, there
|
||||
# is no suggested replacement so (for now) no deprecation warning
|
||||
# is shown for `CPACK_NUGET_*_DESCRIPTION_SUMMARY`
|
||||
_cpack_nuget_deprecation_warning("licenseUrl" CPACK_NUGET_PACKAGE_LICENSEURL
|
||||
"CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME or CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION")
|
||||
_cpack_nuget_deprecation_warning("licenseUrl" CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_LICENSEURL
|
||||
"CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_LICENSE_FILE_NAME or CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_LICENSE_EXPRESSION")
|
||||
_cpack_nuget_deprecation_warning("iconUrl" CPACK_NUGET_PACKAGE_ICONURL
|
||||
"CPACK_NUGET_PACKAGE_ICON")
|
||||
_cpack_nuget_deprecation_warning("iconUrl" CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_ICONURL
|
||||
"CPACK_NUGET_${CPACK_NUGET_PACKAGE_COMPONENT}_ICON")
|
||||
|
||||
# Set nuspec fields
|
||||
_cpack_nuget_variable_fallback(
|
||||
CPACK_NUGET_PACKAGE_VERSION VERSION
|
||||
FALLBACK_VARS
|
||||
@@ -207,8 +245,35 @@ function(_cpack_nuget_render_spec)
|
||||
FALLBACK_VARS
|
||||
CPACK_PACKAGE_HOMEPAGE_URL
|
||||
)
|
||||
|
||||
# "licenseUrl" is deprecated in favor of "license"
|
||||
_cpack_nuget_variable_fallback_and_wrap_into_element(licenseUrl LICENSEURL)
|
||||
|
||||
# "iconUrl" is deprecated in favor of "icon"
|
||||
_cpack_nuget_variable_fallback_and_wrap_into_element(iconUrl ICONURL)
|
||||
|
||||
# "license" takes a "type" attribute of either "file" or "expression"
|
||||
# "file" refers to a file path of a .txt or .md file relative to the installation root
|
||||
# "expression" refers to simple or compound expression of license identifiers
|
||||
# listed at https://spdx.org/licenses/
|
||||
# Note that only one of CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME and
|
||||
# CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION may be specified. If both are specified,
|
||||
# CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME takes precedence and CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION is ignored.
|
||||
if(CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME)
|
||||
_cpack_nuget_variable_fallback_and_wrap_into_element(
|
||||
license LICENSE_FILE_NAME
|
||||
ATTRIBUTES [[type="file"]]
|
||||
)
|
||||
elseif(CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION)
|
||||
_cpack_nuget_variable_fallback_and_wrap_into_element(
|
||||
license LICENSE_EXPRESSION
|
||||
ATTRIBUTES [[type="expression"]]
|
||||
)
|
||||
endif()
|
||||
|
||||
# "icon" refers to a file path relative to the installation root
|
||||
_cpack_nuget_variable_fallback_and_wrap_into_element(icon ICON)
|
||||
# "summary" is deprecated in favor of "description"
|
||||
_cpack_nuget_variable_fallback_and_wrap_into_element(
|
||||
summary DESCRIPTION_SUMMARY
|
||||
FALLBACK_VARS
|
||||
@@ -222,7 +287,12 @@ function(_cpack_nuget_render_spec)
|
||||
endif()
|
||||
_cpack_nuget_variable_fallback_and_wrap_into_element(releaseNotes RELEASE_NOTES)
|
||||
_cpack_nuget_variable_fallback_and_wrap_into_element(copyright COPYRIGHT)
|
||||
# "language" is a locale identifier such as "en_CA"
|
||||
_cpack_nuget_variable_fallback_and_wrap_into_element(language LANGUAGE)
|
||||
_cpack_nuget_variable_fallback_and_wrap_into_element(tags TAGS LIST_GLUE " ")
|
||||
# "repository" holds repository metadata consisting of four optional
|
||||
# attributes: "type", "url", "branch", and "commit". While all fields are
|
||||
# considered optional, they are not independent. Currently unsupported.
|
||||
|
||||
# Handle dependencies
|
||||
_cpack_nuget_variable_fallback(_deps DEPENDENCIES)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
; CPack install script designed for a nmake build
|
||||
; CPack install script designed for a nmake build
|
||||
|
||||
;--------------------------------
|
||||
; You must define these values
|
||||
|
||||
@@ -7,6 +7,23 @@ if(__ANDROID_COMPILER_CLANG)
|
||||
endif()
|
||||
set(__ANDROID_COMPILER_CLANG 1)
|
||||
|
||||
# Include the NDK hook.
|
||||
# It can be used by NDK to inject necessary fixes for an earlier cmake.
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Android-Clang.cmake OPTIONAL)
|
||||
endif()
|
||||
|
||||
# Load flags from NDK. This file may provides the following variables:
|
||||
# _ANDROID_NDK_INIT_CFLAGS
|
||||
# _ANDROID_NDK_INIT_CFLAGS_DEBUG
|
||||
# _ANDROID_NDK_INIT_CFLAGS_RELEASE
|
||||
# _ANDROID_NDK_INIT_LDFLAGS
|
||||
# _ANDROID_NDK_INIT_LDFLAGS_EXE
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
include(${CMAKE_ANDROID_NDK}/build/cmake/flags.cmake OPTIONAL
|
||||
RESULT_VARIABLE _INCLUDED_FLAGS)
|
||||
endif()
|
||||
|
||||
# Support for NVIDIA Nsight Tegra Visual Studio Edition was previously
|
||||
# implemented in the CMake VS IDE generators. Avoid interfering with
|
||||
# that functionality for now. Later we may try to integrate this.
|
||||
@@ -34,20 +51,29 @@ endif()
|
||||
|
||||
include(Platform/Android-Common)
|
||||
|
||||
# The NDK toolchain configuration files at:
|
||||
#
|
||||
# <ndk>/[build/core/]toolchains/*-clang*/setup.mk
|
||||
#
|
||||
# contain logic to set LLVM_TRIPLE for Clang-based toolchains for each target.
|
||||
# We need to produce the same target here to produce compatible binaries.
|
||||
include(Platform/Android/abi-${CMAKE_ANDROID_ARCH_ABI}-Clang)
|
||||
if(_INCLUDED_FLAGS)
|
||||
# NDK provides the flags.
|
||||
set(_ANDROID_ABI_INIT_CFLAGS "${_ANDROID_NDK_INIT_CFLAGS}")
|
||||
set(_ANDROID_ABI_INIT_CFLAGS_DEBUG "${_ANDROID_NDK_INIT_CFLAGS_DEBUG}")
|
||||
set(_ANDROID_ABI_INIT_CFLAGS_RELEASE "${_ANDROID_NDK_INIT_CFLAGS_RELEASE}")
|
||||
set(_ANDROID_ABI_INIT_LDFLAGS "${_ANDROID_NDK_INIT_LDFLAGS}")
|
||||
set(_ANDROID_ABI_INIT_EXE_LDFLAGS "${_ANDROID_NDK_INIT_LDFLAGS_EXE}")
|
||||
else()
|
||||
# The NDK toolchain configuration files at:
|
||||
#
|
||||
# <ndk>/[build/core/]toolchains/*-clang*/setup.mk
|
||||
#
|
||||
# contain logic to set LLVM_TRIPLE for Clang-based toolchains for each target.
|
||||
# We need to produce the same target here to produce compatible binaries.
|
||||
include(Platform/Android/abi-${CMAKE_ANDROID_ARCH_ABI}-Clang)
|
||||
endif()
|
||||
|
||||
macro(__android_compiler_clang lang)
|
||||
if(NOT "x${lang}" STREQUAL "xASM")
|
||||
__android_compiler_common(${lang})
|
||||
endif()
|
||||
if(NOT CMAKE_${lang}_COMPILER_TARGET)
|
||||
set(CMAKE_${lang}_COMPILER_TARGET "${_ANDROID_ABI_CLANG_TARGET}")
|
||||
set(CMAKE_${lang}_COMPILER_TARGET "${CMAKE_ANDROID_ARCH_LLVM_TRIPLE}")
|
||||
if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
|
||||
string(APPEND CMAKE_${lang}_COMPILER_TARGET "${CMAKE_SYSTEM_VERSION}")
|
||||
endif()
|
||||
@@ -57,3 +83,9 @@ macro(__android_compiler_clang lang)
|
||||
set(_ANDROID_STL_NOSTDLIBXX 1)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Include the NDK hook.
|
||||
# It can be used by NDK to inject necessary fixes for an earlier cmake.
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Android-Clang.cmake OPTIONAL)
|
||||
endif()
|
||||
|
||||
@@ -53,6 +53,12 @@ if(CMAKE_ANDROID_STL_TYPE)
|
||||
set(_ANDROID_STL_RTTI 0)
|
||||
macro(__android_stl lang)
|
||||
string(APPEND CMAKE_${lang}_FLAGS_INIT " -stdlib=libstdc++")
|
||||
if(_ANDROID_STL_EXCEPTIONS OR _ANDROID_STL_RTTI)
|
||||
string(APPEND CMAKE_${lang}_STANDARD_LIBRARIES " -lc++abi")
|
||||
if(CMAKE_SYSTEM_VERSION LESS 21)
|
||||
list(APPEND CMAKE_${lang}_STANDARD_LIBRARIES "-landroid_support")
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "c++_static")
|
||||
set(_ANDROID_STL_EXCEPTIONS 1)
|
||||
@@ -81,6 +87,12 @@ if(CMAKE_ANDROID_STL_TYPE)
|
||||
"Android: STL '${CMAKE_ANDROID_STL_TYPE}' not supported by this NDK."
|
||||
)
|
||||
endif()
|
||||
if(DEFINED CMAKE_ANDROID_RTTI)
|
||||
set(_ANDROID_STL_RTTI ${CMAKE_ANDROID_RTTI})
|
||||
endif()
|
||||
if(DEFINED CMAKE_ANDROID_EXCEPTIONS)
|
||||
set(_ANDROID_STL_EXCEPTIONS ${CMAKE_ANDROID_EXCEPTIONS})
|
||||
endif()
|
||||
elseif(CMAKE_ANDROID_NDK)
|
||||
|
||||
macro(__android_stl_inc lang dir req)
|
||||
|
||||
@@ -5,6 +5,12 @@
|
||||
# This module detects platform-wide information about the Android target
|
||||
# in order to store it in "CMakeSystem.cmake".
|
||||
|
||||
# Include the NDK hook.
|
||||
# It can be used by NDK to inject necessary fixes for an earlier cmake.
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Android-Determine.cmake OPTIONAL)
|
||||
endif()
|
||||
|
||||
# Support for NVIDIA Nsight Tegra Visual Studio Edition was previously
|
||||
# implemented in the CMake VS IDE generators. Avoid interfering with
|
||||
# that functionality for now.
|
||||
@@ -209,6 +215,14 @@ if(CMAKE_ANDROID_NDK)
|
||||
# NDK >= 18 has abis.cmake. It provides:
|
||||
# NDK_KNOWN_DEVICE_ABI32S
|
||||
# NDK_KNOWN_DEVICE_ABI64S
|
||||
# NDK >= 23 also provides:
|
||||
# NDK_KNOWN_DEVICE_ABIS
|
||||
# NDK_ABI_<abi>_PROC
|
||||
# NDK_ABI_<abi>_ARCH
|
||||
# NDK_ABI_<abi>_TRIPLE
|
||||
# NDK_ABI_<abi>_LLVM_TRIPLE
|
||||
# NDK_PROC_<processor>_ABI
|
||||
# NDK_ARCH_<arch>_ABI
|
||||
include("${CMAKE_ANDROID_NDK}/build/cmake/abis.cmake" OPTIONAL RESULT_VARIABLE _INCLUDED_ABIS)
|
||||
endif()
|
||||
|
||||
@@ -247,60 +261,75 @@ else()
|
||||
endif()
|
||||
|
||||
if(_INCLUDED_ABIS)
|
||||
set(_ANDROID_KNOWN_ABIS ${NDK_KNOWN_DEVICE_ABI32S} ${NDK_KNOWN_DEVICE_ABI64S})
|
||||
if(NDK_KNOWN_DEVICE_ABIS)
|
||||
set(_ANDROID_KNOWN_ABIS ${NDK_KNOWN_DEVICE_ABIS})
|
||||
else()
|
||||
set(_ANDROID_KNOWN_ABIS ${NDK_KNOWN_DEVICE_ABI32S} ${NDK_KNOWN_DEVICE_ABI64S})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# https://developer.android.com/ndk/guides/abis.html
|
||||
if(NOT DEFINED NDK_KNOWN_DEVICE_ABIS)
|
||||
# The NDK is not new enough to provide ABI information.
|
||||
# https://developer.android.com/ndk/guides/abis.html
|
||||
|
||||
set(_ANDROID_ABI_arm64-v8a_PROC "aarch64")
|
||||
set(_ANDROID_ABI_arm64-v8a_ARCH "arm64")
|
||||
set(_ANDROID_ABI_arm64-v8a_TRIPLE "aarch64-linux-android")
|
||||
set(_ANDROID_ABI_armeabi-v7a_PROC "armv7-a")
|
||||
set(_ANDROID_ABI_armeabi-v7a_ARCH "arm")
|
||||
set(_ANDROID_ABI_armeabi-v7a_TRIPLE "arm-linux-androideabi")
|
||||
set(_ANDROID_ABI_armeabi-v6_PROC "armv6")
|
||||
set(_ANDROID_ABI_armeabi-v6_ARCH "arm")
|
||||
set(_ANDROID_ABI_armeabi-v6_TRIPLE "arm-linux-androideabi")
|
||||
set(_ANDROID_ABI_armeabi_PROC "armv5te")
|
||||
set(_ANDROID_ABI_armeabi_ARCH "arm")
|
||||
set(_ANDROID_ABI_armeabi_TRIPLE "arm-linux-androideabi")
|
||||
set(_ANDROID_ABI_mips_PROC "mips")
|
||||
set(_ANDROID_ABI_mips_ARCH "mips")
|
||||
set(_ANDROID_ABI_mips_TRIPLE "mipsel-linux-android")
|
||||
set(_ANDROID_ABI_mips64_PROC "mips64")
|
||||
set(_ANDROID_ABI_mips64_ARCH "mips64")
|
||||
set(_ANDROID_ABI_mips64_TRIPLE "mips64el-linux-android")
|
||||
set(_ANDROID_ABI_x86_PROC "i686")
|
||||
set(_ANDROID_ABI_x86_ARCH "x86")
|
||||
set(_ANDROID_ABI_x86_TRIPLE "i686-linux-android")
|
||||
set(_ANDROID_ABI_x86_64_PROC "x86_64")
|
||||
set(_ANDROID_ABI_x86_64_ARCH "x86_64")
|
||||
set(_ANDROID_ABI_x86_64_TRIPLE "x86_64-linux-android")
|
||||
set(NDK_ABI_arm64-v8a_PROC "aarch64")
|
||||
set(NDK_ABI_arm64-v8a_ARCH "arm64")
|
||||
set(NDK_ABI_arm64-v8a_TRIPLE "aarch64-linux-android")
|
||||
set(NDK_ABI_arm64-v8a_LLVM_TRIPLE "aarch64-none-linux-android")
|
||||
set(NDK_ABI_armeabi-v7a_PROC "armv7-a")
|
||||
set(NDK_ABI_armeabi-v7a_ARCH "arm")
|
||||
set(NDK_ABI_armeabi-v7a_TRIPLE "arm-linux-androideabi")
|
||||
set(NDK_ABI_armeabi-v7a_LLVM_TRIPLE "armv7-none-linux-androideabi")
|
||||
set(NDK_ABI_armeabi-v6_PROC "armv6")
|
||||
set(NDK_ABI_armeabi-v6_ARCH "arm")
|
||||
set(NDK_ABI_armeabi-v6_TRIPLE "arm-linux-androideabi")
|
||||
set(NDK_ABI_armeabi-v6_LLVM_TRIPLE "armv6-none-linux-androideabi")
|
||||
set(NDK_ABI_armeabi_PROC "armv5te")
|
||||
set(NDK_ABI_armeabi_ARCH "arm")
|
||||
set(NDK_ABI_armeabi_TRIPLE "arm-linux-androideabi")
|
||||
set(NDK_ABI_armeabi_LLVM_TRIPLE "armv5te-none-linux-androideabi")
|
||||
set(NDK_ABI_mips_PROC "mips")
|
||||
set(NDK_ABI_mips_ARCH "mips")
|
||||
set(NDK_ABI_mips_TRIPLE "mipsel-linux-android")
|
||||
set(NDK_ABI_mips_LLVM_TRIPLE "mipsel-none-linux-android")
|
||||
set(NDK_ABI_mips64_PROC "mips64")
|
||||
set(NDK_ABI_mips64_ARCH "mips64")
|
||||
set(NDK_ABI_mips64_TRIPLE "mips64el-linux-android")
|
||||
set(NDK_ABI_mips64_LLVM_TRIPLE "mips64el-none-linux-android")
|
||||
set(NDK_ABI_x86_PROC "i686")
|
||||
set(NDK_ABI_x86_ARCH "x86")
|
||||
set(NDK_ABI_x86_TRIPLE "i686-linux-android")
|
||||
set(NDK_ABI_x86_LLVM_TRIPLE "i686-none-linux-android")
|
||||
set(NDK_ABI_x86_64_PROC "x86_64")
|
||||
set(NDK_ABI_x86_64_ARCH "x86_64")
|
||||
set(NDK_ABI_x86_64_TRIPLE "x86_64-linux-android")
|
||||
set(NDK_ABI_x86_64_LLVM_TRIPLE "x86_64-none-linux-android")
|
||||
|
||||
set(_ANDROID_PROC_aarch64_ARCH_ABI "arm64-v8a")
|
||||
set(_ANDROID_PROC_armv7-a_ARCH_ABI "armeabi-v7a")
|
||||
set(_ANDROID_PROC_armv6_ARCH_ABI "armeabi-v6")
|
||||
set(_ANDROID_PROC_armv5te_ARCH_ABI "armeabi")
|
||||
set(_ANDROID_PROC_i686_ARCH_ABI "x86")
|
||||
set(_ANDROID_PROC_mips_ARCH_ABI "mips")
|
||||
set(_ANDROID_PROC_mips64_ARCH_ABI "mips64")
|
||||
set(_ANDROID_PROC_x86_64_ARCH_ABI "x86_64")
|
||||
set(NDK_PROC_aarch64_ABI "arm64-v8a")
|
||||
set(NDK_PROC_armv7-a_ABI "armeabi-v7a")
|
||||
set(NDK_PROC_armv6_ABI "armeabi-v6")
|
||||
set(NDK_PROC_armv5te_ABI "armeabi")
|
||||
set(NDK_PROC_i686_ABI "x86")
|
||||
set(NDK_PROC_mips_ABI "mips")
|
||||
set(NDK_PROC_mips64_ABI "mips64")
|
||||
set(NDK_PROC_x86_64_ABI "x86_64")
|
||||
|
||||
set(_ANDROID_ARCH_arm64_ABI "arm64-v8a")
|
||||
set(_ANDROID_ARCH_arm_ABI "armeabi")
|
||||
set(_ANDROID_ARCH_mips_ABI "mips")
|
||||
set(_ANDROID_ARCH_mips64_ABI "mips64")
|
||||
set(_ANDROID_ARCH_x86_ABI "x86")
|
||||
set(_ANDROID_ARCH_x86_64_ABI "x86_64")
|
||||
set(NDK_ARCH_arm64_ABI "arm64-v8a")
|
||||
set(NDK_ARCH_arm_ABI "armeabi")
|
||||
set(NDK_ARCH_mips_ABI "mips")
|
||||
set(NDK_ARCH_mips64_ABI "mips64")
|
||||
set(NDK_ARCH_x86_ABI "x86")
|
||||
set(NDK_ARCH_x86_64_ABI "x86_64")
|
||||
endif()
|
||||
|
||||
# Validate inputs.
|
||||
if(CMAKE_ANDROID_ARCH_ABI AND NOT DEFINED "_ANDROID_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC")
|
||||
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 "_ANDROID_PROC_${CMAKE_SYSTEM_PROCESSOR}_ARCH_ABI")
|
||||
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 "_ANDROID_ARCH_${_ANDROID_SYSROOT_ARCH}_ABI")
|
||||
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}"
|
||||
@@ -310,9 +339,9 @@ endif()
|
||||
# Select an ABI.
|
||||
if(NOT CMAKE_ANDROID_ARCH_ABI)
|
||||
if(CMAKE_SYSTEM_PROCESSOR)
|
||||
set(CMAKE_ANDROID_ARCH_ABI "${_ANDROID_PROC_${CMAKE_SYSTEM_PROCESSOR}_ARCH_ABI}")
|
||||
set(CMAKE_ANDROID_ARCH_ABI "${NDK_PROC_${CMAKE_SYSTEM_PROCESSOR}_ABI}")
|
||||
elseif(_ANDROID_SYSROOT_ARCH)
|
||||
set(CMAKE_ANDROID_ARCH_ABI "${_ANDROID_ARCH_${_ANDROID_SYSROOT_ARCH}_ABI}")
|
||||
set(CMAKE_ANDROID_ARCH_ABI "${NDK_ARCH_${_ANDROID_SYSROOT_ARCH}_ABI}")
|
||||
elseif(_INCLUDED_ABIS)
|
||||
# Default to the oldest ARM ABI.
|
||||
foreach(abi armeabi armeabi-v7a arm64-v8a)
|
||||
@@ -368,7 +397,7 @@ if(_INCLUDED_ABIS AND NOT CMAKE_ANDROID_ARCH_ABI IN_LIST _ANDROID_KNOWN_ABIS)
|
||||
"Supported ABIS: ${_ANDROID_KNOWN_ABIS}."
|
||||
)
|
||||
endif()
|
||||
set(CMAKE_ANDROID_ARCH "${_ANDROID_ABI_${CMAKE_ANDROID_ARCH_ABI}_ARCH}")
|
||||
set(CMAKE_ANDROID_ARCH "${NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_ARCH}")
|
||||
if(_ANDROID_SYSROOT_ARCH AND NOT "x${_ANDROID_SYSROOT_ARCH}" STREQUAL "x${CMAKE_ANDROID_ARCH}")
|
||||
message(FATAL_ERROR
|
||||
"Android: Architecture '${_ANDROID_SYSROOT_ARCH}' specified in CMAKE_SYSROOT:\n"
|
||||
@@ -376,15 +405,17 @@ if(_ANDROID_SYSROOT_ARCH AND NOT "x${_ANDROID_SYSROOT_ARCH}" STREQUAL "x${CMAKE_
|
||||
"does not match architecture '${CMAKE_ANDROID_ARCH}' for the ABI '${CMAKE_ANDROID_ARCH_ABI}'."
|
||||
)
|
||||
endif()
|
||||
set(CMAKE_ANDROID_ARCH_TRIPLE "${_ANDROID_ABI_${CMAKE_ANDROID_ARCH_ABI}_TRIPLE}")
|
||||
set(CMAKE_ANDROID_ARCH_TRIPLE "${NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_TRIPLE}")
|
||||
set(CMAKE_ANDROID_ARCH_LLVM_TRIPLE
|
||||
"${NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_LLVM_TRIPLE}")
|
||||
|
||||
# Select a processor.
|
||||
if(NOT CMAKE_SYSTEM_PROCESSOR)
|
||||
set(CMAKE_SYSTEM_PROCESSOR "${_ANDROID_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC}")
|
||||
set(CMAKE_SYSTEM_PROCESSOR "${NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC}")
|
||||
endif()
|
||||
|
||||
# If the user specified both an ABI and a processor then they might not match.
|
||||
if(NOT _ANDROID_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC STREQUAL CMAKE_SYSTEM_PROCESSOR)
|
||||
if(NOT NDK_ABI_${CMAKE_ANDROID_ARCH_ABI}_PROC STREQUAL CMAKE_SYSTEM_PROCESSOR)
|
||||
message(FATAL_ERROR "Android: The specified CMAKE_ANDROID_ARCH_ABI='${CMAKE_ANDROID_ARCH_ABI}' and CMAKE_SYSTEM_PROCESSOR='${CMAKE_SYSTEM_PROCESSOR}' is not a valid combination.")
|
||||
endif()
|
||||
|
||||
@@ -491,6 +522,7 @@ set(CMAKE_ANDROID_ARCH_ABI \"${CMAKE_ANDROID_ARCH_ABI}\")
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
string(APPEND CMAKE_SYSTEM_CUSTOM_CODE
|
||||
"set(CMAKE_ANDROID_ARCH_TRIPLE \"${CMAKE_ANDROID_ARCH_TRIPLE}\")\n"
|
||||
"set(CMAKE_ANDROID_ARCH_LLVM_TRIPLE \"${CMAKE_ANDROID_ARCH_LLVM_TRIPLE}\")\n"
|
||||
"set(CMAKE_ANDROID_NDK_DEPRECATED_HEADERS \"${CMAKE_ANDROID_NDK_DEPRECATED_HEADERS}\")\n"
|
||||
"set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG \"${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}\")\n"
|
||||
"set(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED \"${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}\")\n"
|
||||
@@ -528,3 +560,9 @@ endif()
|
||||
message(STATUS "Android: Targeting API '${CMAKE_SYSTEM_VERSION}' with architecture '${CMAKE_ANDROID_ARCH}', ABI '${CMAKE_ANDROID_ARCH_ABI}', and processor '${CMAKE_SYSTEM_PROCESSOR}'")
|
||||
|
||||
cmake_policy(POP)
|
||||
|
||||
# Include the NDK hook.
|
||||
# It can be used by NDK to inject necessary fixes for an earlier cmake.
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Android-Determine.cmake OPTIONAL)
|
||||
endif()
|
||||
|
||||
@@ -4,6 +4,12 @@
|
||||
# When CMAKE_SYSTEM_NAME is "Android", CMakeSystemSpecificInitialize loads this
|
||||
# module.
|
||||
|
||||
# Include the NDK hook.
|
||||
# It can be used by NDK to inject necessary fixes for an earlier cmake.
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Android-Initialize.cmake OPTIONAL)
|
||||
endif()
|
||||
|
||||
# Support for NVIDIA Nsight Tegra Visual Studio Edition was previously
|
||||
# implemented in the CMake VS IDE generators. Avoid interfering with
|
||||
# that functionality for now.
|
||||
@@ -17,7 +23,7 @@ if(CMAKE_SYSTEM_VERSION EQUAL 1)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(CMAKE_BUILD_TYPE_INIT Debug)
|
||||
set(CMAKE_BUILD_TYPE_INIT "RelWithDebInfo")
|
||||
|
||||
# Skip sysroot selection if the NDK has a unified toolchain.
|
||||
if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
|
||||
@@ -53,3 +59,9 @@ else()
|
||||
"Android: No CMAKE_SYSROOT was selected."
|
||||
)
|
||||
endif()
|
||||
|
||||
# Include the NDK hook.
|
||||
# It can be used by NDK to inject necessary fixes for an earlier cmake.
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Android-Initialize.cmake OPTIONAL)
|
||||
endif()
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
# Include the NDK hook.
|
||||
# It can be used by NDK to inject necessary fixes for an earlier cmake.
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Android.cmake OPTIONAL)
|
||||
endif()
|
||||
|
||||
include(Platform/Linux)
|
||||
|
||||
set(ANDROID 1)
|
||||
@@ -22,3 +28,65 @@ set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "")
|
||||
if(CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android")
|
||||
set(CMAKE_LINK_LIBRARY_FLAG "")
|
||||
endif()
|
||||
|
||||
# Commonly used Android toolchain files that pre-date CMake upstream support
|
||||
# set CMAKE_SYSTEM_VERSION to 1. Avoid interfering with them.
|
||||
if(CMAKE_SYSTEM_VERSION EQUAL 1)
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED)
|
||||
# Tell CMake not to search host sysroots for headers/libraries.
|
||||
|
||||
# All paths added to CMAKE_SYSTEM_*_PATH below will be rerooted under
|
||||
# CMAKE_FIND_ROOT_PATH. This is set because:
|
||||
# 1. Users may structure their libraries in a way similar to NDK. When they do that,
|
||||
# they can simply append another path to CMAKE_FIND_ROOT_PATH.
|
||||
# 2. CMAKE_FIND_ROOT_PATH must be non-empty for CMAKE_FIND_ROOT_PATH_MODE_* == ONLY
|
||||
# to be meaningful. https://github.com/android-ndk/ndk/issues/890
|
||||
list(APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/sysroot")
|
||||
|
||||
# Allow users to override these values in case they want more strict behaviors.
|
||||
# For example, they may want to prevent the NDK's libz from being picked up so
|
||||
# they can use their own.
|
||||
# https://github.com/android-ndk/ndk/issues/517
|
||||
if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
endif()
|
||||
|
||||
# Don't search paths in PATH environment variable.
|
||||
if(NOT DEFINED CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH)
|
||||
set(CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH OFF)
|
||||
endif()
|
||||
|
||||
# Allows CMake to find headers in the architecture-specific include directories.
|
||||
set(CMAKE_LIBRARY_ARCHITECTURE "${CMAKE_ANDROID_ARCH_TRIPLE}")
|
||||
|
||||
# Instructs CMake to search the correct API level for libraries.
|
||||
# Besides the paths like <root>/<prefix>/lib/<arch>, cmake also searches <root>/<prefix>.
|
||||
# So we can add the API level specific directory directly.
|
||||
# https://github.com/android/ndk/issues/929
|
||||
list(PREPEND CMAKE_SYSTEM_PREFIX_PATH
|
||||
"/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/${CMAKE_SYSTEM_VERSION}"
|
||||
)
|
||||
|
||||
list(APPEND CMAKE_SYSTEM_PROGRAM_PATH "${CMAKE_ANDROID_NDK_TOOLCHAIN_UNIFIED}/bin")
|
||||
endif()
|
||||
|
||||
# Include the NDK hook.
|
||||
# It can be used by NDK to inject necessary fixes for an earlier cmake.
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Android.cmake OPTIONAL)
|
||||
endif()
|
||||
|
||||
@@ -7,6 +7,12 @@ if(__ANDROID_DETERMINE_COMPILER)
|
||||
endif()
|
||||
set(__ANDROID_DETERMINE_COMPILER 1)
|
||||
|
||||
# Include the NDK hook.
|
||||
# It can be used by NDK to inject necessary fixes for an earlier cmake.
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/pre/Determine-Compiler.cmake OPTIONAL)
|
||||
endif()
|
||||
|
||||
# Support for NVIDIA Nsight Tegra Visual Studio Edition was previously
|
||||
# implemented in the CMake VS IDE generators. Avoid interfering with
|
||||
# that functionality for now. Later we may try to integrate this.
|
||||
@@ -83,3 +89,9 @@ set(CMAKE_${lang}_ANDROID_TOOLCHAIN_SUFFIX \"${_ANDROID_TOOL_${lang}_TOOLCHAIN_S
|
||||
")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Include the NDK hook.
|
||||
# It can be used by NDK to inject necessary fixes for an earlier cmake.
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
include(${CMAKE_ANDROID_NDK}/build/cmake/hooks/post/Determine-Compiler.cmake OPTIONAL)
|
||||
endif()
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
# <ndk>/build/core/toolchains/aarch64-linux-android-clang/setup.mk
|
||||
set(_ANDROID_ABI_CLANG_TARGET "aarch64-none-linux-android")
|
||||
|
||||
# Suppress -Wl,-z,nocopyreloc flag on arm64-v8a
|
||||
set(_ANDROID_ABI_INIT_EXE_LDFLAGS_NO_nocopyreloc 1)
|
||||
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
# <ndk>/build/core/toolchains/arm-linux-androideabi-clang/setup.mk
|
||||
set(_ANDROID_ABI_CLANG_TARGET "armv5te-none-linux-androideabi")
|
||||
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -march=armv5te"
|
||||
)
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
# <ndk>/build/core/toolchains/arm-linux-androideabi-clang/setup.mk
|
||||
set(_ANDROID_ABI_CLANG_TARGET "armv6-none-linux-androideabi")
|
||||
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -march=armv6"
|
||||
)
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
# <ndk>/build/core/toolchains/arm-linux-androideabi-clang/setup.mk
|
||||
set(_ANDROID_ABI_CLANG_TARGET "armv7-none-linux-androideabi")
|
||||
|
||||
string(APPEND _ANDROID_ABI_INIT_CFLAGS
|
||||
" -march=armv7-a"
|
||||
)
|
||||
|
||||
@@ -1,4 +1 @@
|
||||
# <ndk>/build/core/toolchains/mipsel-linux-android-clang/setup.mk
|
||||
set(_ANDROID_ABI_CLANG_TARGET "mipsel-none-linux-android")
|
||||
|
||||
include(Platform/Android/abi-common-Clang)
|
||||
|
||||
@@ -1,4 +1 @@
|
||||
# <ndk>/build/core/toolchains/mips64el-linux-android-clang/setup.mk
|
||||
set(_ANDROID_ABI_CLANG_TARGET "mips64el-none-linux-android")
|
||||
|
||||
include(Platform/Android/abi-common-Clang)
|
||||
|
||||
@@ -1,4 +1 @@
|
||||
# <ndk>/build/core/toolchains/x86-clang/setup.mk
|
||||
set(_ANDROID_ABI_CLANG_TARGET "i686-none-linux-android")
|
||||
|
||||
include(Platform/Android/abi-common-Clang)
|
||||
|
||||
@@ -1,4 +1 @@
|
||||
# <ndk>/build/core/toolchains/x86_64-clang/setup.mk
|
||||
set(_ANDROID_ABI_CLANG_TARGET "x86_64-none-linux-android")
|
||||
|
||||
include(Platform/Android/abi-common-Clang)
|
||||
|
||||
@@ -1,2 +1,18 @@
|
||||
include(Platform/Windows-Clang)
|
||||
__windows_compiler_clang(C)
|
||||
|
||||
if("x${MAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_C)
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
elseif("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_C)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_C_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
include(Platform/Windows-Clang)
|
||||
set(_COMPILE_CXX_MSVC " -TP")
|
||||
__windows_compiler_clang(CXX)
|
||||
|
||||
if("x${MAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_CXX)
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
elseif("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_CXX)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_CXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -27,7 +27,7 @@ macro(__windows_compiler_clang_gnu lang)
|
||||
set(CMAKE_SHARED_MODULE_SUFFIX ".dll")
|
||||
set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
|
||||
if(NOT "${lang}" STREQUAL "ASM")
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "-MD -MT <OBJECT> -MF <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "-MD -MT <DEP_TARGET> -MF <DEP_FILE>")
|
||||
endif()
|
||||
|
||||
set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
|
||||
@@ -114,8 +114,10 @@ macro(__enable_llvm_rc_preprocessing clang_option_prefix extra_pp_flags)
|
||||
set(CMAKE_RC_PREPROCESSOR CMAKE_CXX_COMPILER)
|
||||
endif()
|
||||
if(DEFINED CMAKE_RC_PREPROCESSOR)
|
||||
set(CMAKE_DEPFILE_FLAGS_RC "${clang_option_prefix}-MD ${clang_option_prefix}-MF ${clang_option_prefix}<DEPFILE>")
|
||||
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_COMMAND> -E cmake_llvm_rc <SOURCE> <OBJECT>.pp <${CMAKE_RC_PREPROCESSOR}> <DEFINES> -DRC_INVOKED <INCLUDES> <FLAGS> ${extra_pp_flags} -E -- <SOURCE> ++ <CMAKE_RC_COMPILER> <DEFINES> -I <SOURCE_DIR> <INCLUDES> /fo <OBJECT> <OBJECT>.pp")
|
||||
set(CMAKE_DEPFILE_FLAGS_RC "${clang_option_prefix}-MD ${clang_option_prefix}-MF ${clang_option_prefix}<DEP_FILE>")
|
||||
# The <FLAGS> are passed to the preprocess and the resource compiler to pick
|
||||
# up the eventual -D / -C options passed through the CMAKE_RC_FLAGS.
|
||||
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_COMMAND> -E cmake_llvm_rc <SOURCE> <OBJECT>.pp <${CMAKE_RC_PREPROCESSOR}> <DEFINES> -DRC_INVOKED <INCLUDES> <FLAGS> ${extra_pp_flags} -E -- <SOURCE> ++ <CMAKE_RC_COMPILER> <DEFINES> -I <SOURCE_DIR> <INCLUDES> <FLAGS> /fo <OBJECT> <OBJECT>.pp")
|
||||
if(CMAKE_GENERATOR MATCHES "Ninja")
|
||||
set(CMAKE_NINJA_CMCLDEPS_RC 0)
|
||||
set(CMAKE_NINJA_DEP_TYPE_RC gcc)
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
include(Platform/Windows-Intel)
|
||||
__windows_compiler_intel(C)
|
||||
set(CMAKE_NINJA_DEPTYPE_C intel) # special value handled by CMake
|
||||
set(CMAKE_DEPFILE_FLAGS_C "-QMMD -QMT <OBJECT> -QMF <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_C "-QMMD -QMT <DEP_TARGET> -QMF <DEP_FILE>")
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_C_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
@@ -2,4 +2,11 @@ include(Platform/Windows-Intel)
|
||||
set(_COMPILE_CXX " /TP")
|
||||
__windows_compiler_intel(CXX)
|
||||
set(CMAKE_NINJA_DEPTYPE_CXX intel) # special value handled by CMake
|
||||
set(CMAKE_DEPFILE_FLAGS_CXX "-QMMD -QMT <OBJECT> -QMF <DEPFILE>")
|
||||
set(CMAKE_DEPFILE_FLAGS_CXX "-QMMD -QMT <DEP_TARGET> -QMF <DEP_FILE>")
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake")
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_CXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
@@ -3,3 +3,10 @@ if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 18.0)
|
||||
set(_FS_C " /FS")
|
||||
endif()
|
||||
__windows_compiler_msvc(C)
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_C)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
@@ -4,3 +4,10 @@ if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0)
|
||||
set(_FS_CXX " /FS")
|
||||
endif()
|
||||
__windows_compiler_msvc(CXX)
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_CXX)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
@@ -163,6 +163,14 @@ foreach(lang C CXX)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
cmake_policy(GET CMP0117 __WINDOWS_MSVC_CMP0117)
|
||||
if(__WINDOWS_MSVC_CMP0117 STREQUAL "NEW")
|
||||
set(_GR "")
|
||||
else()
|
||||
set(_GR " /GR")
|
||||
endif()
|
||||
unset(__WINDOWS_MSVC_CMP0117)
|
||||
|
||||
if(WINCE)
|
||||
foreach(lang C CXX)
|
||||
string(TOUPPER "${_MSVC_${lang}_ARCHITECTURE_FAMILY}" _MSVC_${lang}_ARCHITECTURE_FAMILY_UPPER)
|
||||
@@ -182,7 +190,7 @@ if(WINCE)
|
||||
|
||||
set(_RTC1 "")
|
||||
set(_FLAGS_C "")
|
||||
set(_FLAGS_CXX " /GR /EHsc")
|
||||
set(_FLAGS_CXX "${_GR} /EHsc")
|
||||
|
||||
foreach(lang C CXX)
|
||||
if(_MSVC_${lang}_ARCHITECTURE_FAMILY STREQUAL "ARM")
|
||||
@@ -204,7 +212,7 @@ if(WINCE)
|
||||
elseif(WINDOWS_PHONE OR WINDOWS_STORE)
|
||||
set(_PLATFORM_DEFINES "/DWIN32")
|
||||
set(_FLAGS_C " /DUNICODE /D_UNICODE")
|
||||
set(_FLAGS_CXX " /DUNICODE /D_UNICODE /GR /EHsc")
|
||||
set(_FLAGS_CXX " /DUNICODE /D_UNICODE${_GR} /EHsc")
|
||||
if(WINDOWS_STORE AND MSVC_VERSION GREATER 1899)
|
||||
set(CMAKE_C_STANDARD_LIBRARIES_INIT "WindowsApp.lib")
|
||||
elseif(WINDOWS_PHONE)
|
||||
@@ -226,12 +234,12 @@ else()
|
||||
set(_FLAGS_CXX " -frtti -fexceptions")
|
||||
else()
|
||||
set(_RTC1 "/RTC1")
|
||||
set(_FLAGS_CXX " /GR /EHsc")
|
||||
set(_FLAGS_CXX "${_GR} /EHsc")
|
||||
endif()
|
||||
set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib")
|
||||
else()
|
||||
set(_RTC1 "/GZ")
|
||||
set(_FLAGS_CXX " /GR /GX")
|
||||
set(_FLAGS_CXX "${_GR} /GX")
|
||||
set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib")
|
||||
endif()
|
||||
|
||||
@@ -241,6 +249,8 @@ else()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
unset(_GR)
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
|
||||
|
||||
# executable linker flags
|
||||
@@ -427,6 +437,13 @@ macro(__windows_compiler_msvc lang)
|
||||
set(CMAKE_${lang}_LINKER_SUPPORTS_PDB ON)
|
||||
set(CMAKE_NINJA_DEPTYPE_${lang} msvc)
|
||||
__windows_compiler_msvc_enable_rc("${_PLATFORM_DEFINES} ${_PLATFORM_DEFINES_${lang}}")
|
||||
|
||||
# define generic information about compiler dependencies
|
||||
# activation is done on per language platform configuration basis
|
||||
if (MSVC_VERSION GREATER 1300)
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "/showIncludes")
|
||||
set(CMAKE_${lang}_DEPFILE_FORMAT msvc)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(__windows_compiler_msvc_enable_rc flags)
|
||||
|
||||
@@ -5,19 +5,41 @@
|
||||
TestBigEndian
|
||||
-------------
|
||||
|
||||
Define macro to determine endian type
|
||||
.. deprecated:: 3.20
|
||||
|
||||
Check if the system is big endian or little endian
|
||||
Supserseded by the :variable:`CMAKE_<LANG>_BYTE_ORDER` variable.
|
||||
|
||||
::
|
||||
Check if the target architecture is big endian or little endian.
|
||||
|
||||
.. command:: test_big_endian
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
test_big_endian(<var>)
|
||||
|
||||
Stores in variable ``<var>`` either 1 or 0 indicating whether the
|
||||
target architecture is big or little endian.
|
||||
|
||||
TEST_BIG_ENDIAN(VARIABLE)
|
||||
VARIABLE - variable to store the result to
|
||||
#]=======================================================================]
|
||||
include_guard()
|
||||
|
||||
include(CheckTypeSize)
|
||||
|
||||
macro(TEST_BIG_ENDIAN VARIABLE)
|
||||
function(TEST_BIG_ENDIAN VARIABLE)
|
||||
if(";${CMAKE_C_BYTE_ORDER};${CMAKE_CXX_BYTE_ORDER};${CMAKE_CUDA_BYTE_ORDER};${CMAKE_OBJC_BYTE_ORDER};${CMAKE_OBJCXX_BYTE_ORDER};" MATCHES ";(BIG_ENDIAN|LITTLE_ENDIAN);")
|
||||
set(order "${CMAKE_MATCH_1}")
|
||||
if(order STREQUAL "BIG_ENDIAN")
|
||||
set("${VARIABLE}" 1 PARENT_SCOPE)
|
||||
else()
|
||||
set("${VARIABLE}" 0 PARENT_SCOPE)
|
||||
endif()
|
||||
else()
|
||||
__TEST_BIG_ENDIAN_LEGACY_IMPL(is_big)
|
||||
set("${VARIABLE}" "${is_big}" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
macro(__TEST_BIG_ENDIAN_LEGACY_IMPL VARIABLE)
|
||||
if(NOT DEFINED HAVE_${VARIABLE})
|
||||
message(CHECK_START "Check if the system is big endian")
|
||||
message(CHECK_START "Searching 16 bit integer")
|
||||
@@ -119,5 +141,3 @@ macro(TEST_BIG_ENDIAN VARIABLE)
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
||||
|
||||
@@ -406,8 +406,8 @@ function(__java_export_jar VAR TARGET PATH)
|
||||
endfunction()
|
||||
|
||||
# define helper scripts
|
||||
set(_JAVA_EXPORT_TARGETS_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/javaTargets.cmake.in)
|
||||
set(_JAVA_SYMLINK_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJavaSymlinks.cmake)
|
||||
set(_JAVA_EXPORT_TARGETS_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJava/javaTargets.cmake.in)
|
||||
set(_JAVA_SYMLINK_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJava/Symlinks.cmake)
|
||||
|
||||
if (CMAKE_HOST_WIN32 AND NOT CYGWIN AND CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
|
||||
set(_UseJava_PATH_SEP "$<SEMICOLON>")
|
||||
@@ -636,7 +636,7 @@ function(add_jar _TARGET_NAME)
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-DCMAKE_JAVA_CLASS_OUTPUT_PATH=${CMAKE_JAVA_CLASS_OUTPUT_PATH}
|
||||
-DCMAKE_JAR_CLASSES_PREFIX=${CMAKE_JAR_CLASSES_PREFIX}
|
||||
-P ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/UseJavaClassFilelist.cmake
|
||||
-P ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/UseJava/ClassFilelist.cmake
|
||||
DEPENDS ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
VERBATIM
|
||||
|
||||
@@ -1,18 +1,9 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
UseJavaClassFilelist
|
||||
--------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
This script create a list of compiled Java class files to be added to
|
||||
a jar file. This avoids including cmake files which get created in
|
||||
the binary directory.
|
||||
#]=======================================================================]
|
||||
# This script creates a list of compiled Java class files to be added to
|
||||
# a jar file. This avoids including cmake files which get created in
|
||||
# the binary directory.
|
||||
|
||||
if (CMAKE_JAVA_CLASS_OUTPUT_PATH)
|
||||
if (EXISTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}")
|
||||
@@ -1,16 +1,7 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
UseJavaSymlinks
|
||||
---------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Helper script for UseJava.cmake
|
||||
#]=======================================================================]
|
||||
# Helper script for UseJava.cmake
|
||||
|
||||
if (UNIX AND _JAVA_TARGET_OUTPUT_LINK)
|
||||
if (_JAVA_TARGET_OUTPUT_NAME)
|
||||
Reference in New Issue
Block a user