diff --git a/builtins/lzma/CMakeLists.txt b/builtins/lzma/CMakeLists.txt new file mode 100644 index 0000000000000..6ae0e2f725e32 --- /dev/null +++ b/builtins/lzma/CMakeLists.txt @@ -0,0 +1,64 @@ +# Copyright (C) 1995-2026, Rene Brun and Fons Rademakers. +# All rights reserved. +# +# For the licensing terms see $ROOTSYS/LICENSE. +# For the list of contributors see $ROOTSYS/README/CREDITS. + +# **PLEASE UPDATE ALSO THE FOLLOWING LINE WHEN UPDATING THE VERSION** +# 17 Dec 2025, https://github.com/tukaani-project/xz/releases/tag/v5.8.2 +set(ROOT_LZMA_VERSION 5.8.2) +set(ROOT_LZMA_HASH "f21fdf2c1ee004de30ca40377a273e3369186e6b7ab7b50a410eaa2e2bbefafb") + +set(LZMA_TARGET LZMA) +set(ROOT_LZMA_PREFIX ${CMAKE_BINARY_DIR}/builtins/LZMA-prefix) + +set(LIBLZMA_LIBRARIES ${ROOT_LZMA_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}lzma${CMAKE_STATIC_LIBRARY_SUFFIX}) + +if(MSVC) + # In the MSVC case, we forward the default C++ configuration flags because + # they are changed by ROOT in SetUpWindows.cmake. + set(lzma_extra_cmake_args + -DCMAKE_CXXFLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} + -DCMAKE_CXXFLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE} + -DCMAKE_CXXFLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}) +else() + if(CMAKE_OSX_SYSROOT) + set(liblzma_flags "-isysroot\ ${CMAKE_OSX_SYSROOT}") + endif() + set(lzma_extra_cmake_args + -DCMAKE_C_FLAGS=${liblzma_flags} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}) +endif() + +ExternalProject_Add( + LZMA + URL https://root.cern/download/xz-${ROOT_LZMA_VERSION}.tar.gz + URL_HASH SHA256=${ROOT_LZMA_HASH} + PREFIX ${ROOT_LZMA_PREFIX} + CMAKE_ARGS -G ${CMAKE_GENERATOR} + -DCMAKE_INSTALL_PREFIX= + -DCMAKE_INSTALL_LIBDIR=/lib + -DBUILD_SHARED_LIBS=OFF + -DENABLE_SCRIPTS=OFF + -DXZ_TOOL=OFF + -DXZDEC=OFF + -DLZMADEC=OFF + -DLZMAINFO=OFF + ${lzma_extra_cmake_args} + BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $ --target liblzma + INSTALL_COMMAND ${CMAKE_COMMAND} --install . --config $ --component liblzma_Development + LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 LOG_OUTPUT_ON_FAILURE 1 + BUILD_IN_SOURCE 1 + BUILD_BYPRODUCTS ${LIBLZMA_LIBRARIES} + TIMEOUT 600 +) + + +set(LIBLZMA_INCLUDE_DIR ${ROOT_LZMA_PREFIX}/include) +file(MAKE_DIRECTORY ${LIBLZMA_INCLUDE_DIR}) + +add_library(LibLZMA STATIC IMPORTED GLOBAL) +add_library(LibLZMA::LibLZMA ALIAS LibLZMA) +target_include_directories(LibLZMA INTERFACE ${LIBLZMA_INCLUDE_DIR}) +set_target_properties(LibLZMA PROPERTIES IMPORTED_LOCATION ${LIBLZMA_LIBRARIES}) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index a5c1123322964..d4e8288472522 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -328,62 +328,8 @@ if(NOT builtin_lzma) endif() if(builtin_lzma) - set(lzma_version 5.2.4) - set(LZMA_TARGET LZMA) - message(STATUS "Building LZMA version ${lzma_version} included in ROOT itself") - if(WIN32) - set(lzma_version 5.6.3) - set(LIBLZMA_LIBRARIES ${CMAKE_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}lzma${CMAKE_STATIC_LIBRARY_SUFFIX}) - ExternalProject_Add( - LZMA - URL ${CMAKE_SOURCE_DIR}/core/lzma/src/xz-${lzma_version}.tar.gz - URL_HASH SHA256=b1d45295d3f71f25a4c9101bd7c8d16cb56348bbef3bbc738da0351e17c73317 - INSTALL_DIR ${CMAKE_BINARY_DIR} - CMAKE_ARGS -G ${CMAKE_GENERATOR} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} - -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} - -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE} - -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} - BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $ --target liblzma - INSTALL_COMMAND ${CMAKE_COMMAND} --install . --config $ --component liblzma_Development - LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 LOG_OUTPUT_ON_FAILURE 1 - BUILD_IN_SOURCE 1 - BUILD_BYPRODUCTS ${LIBLZMA_LIBRARIES} - TIMEOUT 600 - ) - set(LIBLZMA_INCLUDE_DIR ${CMAKE_BINARY_DIR}/include) - else() - if(CMAKE_CXX_COMPILER_ID MATCHES Clang) - set(LIBLZMA_CFLAGS "-Wno-format-nonliteral") - set(LIBLZMA_LDFLAGS "-Qunused-arguments") - elseif( CMAKE_CXX_COMPILER_ID STREQUAL Intel) - set(LIBLZMA_CFLAGS "-wd188 -wd181 -wd1292 -wd10006 -wd10156 -wd2259 -wd981 -wd128 -wd3179 -wd2102") - endif() - if(CMAKE_OSX_SYSROOT) - set(LIBLZMA_CFLAGS "${LIBLZMA_CFLAGS} -isysroot ${CMAKE_OSX_SYSROOT}") - endif() - set(LIBLZMA_LIBRARIES ${CMAKE_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}lzma${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(LIBLZMA_CFLAGS "${LIBLZMA_CFLAGS} -O3") - ExternalProject_Add( - LZMA - URL ${CMAKE_SOURCE_DIR}/core/lzma/src/xz-${lzma_version}.tar.gz - URL_HASH SHA256=b512f3b726d3b37b6dc4c8570e137b9311e7552e8ccbab4d39d47ce5f4177145 - INSTALL_DIR ${CMAKE_BINARY_DIR} - CONFIGURE_COMMAND /configure --prefix --libdir /lib - --with-pic --disable-shared --quiet - --disable-scripts --disable-xz --disable-xzdec --disable-lzmadec --disable-lzmainfo --disable-lzma-links - CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} CFLAGS=${LIBLZMA_CFLAGS} LDFLAGS=${LIBLZMA_LDFLAGS} - LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 LOG_OUTPUT_ON_FAILURE 1 - BUILD_IN_SOURCE 1 - BUILD_BYPRODUCTS ${LIBLZMA_LIBRARIES} - TIMEOUT 600 - ) - set(LIBLZMA_INCLUDE_DIR ${CMAKE_BINARY_DIR}/include) - endif() - - add_library(LibLZMA STATIC IMPORTED GLOBAL) - add_library(LibLZMA::LibLZMA ALIAS LibLZMA) - target_include_directories(LibLZMA INTERFACE ${LIBLZMA_INCLUDE_DIR}) - set_target_properties(LibLZMA PROPERTIES IMPORTED_LOCATION ${LIBLZMA_LIBRARIES}) + list(APPEND ROOT_BUILTINS LZMA) + add_subdirectory(builtins/lzma) endif() #---Check for xxHash----------------------------------------------------------------- diff --git a/core/lzma/src/xz-5.2.4.tar.gz b/core/lzma/src/xz-5.2.4.tar.gz deleted file mode 100644 index cf1456593b629..0000000000000 Binary files a/core/lzma/src/xz-5.2.4.tar.gz and /dev/null differ diff --git a/core/lzma/src/xz-5.6.3.tar.gz b/core/lzma/src/xz-5.6.3.tar.gz deleted file mode 100644 index 80e67abd2e08a..0000000000000 Binary files a/core/lzma/src/xz-5.6.3.tar.gz and /dev/null differ