diff options
Diffstat (limited to '.gitlab')
111 files changed, 993 insertions, 201 deletions
diff --git a/.gitlab/.gitignore b/.gitlab/.gitignore new file mode 100644 index 0000000..10d03ca --- /dev/null +++ b/.gitlab/.gitignore @@ -0,0 +1,18 @@ +# Ignore files known to be downloaded by CI jobs. +/5.15.1-0-202009071110* +/bcc* +/cmake* +/ispc* +/jom +/llvm* +/mingw +/msvc* +/ninja* +/openmp +/open-watcom* +/python* +/qt* +/sccache* +/unstable-jom* +/watcom +/wix* diff --git a/.gitlab/ci/clang-env.ps1 b/.gitlab/ci/clang-env.ps1 new file mode 100755 index 0000000..451fca3 --- /dev/null +++ b/.gitlab/ci/clang-env.ps1 @@ -0,0 +1,15 @@ +Invoke-Expression -Command .gitlab/ci/clang.ps1 +Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1 + +$pwdpath = $pwd.Path +Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\llvm\bin;$env:PATH" + +if ("$env:CMAKE_CI_BUILD_NAME" -match "(^|_)gnu(_|$)") { + $env:CC = "clang" + $env:CXX = "clang++" + clang --version +} else { + $env:CC = "clang-cl" + $env:CXX = "clang-cl" + clang-cl --version +} diff --git a/.gitlab/ci/clang.ps1 b/.gitlab/ci/clang.ps1 index 25d64ba..29db93d 100755 --- a/.gitlab/ci/clang.ps1 +++ b/.gitlab/ci/clang.ps1 @@ -1,10 +1,10 @@ $erroractionpreference = "stop" -if ("$env:CMAKE_CI_BUILD_NAME".Contains("clang13.0")) { - # LLVM/Clang 13.0 - # https://github.com/llvm/llvm-project/releases/tag/llvmorg-13.0.0 - $filename = "llvm-13.0.0-win-x86_64-1" - $sha256sum = "F1B7CE360DACBC9776D7F84BE714766D60CF3D47492AFE34C45D574D1C597264" +if ("$env:CMAKE_CI_BUILD_NAME".Contains("clang15.0")) { + # LLVM/Clang 15.0 + # https://github.com/llvm/llvm-project/releases/tag/llvmorg-15.0.4 + $filename = "llvm-15.0.4-win-x86_64-1" + $sha256sum = "9AA305084C20C27972E103E7B18AAC3F755E0534542AF62FC2F2BF5DDD3C4E1F" } else { throw ('unknown CMAKE_CI_BUILD_NAME: ' + "$env:CMAKE_CI_BUILD_NAME") } @@ -25,6 +25,7 @@ Add-Type -AssemblyName System.IO.Compression.FileSystem Move-Item -Path "$outdir\$filename" -Destination "$outdir\llvm" $bin = "$outdir\llvm\bin" +$lib = "$outdir\llvm\lib" $null = New-Item -ItemType HardLink -Path "$bin\clang++.exe" -Target "$bin\clang.exe" $null = New-Item -ItemType HardLink -Path "$bin\clang-cl.exe" -Target "$bin\clang.exe" $null = New-Item -ItemType HardLink -Path "$bin\clang-cpp.exe" -Target "$bin\clang.exe" @@ -34,4 +35,7 @@ $null = New-Item -ItemType HardLink -Path "$bin\lld-link.exe" -Target "$bin\ $null = New-Item -ItemType HardLink -Path "$bin\llvm-lib.exe" -Target "$bin\llvm-ar.exe" $null = New-Item -ItemType HardLink -Path "$bin\llvm-ranlib.exe" -Target "$bin\llvm-ar.exe" $null = New-Item -ItemType HardLink -Path "$bin\llvm-objcopy.exe" -Target "$bin\llvm-strip.exe" +$null = New-Item -ItemType HardLink -Path "$bin\libiomp5md.dll" -Target "$bin\libomp.dll" +$null = New-Item -ItemType HardLink -Path "$lib\libiomp5md.lib" -Target "$lib\libomp.lib" Clear-Variable -Name bin +Clear-Variable -Name lib diff --git a/.gitlab/ci/cmake.ps1 b/.gitlab/ci/cmake.ps1 index 98aeae3..3efb67a 100755 --- a/.gitlab/ci/cmake.ps1 +++ b/.gitlab/ci/cmake.ps1 @@ -1,8 +1,18 @@ $erroractionpreference = "stop" $version = "3.24.1" -$sha256sum = "C1B17431A16337D517F7BA78C7067B6F143A12686CB8087F3DD32F3FA45F5AAE" -$filename = "cmake-$version-windows-x86_64" + +if ("$env:PROCESSOR_ARCHITECTURE" -eq "AMD64") { + $sha256sum = "C1B17431A16337D517F7BA78C7067B6F143A12686CB8087F3DD32F3FA45F5AAE" + $platform = "windows-x86_64" +} elseif ("$env:PROCESSOR_ARCHITECTURE" -eq "ARM64") { + $sha256sum = "D94683F3B0E63F6EF194C621194F6E26F3735EDA70750395E0F2BBEE4023FB95" + $platform = "windows-arm64" +} else { + throw ('unknown PROCESSOR_ARCHITECTURE: ' + "$env:PROCESSOR_ARCHITECTURE") +} + +$filename = "cmake-$version-$platform" $tarball = "$filename.zip" $outdir = $pwd.Path diff --git a/.gitlab/ci/codespell.sh b/.gitlab/ci/codespell.sh new file mode 100755 index 0000000..fd052bd --- /dev/null +++ b/.gitlab/ci/codespell.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +result=0 +echo "Running codespell on source code..." +codespell || result=1 + +if [ -n "$CI_MERGE_REQUEST_DIFF_BASE_SHA" ]; then + for COMMIT in $(git rev-list "^$CI_MERGE_REQUEST_DIFF_BASE_SHA" "$CI_COMMIT_SHA"); do + echo "Running codespell on commit message of $COMMIT..." + git show --format=%B -s "$COMMIT" | codespell - || result=1 + done +fi + +exit $result diff --git a/.gitlab/ci/configure_cuda11.8_minimal_nvidia.cmake b/.gitlab/ci/configure_cuda11.8_minimal_nvidia.cmake new file mode 100644 index 0000000..519699b --- /dev/null +++ b/.gitlab/ci/configure_cuda11.8_minimal_nvidia.cmake @@ -0,0 +1,3 @@ +set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_debian10_aarch64_extdeps.cmake b/.gitlab/ci/configure_debian10_aarch64_extdeps.cmake new file mode 100644 index 0000000..8e545f5 --- /dev/null +++ b/.gitlab/ci/configure_debian10_aarch64_extdeps.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_extdeps_common.cmake") diff --git a/.gitlab/ci/configure_debian10_aarch64_ninja.cmake b/.gitlab/ci/configure_debian10_aarch64_ninja.cmake index bbccbcf..605f6ba 100644 --- a/.gitlab/ci/configure_debian10_aarch64_ninja.cmake +++ b/.gitlab/ci/configure_debian10_aarch64_ninja.cmake @@ -44,11 +44,13 @@ set(CMake_TEST_FindMPI_Fortran "ON" CACHE BOOL "") set(CMake_TEST_FindMPI "ON" CACHE BOOL "") set(CMake_TEST_FindODBC "ON" CACHE BOOL "") set(CMake_TEST_FindOpenACC "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenAL "ON" CACHE BOOL "") set(CMake_TEST_FindOpenGL "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP_C "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP_CXX "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP_Fortran "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenSP "ON" CACHE BOOL "") set(CMake_TEST_FindOpenSSL "ON" CACHE BOOL "") set(CMake_TEST_FindPatch "ON" CACHE BOOL "") set(CMake_TEST_FindPNG "ON" CACHE BOOL "") diff --git a/.gitlab/ci/configure_debian10_extdeps.cmake b/.gitlab/ci/configure_debian10_extdeps.cmake new file mode 100644 index 0000000..8e545f5 --- /dev/null +++ b/.gitlab/ci/configure_debian10_extdeps.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_extdeps_common.cmake") diff --git a/.gitlab/ci/configure_debian10_ninja.cmake b/.gitlab/ci/configure_debian10_ninja.cmake index 2fcff7a..214828a 100644 --- a/.gitlab/ci/configure_debian10_ninja.cmake +++ b/.gitlab/ci/configure_debian10_ninja.cmake @@ -48,11 +48,13 @@ set(CMake_TEST_FindMPI_Fortran "ON" CACHE BOOL "") set(CMake_TEST_FindMPI "ON" CACHE BOOL "") set(CMake_TEST_FindODBC "ON" CACHE BOOL "") set(CMake_TEST_FindOpenACC "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenAL "ON" CACHE BOOL "") set(CMake_TEST_FindOpenGL "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP_C "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP_CXX "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP_Fortran "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenSP "ON" CACHE BOOL "") set(CMake_TEST_FindOpenSSL "ON" CACHE BOOL "") set(CMake_TEST_FindPatch "ON" CACHE BOOL "") set(CMake_TEST_FindPNG "ON" CACHE BOOL "") diff --git a/.gitlab/ci/configure_extdeps_common.cmake b/.gitlab/ci/configure_extdeps_common.cmake new file mode 100644 index 0000000..2c7d328 --- /dev/null +++ b/.gitlab/ci/configure_extdeps_common.cmake @@ -0,0 +1,5 @@ +set(CMAKE_USE_SYSTEM_LIBRARIES ON CACHE BOOL "") +set(CMAKE_SKIP_BOOTSTRAP_TEST ON CACHE BOOL "") +set(CMake_TEST_Qt6 OFF CACHE BOOL "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake") diff --git a/.gitlab/ci/configure_fedora36_clang_analyzer.cmake b/.gitlab/ci/configure_fedora36_clang_analyzer.cmake deleted file mode 100644 index 456936b..0000000 --- a/.gitlab/ci/configure_fedora36_clang_analyzer.cmake +++ /dev/null @@ -1 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora36_common.cmake") diff --git a/.gitlab/ci/configure_fedora36_tidy.cmake b/.gitlab/ci/configure_fedora36_tidy.cmake deleted file mode 100644 index 38414d3..0000000 --- a/.gitlab/ci/configure_fedora36_tidy.cmake +++ /dev/null @@ -1,3 +0,0 @@ -set(CMake_RUN_CLANG_TIDY ON CACHE BOOL "") - -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora36_common.cmake") diff --git a/.gitlab/ci/configure_fedora36_asan.cmake b/.gitlab/ci/configure_fedora37_asan.cmake index 51977d9..363e953 100644 --- a/.gitlab/ci/configure_fedora36_asan.cmake +++ b/.gitlab/ci/configure_fedora37_asan.cmake @@ -1,4 +1,4 @@ set(CMAKE_C_FLAGS "-fsanitize=address" CACHE STRING "") set(CMAKE_CXX_FLAGS "-fsanitize=address" CACHE STRING "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora36_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common.cmake") diff --git a/.gitlab/ci/configure_fedora37_clang_analyzer.cmake b/.gitlab/ci/configure_fedora37_clang_analyzer.cmake new file mode 100644 index 0000000..f4c4cdd --- /dev/null +++ b/.gitlab/ci/configure_fedora37_clang_analyzer.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common.cmake") diff --git a/.gitlab/ci/configure_fedora36_common.cmake b/.gitlab/ci/configure_fedora37_common.cmake index 4484e26..4484e26 100644 --- a/.gitlab/ci/configure_fedora36_common.cmake +++ b/.gitlab/ci/configure_fedora37_common.cmake diff --git a/.gitlab/ci/configure_fedora37_common_clang.cmake b/.gitlab/ci/configure_fedora37_common_clang.cmake new file mode 100644 index 0000000..70c9df9 --- /dev/null +++ b/.gitlab/ci/configure_fedora37_common_clang.cmake @@ -0,0 +1,6 @@ +set(CMAKE_Fortran_COMPILER "/usr/bin/flang-new" CACHE FILEPATH "") +set(CMAKE_Fortran_COMPILER_ID "LLVMFlang" CACHE STRING "") +set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 "1" CACHE BOOL "") +set(CMAKE_Fortran_FLAGS "-flang-experimental-exec" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_fedora37_extdeps.cmake b/.gitlab/ci/configure_fedora37_extdeps.cmake new file mode 100644 index 0000000..8e545f5 --- /dev/null +++ b/.gitlab/ci/configure_fedora37_extdeps.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_extdeps_common.cmake") diff --git a/.gitlab/ci/configure_fedora36_makefiles.cmake b/.gitlab/ci/configure_fedora37_makefiles.cmake index c5b5190..11d1a08 100644 --- a/.gitlab/ci/configure_fedora36_makefiles.cmake +++ b/.gitlab/ci/configure_fedora37_makefiles.cmake @@ -47,11 +47,13 @@ set(CMake_TEST_FindMPI_Fortran "ON" CACHE BOOL "") set(CMake_TEST_FindMPI "ON" CACHE BOOL "") set(CMake_TEST_FindODBC "ON" CACHE BOOL "") set(CMake_TEST_FindOpenACC "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenAL "ON" CACHE BOOL "") set(CMake_TEST_FindOpenGL "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP_C "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP_CXX "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP_Fortran "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenSP "ON" CACHE BOOL "") set(CMake_TEST_FindOpenSSL "ON" CACHE BOOL "") set(CMake_TEST_FindPatch "ON" CACHE BOOL "") set(CMake_TEST_FindPNG "ON" CACHE BOOL "") diff --git a/.gitlab/ci/configure_fedora37_makefiles_clang.cmake b/.gitlab/ci/configure_fedora37_makefiles_clang.cmake new file mode 100644 index 0000000..7b82a9a --- /dev/null +++ b/.gitlab/ci/configure_fedora37_makefiles_clang.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common_clang.cmake") diff --git a/.gitlab/ci/configure_fedora36_ninja.cmake b/.gitlab/ci/configure_fedora37_ninja.cmake index 45d9192..3defa5a 100644 --- a/.gitlab/ci/configure_fedora36_ninja.cmake +++ b/.gitlab/ci/configure_fedora37_ninja.cmake @@ -10,4 +10,4 @@ set(CMAKE_CXX_FLAGS_RELEASE "-O3" CACHE STRING "") # Cover compilation with C++11 only and not higher standards. set(CMAKE_CXX_STANDARD "11" CACHE STRING "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora36_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common.cmake") diff --git a/.gitlab/ci/configure_fedora37_ninja_clang.cmake b/.gitlab/ci/configure_fedora37_ninja_clang.cmake new file mode 100644 index 0000000..7b82a9a --- /dev/null +++ b/.gitlab/ci/configure_fedora37_ninja_clang.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common_clang.cmake") diff --git a/.gitlab/ci/configure_fedora36_ninja_multi.cmake b/.gitlab/ci/configure_fedora37_ninja_multi.cmake index 94af721..94af721 100644 --- a/.gitlab/ci/configure_fedora36_ninja_multi.cmake +++ b/.gitlab/ci/configure_fedora37_ninja_multi.cmake diff --git a/.gitlab/ci/configure_fedora36_sphinx.cmake b/.gitlab/ci/configure_fedora37_sphinx.cmake index 90d159b..90d159b 100644 --- a/.gitlab/ci/configure_fedora36_sphinx.cmake +++ b/.gitlab/ci/configure_fedora37_sphinx.cmake diff --git a/.gitlab/ci/configure_fedora36_sphinx_package.cmake b/.gitlab/ci/configure_fedora37_sphinx_package.cmake index e839de8..e839de8 100644 --- a/.gitlab/ci/configure_fedora36_sphinx_package.cmake +++ b/.gitlab/ci/configure_fedora37_sphinx_package.cmake diff --git a/.gitlab/ci/configure_fedora37_tidy.cmake b/.gitlab/ci/configure_fedora37_tidy.cmake new file mode 100644 index 0000000..f8eb9ab --- /dev/null +++ b/.gitlab/ci/configure_fedora37_tidy.cmake @@ -0,0 +1,5 @@ +set(CMake_RUN_CLANG_TIDY ON CACHE BOOL "") +set(CMake_USE_CLANG_TIDY_MODULE ON CACHE BOOL "") +set(CMake_CLANG_TIDY_MODULE "$ENV{CI_PROJECT_DIR}/Utilities/ClangTidyModule/build/libcmake-clang-tidy-module.so" CACHE FILEPATH "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common.cmake") diff --git a/.gitlab/ci/configure_linux_clang_cxx_modules_ninja.cmake b/.gitlab/ci/configure_linux_clang_cxx_modules_ninja.cmake new file mode 100644 index 0000000..43bccdb --- /dev/null +++ b/.gitlab/ci/configure_linux_clang_cxx_modules_ninja.cmake @@ -0,0 +1,4 @@ +set(CMake_TEST_MODULE_COMPILATION "named,partitions,internal_partitions,export_bmi,install_bmi,shared" CACHE STRING "") +set(CMake_TEST_MODULE_COMPILATION_RULES "${CMAKE_CURRENT_LIST_DIR}/cxx_modules_rules_clang.cmake" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_linux_clang_cxx_modules_ninja_multi.cmake b/.gitlab/ci/configure_linux_clang_cxx_modules_ninja_multi.cmake new file mode 100644 index 0000000..43bccdb --- /dev/null +++ b/.gitlab/ci/configure_linux_clang_cxx_modules_ninja_multi.cmake @@ -0,0 +1,4 @@ +set(CMake_TEST_MODULE_COMPILATION "named,partitions,internal_partitions,export_bmi,install_bmi,shared" CACHE STRING "") +set(CMake_TEST_MODULE_COMPILATION_RULES "${CMAKE_CURRENT_LIST_DIR}/cxx_modules_rules_clang.cmake" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja.cmake b/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja.cmake new file mode 100644 index 0000000..110df76 --- /dev/null +++ b/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja.cmake @@ -0,0 +1,4 @@ +set(CMake_TEST_MODULE_COMPILATION "named,collation,partitions,internal_partitions,export_bmi,install_bmi" CACHE STRING "") +set(CMake_TEST_MODULE_COMPILATION_RULES "${CMAKE_CURRENT_LIST_DIR}/cxx_modules_rules_gcc.cmake" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja_multi.cmake b/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja_multi.cmake new file mode 100644 index 0000000..110df76 --- /dev/null +++ b/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja_multi.cmake @@ -0,0 +1,4 @@ +set(CMake_TEST_MODULE_COMPILATION "named,collation,partitions,internal_partitions,export_bmi,install_bmi" CACHE STRING "") +set(CMake_TEST_MODULE_COMPILATION_RULES "${CMAKE_CURRENT_LIST_DIR}/cxx_modules_rules_gcc.cmake" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_macos_arm64_ninja.cmake b/.gitlab/ci/configure_macos_arm64_ninja.cmake index f657d98..1a41bc3 100644 --- a/.gitlab/ci/configure_macos_arm64_ninja.cmake +++ b/.gitlab/ci/configure_macos_arm64_ninja.cmake @@ -1,3 +1,6 @@ +set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenMP_C "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenMP_CXX "ON" CACHE BOOL "") set(CMake_TEST_GUI "ON" CACHE BOOL "") include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_common.cmake") include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake") diff --git a/.gitlab/ci/configure_macos_x86_64_makefiles.cmake b/.gitlab/ci/configure_macos_x86_64_makefiles.cmake index d3ef93f..113fe56 100644 --- a/.gitlab/ci/configure_macos_x86_64_makefiles.cmake +++ b/.gitlab/ci/configure_macos_x86_64_makefiles.cmake @@ -1,3 +1,6 @@ +set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenMP_C "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenMP_CXX "ON" CACHE BOOL "") set(CMake_TEST_GUI "ON" CACHE BOOL "") if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "") set(CMake_TEST_ISPC "ON" CACHE STRING "") diff --git a/.gitlab/ci/configure_macos_x86_64_ninja.cmake b/.gitlab/ci/configure_macos_x86_64_ninja.cmake index d3ef93f..113fe56 100644 --- a/.gitlab/ci/configure_macos_x86_64_ninja.cmake +++ b/.gitlab/ci/configure_macos_x86_64_ninja.cmake @@ -1,3 +1,6 @@ +set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenMP_C "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenMP_CXX "ON" CACHE BOOL "") set(CMake_TEST_GUI "ON" CACHE BOOL "") if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "") set(CMake_TEST_ISPC "ON" CACHE STRING "") diff --git a/.gitlab/ci/configure_mingw_osdn_io_common.cmake b/.gitlab/ci/configure_mingw_osdn_io_common.cmake new file mode 100644 index 0000000..55dce1d --- /dev/null +++ b/.gitlab/ci/configure_mingw_osdn_io_common.cmake @@ -0,0 +1,5 @@ +set(CMake_TEST_Java OFF CACHE BOOL "") + +set(configure_no_sccache 1) + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_mingw_osdn_io_mingw_makefiles.cmake b/.gitlab/ci/configure_mingw_osdn_io_mingw_makefiles.cmake new file mode 100644 index 0000000..5ddd410 --- /dev/null +++ b/.gitlab/ci/configure_mingw_osdn_io_mingw_makefiles.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_mingw_osdn_io_common.cmake") diff --git a/.gitlab/ci/configure_mingw_osdn_io_msys_makefiles.cmake b/.gitlab/ci/configure_mingw_osdn_io_msys_makefiles.cmake new file mode 100644 index 0000000..5ddd410 --- /dev/null +++ b/.gitlab/ci/configure_mingw_osdn_io_msys_makefiles.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_mingw_osdn_io_common.cmake") diff --git a/.gitlab/ci/configure_nvhpc_ninja.cmake b/.gitlab/ci/configure_nvhpc_ninja.cmake new file mode 100644 index 0000000..ca8ba93 --- /dev/null +++ b/.gitlab/ci/configure_nvhpc_ninja.cmake @@ -0,0 +1,5 @@ +set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "") + +set(configure_no_sccache 1) + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_windows_arm64_vs2022.cmake b/.gitlab/ci/configure_windows_arm64_vs2022.cmake new file mode 100644 index 0000000..c7d41ea --- /dev/null +++ b/.gitlab/ci/configure_windows_arm64_vs2022.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_vs_common.cmake") diff --git a/.gitlab/ci/configure_windows_arm64_vs2022_ninja.cmake b/.gitlab/ci/configure_windows_arm64_vs2022_ninja.cmake new file mode 100644 index 0000000..722e009 --- /dev/null +++ b/.gitlab/ci/configure_windows_arm64_vs2022_ninja.cmake @@ -0,0 +1,7 @@ +# Qt host tools are not yet available natively on windows-arm64. +set(CMake_TEST_GUI "OFF" CACHE BOOL "") +set(BUILD_QtDialog "OFF" CACHE BOOL "") +set(CMAKE_PREFIX_PATH "" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_cxx_modules_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_vs_common_ninja.cmake") diff --git a/.gitlab/ci/configure_windows_msvc_cxx_modules_common.cmake b/.gitlab/ci/configure_windows_msvc_cxx_modules_common.cmake new file mode 100644 index 0000000..38dd729 --- /dev/null +++ b/.gitlab/ci/configure_windows_msvc_cxx_modules_common.cmake @@ -0,0 +1,2 @@ +set(CMake_TEST_MODULE_COMPILATION "named,collation,partitions,internal_partitions,shared,export_bmi,install_bmi" CACHE STRING "") +set(CMake_TEST_MODULE_COMPILATION_RULES "${CMAKE_CURRENT_LIST_DIR}/cxx_modules_rules_msvc.cmake" CACHE STRING "") diff --git a/.gitlab/ci/configure_windows_vs2022_x64.cmake b/.gitlab/ci/configure_windows_vs2022_x64.cmake index c7d41ea..1e0f584 100644 --- a/.gitlab/ci/configure_windows_vs2022_x64.cmake +++ b/.gitlab/ci/configure_windows_vs2022_x64.cmake @@ -1 +1,4 @@ +set(CMake_TEST_MODULE_COMPILATION "named,partitions" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_cxx_modules_common.cmake") include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_vs_common.cmake") diff --git a/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake b/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake index 7f57181..f5a6d80 100644 --- a/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake +++ b/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake @@ -2,4 +2,5 @@ if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "") set(CMake_TEST_ISPC "ON" CACHE STRING "") endif() +include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_cxx_modules_common.cmake") include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_vs_common_ninja.cmake") diff --git a/.gitlab/ci/configure_windows_vs2022_x64_ninja_multi.cmake b/.gitlab/ci/configure_windows_vs2022_x64_ninja_multi.cmake index 5b2f0b7..2b0c76d 100644 --- a/.gitlab/ci/configure_windows_vs2022_x64_ninja_multi.cmake +++ b/.gitlab/ci/configure_windows_vs2022_x64_ninja_multi.cmake @@ -2,4 +2,5 @@ if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "") set(CMake_TEST_ISPC "ON" CACHE STRING "") endif() +include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_cxx_modules_common.cmake") include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_common.cmake") diff --git a/.gitlab/ci/ctest_exclusions.cmake b/.gitlab/ci/ctest_exclusions.cmake index 89a5ace..a2789c3 100644 --- a/.gitlab/ci/ctest_exclusions.cmake +++ b/.gitlab/ci/ctest_exclusions.cmake @@ -27,6 +27,13 @@ if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "_jom") ) endif() +if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "nvhpc_") + list(APPEND test_exclusions + # FIXME(#24187): This test fails with NVHPC as the CUDA host compiler. + "^CudaOnly.SeparateCompilationPTX$" + ) +endif() + string(REPLACE ";" "|" test_exclusions "${test_exclusions}") if (test_exclusions) set(test_exclusions "(${test_exclusions})") diff --git a/.gitlab/ci/ctest_memcheck_fedora36_asan.lsan.supp b/.gitlab/ci/ctest_memcheck_fedora37_asan.lsan.supp index 8ec1a03..8ec1a03 100644 --- a/.gitlab/ci/ctest_memcheck_fedora36_asan.lsan.supp +++ b/.gitlab/ci/ctest_memcheck_fedora37_asan.lsan.supp diff --git a/.gitlab/ci/ctest_standalone.cmake b/.gitlab/ci/ctest_standalone.cmake index 9199693..36ba71c 100644 --- a/.gitlab/ci/ctest_standalone.cmake +++ b/.gitlab/ci/ctest_standalone.cmake @@ -3,8 +3,8 @@ cmake_minimum_required(VERSION 3.8) include("${CMAKE_CURRENT_LIST_DIR}/gitlab_ci.cmake") include("${CMAKE_CURRENT_LIST_DIR}/env_$ENV{CMAKE_CONFIGURATION}.cmake" OPTIONAL) -set(cmake_args - -C "${CMAKE_CURRENT_LIST_DIR}/configure_$ENV{CMAKE_CONFIGURATION}.cmake") +set(initial_cache "${CMAKE_CURRENT_LIST_DIR}/configure_$ENV{CMAKE_CONFIGURATION}.cmake") +set(cmake_args -C "${initial_cache}") include(ProcessorCount) ProcessorCount(nproc) @@ -25,6 +25,8 @@ ctest_update() if("$ENV{CMAKE_CI_BOOTSTRAP}") set(CTEST_CONFIGURE_COMMAND "\"${CTEST_SOURCE_DIRECTORY}/bootstrap\" --parallel=${nproc}") +elseif("$ENV{CMAKE_CONFIGURATION}" MATCHES "extdeps") + set(CTEST_CONFIGURE_COMMAND "/opt/extdeps/bin/cmake -C \"${initial_cache}\" -G \"${CTEST_CMAKE_GENERATOR}\" \"${CTEST_SOURCE_DIRECTORY}\"") endif() # Configure the project. diff --git a/.gitlab/ci/cxx_modules_rules_clang.cmake b/.gitlab/ci/cxx_modules_rules_clang.cmake new file mode 100644 index 0000000..9d75880 --- /dev/null +++ b/.gitlab/ci/cxx_modules_rules_clang.cmake @@ -0,0 +1,16 @@ +set(CMake_TEST_CXXModules_UUID "a246741c-d067-4019-a8fb-3d16b0c9d1d3") + +set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1) +string(CONCAT CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE + "${CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS}" + " -format=p1689 --p1689-targeted-file-name=<SOURCE> --p1689-targeted-output=<OBJECT> --" + " <DEFINES> <INCLUDES> <FLAGS> -x c++ <SOURCE>" + " > <DYNDEP_FILE>") +# No support for `-MF` discovered dependencies in `clang-scan-deps`. +set(CMAKE_EXPERIMENTAL_CXX_SCANDEP_DEPFILE_FORMAT "none") +set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "clang") +set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG "@<MODULE_MAP_FILE>") + +# Default to C++ extensions being off. Clang's modules support have trouble +# with extensions right now. +set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/.gitlab/ci/cxx_modules_rules_gcc.cmake b/.gitlab/ci/cxx_modules_rules_gcc.cmake new file mode 100644 index 0000000..d800099 --- /dev/null +++ b/.gitlab/ci/cxx_modules_rules_gcc.cmake @@ -0,0 +1,10 @@ +set(CMake_TEST_CXXModules_UUID "a246741c-d067-4019-a8fb-3d16b0c9d1d3") + +set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1) +string(CONCAT CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE + "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E -x c++ <SOURCE>" + " -MT <DYNDEP_FILE> -MD -MF <DEP_FILE>" + " -fmodules-ts -fdep-file=<DYNDEP_FILE> -fdep-output=<OBJECT> -fdep-format=trtbd" + " -o <PREPROCESSED_SOURCE>") +set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "gcc") +set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG "-fmodules-ts -fmodule-mapper=<MODULE_MAP_FILE> -fdep-format=trtbd -x c++") diff --git a/.gitlab/ci/cxx_modules_rules_msvc.cmake b/.gitlab/ci/cxx_modules_rules_msvc.cmake new file mode 100644 index 0000000..cb327fd --- /dev/null +++ b/.gitlab/ci/cxx_modules_rules_msvc.cmake @@ -0,0 +1,3 @@ +set(CMake_TEST_CXXModules_UUID "a246741c-d067-4019-a8fb-3d16b0c9d1d3") + +set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1) diff --git a/.gitlab/ci/docker/clang_cxx_modules/Dockerfile b/.gitlab/ci/docker/clang_cxx_modules/Dockerfile new file mode 100644 index 0000000..4e58125 --- /dev/null +++ b/.gitlab/ci/docker/clang_cxx_modules/Dockerfile @@ -0,0 +1,13 @@ +FROM fedora:37 +MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> + +# Install build dependencies for packages. +COPY install_deps.sh /root/install_deps.sh +RUN sh /root/install_deps.sh + +COPY install_llvm.sh /root/install_llvm.sh +RUN sh /root/install_llvm.sh + +# Install build dependencies for CMake's CI. +COPY install_cmake_deps.sh /root/install_cmake_deps.sh +RUN sh /root/install_cmake_deps.sh diff --git a/.gitlab/ci/docker/clang_cxx_modules/install_cmake_deps.sh b/.gitlab/ci/docker/clang_cxx_modules/install_cmake_deps.sh new file mode 100755 index 0000000..465e125 --- /dev/null +++ b/.gitlab/ci/docker/clang_cxx_modules/install_cmake_deps.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +dnf install -y --setopt=install_weak_deps=False \ + file git-core +dnf clean all diff --git a/.gitlab/ci/docker/clang_cxx_modules/install_deps.sh b/.gitlab/ci/docker/clang_cxx_modules/install_deps.sh new file mode 100755 index 0000000..c1957c3 --- /dev/null +++ b/.gitlab/ci/docker/clang_cxx_modules/install_deps.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +dnf install -y --setopt=install_weak_deps=False \ + gcc-c++ cmake ninja-build +dnf clean all diff --git a/.gitlab/ci/docker/clang_cxx_modules/install_llvm.sh b/.gitlab/ci/docker/clang_cxx_modules/install_llvm.sh new file mode 100755 index 0000000..09d0106 --- /dev/null +++ b/.gitlab/ci/docker/clang_cxx_modules/install_llvm.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +readonly revision="p1689r5-cmake-ci-20221201" # ae3b5489585b60a2b7f090ebb9e1e8729b811253 +readonly tarball="https://github.com/mathstuf/llvm-project/archive/$revision.tar.gz" + +readonly workdir="$HOME/llvm" +readonly srcdir="$workdir/llvm" +readonly builddir="$workdir/build" + +mkdir -p "$workdir" +cd "$workdir" +curl -L "$tarball" > "llvm-$revision.tar.gz" +tar xf "llvm-$revision.tar.gz" +mv "llvm-project-$revision" "$srcdir" +mkdir -p "$builddir" +cd "$builddir" +cmake -GNinja \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=ON \ + -DLLVM_ENABLE_BINDINGS=OFF \ + -DLLVM_INCLUDE_BENCHMARKS=OFF \ + -DLLVM_INCLUDE_DOCS=OFF \ + -DLLVM_INCLUDE_EXAMPLES=OFF \ + -DLLVM_INCLUDE_RUNTIMES=OFF \ + -DLLVM_INCLUDE_TESTS=OFF \ + -DLLVM_INCLUDE_UTILS=OFF \ + -DLLVM_TARGETS_TO_BUILD=X86 \ + -DLLVM_TOOL_CLANG_BUILD=ON \ + -DLLVM_USE_SYMLINKS=ON \ + "-DLLVM_EXTERNAL_CLANG_SOURCE_DIR=$srcdir/clang" \ + -DLLVM_PARALLEL_LINK_JOBS=1 \ + -DCLANG_BUILD_TOOLS=ON \ + "-DCMAKE_INSTALL_PREFIX=/opt/llvm-p1689" \ + "$srcdir/llvm" +ninja +ninja install/strip +rm -rf "$workdir" diff --git a/.gitlab/ci/docker/cuda11.8-minimal/Dockerfile b/.gitlab/ci/docker/cuda11.8-minimal/Dockerfile new file mode 100644 index 0000000..02e096e --- /dev/null +++ b/.gitlab/ci/docker/cuda11.8-minimal/Dockerfile @@ -0,0 +1,5 @@ +FROM nvidia/cuda:11.8.0-devel-ubuntu20.04 +MAINTAINER Robert Maynard <rmaynard@nvidia.com> + +COPY install_deps.sh /root/install_deps.sh +RUN sh /root/install_deps.sh diff --git a/.gitlab/ci/docker/cuda11.8-minimal/install_deps.sh b/.gitlab/ci/docker/cuda11.8-minimal/install_deps.sh new file mode 100755 index 0000000..55f4ce5 --- /dev/null +++ b/.gitlab/ci/docker/cuda11.8-minimal/install_deps.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +set -e + +apt-get update + +# Install dependency without interaction. +env DEBIAN_FRONTEND=noninteractive \ + TZ=America/New_York \ + apt-get install -y \ + tzdata + +# Install development tools. +apt-get install -y \ + g++ \ + curl \ + git + +# Reduce to minimal subset of libraries by removing static libraries +mkdir /tmp/cuda_required +mv /usr/local/cuda/lib64/libcuda* /tmp/cuda_required/ +rm -f /usr/local/cuda/lib64/*static.a +mv /tmp/cuda_required/libcuda* /usr/local/cuda/lib64/ +rmdir /tmp/cuda_required + +apt-get clean diff --git a/.gitlab/ci/docker/debian10-aarch64/install_deps.sh b/.gitlab/ci/docker/debian10-aarch64/install_deps.sh index 3dd814d..8b5a001 100755 --- a/.gitlab/ci/docker/debian10-aarch64/install_deps.sh +++ b/.gitlab/ci/docker/debian10-aarch64/install_deps.sh @@ -14,6 +14,20 @@ apt-get install -y \ curl \ git +# Install optional external build dependencies. +apt-get install -y \ + libarchive-dev \ + libbz2-dev \ + libcurl4-gnutls-dev \ + libexpat1-dev \ + libjsoncpp-dev \ + liblzma-dev \ + libncurses-dev \ + librhash-dev \ + libuv1-dev \ + libzstd-dev \ + zlib1g-dev + # Install iwyu runtime deps. apt-get install -y \ clang-6.0 \ @@ -66,6 +80,7 @@ apt-get install -y \ liblzma-dev \ libopenal-dev \ libopenmpi-dev openmpi-bin \ + libosp-dev \ libpng-dev \ libpq-dev postgresql-server-dev-11 \ libprotobuf-dev libprotobuf-c-dev libprotoc-dev protobuf-compiler protobuf-compiler-grpc \ diff --git a/.gitlab/ci/docker/debian10/install_deps.sh b/.gitlab/ci/docker/debian10/install_deps.sh index f796816..486b2f7 100755 --- a/.gitlab/ci/docker/debian10/install_deps.sh +++ b/.gitlab/ci/docker/debian10/install_deps.sh @@ -14,6 +14,20 @@ apt-get install -y \ curl \ git +# Install optional external build dependencies. +apt-get install -y \ + libarchive-dev \ + libbz2-dev \ + libcurl4-gnutls-dev \ + libexpat1-dev \ + libjsoncpp-dev \ + liblzma-dev \ + libncurses-dev \ + librhash-dev \ + libuv1-dev \ + libzstd-dev \ + zlib1g-dev + # Install iwyu runtime deps. apt-get install -y \ clang-6.0 \ @@ -70,6 +84,7 @@ apt-get install -y \ liblzma-dev \ libopenal-dev \ libopenmpi-dev openmpi-bin \ + libosp-dev \ libpng-dev \ libpq-dev postgresql-server-dev-11 \ libprotobuf-dev libprotobuf-c-dev libprotoc-dev protobuf-compiler protobuf-compiler-grpc \ diff --git a/.gitlab/ci/docker/fedora36/Dockerfile b/.gitlab/ci/docker/fedora36/Dockerfile deleted file mode 100644 index 26f8e3e..0000000 --- a/.gitlab/ci/docker/fedora36/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM fedora:36 as rvm-build -MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> - -COPY install_rvm.sh /root/install_rvm.sh -RUN sh /root/install_rvm.sh - -FROM fedora:36 -MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> - -COPY install_deps.sh /root/install_deps.sh -RUN sh /root/install_deps.sh - -COPY --from=rvm-build /root/rvm.tar /root/rvm.tar -RUN tar -C /usr/local -xf /root/rvm.tar \ - && rm /root/rvm.tar diff --git a/.gitlab/ci/docker/fedora37/Dockerfile b/.gitlab/ci/docker/fedora37/Dockerfile new file mode 100644 index 0000000..13ef9aa --- /dev/null +++ b/.gitlab/ci/docker/fedora37/Dockerfile @@ -0,0 +1,33 @@ +FROM fedora:37 as rvm-build +MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> + +COPY install_rvm.sh /root/install_rvm.sh +RUN sh /root/install_rvm.sh + +FROM fedora:37 AS clang-tidy-headers +MAINTAINER Kyle Edwards <kyle.edwards@kitware.com> + +COPY install_clang_tidy_headers.sh /root/install_clang_tidy_headers.sh +RUN sh /root/install_clang_tidy_headers.sh + +FROM fedora:37 AS iwyu +MAINTAINER Kyle Edwards <kyle.edwards@kitware.com> + +COPY install_iwyu.sh /root/install_iwyu.sh +RUN sh /root/install_iwyu.sh + +FROM fedora:37 +MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> + +COPY install_deps.sh /root/install_deps.sh +RUN sh /root/install_deps.sh + +COPY --from=rvm-build /root/rvm.tar /root/rvm.tar +RUN tar -C /usr/local -xf /root/rvm.tar \ + && rm /root/rvm.tar +COPY --from=clang-tidy-headers /root/clang-tidy-headers.tar /root/clang-tidy-headers.tar +RUN tar -C /usr/include -xf /root/clang-tidy-headers.tar \ + && rm /root/clang-tidy-headers.tar +COPY --from=iwyu /root/iwyu.tar /root/iwyu.tar +RUN tar -C / -xf /root/iwyu.tar \ + && rm /root/iwyu.tar diff --git a/.gitlab/ci/docker/fedora37/install_clang_tidy_headers.sh b/.gitlab/ci/docker/fedora37/install_clang_tidy_headers.sh new file mode 100755 index 0000000..b9883f4 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/install_clang_tidy_headers.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +set -e + +# Packages for building the clang-tidy plugin. +# TODO: Upstream this as a proper Fedora package. +dnf install --setopt=install_weak_deps=False -y \ + 'dnf-command(download)' \ + rpm-build \ + python3-devel \ + clang-tools-extra +clang_source_rpm=$(rpm -q --queryformat '%{SOURCERPM}' clang-tools-extra) +clang_version=$(rpm -q --queryformat '%{VERSION}' clang-tools-extra) +dnf download --source -y clang +rpm -i "$clang_source_rpm" +rpmbuild -bp /root/rpmbuild/SPECS/clang.spec +cd "/root/rpmbuild/BUILD/clang-tools-extra-$clang_version.src" +find clang-tidy -name '*.h' | tar -cf /root/clang-tidy-headers.tar -T - diff --git a/.gitlab/ci/docker/fedora36/install_deps.sh b/.gitlab/ci/docker/fedora37/install_deps.sh index b8ddfb9..afb8560 100755 --- a/.gitlab/ci/docker/fedora36/install_deps.sh +++ b/.gitlab/ci/docker/fedora37/install_deps.sh @@ -11,12 +11,29 @@ dnf install --setopt=install_weak_deps=False -y \ # Install development tools. dnf install --setopt=install_weak_deps=False -y \ + clang \ clang-tools-extra \ compiler-rt \ + flang \ + flang-devel \ gcc-c++ \ git-core \ make +# Install optional external build dependencies. +dnf install --setopt=install_weak_deps=False -y \ + bzip2-devel \ + expat-devel \ + jsoncpp-devel \ + libarchive-devel \ + libcurl-devel \ + libuv-devel \ + libuv-devel \ + libzstd-devel \ + rhash-devel \ + xz-devel \ + zlib-devel + # Install documentation tools. dnf install --setopt=install_weak_deps=False -y \ python3-sphinx \ @@ -78,6 +95,7 @@ dnf install --setopt=install_weak_deps=False -y \ libinput-devel systemd-devel \ libjpeg-turbo-devel \ libpng-devel \ + opensp-devel \ postgresql-server-devel \ libtiff-devel \ libuv-devel \ diff --git a/.gitlab/ci/docker/fedora37/install_iwyu.sh b/.gitlab/ci/docker/fedora37/install_iwyu.sh new file mode 100755 index 0000000..714bcc0 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/install_iwyu.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +set -e + +# Install development tools. +dnf install --setopt=install_weak_deps=False -y \ + clang-devel \ + llvm-devel \ + zlib-devel \ + g++ \ + cmake \ + ninja-build \ + git + +cd /root +git clone "https://github.com/include-what-you-use/include-what-you-use.git" +cd include-what-you-use +readonly llvm_full_version="$( clang --version | head -n1 | cut -d' ' -f3 )" +readonly llvm_version="$( echo "$llvm_full_version" | cut -d. -f-1 )" +git checkout "clang_$llvm_version" +git apply <<EOF +diff --git a/iwyu_driver.cc b/iwyu_driver.cc +index 42fea35..fbb77a9 100644 +--- a/iwyu_driver.cc ++++ b/iwyu_driver.cc +@@ -167,6 +167,7 @@ CompilerInstance* CreateCompilerInstance(int argc, const char **argv) { + DiagnosticsEngine diagnostics(diagnostic_id, &*diagnostic_options, + diagnostic_client); + Driver driver(path, getDefaultTargetTriple(), diagnostics); ++ driver.ResourceDir = "/usr/lib64/clang/$llvm_full_version"; + driver.setTitle("include what you use"); + + // Expand out any response files passed on the command line +EOF +mkdir build +cd build + +cmake -GNinja \ + -DCMAKE_BUILD_TYPE=Release \ + "-DCMAKE_INSTALL_PREFIX=/usr/local/lib64/llvm-$llvm_version" \ + .. +ninja +DESTDIR=/root/iwyu-destdir ninja install +tar -C /root/iwyu-destdir -cf /root/iwyu.tar . diff --git a/.gitlab/ci/docker/fedora36/install_rvm.sh b/.gitlab/ci/docker/fedora37/install_rvm.sh index 0011f87..0011f87 100755 --- a/.gitlab/ci/docker/fedora36/install_rvm.sh +++ b/.gitlab/ci/docker/fedora37/install_rvm.sh diff --git a/.gitlab/ci/docker/gcc_cxx_modules/Dockerfile b/.gitlab/ci/docker/gcc_cxx_modules/Dockerfile new file mode 100644 index 0000000..e0af0b9 --- /dev/null +++ b/.gitlab/ci/docker/gcc_cxx_modules/Dockerfile @@ -0,0 +1,9 @@ +FROM fedora:36 +MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> + +# Install build dependencies for packages. +COPY install_deps.sh /root/install_deps.sh +RUN sh /root/install_deps.sh + +COPY install_gcc.sh /root/install_gcc.sh +RUN sh /root/install_gcc.sh diff --git a/.gitlab/ci/docker/gcc_cxx_modules/install_deps.sh b/.gitlab/ci/docker/gcc_cxx_modules/install_deps.sh new file mode 100755 index 0000000..b8b706b --- /dev/null +++ b/.gitlab/ci/docker/gcc_cxx_modules/install_deps.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +dnf install -y --setopt=install_weak_deps=False \ + gcc-c++ mpfr-devel libmpc-devel isl-devel flex bison file findutils diffutils git-core +dnf clean all diff --git a/.gitlab/ci/docker/gcc_cxx_modules/install_gcc.sh b/.gitlab/ci/docker/gcc_cxx_modules/install_gcc.sh new file mode 100755 index 0000000..20ea35f --- /dev/null +++ b/.gitlab/ci/docker/gcc_cxx_modules/install_gcc.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +set -e + +readonly revision="p1689r5-cmake-ci-20220614" # 3075e510e3d29583f8886b95aff044c0474c84a5 +readonly tarball="https://github.com/mathstuf/gcc/archive/$revision.tar.gz" + +readonly workdir="$HOME/gcc" +readonly srcdir="$workdir/gcc" +readonly builddir="$workdir/build" +readonly njobs="$( nproc )" + +mkdir -p "$workdir" +cd "$workdir" +curl -L "$tarball" > "gcc-$revision.tar.gz" +tar xf "gcc-$revision.tar.gz" +mv "gcc-$revision" "$srcdir" +mkdir -p "$builddir" +cd "$builddir" +"$srcdir/configure" \ + --disable-multilib \ + --enable-languages=c,c++ \ + --prefix="/opt/gcc-p1689" +make "-j$njobs" +make "-j$njobs" install-strip +rm -rf "$workdir" diff --git a/.gitlab/ci/docker/nvhpc22.11/Dockerfile b/.gitlab/ci/docker/nvhpc22.11/Dockerfile new file mode 100644 index 0000000..52f4f8e --- /dev/null +++ b/.gitlab/ci/docker/nvhpc22.11/Dockerfile @@ -0,0 +1,6 @@ +# https://catalog.ngc.nvidia.com/orgs/nvidia/containers/nvhpc/tags +FROM nvcr.io/nvidia/nvhpc:22.11-devel-cuda_multi-ubuntu22.04 +MAINTAINER Brad King <brad.king@kitware.com> + +COPY install_deps.sh /root/install_deps.sh +RUN sh /root/install_deps.sh diff --git a/.gitlab/ci/docker/nvhpc22.11/install_deps.sh b/.gitlab/ci/docker/nvhpc22.11/install_deps.sh new file mode 100755 index 0000000..51ee410 --- /dev/null +++ b/.gitlab/ci/docker/nvhpc22.11/install_deps.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +apt-get update + +# Install development tools. +apt-get install -y \ + curl + +apt-get clean diff --git a/.gitlab/ci/env.ps1 b/.gitlab/ci/env.ps1 index e24bc37..72a8cb8 100755 --- a/.gitlab/ci/env.ps1 +++ b/.gitlab/ci/env.ps1 @@ -1,3 +1,4 @@ +$pwsh = [System.Diagnostics.Process]::GetCurrentProcess().MainModule.FileName if (Test-Path -Path ".gitlab/ci/env_$env:CMAKE_CONFIGURATION.ps1" -PathType Leaf) { - Invoke-Expression ".gitlab/ci/env_$env:CMAKE_CONFIGURATION.ps1" + . ".gitlab/ci/env_$env:CMAKE_CONFIGURATION.ps1" } diff --git a/.gitlab/ci/env_debian10_aarch64_extdeps.sh b/.gitlab/ci/env_debian10_aarch64_extdeps.sh new file mode 100644 index 0000000..7076e18 --- /dev/null +++ b/.gitlab/ci/env_debian10_aarch64_extdeps.sh @@ -0,0 +1 @@ +source .gitlab/ci/env_extdeps_common.sh diff --git a/.gitlab/ci/env_debian10_extdeps.sh b/.gitlab/ci/env_debian10_extdeps.sh new file mode 100644 index 0000000..7076e18 --- /dev/null +++ b/.gitlab/ci/env_debian10_extdeps.sh @@ -0,0 +1 @@ +source .gitlab/ci/env_extdeps_common.sh diff --git a/.gitlab/ci/env_debian10_ninja.sh b/.gitlab/ci/env_debian10_ninja.sh index 67d900c..ba8ad47 100644 --- a/.gitlab/ci/env_debian10_ninja.sh +++ b/.gitlab/ci/env_debian10_ninja.sh @@ -1,11 +1,11 @@ export MY_RUBY_HOME="/usr/local/rvm/rubies/ruby-2.7.0" if test -z "$CI_MERGE_REQUEST_ID"; then - curl -L -O "https://download.swift.org/swift-5.5.3-release/ubuntu1804/swift-5.5.3-RELEASE/swift-5.5.3-RELEASE-ubuntu18.04.tar.gz" - echo '910634e2d97e14c43ed1f29caeb57fd01d10c2ff88cebb79baee1016b52c7492 swift-5.5.3-RELEASE-ubuntu18.04.tar.gz' > swift.sha256sum + curl -L -O "https://download.swift.org/swift-5.7.1-release/ubuntu1804/swift-5.7.1-RELEASE/swift-5.7.1-RELEASE-ubuntu18.04.tar.gz" + echo '2b30f9efc969d9e96f0836d0871130dffb369822a3823ee6f3db44c29c1698e3 swift-5.7.1-RELEASE-ubuntu18.04.tar.gz' > swift.sha256sum sha256sum --check swift.sha256sum mkdir /opt/swift - tar xzf swift-5.5.3-RELEASE-ubuntu18.04.tar.gz -C /opt/swift --strip-components=2 - rm swift-5.5.3-RELEASE-ubuntu18.04.tar.gz swift.sha256sum + tar xzf swift-5.7.1-RELEASE-ubuntu18.04.tar.gz -C /opt/swift --strip-components=2 + rm swift-5.7.1-RELEASE-ubuntu18.04.tar.gz swift.sha256sum export SWIFTC="/opt/swift/bin/swiftc" fi diff --git a/.gitlab/ci/env_extdeps_common.sh b/.gitlab/ci/env_extdeps_common.sh new file mode 100644 index 0000000..8cabc05 --- /dev/null +++ b/.gitlab/ci/env_extdeps_common.sh @@ -0,0 +1,5 @@ +.gitlab/ci/extdeps-linux.sh + +export CMAKE_PREFIX_PATH=/opt/extdeps +export PATH=/opt/extdeps/bin:$PATH +export LD_LIBRARY_PATH=/opt/extdeps/lib diff --git a/.gitlab/ci/env_fedora36_asan.sh b/.gitlab/ci/env_fedora37_asan.sh index e976486..e976486 100644 --- a/.gitlab/ci/env_fedora36_asan.sh +++ b/.gitlab/ci/env_fedora37_asan.sh diff --git a/.gitlab/ci/env_fedora36_clang_analyzer.sh b/.gitlab/ci/env_fedora37_clang_analyzer.sh index d732c0b..d732c0b 100644 --- a/.gitlab/ci/env_fedora36_clang_analyzer.sh +++ b/.gitlab/ci/env_fedora37_clang_analyzer.sh diff --git a/.gitlab/ci/env_fedora37_common_clang.sh b/.gitlab/ci/env_fedora37_common_clang.sh new file mode 100644 index 0000000..b03b757 --- /dev/null +++ b/.gitlab/ci/env_fedora37_common_clang.sh @@ -0,0 +1,4 @@ +export CC=/usr/bin/clang-15 +export CXX=/usr/bin/clang++-15 +export FC=/usr/bin/flang-new +export FFLAGS=-flang-experimental-exec diff --git a/.gitlab/ci/env_fedora37_extdeps.sh b/.gitlab/ci/env_fedora37_extdeps.sh new file mode 100644 index 0000000..7076e18 --- /dev/null +++ b/.gitlab/ci/env_fedora37_extdeps.sh @@ -0,0 +1 @@ +source .gitlab/ci/env_extdeps_common.sh diff --git a/.gitlab/ci/env_fedora36_makefiles.cmake b/.gitlab/ci/env_fedora37_makefiles.cmake index 2bcb6d0..2bcb6d0 100644 --- a/.gitlab/ci/env_fedora36_makefiles.cmake +++ b/.gitlab/ci/env_fedora37_makefiles.cmake diff --git a/.gitlab/ci/env_fedora36_ninja_multi.sh b/.gitlab/ci/env_fedora37_makefiles.sh index 217ff30..217ff30 100644 --- a/.gitlab/ci/env_fedora36_ninja_multi.sh +++ b/.gitlab/ci/env_fedora37_makefiles.sh diff --git a/.gitlab/ci/env_fedora37_makefiles_clang.sh b/.gitlab/ci/env_fedora37_makefiles_clang.sh new file mode 100644 index 0000000..9ff1d84 --- /dev/null +++ b/.gitlab/ci/env_fedora37_makefiles_clang.sh @@ -0,0 +1 @@ +. .gitlab/ci/env_fedora37_common_clang.sh diff --git a/.gitlab/ci/env_fedora36_ninja.sh b/.gitlab/ci/env_fedora37_ninja.sh index 217ff30..217ff30 100644 --- a/.gitlab/ci/env_fedora36_ninja.sh +++ b/.gitlab/ci/env_fedora37_ninja.sh diff --git a/.gitlab/ci/env_fedora37_ninja_clang.sh b/.gitlab/ci/env_fedora37_ninja_clang.sh new file mode 100644 index 0000000..9ff1d84 --- /dev/null +++ b/.gitlab/ci/env_fedora37_ninja_clang.sh @@ -0,0 +1 @@ +. .gitlab/ci/env_fedora37_common_clang.sh diff --git a/.gitlab/ci/env_fedora36_makefiles.sh b/.gitlab/ci/env_fedora37_ninja_multi.sh index 217ff30..217ff30 100644 --- a/.gitlab/ci/env_fedora36_makefiles.sh +++ b/.gitlab/ci/env_fedora37_ninja_multi.sh diff --git a/.gitlab/ci/env_macos_arm64_ninja.sh b/.gitlab/ci/env_macos_arm64_ninja.sh new file mode 100644 index 0000000..f8d459b --- /dev/null +++ b/.gitlab/ci/env_macos_arm64_ninja.sh @@ -0,0 +1 @@ +. .gitlab/ci/openmp-env.sh diff --git a/.gitlab/ci/env_macos_x86_64_makefiles.sh b/.gitlab/ci/env_macos_x86_64_makefiles.sh index 217ff30..7496372 100644 --- a/.gitlab/ci/env_macos_x86_64_makefiles.sh +++ b/.gitlab/ci/env_macos_x86_64_makefiles.sh @@ -1,3 +1,4 @@ +. .gitlab/ci/openmp-env.sh if test "$CMAKE_CI_NIGHTLY" = "true"; then source .gitlab/ci/ispc-env.sh fi diff --git a/.gitlab/ci/env_macos_x86_64_ninja.sh b/.gitlab/ci/env_macos_x86_64_ninja.sh index 217ff30..7496372 100644 --- a/.gitlab/ci/env_macos_x86_64_ninja.sh +++ b/.gitlab/ci/env_macos_x86_64_ninja.sh @@ -1,3 +1,4 @@ +. .gitlab/ci/openmp-env.sh if test "$CMAKE_CI_NIGHTLY" = "true"; then source .gitlab/ci/ispc-env.sh fi diff --git a/.gitlab/ci/env_mingw_osdn_io_mingw_makefiles.ps1 b/.gitlab/ci/env_mingw_osdn_io_mingw_makefiles.ps1 new file mode 100755 index 0000000..e2d573e --- /dev/null +++ b/.gitlab/ci/env_mingw_osdn_io_mingw_makefiles.ps1 @@ -0,0 +1,3 @@ +$pwdpath = $pwd.Path +& "$pwsh" -File ".gitlab/ci/mingw.ps1" +Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\mingw\bin;$env:PATH" diff --git a/.gitlab/ci/env_mingw_osdn_io_msys_makefiles.ps1 b/.gitlab/ci/env_mingw_osdn_io_msys_makefiles.ps1 new file mode 100755 index 0000000..6eccb72 --- /dev/null +++ b/.gitlab/ci/env_mingw_osdn_io_msys_makefiles.ps1 @@ -0,0 +1,5 @@ +$pwdpath = $pwd.Path +& "$pwsh" -File ".gitlab/ci/mingw.ps1" +Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\mingw\msys\1.0\bin;$pwdpath\.gitlab\mingw\bin;$env:PATH" +$env:MSYSTEM = 'MINGW32' +$env:MAKE_MODE = 'unix' diff --git a/.gitlab/ci/env_nvhpc_ninja.sh b/.gitlab/ci/env_nvhpc_ninja.sh new file mode 100644 index 0000000..687403d --- /dev/null +++ b/.gitlab/ci/env_nvhpc_ninja.sh @@ -0,0 +1,5 @@ +export CC=nvc +export CXX=nvc++ +export FC=nvfortran +export CUDACXX=nvcc +export CUDAHOSTCXX=nvc++ diff --git a/.gitlab/ci/env_windows_clang_common.cmake b/.gitlab/ci/env_windows_clang_common.cmake deleted file mode 100644 index fdd668f..0000000 --- a/.gitlab/ci/env_windows_clang_common.cmake +++ /dev/null @@ -1,7 +0,0 @@ -if("$ENV{CMAKE_CI_BUILD_NAME}" MATCHES "(^|_)gnu(_|$)") - set(ENV{CC} clang) - set(ENV{CXX} clang++) -else() - set(ENV{CC} clang-cl) - set(ENV{CXX} clang-cl) -endif() diff --git a/.gitlab/ci/env_windows_clang_ninja.cmake b/.gitlab/ci/env_windows_clang_ninja.cmake deleted file mode 100644 index f3834a2..0000000 --- a/.gitlab/ci/env_windows_clang_ninja.cmake +++ /dev/null @@ -1 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/env_windows_clang_common.cmake") diff --git a/.gitlab/ci/env_windows_clang_ninja.ps1 b/.gitlab/ci/env_windows_clang_ninja.ps1 new file mode 100755 index 0000000..17002ef --- /dev/null +++ b/.gitlab/ci/env_windows_clang_ninja.ps1 @@ -0,0 +1,2 @@ +. .gitlab/ci/ninja-env.ps1 +. .gitlab/ci/clang-env.ps1 diff --git a/.gitlab/ci/env_windows_clang_nmake.cmake b/.gitlab/ci/env_windows_clang_nmake.cmake deleted file mode 100644 index f3834a2..0000000 --- a/.gitlab/ci/env_windows_clang_nmake.cmake +++ /dev/null @@ -1 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/env_windows_clang_common.cmake") diff --git a/.gitlab/ci/env_windows_clang_nmake.ps1 b/.gitlab/ci/env_windows_clang_nmake.ps1 new file mode 100755 index 0000000..89fa360 --- /dev/null +++ b/.gitlab/ci/env_windows_clang_nmake.ps1 @@ -0,0 +1 @@ +. .gitlab/ci/clang-env.ps1 diff --git a/.gitlab/ci/env_windows_vs2022_x64_ninja.ps1 b/.gitlab/ci/env_windows_vs2022_x64_ninja.ps1 index f8a86c4..a96658d 100755 --- a/.gitlab/ci/env_windows_vs2022_x64_ninja.ps1 +++ b/.gitlab/ci/env_windows_vs2022_x64_ninja.ps1 @@ -1,3 +1,3 @@ if ("$env:CMAKE_CI_NIGHTLY" -eq "true") { - Invoke-Expression ".gitlab/ci/ispc-env.ps1" + . ".gitlab/ci/ispc-env.ps1" } diff --git a/.gitlab/ci/env_windows_vs2022_x64_ninja_multi.ps1 b/.gitlab/ci/env_windows_vs2022_x64_ninja_multi.ps1 index e8d242c..44bb090 100755 --- a/.gitlab/ci/env_windows_vs2022_x64_ninja_multi.ps1 +++ b/.gitlab/ci/env_windows_vs2022_x64_ninja_multi.ps1 @@ -1,10 +1,7 @@ if ("$env:CMAKE_CI_NIGHTLY" -eq "true") { - Invoke-Expression -Command ".gitlab/ci/ispc-env.ps1" + . ".gitlab/ci/ispc-env.ps1" } -$pwdpath = $pwd.Path -powershell -File ".gitlab/ci/ninja.ps1" -Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab;$env:PATH" -ninja --version +. .gitlab/ci/ninja-env.ps1 Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1 diff --git a/.gitlab/ci/extdeps-linux.sh b/.gitlab/ci/extdeps-linux.sh new file mode 100755 index 0000000..f0d4c0d --- /dev/null +++ b/.gitlab/ci/extdeps-linux.sh @@ -0,0 +1,62 @@ +#!/bin/sh + +set -e + +mkdir -p /opt/extdeps/src +cd /opt/extdeps/src +export PATH=/opt/extdeps/bin:$PATH + +#---------------------------------------------------------------------------- +# cmake + +case "$(uname -s)-$(uname -m)" in + Linux-x86_64) + cmake_version="3.13.5" + cmake_sha256sum="e2fd0080a6f0fc1ec84647acdcd8e0b4019770f48d83509e6a5b0b6ea27e5864" + cmake_platform="Linux-x86_64" + ;; + Linux-aarch64) + cmake_version="3.19.8" + cmake_sha256sum="807f5afb2a560e00af9640e496d5673afefc2888bf0ed076412884a5ebb547a1" + cmake_platform="Linux-aarch64" + ;; + *) + echo "Unrecognized platform $(uname -s)-$(uname -m)" + exit 1 + ;; +esac +readonly shatool +readonly cmake_sha256sum +readonly cmake_platform + +readonly cmake_filename="cmake-$cmake_version-$cmake_platform" +readonly cmake_tarball="$cmake_filename.tar.gz" + +echo "$cmake_sha256sum $cmake_tarball" > cmake.sha256sum +curl -OL "https://github.com/Kitware/CMake/releases/download/v$cmake_version/$cmake_tarball" +sha256sum --check cmake.sha256sum +tar xzf "$cmake_tarball" -C /opt/extdeps --strip-components=1 +rm -f "$cmake_tarball" cmake.sha256sum + +#---------------------------------------------------------------------------- +# libuv + +curl -L -o libuv-1.28.0.tar.gz https://github.com/libuv/libuv/archive/refs/tags/v1.28.0.tar.gz +tar xzf libuv-1.28.0.tar.gz +cmake -S libuv-1.28.0 -B libuv-1.28.0-build \ + -DCMAKE_INSTALL_PREFIX=/opt/extdeps +cmake --build libuv-1.28.0-build --target install +rm -rf libuv-1.28.0* + +#---------------------------------------------------------------------------- +# jsoncpp + +curl -L -o jsoncpp-1.6.0.tar.gz https://github.com/open-source-parsers/jsoncpp/archive/refs/tags/1.6.0.tar.gz +tar xzf jsoncpp-1.6.0.tar.gz +cmake -S jsoncpp-1.6.0 -B jsoncpp-1.6.0-build \ + -DCMAKE_BUILD_TYPE=Release \ + -DJSONCPP_LIB_BUILD_STATIC=ON \ + -DJSONCPP_LIB_BUILD_SHARED=ON \ + -DCMAKE_INSTALL_PREFIX=/opt/extdeps +cmake --build jsoncpp-1.6.0-build --target install +rm -rf jsoncpp-1.6.0* diff --git a/.gitlab/ci/ispc-env.ps1 b/.gitlab/ci/ispc-env.ps1 index 1baea31..816c485 100755 --- a/.gitlab/ci/ispc-env.ps1 +++ b/.gitlab/ci/ispc-env.ps1 @@ -1,4 +1,4 @@ $pwdpath = $pwd.Path -powershell -File ".gitlab/ci/ispc.ps1" +& "$pwsh" -File ".gitlab/ci/ispc.ps1" Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\ispc\bin;$env:PATH" ispc --version diff --git a/.gitlab/ci/mingw.ps1 b/.gitlab/ci/mingw.ps1 new file mode 100755 index 0000000..a1b5b11 --- /dev/null +++ b/.gitlab/ci/mingw.ps1 @@ -0,0 +1,25 @@ +$erroractionpreference = "stop" + +if ("$env:CMAKE_CONFIGURATION".Contains("mingw_osdn_io")) { + $filename = "mingw.osdn.io-2022-10-03" + $sha256sum = "4DCB8C351D8D855F7D3DFC2863A235042BF3DB6E69EA0BAE51FF9378189345CD" +} else { + throw ('unknown CMAKE_CONFIGURATION: ' + "$env:CMAKE_CONFIGURATION") +} +$tarball = "$filename.zip" + +$outdir = $pwd.Path +$outdir = "$outdir\.gitlab" +$ProgressPreference = 'SilentlyContinue' +Invoke-WebRequest -Uri "https://cmake.org/files/dependencies/$tarball" -OutFile "$outdir\$tarball" +$hash = Get-FileHash "$outdir\$tarball" -Algorithm SHA256 +if ($hash.Hash -ne $sha256sum) { + exit 1 +} + +Add-Type -AssemblyName System.IO.Compression.FileSystem +[System.IO.Compression.ZipFile]::ExtractToDirectory("$outdir\$tarball", "$outdir") +Move-Item -Path "$outdir\$filename" -Destination "$outdir\mingw" +Remove-Item "$outdir\$tarball" + +"$outdir/mingw /mingw" -replace '\\', '/' | Out-File -FilePath "$outdir\mingw\msys\1.0\etc\fstab" -Encoding ASCII diff --git a/.gitlab/ci/ninja-env.ps1 b/.gitlab/ci/ninja-env.ps1 new file mode 100755 index 0000000..67c7036 --- /dev/null +++ b/.gitlab/ci/ninja-env.ps1 @@ -0,0 +1,4 @@ +$pwdpath = $pwd.Path +& "$pwsh" -File ".gitlab/ci/ninja.ps1" +Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab;$env:PATH" +Write-Host "ninja version: $(ninja --version)" diff --git a/.gitlab/ci/openmp-env.sh b/.gitlab/ci/openmp-env.sh new file mode 100644 index 0000000..82dac5b --- /dev/null +++ b/.gitlab/ci/openmp-env.sh @@ -0,0 +1,3 @@ +.gitlab/ci/openmp.sh +export CMAKE_PREFIX_PATH=$PWD/.gitlab/openmp${CMAKE_PREFIX_PATH:+:$CMAKE_PREFIX_PATH} +export DYLD_LIBRARY_PATH=$PWD/.gitlab/openmp/lib${DYLD_LIBRARY_PATH:+:$DYLD_LIBRARY_PATH} diff --git a/.gitlab/ci/openmp.sh b/.gitlab/ci/openmp.sh new file mode 100755 index 0000000..f411338 --- /dev/null +++ b/.gitlab/ci/openmp.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +set -e + +baseurl="https://cmake.org/files/dependencies/openmp" + +case "$(uname -s)-$(uname -m)" in + Darwin-*) + shatool="shasum -a 256" + sha256sum="6eef660db7a085a04f87e4aac79da9f37d26ff0fb17c8781d3a21bd5244997e9" + filename="openmp-12.0.1-darwin20-Release" + # tarball contains usr/local/ + strip_components=--strip-components=2 + ;; + *) + echo "Unrecognized platform $(uname -s)-$(uname -m)" + exit 1 + ;; +esac +readonly shatool +readonly sha256sum + +readonly tarball="$filename.tar.gz" + +cd .gitlab +mkdir -p openmp + +echo "$sha256sum $tarball" > openmp.sha256sum +curl -OL "$baseurl/$tarball" +$shatool --check openmp.sha256sum +tar -C openmp $strip_components -xzf $tarball +rm $tarball openmp.sha256sum diff --git a/.gitlab/ci/post_build.sh b/.gitlab/ci/post_build.sh new file mode 100755 index 0000000..0edd9f6 --- /dev/null +++ b/.gitlab/ci/post_build.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +set -e + +quietly() { + readonly log="/tmp/quietly-$RANDOM.log" + if ! "$@" >"$log" 2>&1; then + ret=$? + cat "$log" + rm -f "$log" + exit $ret + fi + rm -f "$log" +} + +if test -r ".gitlab/ci/post_build_${CMAKE_CONFIGURATION}.sh"; then + source ".gitlab/ci/post_build_${CMAKE_CONFIGURATION}.sh" +fi diff --git a/.gitlab/ci/pre_build.sh b/.gitlab/ci/pre_build.sh new file mode 100755 index 0000000..7ff6a69 --- /dev/null +++ b/.gitlab/ci/pre_build.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +set -e + +quietly() { + readonly log="/tmp/quietly-$RANDOM.log" + if ! "$@" >"$log" 2>&1; then + ret=$? + cat "$log" + rm -f "$log" + exit $ret + fi + rm -f "$log" +} + +if test -r ".gitlab/ci/pre_build_${CMAKE_CONFIGURATION}.sh"; then + source ".gitlab/ci/pre_build_${CMAKE_CONFIGURATION}.sh" +fi diff --git a/.gitlab/ci/pre_build_fedora37_tidy.sh b/.gitlab/ci/pre_build_fedora37_tidy.sh new file mode 100644 index 0000000..7580ef1 --- /dev/null +++ b/.gitlab/ci/pre_build_fedora37_tidy.sh @@ -0,0 +1,9 @@ +cmake \ + -G Ninja \ + -S Utilities/ClangTidyModule \ + -B Utilities/ClangTidyModule/build \ + -DCMAKE_BUILD_TYPE=Release \ + -DRUN_TESTS=ON \ + -DCMAKE_CXX_COMPILER_LAUNCHER=sccache +cmake --build Utilities/ClangTidyModule/build +ctest --test-dir Utilities/ClangTidyModule/build --output-on-failure diff --git a/.gitlab/ci/python-env.ps1 b/.gitlab/ci/python-env.ps1 new file mode 100755 index 0000000..4e897d8 --- /dev/null +++ b/.gitlab/ci/python-env.ps1 @@ -0,0 +1,4 @@ +$pwdpath = $pwd.Path +cmake -P .gitlab/ci/download_python3.cmake +Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\python3;$env:PATH" +python --version diff --git a/.gitlab/ci/qt-env.ps1 b/.gitlab/ci/qt-env.ps1 new file mode 100755 index 0000000..7eff55f --- /dev/null +++ b/.gitlab/ci/qt-env.ps1 @@ -0,0 +1,10 @@ +if ("$env:PROCESSOR_ARCHITECTURE" -eq "AMD64") { + $pwdpath = $pwd.Path + cmake -P .gitlab/ci/download_qt.cmake + Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\qt\bin;$env:PATH" + qmake -v +} elseif ("$env:PROCESSOR_ARCHITECTURE" -eq "ARM64") { + # Qt host tools are not yet available natively on windows-arm64. +} else { + throw ('unknown PROCESSOR_ARCHITECTURE: ' + "$env:PROCESSOR_ARCHITECTURE") +} diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml index 12fbc1e..0b8aad9 100644 --- a/.gitlab/os-linux.yml +++ b/.gitlab/os-linux.yml @@ -5,7 +5,7 @@ ### Release .linux_prep_source: - image: "fedora:36" + image: "fedora:37" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" @@ -45,7 +45,7 @@ ### Debian .debian10: - image: "kitware/cmake:ci-debian10-x86_64-2022-06-21" + image: "kitware/cmake:ci-debian10-x86_64-2022-08-30" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" @@ -60,7 +60,7 @@ CMAKE_CI_NO_INSTALL: 1 .debian10_aarch64: - image: "kitware/cmake:ci-debian10-aarch64-2022-06-21" + image: "kitware/cmake:ci-debian10-aarch64-2022-08-30" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" @@ -68,8 +68,8 @@ ### Fedora -.fedora36: - image: "kitware/cmake:ci-fedora36-x86_64-2022-06-21" +.fedora37: + image: "kitware/cmake:ci-fedora37-x86_64-2022-11-16" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes" @@ -77,37 +77,37 @@ #### Lint builds -.fedora36_tidy: - extends: .fedora36 +.fedora37_tidy: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_tidy + CMAKE_CONFIGURATION: fedora37_tidy CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_CI_NO_INSTALL: 1 -.fedora36_clang_analyzer: - extends: .fedora36 +.fedora37_clang_analyzer: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_clang_analyzer + CMAKE_CONFIGURATION: fedora37_clang_analyzer CMAKE_CI_BUILD_TYPE: Debug CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_CI_NO_INSTALL: 1 -.fedora36_sphinx: - extends: .fedora36 +.fedora37_sphinx: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_sphinx + CMAKE_CONFIGURATION: fedora37_sphinx CTEST_NO_WARNINGS_ALLOWED: 1 CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx" CMAKE_CI_NO_INSTALL: 1 -.fedora36_sphinx_package: - extends: .fedora36 +.fedora37_sphinx_package: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_sphinx_package + CMAKE_CONFIGURATION: fedora37_sphinx_package CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx" #### Build and test @@ -137,27 +137,51 @@ CMAKE_CI_NO_INSTALL: 1 CTEST_NO_WARNINGS_ALLOWED: 1 -.fedora36_ninja: - extends: .fedora36 +.debian10_extdeps: + extends: .debian10 + + variables: + CMAKE_CONFIGURATION: debian10_extdeps + CMAKE_CI_BUILD_TYPE: Release + CTEST_NO_WARNINGS_ALLOWED: 1 + +.debian10_aarch64_extdeps: + extends: .debian10_aarch64 + + variables: + CMAKE_CONFIGURATION: debian10_aarch64_extdeps + CMAKE_CI_BUILD_TYPE: Release + CTEST_NO_WARNINGS_ALLOWED: 1 + +.fedora37_extdeps: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_ninja + CMAKE_CONFIGURATION: fedora37_extdeps CMAKE_CI_BUILD_TYPE: Release CTEST_NO_WARNINGS_ALLOWED: 1 -.fedora36_ninja_multi: - extends: .fedora36 +.fedora37_ninja: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_ninja_multi + CMAKE_CONFIGURATION: fedora37_ninja + CMAKE_CI_BUILD_TYPE: Release + CTEST_NO_WARNINGS_ALLOWED: 1 + +.fedora37_ninja_multi: + extends: .fedora37 + + variables: + CMAKE_CONFIGURATION: fedora37_ninja_multi CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_GENERATOR: "Ninja Multi-Config" -.fedora36_makefiles: - extends: .fedora36 +.fedora37_makefiles: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_makefiles + CMAKE_CONFIGURATION: fedora37_makefiles CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_GENERATOR: "Unix Makefiles" @@ -176,6 +200,19 @@ variables: CMAKE_CONFIGURATION: debian10_ninja_clang +.fedora37_makefiles_clang: + extends: .fedora37 + + variables: + CMAKE_CONFIGURATION: fedora37_makefiles_clang + CMAKE_GENERATOR: "Unix Makefiles" + +.fedora37_ninja_clang: + extends: .fedora37 + + variables: + CMAKE_CONFIGURATION: fedora37_ninja_clang + ### Sanitizers .fedora_memcheck: @@ -189,13 +226,13 @@ CTEST_MEMORYCHECK_TYPE: AddressSanitizer CTEST_MEMORYCHECK_SANITIZER_OPTIONS: "" -.fedora36_asan: +.fedora37_asan: extends: - - .fedora36 + - .fedora37 - .fedora_asan_addon variables: - CMAKE_CONFIGURATION: fedora36_asan + CMAKE_CONFIGURATION: fedora37_asan ### Intel Compiler @@ -218,70 +255,86 @@ CMAKE_CONFIGURATION: inteloneapi_makefiles CMAKE_GENERATOR: "Unix Makefiles" -### CUDA builds +### NVHPC Compiler -.cuda9.2: - image: "kitware/cmake:ci-cuda9.2-x86_64-2021-10-01" +.nvhpc: + image: "kitware/cmake:ci-nvhpc22.11-x86_64-2022-12-06" + variables: + CMAKE_ARCH: x86_64 + +.nvhpc_ninja: + extends: .nvhpc + variables: + CMAKE_CONFIGURATION: nvhpc_ninja + +### CUDA builds +.cuda: variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" - CMAKE_ARCH: x86_64 CTEST_LABELS: "CUDA" CMAKE_CUDA_ARCHITECTURES_NATIVE_CLAMP: 1 +.cuda9.2: + extends: .cuda + image: "kitware/cmake:ci-cuda9.2-x86_64-2021-10-01" + variables: + CMAKE_ARCH: x86_64 + .cuda9.2_nvidia: extends: .cuda9.2 - variables: CMAKE_CONFIGURATION: cuda9.2_nvidia CMAKE_GENERATOR: "Ninja Multi-Config" .cuda10.2: + extends: .cuda image: "kitware/cmake:ci-cuda10.2-x86_64-2021-06-16" - variables: - GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" CMAKE_ARCH: x86_64 - CTEST_LABELS: "CUDA" - CMAKE_CUDA_ARCHITECTURES_NATIVE_CLAMP: 1 .cuda10.2_nvidia: extends: .cuda10.2 - variables: CMAKE_CONFIGURATION: cuda10.2_nvidia CTEST_NO_WARNINGS_ALLOWED: 1 .cuda10.2_clang: extends: .cuda10.2 - variables: CMAKE_CONFIGURATION: cuda10.2_clang CTEST_NO_WARNINGS_ALLOWED: 1 .cuda11.6: + extends: .cuda image: "kitware/cmake:ci-cuda11.6-x86_64-2022-02-28" - variables: - GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" CMAKE_ARCH: x86_64 - CTEST_LABELS: "CUDA" - CMAKE_CUDA_ARCHITECTURES_NATIVE_CLAMP: 1 .cuda11.6_nvidia: extends: .cuda11.6 - variables: CMAKE_CONFIGURATION: cuda11.6_nvidia CTEST_NO_WARNINGS_ALLOWED: 1 .cuda11.6_clang: extends: .cuda11.6 - variables: CMAKE_CONFIGURATION: cuda11.6_clang CTEST_NO_WARNINGS_ALLOWED: 1 +.cuda11.8_minimal: + extends: .cuda + image: "kitware/cmake:ci-cuda11.8-minimal-x86_64-2022-12-06" + variables: + CMAKE_ARCH: x86_64 + +.cuda11.8_minimal_nvidia: + extends: .cuda11.8_minimal + variables: + CMAKE_CONFIGURATION: cuda11.8_minimal_nvidia + CTEST_NO_WARNINGS_ALLOWED: 1 + ### HIP builds .hip4.2: @@ -299,59 +352,95 @@ CMAKE_CONFIGURATION: hip4.2_radeon CMAKE_GENERATOR: "Ninja Multi-Config" -## Tags +### C++ modules -.linux_builder_tags: - tags: - - cmake - - build - - docker - - linux +.gcc_cxx_modules_x86_64: + image: "kitware/cmake:ci-gcc_cxx_modules-x86_64-2022-06-21" + + variables: + GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" + CMAKE_ARCH: x86_64 + CC: "/opt/gcc-p1689/bin/gcc" + CXX: "/opt/gcc-p1689/bin/g++" + +.gcc_cxx_modules_ninja: + extends: .gcc_cxx_modules_x86_64 + + variables: + CMAKE_CONFIGURATION: linux_gcc_cxx_modules_ninja -.linux_builder_tags_qt: +.gcc_cxx_modules_ninja_multi: + extends: .gcc_cxx_modules_x86_64 + + variables: + CMAKE_CONFIGURATION: linux_gcc_cxx_modules_ninja_multi + CMAKE_GENERATOR: "Ninja Multi-Config" + +.clang_cxx_modules_x86_64: + image: "kitware/cmake:ci-clang_cxx_modules-x86_64-2022-12-02" + + variables: + GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" + CMAKE_ARCH: x86_64 + CC: "/opt/llvm-p1689/bin/clang" + CXX: "/opt/llvm-p1689/bin/clang++" + +.clang_cxx_modules_ninja: + extends: .clang_cxx_modules_x86_64 + + variables: + CMAKE_CONFIGURATION: linux_clang_cxx_modules_ninja + +.clang_cxx_modules_ninja_multi: + extends: .clang_cxx_modules_x86_64 + + variables: + CMAKE_CONFIGURATION: linux_clang_cxx_modules_ninja_multi + CMAKE_GENERATOR: "Ninja Multi-Config" + +## Tags + +.linux_x86_64_tags: tags: - cmake - build - docker - - linux - - linux-3.17 # Needed to be able to load Fedora's Qt libraries. + - linux-x86_64 -.linux_builder_tags_x11: +.linux_x86_64_tags_x11: tags: - cmake - docker - - linux - - linux-3.17 # Needed to be able to load Fedora's Qt libraries. + - linux-x86_64 - x11 -.linux_builder_tags_cuda: +.linux_x86_64_tags_cuda: tags: - cmake - cuda-rt - docker - - linux + - linux-x86_64 -.linux_builder_tags_radeon: +.linux_x86_64_v3_tags_cuda: tags: - cmake - - radeon + - cuda-rt - docker - - linux + - linux-x86_64-v3 -.linux_builder_tags_aarch64: +.linux_x86_64_tags_radeon: tags: - cmake - - build + - radeon - docker - - linux-aarch64 + - linux-x86_64 -.linux_builder_tags_aarch64_qt: +.linux_aarch64_tags: tags: - cmake - build - docker - linux-aarch64 - - linux-3.17 # Needed to be able to load Fedora's Qt libraries. ## Linux-specific scripts @@ -389,9 +478,9 @@ .cmake_codespell_linux: stage: build - extends: .fedora36 + extends: .fedora37 script: - - codespell + - .gitlab/ci/codespell.sh interruptible: true .cmake_build_linux: @@ -402,8 +491,10 @@ - .gitlab/ci/sccache.sh - sccache --start-server - sccache --show-stats + - .gitlab/ci/pre_build.sh - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_configure.cmake" - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_build.cmake" + - .gitlab/ci/post_build.sh - sccache --show-stats interruptible: true @@ -457,7 +548,7 @@ # use the scripts here. - "$LAUNCHER make -j$(nproc)" # NOTE: This regex matches that used in the release build. - - "$LAUNCHER bin/ctest --output-on-failure -j$(nproc) -R '^(CMake\\.|CMakeLib\\.|CMakeServerLib\\.|RunCMake\\.ctest_memcheck)'" + - "$LAUNCHER bin/ctest --output-on-failure -j$(nproc) -R '^(CMake\\.|CMakeLib\\.|RunCMake\\.ctest_memcheck)'" # Make a package. - bin/cpack -G TGZ - bin/cpack -G STGZ @@ -511,7 +602,7 @@ extends: - .intelclassic_makefiles - .cmake_test_linux_release - - .linux_builder_tags_qt + - .linux_x86_64_tags - .run_manually - .needs_centos6_x86_64 variables: @@ -521,7 +612,7 @@ extends: - .inteloneapi_makefiles - .cmake_test_linux_release - - .linux_builder_tags_qt + - .linux_x86_64_tags - .run_manually - .needs_centos6_x86_64 variables: @@ -532,8 +623,8 @@ .cmake_org_help: stage: build extends: - - .fedora36 - - .linux_builder_tags + - .fedora37 + - .linux_x86_64_tags - .cmake_org_help_artifacts script: - *before_script_linux diff --git a/.gitlab/os-macos.yml b/.gitlab/os-macos.yml index 9971e4e..9cdc8d4 100644 --- a/.gitlab/os-macos.yml +++ b/.gitlab/os-macos.yml @@ -90,32 +90,32 @@ ## Tags -.macos_x86_64_builder_tags: +.macos_x86_64_tags: tags: - cmake # Since this is a bare runner, pin to a project. - - macos + - macos-x86_64 - shell - xcode-14.2 - nonconcurrent -.macos_x86_64_builder_tags_package: +.macos_x86_64_tags_package: tags: - cmake # Since this is a bare runner, pin to a project. - - macos + - macos-x86_64 - shell - xcode-14.2 - nonconcurrent - finder -.macos_x86_64_builder_ext_tags: +.macos_x86_64_tags_ext: tags: - cmake # Since this is a bare runner, pin to a project. - - macos + - macos-x86_64 - shell - xcode-14.2 - concurrent -.macos_arm64_builder_tags: +.macos_arm64_tags: tags: - cmake # Since this is a bare runner, pin to a project. - macos-arm64 @@ -123,7 +123,7 @@ - xcode-14.2 - nonconcurrent -.macos_arm64_builder_ext_tags: +.macos_arm64_tags_ext: tags: - cmake # Since this is a bare runner, pin to a project. - macos-arm64 @@ -143,7 +143,7 @@ - ninja --version # Download Qt - cmake -P .gitlab/ci/download_qt.cmake - - export CMAKE_PREFIX_PATH=$PWD/.gitlab/qt + - export CMAKE_PREFIX_PATH=$PWD/.gitlab/qt${CMAKE_PREFIX_PATH:+:$CMAKE_PREFIX_PATH} .cmake_build_macos: stage: build diff --git a/.gitlab/os-windows.yml b/.gitlab/os-windows.yml index 282cf1e..22d731a 100644 --- a/.gitlab/os-windows.yml +++ b/.gitlab/os-windows.yml @@ -35,31 +35,25 @@ variables: VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat" VCVARSPLATFORM: "x64" - VCVARSVERSION: "14.33.31629" + VCVARSVERSION: "14.34.31933" .windows_vcvarsall_vs2022_x86: variables: VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat" VCVARSPLATFORM: "x86" - VCVARSVERSION: "14.33.31629" + VCVARSVERSION: "14.34.31933" -.windows_vcvarsall_vs2022_x64_package: +.windows_vcvarsall_vs2022_x64_arm64: variables: VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat" - VCVARSPLATFORM: "x64" - VCVARSVERSION: "14.32.31326" - -.windows_vcvarsall_vs2022_x86_package: - variables: - VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat" - VCVARSPLATFORM: "x86" - VCVARSVERSION: "14.32.31326" + VCVARSPLATFORM: "x64_arm64" + VCVARSVERSION: "14.34.31933" -.windows_vcvarsall_vs2022_x64_arm64_package: +.windows_arm64_vcvarsall_vs2022: variables: VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat" - VCVARSPLATFORM: "x64_arm64" - VCVARSVERSION: "14.32.31326" + VCVARSPLATFORM: "arm64" + VCVARSVERSION: "14.34.31933" .windows_vs2022_x64_ninja: extends: @@ -69,6 +63,14 @@ variables: CMAKE_CONFIGURATION: windows_vs2022_x64_ninja +.windows_arm64_vs2022_ninja: + extends: + - .windows_build_ninja + - .windows_arm64_vcvarsall_vs2022 + + variables: + CMAKE_CONFIGURATION: windows_arm64_vs2022_ninja + .windows_package: extends: - .windows_build_ninja @@ -80,7 +82,7 @@ .windows_x86_64_package: extends: - .windows_package - - .windows_vcvarsall_vs2022_x64_package + - .windows_vcvarsall_vs2022_x64 variables: CMAKE_CONFIGURATION: windows_x86_64_package @@ -88,7 +90,7 @@ .windows_i386_package: extends: - .windows_package - - .windows_vcvarsall_vs2022_x86_package + - .windows_vcvarsall_vs2022_x86 variables: CMAKE_CONFIGURATION: windows_i386_package @@ -96,7 +98,7 @@ .windows_arm64_package: extends: - .windows_package - - .windows_vcvarsall_vs2022_x64_arm64_package + - .windows_vcvarsall_vs2022_x64_arm64 variables: CMAKE_CONFIGURATION: windows_arm64_package @@ -110,7 +112,7 @@ CMAKE_CONFIGURATION: windows_vs2022_x64 CMAKE_GENERATOR: "Visual Studio 17 2022" CMAKE_GENERATOR_PLATFORM: "x64" - CMAKE_GENERATOR_TOOLSET: "v143,version=14.33.31629" + CMAKE_GENERATOR_TOOLSET: "v143,version=14.34.31933" CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" .windows_vs2019_x64: @@ -236,79 +238,116 @@ variables: CMAKE_CONFIGURATION: windows_openwatcom1.9 +.windows_arm64_vs2022: + extends: .windows + + variables: + CMAKE_CONFIGURATION: windows_arm64_vs2022 + CMAKE_GENERATOR: "Visual Studio 17 2022" + CMAKE_GENERATOR_PLATFORM: "ARM64" + CMAKE_GENERATOR_TOOLSET: "v143,version=14.34.31933" + CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" + +.mingw_osdn_io: + extends: .windows + + variables: + # Place MinGW environment in a path without spaces. + GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake-ci-ext\\$CI_CONCURRENT_ID" + CMAKE_CI_BUILD_TYPE: Debug + CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" + +.mingw_osdn_io_mingw_makefiles: + extends: .mingw_osdn_io + + variables: + CMAKE_CONFIGURATION: mingw_osdn_io_mingw_makefiles + CMAKE_GENERATOR: "MinGW Makefiles" + +.mingw_osdn_io_msys_makefiles: + extends: .mingw_osdn_io + + variables: + CMAKE_CONFIGURATION: mingw_osdn_io_msys_makefiles + CMAKE_GENERATOR: "MSYS Makefiles" + ## Tags -.windows_tags_nonconcurrent_vs2022: +.windows_x86_64_tags_nonconcurrent_vs2022: + tags: + - cmake # Since this is a bare runner, pin to a project. + - windows-x86_64 + - shell + - vs2022 + - msvc-19.34 + - nonconcurrent + +.windows_x86_64_tags_nonconcurrent_vs2022_arm64: tags: - cmake # Since this is a bare runner, pin to a project. - - windows + - windows-x86_64 - shell - vs2022 - - msvc-19.33 + - msvc-19.34-arm64 - nonconcurrent -.windows_tags_concurrent_vs2022: +.windows_x86_64_tags_concurrent_vs2022: tags: - cmake # Since this is a bare runner, pin to a project. - - windows + - windows-x86_64 - shell - vs2022 - - msvc-19.33 + - msvc-19.34 - concurrent -.windows_tags_concurrent_vs2019: +.windows_x86_64_tags_concurrent_vs2019: tags: - cmake # Since this is a bare runner, pin to a project. - - windows + - windows-x86_64 - shell - vs2019 - msvc-19.29-16.11 - concurrent -.windows_tags_concurrent: +.windows_x86_64_tags_concurrent: tags: - cmake # Since this is a bare runner, pin to a project. - - windows + - windows-x86_64 - shell - concurrent -.windows_tags_x86_64_package: +.windows_arm64_tags_nonconcurrent_vs2022: tags: - cmake # Since this is a bare runner, pin to a project. - - windows + - windows-arm64 - shell - vs2022 - - msvc-19.32 + - msvc-19.34 - nonconcurrent -.windows_tags_arm64_package: +.windows_arm64_tags_concurrent_vs2022: tags: - cmake # Since this is a bare runner, pin to a project. - - windows + - windows-arm64 - shell - vs2022 - - msvc-19.32-arm64 - - nonconcurrent + - msvc-19.34 + - concurrent ## Windows-specific scripts .before_script_windows: &before_script_windows - - Invoke-Expression -Command .gitlab/ci/env.ps1 + - . .gitlab/ci/env.ps1 - $pwdpath = $pwd.Path - - powershell -File ".gitlab/ci/wix.ps1" + - (& "$pwsh" -File ".gitlab/ci/wix.ps1") - Set-Item -Force -Path "env:WIX" -Value "$pwdpath\.gitlab\wix" - - powershell -File ".gitlab/ci/cmake.ps1" + - (& "$pwsh" -File ".gitlab/ci/cmake.ps1") - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\cmake\bin;$env:PATH" - - powershell -File ".gitlab/ci/ninja.ps1" - - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab;$env:PATH" + - . .gitlab/ci/ninja-env.ps1 - (& "$env:WIX\bin\light.exe" -help) | Select -First 1 - cmake --version - - ninja --version - - cmake -P .gitlab/ci/download_qt.cmake - - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\qt\bin;$env:PATH" - - cmake -P .gitlab/ci/download_python3.cmake - - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\python3;$env:PATH" - - python --version + - . .gitlab/ci/qt-env.ps1 + - . .gitlab/ci/python-env.ps1 .cmake_build_windows: stage: build @@ -352,7 +391,7 @@ stage: test-ext script: - - Invoke-Expression -Command .gitlab/ci/env.ps1 + - . .gitlab/ci/env.ps1 - build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake interruptible: true @@ -361,6 +400,7 @@ stage: test-ext script: + - . .gitlab/ci/env.ps1 - Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1 - build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake @@ -370,6 +410,7 @@ stage: test-ext script: + - . .gitlab/ci/env.ps1 - Invoke-Expression -Command .gitlab/ci/jom.ps1 - $pwdpath = $pwd.Path - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\jom;$env:PATH" @@ -382,6 +423,7 @@ stage: test-ext script: + - . .gitlab/ci/env.ps1 - Invoke-Expression -Command .gitlab/ci/borland.ps1 - $pwdpath = $pwd.Path - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\bcc\bin;$env:PATH" @@ -389,24 +431,11 @@ interruptible: true -.cmake_test_windows_clang: - stage: test-ext - - script: - - $pwdpath = $pwd.Path - - powershell -File ".gitlab/ci/ninja.ps1" - - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab;$env:PATH" - - Invoke-Expression -Command .gitlab/ci/clang.ps1 - - Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1 - - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\llvm\bin;$env:PATH" - - build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake - - interruptible: true - .cmake_test_windows_msvc: stage: test-ext script: + - . .gitlab/ci/env.ps1 - Invoke-Expression -Command .gitlab/ci/msvc.ps1 - Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1 - build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake @@ -417,6 +446,7 @@ stage: test-ext script: + - . .gitlab/ci/env.ps1 - Invoke-Expression -Command .gitlab/ci/openwatcom.ps1 - $pwdpath = $pwd.Path - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\watcom\binnt;$pwdpath\.gitlab\watcom\binw;$env:PATH" diff --git a/.gitlab/upload.yml b/.gitlab/upload.yml index 38d40a9..745b078 100644 --- a/.gitlab/upload.yml +++ b/.gitlab/upload.yml @@ -1,12 +1,12 @@ # Steps for uploading artifacts .rsync_upload_package: - image: "fedora:36" + image: "fedora:37" stage: upload tags: - cmake - docker - - linux + - linux-x86_64 - build environment: name: rsync-upload @@ -21,11 +21,11 @@ .rsync_upload_help: stage: upload - image: "fedora:36" + image: "fedora:37" tags: - cmake - docker - - linux + - linux-x86_64 - build environment: name: rsync-upload |