mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-12 17:19:05 -05:00
Merge topic 'lcc-updates'
fe1903326cTests: Avoid procedure stack overflow in broken libc on Elbrusb7f9d24b40Tests: Improve RunCMake.export expected output matching robustness3377141c8fTests: With lfortran < 1.24 skip cases broken by incorrect filename handling020e80d825LCC: Add missing C/CXX compiler version checks for -std options76a0a67026GetPrerequisites: Tolerate multiple leading '/' in system library paths Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !9099
This commit is contained in:
@@ -12,18 +12,25 @@ endif()
|
||||
|
||||
set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
|
||||
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
|
||||
set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 1.23)
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
|
||||
set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
endif()
|
||||
|
||||
set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
|
||||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
|
||||
set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std=c17")
|
||||
set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std=gnu17")
|
||||
set(CMAKE_C23_STANDARD_COMPILE_OPTION "-std=c2x")
|
||||
set(CMAKE_C23_EXTENSION_COMPILE_OPTION "-std=gnu2x")
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 1.20)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 1.26)
|
||||
set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std=c17")
|
||||
set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std=gnu17")
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(C 1.23 90 1.20 11 1.26 17)
|
||||
|
||||
@@ -17,15 +17,27 @@ set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hi
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
|
||||
set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
|
||||
set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
|
||||
set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++2a")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 1.20)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
|
||||
set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 1.21)
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
|
||||
set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 1.24)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 1.26)
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++2a")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(CXX 1.19 98 1.20 11 1.21 14 1.24 17 1.26 20)
|
||||
|
||||
@@ -514,7 +514,7 @@ function(gp_resolved_file_type original_file file exepath dirs type_var)
|
||||
string(TOLOWER "${resolved_file}" lower)
|
||||
|
||||
if(UNIX)
|
||||
if(resolved_file MATCHES "^(/lib/|/lib32/|/libx32/|/lib64/|/usr/lib/|/usr/lib32/|/usr/libx32/|/usr/lib64/|/usr/X11R6/|/usr/bin/)")
|
||||
if(resolved_file MATCHES "^/*(/lib/|/lib32/|/libx32/|/lib64/|/usr/lib/|/usr/lib32/|/usr/libx32/|/usr/lib64/|/usr/X11R6/|/usr/bin/)")
|
||||
set(is_system 1)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -345,7 +345,17 @@ if(DEFINED CMake_TEST_OBJC)
|
||||
list(APPEND CompilerTest_ARGS -DCMake_TEST_OBJC=${CMake_TEST_OBJC})
|
||||
endif()
|
||||
if(CMAKE_Fortran_COMPILER)
|
||||
list(APPEND CompilerTest_ARGS -DCMake_TEST_Fortran=1)
|
||||
# lfortran < 1.24 cannot handle long file names. Fortran is not
|
||||
# enabled here, so check the C compiler version instead.
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "LCC" AND CMAKE_C_COMPILER_VERSION VERSION_LESS "1.24")
|
||||
string(LENGTH "${CMAKE_CURRENT_BINARY_DIR}" _CCBD_LEN)
|
||||
if(_CCBD_LEN LESS 35)
|
||||
list(APPEND CompilerTest_ARGS -DCMake_TEST_Fortran=1)
|
||||
endif()
|
||||
unset(_CCBD_LEN)
|
||||
else()
|
||||
list(APPEND CompilerTest_ARGS -DCMake_TEST_Fortran=1)
|
||||
endif()
|
||||
endif()
|
||||
foreach(lang IN ITEMS CUDA HIP ISPC)
|
||||
if(CMake_TEST_${lang})
|
||||
@@ -1040,6 +1050,31 @@ set(cpack_tests
|
||||
if(APPLE)
|
||||
list(APPEND cpack_tests DragNDrop)
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "e2k" AND NOT DEFINED CMake_TEST_E2K_BROKEN_LIBC)
|
||||
# Exclude tests that fail due to a broken libc version on Elbrus.
|
||||
find_program(DPKG_QUERY "dpkg-query" )
|
||||
execute_process(COMMAND "${DPKG_QUERY}" "-f" "\${Version}" "-W" "glibc" OUTPUT_VARIABLE LIBC_VERSION)
|
||||
if(LIBC_VERSION MATCHES "2.29-25.*")
|
||||
list(REMOVE_ITEM cpack_tests
|
||||
DEB.AUTO_SUFFIXES
|
||||
DEB.CUSTOM_NAMES
|
||||
DEB.DEB_PACKAGE_VERSION_BACK_COMPATIBILITY
|
||||
DEB.PROJECT_META DEB.DEPENDENCIES
|
||||
RPM.PARTIALLY_RELOCATABLE_WARNING
|
||||
RPM.PER_COMPONENT_FIELDS
|
||||
RPM.USER_FILELIST
|
||||
RPM.DIST
|
||||
RPM.AUTO_SUFFIXES
|
||||
TGZ
|
||||
ZIP
|
||||
STGZ
|
||||
External
|
||||
)
|
||||
set(CMake_TEST_E2K_BROKEN_LIBC 1)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_RunCMake_test_group(CPack "${cpack_tests}")
|
||||
# add a test to make sure symbols are exported from a shared library
|
||||
# for MSVC compilers CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS property is used
|
||||
@@ -1094,14 +1129,16 @@ add_RunCMake_test(CMakePresetsBuild
|
||||
-DCMake_TEST_JSON_SCHEMA=${CMake_TEST_JSON_SCHEMA}
|
||||
-DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}
|
||||
)
|
||||
add_RunCMake_test(CMakePresetsTest
|
||||
-DPython_EXECUTABLE=${Python_EXECUTABLE}
|
||||
-DCMake_TEST_JSON_SCHEMA=${CMake_TEST_JSON_SCHEMA}
|
||||
)
|
||||
add_RunCMake_test(CMakePresetsPackage
|
||||
-DPython_EXECUTABLE=${Python_EXECUTABLE}
|
||||
-DCMake_TEST_JSON_SCHEMA=${CMake_TEST_JSON_SCHEMA}
|
||||
)
|
||||
if(NOT CMake_TEST_E2K_BROKEN_LIBC)
|
||||
add_RunCMake_test(CMakePresetsTest
|
||||
-DPython_EXECUTABLE=${Python_EXECUTABLE}
|
||||
-DCMake_TEST_JSON_SCHEMA=${CMake_TEST_JSON_SCHEMA}
|
||||
)
|
||||
add_RunCMake_test(CMakePresetsPackage
|
||||
-DPython_EXECUTABLE=${Python_EXECUTABLE}
|
||||
-DCMake_TEST_JSON_SCHEMA=${CMake_TEST_JSON_SCHEMA}
|
||||
)
|
||||
endif()
|
||||
add_RunCMake_test(CMakePresetsWorkflow
|
||||
-DPython_EXECUTABLE=${Python_EXECUTABLE}
|
||||
-DCMake_TEST_JSON_SCHEMA=${CMake_TEST_JSON_SCHEMA}
|
||||
|
||||
@@ -5,6 +5,14 @@ include(CheckSourceCompiles)
|
||||
|
||||
set(Fortran 1) # test that this is tolerated
|
||||
|
||||
# lfortran < 1.24 cannot handle long file names.
|
||||
if(CMAKE_Fortran_COMPILER_ID STREQUAL "LCC" AND CMAKE_Fortran_COMPILER_VERSION VERSION_LESS "1.24")
|
||||
string(LENGTH "${CMAKE_CURRENT_BINARY_DIR}" _CCBD_LEN)
|
||||
if(_CCBD_LEN GREATER_EQUAL 35)
|
||||
return()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
check_source_compiles(Fortran [=[
|
||||
PROGRAM TEST_HAVE_PRINT
|
||||
PRINT *, 'Hello'
|
||||
|
||||
@@ -5,6 +5,14 @@ include(CheckSourceRuns)
|
||||
|
||||
set(Fortran 1) # test that this is tolerated
|
||||
|
||||
# lfortran < 1.24 cannot handle long file names.
|
||||
if(CMAKE_Fortran_COMPILER_ID STREQUAL "LCC" AND CMAKE_Fortran_COMPILER_VERSION VERSION_LESS "1.24")
|
||||
string(LENGTH "${CMAKE_CURRENT_BINARY_DIR}" _CCBD_LEN)
|
||||
if(_CCBD_LEN GREATER_EQUAL 35)
|
||||
return()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
check_source_runs(Fortran [=[
|
||||
PROGRAM TEST_HAVE_PRINT
|
||||
PRINT *, 'Hello'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
CMake Error in CMakeLists.txt:
|
||||
export called with target "exported" which requires target "doubleexported"
|
||||
that is not in this export set, but in multiple other export sets:
|
||||
.*/Tests/RunCMake/export/DependOnDoubleExport-build/exportset.cmake,
|
||||
that is not in this export set, but in multiple other export sets:.*
|
||||
.*/Tests/RunCMake/export/DependOnDoubleExport-build/exportset.cmake,.*
|
||||
.*/Tests/RunCMake/export/DependOnDoubleExport-build/manual.cmake.
|
||||
+
|
||||
An exported target cannot depend upon another target which is exported
|
||||
|
||||
Reference in New Issue
Block a user