Merge topic 'lcc-updates'

fe1903326c Tests: Avoid procedure stack overflow in broken libc on Elbrus
b7f9d24b40 Tests: Improve RunCMake.export expected output matching robustness
3377141c8f Tests: With lfortran < 1.24 skip cases broken by incorrect filename handling
020e80d825 LCC: Add missing C/CXX compiler version checks for -std options
76a0a67026 GetPrerequisites: 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:
Brad King
2024-01-09 14:52:32 +00:00
committed by Kitware Robot
7 changed files with 104 additions and 32 deletions
+17 -10
View File
@@ -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)
+22 -10
View File
@@ -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)
+1 -1
View File
@@ -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()
+46 -9
View File
@@ -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