diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index afa01819e..36f592644 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -22,7 +22,7 @@ jobs: - name: Build scan_benchmark run: | - pixi run cmake-config RelWithDebInfo ON + pixi run cmake-config RelWithDebInfo ON "-DCLICE_ENABLE_BENCHMARK=ON" cmake --build build/RelWithDebInfo --target scan_benchmark - name: Clone LLVM @@ -39,3 +39,7 @@ jobs: - name: Run benchmark run: ./build/RelWithDebInfo/bin/scan_benchmark --runs 20 llvm-build/compile_commands.json + + - name: Stop sccache server + if: runner.os == 'Windows' + run: pixi run -- sccache --stop-server || true diff --git a/.github/workflows/test-cmake.yml b/.github/workflows/test-cmake.yml index 6d0f455a6..786005581 100644 --- a/.github/workflows/test-cmake.yml +++ b/.github/workflows/test-cmake.yml @@ -3,6 +3,15 @@ name: cmake on: workflow_call: +env: + CCACHE_DIR: ${{ github.workspace }}/.cache/ccache + SCCACHE_DIR: ${{ github.workspace }}/.cache/sccache + CCACHE_BASEDIR: ${{ github.workspace }} + SCCACHE_BASEDIRS: ${{ github.workspace }} + CCACHE_COMPILERCHECK: content + CCACHE_MAXSIZE: 2G + SCCACHE_CACHE_SIZE: 2G + jobs: build: strategy: @@ -17,6 +26,24 @@ jobs: - uses: ./.github/actions/setup-pixi + - name: Restore compiler cache + uses: actions/cache@v4 + with: + path: ${{ runner.os == 'Windows' && '.cache/sccache' || '.cache/ccache' }} + key: ${{ runner.os }}-${{ matrix.build_type }}-ccache-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-${{ matrix.build_type }}-ccache- + + - name: Zero cache stats + run: | + if [ "$RUNNER_OS" = "Windows" ]; then + pixi run -- sccache --stop-server || true + pixi run -- sccache --zero-stats || true + else + pixi run -- ccache --zero-stats || true + fi + shell: bash + - name: Build run: pixi run build ${{ matrix.build_type }} ON @@ -25,3 +52,14 @@ jobs: - name: Integration Test run: pixi run integration-test ${{ matrix.build_type }} + + - name: Print cache stats and stop server + if: always() + run: | + if [ "$RUNNER_OS" = "Windows" ]; then + pixi run -- sccache --show-stats + pixi run -- sccache --stop-server || true + else + pixi run -- ccache --show-stats + fi + shell: bash diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ee13c540..e0955720b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,14 +13,45 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") option(CLICE_ENABLE_LTO "Enable ThinLTO for all targets" OFF) +option(CLICE_USE_LIBCXX "Use libc++ instead of libstdc++" OFF) +option(CLICE_OFFLINE_BUILD "Disable network downloads during configuration" OFF) +option(CLICE_ENABLE_TEST "Build unit tests" OFF) +option(CLICE_CI_ENVIRONMENT "Enable CI-specific configuration" OFF) +option(CLICE_ENABLE_BENCHMARK "Build benchmarks" OFF) +option(CLICE_RELEASE "Enable release packaging (LTO + strip + pack)" OFF) + +# Global flags that apply to all targets (including FetchContent dependencies). +if(NOT MSVC) + add_compile_options(-ffunction-sections -fdata-sections) +endif() + +if(APPLE) + # https://conda-forge.org/docs/maintainer/knowledge_base/#newer-c-features-with-old-sdk + add_compile_definitions(_LIBCPP_DISABLE_AVAILABILITY=1) +endif() + +if(MSVC OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND + CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")) + string(APPEND CMAKE_EXE_LINKER_FLAGS " -Wl,/OPT:REF") + string(APPEND CMAKE_SHARED_LINKER_FLAGS " -Wl,/OPT:REF") +elseif(APPLE) + string(APPEND CMAKE_EXE_LINKER_FLAGS " -Wl,-dead_strip") + string(APPEND CMAKE_SHARED_LINKER_FLAGS " -Wl,-dead_strip") +else() + string(APPEND CMAKE_EXE_LINKER_FLAGS " -static-libstdc++ -static-libgcc -Wl,--gc-sections") + string(APPEND CMAKE_SHARED_LINKER_FLAGS " -Wl,--gc-sections") +endif() -# Make sure all third libraries are affected by ABI related options if(CLICE_USE_LIBCXX) string(APPEND CMAKE_CXX_FLAGS " -stdlib=libc++") string(APPEND CMAKE_EXE_LINKER_FLAGS " -stdlib=libc++") string(APPEND CMAKE_SHARED_LINKER_FLAGS " -stdlib=libc++") endif() +if(CLICE_RELEASE) + set(CLICE_ENABLE_LTO ON) +endif() + if(CLICE_ENABLE_LTO) string(APPEND CMAKE_C_FLAGS " -flto=thin") string(APPEND CMAKE_CXX_FLAGS " -flto=thin") @@ -33,7 +64,6 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_compile_options(-fsanitize=address) if(CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") - # clang-cl (MSVC frontend): manually link ASan runtime. execute_process( COMMAND ${CMAKE_CXX_COMPILER} --print-resource-dir OUTPUT_VARIABLE CLANG_RESOURCE_DIR @@ -47,81 +77,50 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug") list(APPEND ASAN_LINK_FLAGS "/wholearchive:clang_rt.asan_dynamic_runtime_thunk-x86_64.lib") foreach(flag ${ASAN_LINK_FLAGS}) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${flag}") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${flag}") - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${flag}") + string(APPEND CMAKE_EXE_LINKER_FLAGS " ${flag}") + string(APPEND CMAKE_SHARED_LINKER_FLAGS " ${flag}") + string(APPEND CMAKE_MODULE_LINKER_FLAGS " ${flag}") endforeach() else() - # GNU frontend (clang++/gcc): -fsanitize=address handles linking automatically. string(APPEND CMAKE_EXE_LINKER_FLAGS " -fsanitize=address") string(APPEND CMAKE_SHARED_LINKER_FLAGS " -fsanitize=address") endif() if(WIN32) - # Disable Identical COMDAT Folding in Debug to avoid ASan ODR false positives. string(APPEND CMAKE_EXE_LINKER_FLAGS " -Wl,/OPT:NOICF") string(APPEND CMAKE_SHARED_LINKER_FLAGS " -Wl,/OPT:NOICF") endif() endif() -if(APPLE) - # https://conda-forge.org/docs/maintainer/knowledge_base/#newer-c-features-with-old-sdk - string(APPEND CMAKE_CXX_FLAGS " -D_LIBCPP_DISABLE_AVAILABILITY=1") -endif() - include("${PROJECT_SOURCE_DIR}/cmake/package.cmake") +# Project-specific options (not applied to third-party deps). add_library(clice_options INTERFACE) -if(CLICE_ENABLE_TEST) - target_compile_definitions(clice_options INTERFACE CLICE_ENABLE_TEST=1) -endif() - -if(CLICE_CI_ENVIRONMENT) - target_compile_definitions(clice_options INTERFACE CLICE_CI_ENVIRONMENT=1) -endif() - -if(WIN32) - target_link_libraries(clice_options INTERFACE version ntdll) -endif() - -if(WIN32) - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL") - target_link_options(clice_options INTERFACE - -fuse-ld=lld-link - -Wl,/OPT:REF - #,/OPT:NOICF - ) -elseif(APPLE) - target_link_options(clice_options INTERFACE - -fuse-ld=lld - -Wl,-dead_strip - ) -elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") - target_link_options(clice_options INTERFACE - -fuse-ld=lld - -static-libstdc++ -static-libgcc - -Wl,--gc-sections - ) -endif() - if(MSVC OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")) - target_compile_options(clice_options INTERFACE - /GR- - /EHsc- - /Zc:preprocessor - ) + target_compile_options(clice_options INTERFACE /GR- /EHs-c- /Zc:preprocessor) else() target_compile_options(clice_options INTERFACE -fno-rtti + -fno-exceptions -Wno-deprecated-declarations - -ffunction-sections - -fdata-sections $<$:-Wno-undefined-inline> ) endif() +if(WIN32) + target_link_libraries(clice_options INTERFACE version ntdll) +endif() + +if(CLICE_ENABLE_TEST) + target_compile_definitions(clice_options INTERFACE CLICE_ENABLE_TEST=1) +endif() + +if(CLICE_CI_ENVIRONMENT) + target_compile_definitions(clice_options INTERFACE CLICE_CI_ENVIRONMENT=1) +endif() + set(FBS_SCHEMA_FILE "${PROJECT_SOURCE_DIR}/src/index/schema.fbs") set(GENERATED_HEADER "${PROJECT_BINARY_DIR}/generated/schema_generated.h") @@ -134,53 +133,8 @@ add_custom_command( add_custom_target(generate_flatbuffers_schema DEPENDS "${GENERATED_HEADER}") -# Temporary migration-only build graph. -add_library(clice-core STATIC - "${PROJECT_SOURCE_DIR}/src/command/argument_parser.cpp" - "${PROJECT_SOURCE_DIR}/src/command/command.cpp" - "${PROJECT_SOURCE_DIR}/src/command/search_config.cpp" - "${PROJECT_SOURCE_DIR}/src/command/toolchain.cpp" - "${PROJECT_SOURCE_DIR}/src/compile/compilation.cpp" - "${PROJECT_SOURCE_DIR}/src/compile/compilation_unit.cpp" - "${PROJECT_SOURCE_DIR}/src/compile/diagnostic.cpp" - "${PROJECT_SOURCE_DIR}/src/compile/directive.cpp" - "${PROJECT_SOURCE_DIR}/src/compile/tidy.cpp" - "${PROJECT_SOURCE_DIR}/src/support/doxygen.cpp" - "${PROJECT_SOURCE_DIR}/src/support/structed_text.cpp" - "${PROJECT_SOURCE_DIR}/src/support/fuzzy_matcher.cpp" - "${PROJECT_SOURCE_DIR}/src/support/glob_pattern.cpp" - "${PROJECT_SOURCE_DIR}/src/support/logging.cpp" - "${PROJECT_SOURCE_DIR}/src/syntax/lexer.cpp" - "${PROJECT_SOURCE_DIR}/src/syntax/scan.cpp" - "${PROJECT_SOURCE_DIR}/src/syntax/include_resolver.cpp" - "${PROJECT_SOURCE_DIR}/src/syntax/dependency_graph.cpp" - "${PROJECT_SOURCE_DIR}/src/syntax/include_resolver.cpp" - "${PROJECT_SOURCE_DIR}/src/feature/semantic_tokens.cpp" - "${PROJECT_SOURCE_DIR}/src/feature/document_links.cpp" - "${PROJECT_SOURCE_DIR}/src/feature/document_symbols.cpp" - "${PROJECT_SOURCE_DIR}/src/feature/folding_ranges.cpp" - "${PROJECT_SOURCE_DIR}/src/feature/code_completion.cpp" - "${PROJECT_SOURCE_DIR}/src/feature/hover.cpp" - "${PROJECT_SOURCE_DIR}/src/feature/inlay_hints.cpp" - "${PROJECT_SOURCE_DIR}/src/feature/signature_help.cpp" - "${PROJECT_SOURCE_DIR}/src/feature/formatting.cpp" - "${PROJECT_SOURCE_DIR}/src/feature/diagnostics.cpp" - "${PROJECT_SOURCE_DIR}/src/semantic/resolver.cpp" - "${PROJECT_SOURCE_DIR}/src/semantic/symbol_kind.cpp" - "${PROJECT_SOURCE_DIR}/src/semantic/ast_utility.cpp" - "${PROJECT_SOURCE_DIR}/src/semantic/selection.cpp" - "${PROJECT_SOURCE_DIR}/src/index/include_graph.cpp" - "${PROJECT_SOURCE_DIR}/src/index/tu_index.cpp" - "${PROJECT_SOURCE_DIR}/src/index/usr_generation.cpp" - "${PROJECT_SOURCE_DIR}/src/index/project_index.cpp" - "${PROJECT_SOURCE_DIR}/src/index/merged_index.cpp" - "${PROJECT_SOURCE_DIR}/src/server/stateless_worker.cpp" - "${PROJECT_SOURCE_DIR}/src/server/stateful_worker.cpp" - "${PROJECT_SOURCE_DIR}/src/server/worker_pool.cpp" - "${PROJECT_SOURCE_DIR}/src/server/compile_graph.cpp" - "${PROJECT_SOURCE_DIR}/src/server/master_server.cpp" - "${PROJECT_SOURCE_DIR}/src/server/config.cpp" -) +file(GLOB_RECURSE CLICE_CORE_SOURCES CONFIGURE_DEPENDS "${PROJECT_SOURCE_DIR}/src/*.cpp") +add_library(clice-core STATIC ${CLICE_CORE_SOURCES}) add_library(clice::core ALIAS clice-core) add_dependencies(clice-core generate_flatbuffers_schema) @@ -203,10 +157,11 @@ add_executable(clice "${PROJECT_SOURCE_DIR}/src/clice.cc") target_link_libraries(clice PRIVATE clice::core eventide::deco) install(TARGETS clice RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -message(STATUS "Copying resource directory for development build") -file( - COPY "${LLVM_INSTALL_PATH}/lib/clang" - DESTINATION "${PROJECT_BINARY_DIR}/lib" +add_custom_target(copy_clang_resource ALL + COMMAND ${CMAKE_COMMAND} -E copy_directory + "${LLVM_INSTALL_PATH}/lib/clang" + "${PROJECT_BINARY_DIR}/lib/clang" + COMMENT "Copying clang resource directory" ) install( DIRECTORY "${LLVM_INSTALL_PATH}/lib/clang" @@ -234,10 +189,16 @@ if(CLICE_ENABLE_TEST) target_link_libraries(unit_tests PRIVATE clice::core eventide::zest eventide::deco) endif() -add_executable(scan_benchmark - "${PROJECT_SOURCE_DIR}/benchmarks/scan_benchmark.cpp" -) -target_include_directories(scan_benchmark PRIVATE - "${PROJECT_SOURCE_DIR}/src" -) -target_link_libraries(scan_benchmark PRIVATE clice::core eventide::deco) +if(CLICE_ENABLE_BENCHMARK) + add_executable(scan_benchmark + "${PROJECT_SOURCE_DIR}/benchmarks/scan_benchmark.cpp" + ) + target_include_directories(scan_benchmark PRIVATE + "${PROJECT_SOURCE_DIR}/src" + ) + target_link_libraries(scan_benchmark PRIVATE clice::core eventide::deco) +endif() + +if(CLICE_RELEASE) + include("${PROJECT_SOURCE_DIR}/cmake/release.cmake") +endif() diff --git a/cmake/archive.cmake b/cmake/archive.cmake new file mode 100644 index 000000000..2fafe5736 --- /dev/null +++ b/cmake/archive.cmake @@ -0,0 +1,17 @@ +if(OUTPUT MATCHES "\\.tar\\.gz$") + execute_process( + COMMAND ${CMAKE_COMMAND} -E tar czf "${OUTPUT}" . + WORKING_DIRECTORY "${WORK_DIR}" + COMMAND_ERROR_IS_FATAL ANY + ) +elseif(OUTPUT MATCHES "\\.zip$") + execute_process( + COMMAND ${CMAKE_COMMAND} -E tar cf "${OUTPUT}" --format=zip . + WORKING_DIRECTORY "${WORK_DIR}" + COMMAND_ERROR_IS_FATAL ANY + ) +else() + message(FATAL_ERROR "Unsupported archive format: ${OUTPUT}") +endif() + +message(STATUS "Created: ${OUTPUT}") diff --git a/cmake/release.cmake b/cmake/release.cmake new file mode 100644 index 000000000..cf13a3d04 --- /dev/null +++ b/cmake/release.cmake @@ -0,0 +1,78 @@ +include_guard() + +set(CLICE_PACK_DIR "${PROJECT_BINARY_DIR}/pack") +set(CLICE_SYMBOL_DIR "${PROJECT_BINARY_DIR}/pack-symbol") + +if(WIN32) + set(CLICE_ARCHIVE_EXT ".zip") + set(CLICE_SYMBOL_NAME "clice.pdb") +else() + set(CLICE_ARCHIVE_EXT ".tar.gz") + if(APPLE) + set(CLICE_SYMBOL_NAME "clice.dSYM") + else() + set(CLICE_SYMBOL_NAME "clice.debug") + endif() +endif() + +if(WIN32) + add_custom_target(clice-strip ALL + COMMAND ${CMAKE_COMMAND} -E make_directory "${CLICE_SYMBOL_DIR}" + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "$" + "${CLICE_SYMBOL_DIR}/${CLICE_SYMBOL_NAME}" + DEPENDS clice + COMMENT "Collecting PDB for clice" + ) +elseif(APPLE) + add_custom_target(clice-strip ALL + COMMAND ${CMAKE_COMMAND} -E make_directory "${CLICE_SYMBOL_DIR}" + COMMAND dsymutil "$" -o "${CLICE_SYMBOL_DIR}/${CLICE_SYMBOL_NAME}" + COMMAND strip -x "$" + DEPENDS clice + COMMENT "Extracting dSYM and stripping clice" + ) +else() + add_custom_target(clice-strip ALL + COMMAND ${CMAKE_COMMAND} -E make_directory "${CLICE_SYMBOL_DIR}" + COMMAND ${CMAKE_OBJCOPY} --only-keep-debug "$" "${CLICE_SYMBOL_DIR}/${CLICE_SYMBOL_NAME}" + COMMAND ${CMAKE_STRIP} --strip-debug --strip-unneeded "$" + COMMAND ${CMAKE_OBJCOPY} --add-gnu-debuglink="${CLICE_SYMBOL_DIR}/${CLICE_SYMBOL_NAME}" "$" + DEPENDS clice + COMMENT "Extracting debug symbols and stripping clice" + ) +endif() + +add_custom_target(clice-pack ALL + DEPENDS clice-strip copy_clang_resource + COMMAND ${CMAKE_COMMAND} -E rm -rf "${CLICE_PACK_DIR}" + COMMAND ${CMAKE_COMMAND} -E make_directory "${CLICE_PACK_DIR}/clice/bin" + COMMAND ${CMAKE_COMMAND} -E copy "$" "${CLICE_PACK_DIR}/clice/bin/" + COMMAND ${CMAKE_COMMAND} -E copy_directory "${LLVM_INSTALL_PATH}/lib/clang" "${CLICE_PACK_DIR}/clice/lib/clang" + COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/docs/clice.toml" "${CLICE_PACK_DIR}/clice/" + COMMAND ${CMAKE_COMMAND} + -DOUTPUT="${PROJECT_BINARY_DIR}/clice${CLICE_ARCHIVE_EXT}" + -DWORK_DIR="${CLICE_PACK_DIR}" + -P "${PROJECT_SOURCE_DIR}/cmake/archive.cmake" + COMMENT "Packaging clice distribution" +) + +if(APPLE) + set(CLICE_COPY_SYMBOL_CMD ${CMAKE_COMMAND} -E copy_directory + "${CLICE_SYMBOL_DIR}/${CLICE_SYMBOL_NAME}" "${CLICE_SYMBOL_DIR}/pack/${CLICE_SYMBOL_NAME}") +else() + set(CLICE_COPY_SYMBOL_CMD ${CMAKE_COMMAND} -E copy + "${CLICE_SYMBOL_DIR}/${CLICE_SYMBOL_NAME}" "${CLICE_SYMBOL_DIR}/pack/") +endif() + +add_custom_target(clice-pack-symbol ALL + DEPENDS clice-strip + COMMAND ${CMAKE_COMMAND} -E rm -rf "${CLICE_SYMBOL_DIR}/pack" + COMMAND ${CMAKE_COMMAND} -E make_directory "${CLICE_SYMBOL_DIR}/pack" + COMMAND ${CLICE_COPY_SYMBOL_CMD} + COMMAND ${CMAKE_COMMAND} + -DOUTPUT="${PROJECT_BINARY_DIR}/clice-symbol${CLICE_ARCHIVE_EXT}" + -DWORK_DIR="${CLICE_SYMBOL_DIR}/pack" + -P "${PROJECT_SOURCE_DIR}/cmake/archive.cmake" + COMMENT "Packaging clice debug symbols" +) diff --git a/cmake/toolchain.cmake b/cmake/toolchain.cmake index 67b8c18cc..f237c37fc 100644 --- a/cmake/toolchain.cmake +++ b/cmake/toolchain.cmake @@ -1,36 +1,49 @@ cmake_minimum_required(VERSION 3.30) -set(CMAKE_C_COMPILER clang CACHE STRING "C compiler") -set(CMAKE_CXX_COMPILER clang++ CACHE STRING "C++ compiler") -set(AR_PROGRAM_NAME "llvm-ar") -set(CMAKE_EXE_LINKER_FLAGS "-fuse-ld=lld" CACHE STRING "Executable linker flags") -set(CMAKE_SHARED_LINKER_FLAGS "-fuse-ld=lld" CACHE STRING "Shared library linker flags") -set(CMAKE_MODULE_LINKER_FLAGS "-fuse-ld=lld" CACHE STRING "Module linker flags") +set(CMAKE_C_COMPILER clang CACHE STRING "") +set(CMAKE_CXX_COMPILER clang++ CACHE STRING "") -if(WIN32) - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL" CACHE STRING "MSVC runtime") -endif() - -find_program(LLVM_AR_PATH ${AR_PROGRAM_NAME}) +find_program(LLVM_AR_PATH "llvm-ar") if(LLVM_AR_PATH) - set(CMAKE_AR "${LLVM_AR_PATH}" CACHE FILEPATH "Archiver") - set(CMAKE_C_COMPILER_AR "${LLVM_AR_PATH}" CACHE FILEPATH "C archiver") - set(CMAKE_CXX_COMPILER_AR "${LLVM_AR_PATH}" CACHE FILEPATH "C++ archiver") + set(CMAKE_AR "${LLVM_AR_PATH}" CACHE FILEPATH "") + set(CMAKE_C_COMPILER_AR "${LLVM_AR_PATH}" CACHE FILEPATH "") + set(CMAKE_CXX_COMPILER_AR "${LLVM_AR_PATH}" CACHE FILEPATH "") endif() find_program(LLVM_RANLIB_PATH "llvm-ranlib") if(LLVM_RANLIB_PATH) - set(CMAKE_RANLIB "${LLVM_RANLIB_PATH}" CACHE FILEPATH "Ranlib") - set(CMAKE_C_COMPILER_RANLIB "${LLVM_RANLIB_PATH}" CACHE FILEPATH "C ranlib") - set(CMAKE_CXX_COMPILER_RANLIB "${LLVM_RANLIB_PATH}" CACHE FILEPATH "C++ ranlib") + set(CMAKE_RANLIB "${LLVM_RANLIB_PATH}" CACHE FILEPATH "") + set(CMAKE_C_COMPILER_RANLIB "${LLVM_RANLIB_PATH}" CACHE FILEPATH "") + set(CMAKE_CXX_COMPILER_RANLIB "${LLVM_RANLIB_PATH}" CACHE FILEPATH "") endif() find_program(LLVM_NM_PATH "llvm-nm") if(LLVM_NM_PATH) - set(CMAKE_NM "${LLVM_NM_PATH}" CACHE FILEPATH "Symbol lister") + set(CMAKE_NM "${LLVM_NM_PATH}" CACHE FILEPATH "") endif() find_program(LLVM_RC_PATH "llvm-rc") if(LLVM_RC_PATH) - set(CMAKE_RC_COMPILER "${LLVM_RC_PATH}" CACHE FILEPATH "Resource compiler") + set(CMAKE_RC_COMPILER "${LLVM_RC_PATH}" CACHE FILEPATH "") +endif() + +if(WIN32) + find_program(SCCACHE_PATH "sccache") + if(SCCACHE_PATH) + set(CMAKE_C_COMPILER_LAUNCHER "${SCCACHE_PATH}" CACHE FILEPATH "") + set(CMAKE_CXX_COMPILER_LAUNCHER "${SCCACHE_PATH}" CACHE FILEPATH "") + endif() + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL" CACHE STRING "") + set(CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=lld-link") + set(CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=lld-link") + set(CMAKE_MODULE_LINKER_FLAGS_INIT "-fuse-ld=lld-link") +else() + find_program(CCACHE_PATH "ccache") + if(CCACHE_PATH) + set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_PATH}" CACHE FILEPATH "") + set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PATH}" CACHE FILEPATH "") + endif() + set(CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=lld") + set(CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=lld") + set(CMAKE_MODULE_LINKER_FLAGS_INIT "-fuse-ld=lld") endif() diff --git a/pixi.lock b/pixi.lock index a72e3a7cd..11aa887fe 100644 --- a/pixi.lock +++ b/pixi.lock @@ -15,6 +15,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ccache-4.13.2-hedf47ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-20-20.1.8-default_h99862b1_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-20.1.8-default_h36abe19_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clangxx-20.1.8-default_h363a0c9_5.conda @@ -40,6 +41,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.2.0-h9c4974d_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhiredis-1.3.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.8-hf7376ad_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda @@ -69,6 +71,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/80/56/60547f7801b97c67e97491dc3d9ade9fbccbd0325058fd3dfcb2f5d98d90/cattrs-26.1.0-py3-none-any.whl @@ -76,8 +79,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/7b/f0/92f2d609d6642b5f30cb50a885d2bf1483301c69d5786286500d15651ef2/lsprotocol-2025.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/be/1b/523fa1d7a9ed16d41dc1a33533def97712eb3aff660d2f124033db019461/pygls-2.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/1a/208293b6c350f5abea6941d5606080d4a492644052504f5312e5de30a902/pygls-2.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl @@ -85,6 +88,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ccache-4.13.2-h414bf82_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-20-20.1.8-default_h73dfc95_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-20.1.8-default_hf9bcbb7_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-20.1.8-default_h36137df_5.conda @@ -102,6 +106,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhiredis-1.3.0-h286801f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm20-20.1.8-h8e0c9ce_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda @@ -125,6 +130,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.6-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-haa4e116_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda - pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/80/56/60547f7801b97c67e97491dc3d9ade9fbccbd0325058fd3dfcb2f5d98d90/cattrs-26.1.0-py3-none-any.whl @@ -132,8 +138,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/7b/f0/92f2d609d6642b5f30cb50a885d2bf1483301c69d5786286500d15651ef2/lsprotocol-2025.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/be/1b/523fa1d7a9ed16d41dc1a33533def97712eb3aff660d2f124033db019461/pygls-2.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/1a/208293b6c350f5abea6941d5606080d4a492644052504f5312e5de30a902/pygls-2.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl @@ -167,6 +173,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.14.2-h4b44e0e_100_cp314.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/sccache-0.14.0-h18a1a76_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda @@ -181,8 +188,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/7b/f0/92f2d609d6642b5f30cb50a885d2bf1483301c69d5786286500d15651ef2/lsprotocol-2025.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/be/1b/523fa1d7a9ed16d41dc1a33533def97712eb3aff660d2f124033db019461/pygls-2.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/1a/208293b6c350f5abea6941d5606080d4a492644052504f5312e5de30a902/pygls-2.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl @@ -360,6 +367,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ccache-4.13.2-hedf47ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-20-20.1.8-default_h99862b1_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-20.1.8-default_h36abe19_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/clangxx-20.1.8-default_h363a0c9_5.conda @@ -384,6 +392,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.2.0-h9c4974d_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_16.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhiredis-1.3.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.8-hf7376ad_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda @@ -414,6 +423,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h8577fbf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda @@ -424,8 +434,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/7b/f0/92f2d609d6642b5f30cb50a885d2bf1483301c69d5786286500d15651ef2/lsprotocol-2025.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/be/1b/523fa1d7a9ed16d41dc1a33533def97712eb3aff660d2f124033db019461/pygls-2.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/1a/208293b6c350f5abea6941d5606080d4a492644052504f5312e5de30a902/pygls-2.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl @@ -433,6 +443,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ccache-4.13.2-h414bf82_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-20-20.1.8-default_h73dfc95_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-20.1.8-default_hf9bcbb7_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-20.1.8-default_h36137df_5.conda @@ -449,6 +460,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhiredis-1.3.0-h286801f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm20-20.1.8-h8e0c9ce_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda @@ -473,6 +485,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.6-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-haa4e116_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.8.1-h9a6d368_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.8.1-h9a6d368_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.8.1-h39f12f2_2.conda @@ -483,8 +496,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/7b/f0/92f2d609d6642b5f30cb50a885d2bf1483301c69d5786286500d15651ef2/lsprotocol-2025.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/be/1b/523fa1d7a9ed16d41dc1a33533def97712eb3aff660d2f124033db019461/pygls-2.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/1a/208293b6c350f5abea6941d5606080d4a492644052504f5312e5de30a902/pygls-2.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl @@ -518,6 +531,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.14.2-h4b44e0e_100_cp314.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/sccache-0.14.0-h18a1a76_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda @@ -534,8 +548,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/7b/f0/92f2d609d6642b5f30cb50a885d2bf1483301c69d5786286500d15651ef2/lsprotocol-2025.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/be/1b/523fa1d7a9ed16d41dc1a33533def97712eb3aff660d2f124033db019461/pygls-2.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/1a/208293b6c350f5abea6941d5606080d4a492644052504f5312e5de30a902/pygls-2.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl @@ -587,6 +601,7 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: GPL-3.0-only license_family: GPL + purls: [] size: 3719982 timestamp: 1766513109980 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda @@ -680,6 +695,35 @@ packages: - tomli>=1.1.0 ; python_full_version < '3.11' and extra == 'tomllib' - ujson>=5.10.0 ; extra == 'ujson' requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/linux-64/ccache-4.13.2-hedf47ba_0.conda + sha256: ec94ed03d2d7b7ea7f0ffc7df347808e9762d1ea8bc33f990901491956efd69c + md5: 49346bc551d07c6940e811a1f93ba373 + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libhiredis >=1.3.0,<1.4.0a0 + - xxhash >=0.8.3,<0.8.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 847826 + timestamp: 1774189203440 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ccache-4.13.2-h414bf82_0.conda + sha256: d9547c2cb6963f7763eb8910724d5c843d1bb7af4b1b8c54023d87d946cc7880 + md5: baeca21071729b617b20b019f85beedf + depends: + - __osx >=11.0 + - libcxx >=19 + - zstd >=1.5.7,<1.6.0a0 + - xxhash >=0.8.3,<0.8.4.0a0 + - libhiredis >=1.3.0,<1.4.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 598937 + timestamp: 1774189390770 - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-20.1.8-default_h36abe19_5.conda sha256: dfce7b8de6be7a988dab1092e2ad54fc544a572cc5ac7df28f8f48ab409814bc md5: b6ab4982173dcae265d545bec3a76a6c @@ -1106,6 +1150,7 @@ packages: - libstdcxx >=14 license: MIT license_family: MIT + purls: [] size: 12722920 timestamp: 1766299101259 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -1124,6 +1169,7 @@ packages: - __osx >=11.0 license: MIT license_family: MIT + purls: [] size: 12372254 timestamp: 1766299497731 - conda: https://conda.anaconda.org/conda-forge/win-64/icu-78.1-h637d24d_0.conda @@ -1135,6 +1181,7 @@ packages: - vc14_runtime >=14.44.35208 license: MIT license_family: MIT + purls: [] size: 13849749 timestamp: 1766299627069 - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl @@ -1227,6 +1274,7 @@ packages: - binutils_impl_linux-64 2.45 license: GPL-3.0-only license_family: GPL + purls: [] size: 730831 timestamp: 1766513089214 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda @@ -1403,6 +1451,7 @@ packages: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache + purls: [] size: 569118 timestamp: 1765919724254 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-20.1.8-h6dc3340_3.conda @@ -1587,6 +1636,29 @@ packages: purls: [] size: 603284 timestamp: 1765256703881 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhiredis-1.3.0-h5888daf_1.conda + sha256: 5638e321719590b00826d218431d5028d1a22a76f281532ce621d9a40d5e0f42 + md5: aa342fcf3bc583660dbfdb2eae6be48e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 140759 + timestamp: 1748219397797 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhiredis-1.3.0-h286801f_1.conda + sha256: 8da7c0e83c1c9d1bda3569146bb5618ef78251c5f912afa5d4f1573aef6ef6c7 + md5: 58b2c5aee0ad58549bf92baead9baead + depends: + - __osx >=11.0 + - libcxx >=18 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 56746 + timestamp: 1748219528586 - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f md5: 915f5995e94f60e9a4826e0b0920ee88 @@ -1868,6 +1940,7 @@ packages: - libgcc >=14 - libzlib >=1.3.1,<2.0a0 license: blessing + purls: [] size: 943451 timestamp: 1766319676469 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h1b79a29_1.conda @@ -1877,6 +1950,7 @@ packages: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: blessing + purls: [] size: 905861 timestamp: 1766319901587 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h9a5124b_0.conda @@ -1908,6 +1982,7 @@ packages: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: blessing + purls: [] size: 1292859 timestamp: 1766319616777 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda @@ -2000,6 +2075,7 @@ packages: - libgcc >=14 license: BSD-3-Clause license_family: BSD + purls: [] size: 40311 timestamp: 1766271528534 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda @@ -2080,6 +2156,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT + purls: [] size: 45402 timestamp: 1766327161688 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-h8d039ee_1.conda @@ -2094,6 +2171,7 @@ packages: - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT + purls: [] size: 40607 timestamp: 1766327501392 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-h9329255_0.conda @@ -2158,6 +2236,7 @@ packages: - vc14_runtime >=14.44.35208 license: MIT license_family: MIT + purls: [] size: 43387 timestamp: 1766327259710 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-ha9997c6_0.conda @@ -2190,6 +2269,7 @@ packages: - libxml2 2.15.1 license: MIT license_family: MIT + purls: [] size: 555747 timestamp: 1766327145986 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-hf2a90c1_0.conda @@ -2237,6 +2317,7 @@ packages: - libxml2 2.15.1 license: MIT license_family: MIT + purls: [] size: 464886 timestamp: 1766327479416 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h8eac4d7_0.conda @@ -2270,6 +2351,7 @@ packages: - libxml2 2.15.1 license: MIT license_family: MIT + purls: [] size: 518964 timestamp: 1766327232819 - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.1-h692994f_0.conda @@ -2738,23 +2820,23 @@ packages: license_family: MIT size: 1105059 timestamp: 1764738810596 -- pypi: https://files.pythonhosted.org/packages/be/1b/523fa1d7a9ed16d41dc1a33533def97712eb3aff660d2f124033db019461/pygls-2.1.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/fd/1a/208293b6c350f5abea6941d5606080d4a492644052504f5312e5de30a902/pygls-2.1.1-py3-none-any.whl name: pygls - version: 2.1.0 - sha256: cfa8443561488cb15b59f6ce64cabfa37d79753f7120c1bf729419246bf747f9 + version: 2.1.1 + sha256: 510a6dea2476177230c7d851125e5948efdf3fdb9ebfd8543fc434972f8faed4 requires_dist: - attrs>=24.3.0 - cattrs>=23.1.2 - lsprotocol==2025.0.0 - websockets>=13.0 ; extra == 'ws' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl name: pygments - version: 2.19.2 - sha256: 86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b + version: 2.20.0 + sha256: 81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176 requires_dist: - colorama>=0.4.6 ; extra == 'windows-terminal' - requires_python: '>=3.8' + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl name: pytest version: 9.0.2 @@ -2958,6 +3040,18 @@ packages: license: MIT size: 11908812 timestamp: 1766095035171 +- conda: https://conda.anaconda.org/conda-forge/win-64/sccache-0.14.0-h18a1a76_0.conda + sha256: 7a2cbb5c405e8ec04cf9d77f8d567cb57a3b8e2cb875b8962795edd9569dedb7 + md5: 531701ba481a1f2f3228f3f077a0e97a + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 6698663 + timestamp: 1770690927791 - conda: https://conda.anaconda.org/conda-forge/linux-64/stylua-2.3.1-hb17b654_1.conda sha256: 55d6701de61979958ef23b1179158f691cc17bb4990b7b7d4fa2c15755b3f6b9 md5: 946560e6fd16473525953ae27909e7a0 @@ -3094,6 +3188,7 @@ packages: sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c md5: ad659d0a2b3e47e38d829aa8cad2d610 license: LicenseRef-Public-Domain + purls: [] size: 119135 timestamp: 1767016325805 - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda @@ -3143,6 +3238,27 @@ packages: purls: [] size: 115073 timestamp: 1765216325898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda + sha256: 08e12f140b1af540a6de03dd49173c0e5ae4ebc563cabdd35ead0679835baf6f + md5: 607e13a8caac17f9a664bcab5302ce06 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 108219 + timestamp: 1746457673761 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-haa4e116_0.conda + sha256: 5e2e58fbaa00eeab721a86cb163a54023b3b260e91293dde7e5334962c5c96e3 + md5: 54a24201d62fc17c73523e4b86f71ae8 + depends: + - __osx >=11.0 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 98913 + timestamp: 1746457827085 - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda sha256: 802725371682ea06053971db5b4fb7fbbcaee9cb1804ec688f55e51d74660617 md5: 68eae977d7d1196d32b636a026dc015d diff --git a/pixi.toml b/pixi.toml index 3e6a21044..1663b10b0 100644 --- a/pixi.toml +++ b/pixi.toml @@ -35,10 +35,17 @@ lld = "==20.1.8" llvm-tools = "==20.1.8" compiler-rt = "==20.1.8" +[feature.build.target.win-64.dependencies] +sccache = "*" + [feature.build.target.linux-64.dependencies] sysroot_linux-64 = "==2.17" gcc = "==14.2.0" gxx = "==14.2.0" +ccache = "*" + +[feature.build.target.osx-arm64.dependencies] +ccache = "*" [feature.build.target.linux-64.activation] scripts = ["scripts/activate_linux.sh"]