From 34ec227159816bae986547cf52dfbaaa17ddcc28 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Mon, 31 Aug 2026 19:42:41 +0200 Subject: [PATCH] [zlib] make it private and isolate it from ROOT so that it is a real builtin --- CMakeLists.txt | 2 +- README/ReleaseNotes/v642/index.md | 1 + builtins/zip/CMakeLists.txt | 18 +++++++++++- builtins/zip/ZInflate.c | 3 +- .../src/ZipLZ4.cxx => builtins/zip/ZipLZ4.c | 29 +++++++++---------- {core/lz4/inc => builtins/zip}/ZipLZ4.h | 0 {core/lzma/src => builtins/zip}/ZipLZMA.c | 0 {core/lzma/inc => builtins/zip}/ZipLZMA.h | 0 {core/zstd/src => builtins/zip}/ZipZSTD.cxx | 0 {core/zstd/inc => builtins/zip}/ZipZSTD.h | 0 core/CMakeLists.txt | 2 -- core/foundation/inc/ThreadLocalStorage.h | 20 ++++--------- core/lz4/CMakeLists.txt | 13 --------- core/lzma/CMakeLists.txt | 17 ----------- core/zip/CMakeLists.txt | 3 +- core/zstd/CMakeLists.txt | 11 ------- 16 files changed, 40 insertions(+), 79 deletions(-) rename core/lz4/src/ZipLZ4.cxx => builtins/zip/ZipLZ4.c (85%) rename {core/lz4/inc => builtins/zip}/ZipLZ4.h (100%) rename {core/lzma/src => builtins/zip}/ZipLZMA.c (100%) rename {core/lzma/inc => builtins/zip}/ZipLZMA.h (100%) rename {core/zstd/src => builtins/zip}/ZipZSTD.cxx (100%) rename {core/zstd/inc => builtins/zip}/ZipZSTD.h (100%) delete mode 100644 core/lz4/CMakeLists.txt delete mode 100644 core/lzma/CMakeLists.txt delete mode 100644 core/zstd/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index e37676441ac97..11de5b7397ad6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -387,8 +387,8 @@ install(FILES ${CMAKE_BINARY_DIR}/etc/gitinfo.txt DESTINATION ${CMAKE_INSTALL_SY #---Recurse into the given subdirectories. This does not actually cause another cmake executable # to run. The same process will walk through the project's entire directory structure. +add_subdirectory (builtins/zip) # hard coded C builtin for core/zip add_subdirectory (core) -add_subdirectory (builtins/zip) # hard coded builtin for core/zip add_subdirectory (math) add_subdirectory (hist) add_subdirectory (tree) diff --git a/README/ReleaseNotes/v642/index.md b/README/ReleaseNotes/v642/index.md index 8eb3d7de6b291..bbb23988d3ef8 100644 --- a/README/ReleaseNotes/v642/index.md +++ b/README/ReleaseNotes/v642/index.md @@ -68,6 +68,7 @@ Users are encouraged to export their models to ONNX and use the retained ONNX pa * Support for the AIX operating system has been removed from the codebase. This support has not been tested since the late v5 releases and the LLVM JIT is not yet supporting AIX. * The headers Htypes.h and Gtypes.h that were deprecated in ROOT 6.20 will now emit warnings and will be fully removed in ROOT 6.44. * The header GLConstants.h is no longer part of ROOT installed headers. +* The headers `ZipLZMA.h` and `ZipLZ4.h` are no longer part of ROOT installed headers. Use instead `RZip.h` methods. ## Build System diff --git a/builtins/zip/CMakeLists.txt b/builtins/zip/CMakeLists.txt index c01f3c2159689..ba211ecaf6d83 100644 --- a/builtins/zip/CMakeLists.txt +++ b/builtins/zip/CMakeLists.txt @@ -4,12 +4,28 @@ # For the licensing terms see $ROOTSYS/LICENSE. # For the list of contributors see $ROOTSYS/README/CREDITS. -target_sources(Core PRIVATE +add_library(ROOTzip STATIC) +target_sources(ROOTzip PUBLIC Bits.h # was renamed from Bits.c at https://github.com/root-project/root/commit/3b2f05c8ddf1001cc8eb05ad60b07b10af6ac293#diff-ff111e76990c56e7019ed0d837f1f615e280dc679ed393200c4f75b61094c5b7 and later split back to Bits.c in https://github.com/root-project/root/commit/25d5805abac4d408554e99aec6e49b8a671a2d96 Tailor.h # forked from 1993: zip 2.0 (https://github.com/root-project/root/blob/852600061bcacd9b255d44f6312c96b6b1e00a2d/zip/inc/Tailor.h vs https://github.com/pmqs/Info-ZIP-Family-Tree-for-Zip/blob/d25ed515bc56fae136b635d764ce8b363041aef5/tailor.h) ZIP.h # forked from 1993: zip 2.0 (https://github.com/root-project/root/blob/852600061bcacd9b255d44f6312c96b6b1e00a2d/zip/inc/ZIP.h vs https://github.com/pmqs/Info-ZIP-Family-Tree-for-Zip/blob/d25ed515bc56fae136b635d764ce8b363041aef5/zip.h) +PRIVATE Bits.c # forked from 1993: zip 2.0 (https://github.com/root-project/root/blob/852600061bcacd9b255d44f6312c96b6b1e00a2d/zip/src/Bits.c vs https://github.com/pmqs/Info-ZIP-Family-Tree-for-Zip/blob/d25ed515bc56fae136b635d764ce8b363041aef5/bits.c) ZDeflate.c # forked from 1993: zip 2.0 (https://github.com/root-project/root/blob/852600061bcacd9b255d44f6312c96b6b1e00a2d/zip/src/Deflate.c vs https://github.com/pmqs/Info-ZIP-Family-Tree-for-Zip/blob/d25ed515bc56fae136b635d764ce8b363041aef5/deflate.c) ZInflate.c # forked from 1994: version c14o / unzip-5.12 (https://github.com/root-project/root/blob/852600061bcacd9b255d44f6312c96b6b1e00a2d/zip/src/Inflate.c vs https://github.com/freebsd/freebsd-src/commit/37c32e9f3a0dc8ba9d0b7cd06742502dcba1b457 or https://stuff.mit.edu/afs/sipb.mit.edu/project/sipbsrc/i386_nbsd1/unzip-5.12/inflate.c) ZTrees.c # forked from 1993: zip 2.0 (https://github.com/root-project/root/blob/852600061bcacd9b255d44f6312c96b6b1e00a2d/zip/src/Trees.c vs https://github.com/pmqs/Info-ZIP-Family-Tree-for-Zip/blob/d25ed515bc56fae136b635d764ce8b363041aef5/trees.c) + ZipLZMA.c # ROOT + ZipLZMA.h # ROOT, public + ZipLZ4.c # ROOT + ZipLZ4.h # ROOT, public + ZipZSTD.cxx # ROOT + ZipZSTD.h # ROOT, public ) +target_include_directories(ROOTzip PUBLIC . +PRIVATE + # for ThreadLocalStorage.h ZTrees.c we need + ${CMAKE_SOURCE_DIR}/core/foundation/inc +) +target_link_libraries(ROOTzip PRIVATE LibLZMA::LibLZMA xxHash::xxHash LZ4::LZ4 ZSTD::ZSTD) +target_compile_definitions(ROOTzip PRIVATE R__LINUX) # TODO derive from cmake https://github.com/root-project/root/pull/23261 after isolating TLS header +set_target_properties(ROOTzip PROPERTIES POSITION_INDEPENDENT_CODE ON) diff --git a/builtins/zip/ZInflate.c b/builtins/zip/ZInflate.c index 844240a6dc2eb..ce4ab7ea0ff66 100644 --- a/builtins/zip/ZInflate.c +++ b/builtins/zip/ZInflate.c @@ -4,7 +4,7 @@ #include #include -#ifdef WIN32 +#ifdef _WIN32 #define __STDC__ 1 #endif #ifdef __MWERKS__ @@ -18,7 +18,6 @@ static const int qflag = 0; #include "zlib.h" -#include "RConfigure.h" #include "ZipLZMA.h" #include "ZipLZ4.h" diff --git a/core/lz4/src/ZipLZ4.cxx b/builtins/zip/ZipLZ4.c similarity index 85% rename from core/lz4/src/ZipLZ4.cxx rename to builtins/zip/ZipLZ4.c index 6fdafb851f5ba..e84efddd9abf4 100644 --- a/core/lz4/src/ZipLZ4.cxx +++ b/builtins/zip/ZipLZ4.c @@ -10,12 +10,10 @@ #include "ZipLZ4.h" -#include "ROOT/RConfig.hxx" - -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include @@ -38,12 +36,12 @@ void R__zipLZ4(int cxlevel, int *srcsize, const char *src, int *tgtsize, char *t *irep = 0; - if (R__unlikely(*tgtsize <= 0)) { + if ((*tgtsize <= 0)) { return; } // Refuse to compress more than 16MB at a time -- we are only allowed 3 bytes for size info. - if (R__unlikely(*srcsize > 0xffffff || *srcsize < 0)) { + if ((*srcsize > 0xffffff || *srcsize < 0)) { return; } @@ -57,7 +55,7 @@ void R__zipLZ4(int cxlevel, int *srcsize, const char *src, int *tgtsize, char *t returnStatus = LZ4_compress_default(src, &tgt[kHeaderSize], *srcsize, *tgtsize - kHeaderSize); } - if (R__unlikely(returnStatus == 0)) { /* LZ4 compression failed */ + if ((returnStatus == 0)) { /* LZ4 compression failed */ return; } XXH64_hash_t checksumResult = XXH64(tgt + kHeaderSize, returnStatus, 0); @@ -79,7 +77,7 @@ void R__zipLZ4(int cxlevel, int *srcsize, const char *src, int *tgtsize, char *t tgt[8] = (char)((in_size >> 16) & 0xff); // Write out checksum. - XXH64_canonicalFromHash(reinterpret_cast(tgt + kChecksumOffset), checksumResult); + XXH64_canonicalFromHash((XXH64_canonical_t *)(tgt + kChecksumOffset), checksumResult); *irep = (int)returnStatus + kHeaderSize; } @@ -91,12 +89,12 @@ void R__unzipLZ4(int *srcsize, const unsigned char *src, int *tgtsize, unsigned int LZ4_version = LZ4_versionNumber() / (100 * 100); *irep = 0; - if (R__unlikely(src[0] != 'L' || src[1] != '4')) { + if ((src[0] != 'L' || src[1] != '4')) { fprintf(stderr, "R__unzipLZ4: algorithm run against buffer with incorrect header (got %d%d; expected %d%d).\n", src[0], src[1], 'L', '4'); return; } - if (R__unlikely(src[2] != LZ4_version)) { + if ((src[2] != LZ4_version)) { fprintf(stderr, "R__unzipLZ4: This version of LZ4 is incompatible with the on-disk version (got %d; expected %d).\n", src[2], LZ4_version); @@ -110,10 +108,9 @@ void R__unzipLZ4(int *srcsize, const unsigned char *src, int *tgtsize, unsigned // what size of chunks does interleaving (avoiding two fetches from RAM) improve enough for the // extra function call costs? NOTE that ROOT limits the buffer size to 16MB. XXH64_hash_t checksumResult = XXH64(src + kHeaderSize, inputBufferSize, 0); - XXH64_hash_t checksumFromFile = - XXH64_hashFromCanonical(reinterpret_cast(src + kChecksumOffset)); + XXH64_hash_t checksumFromFile = XXH64_hashFromCanonical((const XXH64_canonical_t *)(src + kChecksumOffset)); - if (R__unlikely(checksumFromFile != checksumResult)) { + if ((checksumFromFile != checksumResult)) { fprintf( stderr, "R__unzipLZ4: Buffer corruption error! Calculated checksum %llu; checksum calculated in the file was %llu.\n", @@ -121,7 +118,7 @@ void R__unzipLZ4(int *srcsize, const unsigned char *src, int *tgtsize, unsigned return; } int returnStatus = LZ4_decompress_safe((char *)(&src[kHeaderSize]), (char *)(tgt), inputBufferSize, *tgtsize); - if (R__unlikely(returnStatus < 0)) { + if ((returnStatus < 0)) { fprintf(stderr, "R__unzipLZ4: error in decompression around byte %d out of maximum %d.\n", -returnStatus, *tgtsize); return; diff --git a/core/lz4/inc/ZipLZ4.h b/builtins/zip/ZipLZ4.h similarity index 100% rename from core/lz4/inc/ZipLZ4.h rename to builtins/zip/ZipLZ4.h diff --git a/core/lzma/src/ZipLZMA.c b/builtins/zip/ZipLZMA.c similarity index 100% rename from core/lzma/src/ZipLZMA.c rename to builtins/zip/ZipLZMA.c diff --git a/core/lzma/inc/ZipLZMA.h b/builtins/zip/ZipLZMA.h similarity index 100% rename from core/lzma/inc/ZipLZMA.h rename to builtins/zip/ZipLZMA.h diff --git a/core/zstd/src/ZipZSTD.cxx b/builtins/zip/ZipZSTD.cxx similarity index 100% rename from core/zstd/src/ZipZSTD.cxx rename to builtins/zip/ZipZSTD.cxx diff --git a/core/zstd/inc/ZipZSTD.h b/builtins/zip/ZipZSTD.h similarity index 100% rename from core/zstd/inc/ZipZSTD.h rename to builtins/zip/ZipZSTD.h diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 3d2069d3d1d38..5f2edd98f1f12 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -78,8 +78,6 @@ add_subdirectory(textinput) add_subdirectory(thread) add_subdirectory(utils) add_subdirectory(zip) -add_subdirectory(lzma) -add_subdirectory(lz4) add_subdirectory(zstd) add_subdirectory(macosx) diff --git a/core/foundation/inc/ThreadLocalStorage.h b/core/foundation/inc/ThreadLocalStorage.h index 3332b392cb02f..0efe199718e0f 100644 --- a/core/foundation/inc/ThreadLocalStorage.h +++ b/core/foundation/inc/ThreadLocalStorage.h @@ -57,14 +57,6 @@ #include -#ifdef __cplusplus -#include "RtypesCore.h" -#endif - -#include - -#include "RConfigure.h" - #if defined(R__MACOSX) # if defined(__clang__) && defined(MAC_OS_X_VERSION_10_7) && (defined(__x86_64__) || defined(__i386__)) # define R__HAS___THREAD @@ -130,10 +122,10 @@ template T &TTHREAD_TLS_INIT() { TTHREAD_TLS(T*) ptr = NULL; - TTHREAD_TLS(Bool_t) isInit(kFALSE); + TTHREAD_TLS(bool) isInit(false); if (!isInit) { ptr = new T; - isInit = kTRUE; + isInit = true; } return *ptr; } @@ -141,10 +133,10 @@ T &TTHREAD_TLS_INIT() { template Array &TTHREAD_TLS_INIT_ARRAY() { TTHREAD_TLS(Array*) ptr = NULL; - TTHREAD_TLS(Bool_t) isInit(kFALSE); + TTHREAD_TLS(bool) isInit(false); if (!isInit) { ptr = new Array[sizeof(Array)/sizeof(T)]; - isInit = kTRUE; + isInit = true; } return *ptr; } @@ -152,10 +144,10 @@ Array &TTHREAD_TLS_INIT_ARRAY() { template T &TTHREAD_TLS_INIT(ArgType arg) { TTHREAD_TLS(T*) ptr = NULL; - TTHREAD_TLS(Bool_t) isInit(kFALSE); + TTHREAD_TLS(bool) isInit(false); if (!isInit) { ptr = new T(arg); - isInit = kTRUE; + isInit = true; } return *ptr; } diff --git a/core/lz4/CMakeLists.txt b/core/lz4/CMakeLists.txt deleted file mode 100644 index ca23f250b59e1..0000000000000 --- a/core/lz4/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. -# All rights reserved. -# -# For the licensing terms see $ROOTSYS/LICENSE. -# For the list of contributors see $ROOTSYS/README/CREDITS. - -target_sources(Core PRIVATE src/ZipLZ4.cxx) -target_link_libraries(Core PRIVATE xxHash::xxHash LZ4::LZ4) -target_include_directories(Core PUBLIC - $ -) - -ROOT_INSTALL_HEADERS() diff --git a/core/lzma/CMakeLists.txt b/core/lzma/CMakeLists.txt deleted file mode 100644 index f19eec364cb8d..0000000000000 --- a/core/lzma/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. -# All rights reserved. -# -# For the licensing terms see $ROOTSYS/LICENSE. -# For the list of contributors see $ROOTSYS/README/CREDITS. - -############################################################################ -# CMakeLists.txt file for building ROOT core/lzma package -############################################################################ - -target_sources(Core PRIVATE src/ZipLZMA.c) - -target_link_libraries(Core PRIVATE LibLZMA::LibLZMA) - -target_include_directories(Core PUBLIC $) - -ROOT_INSTALL_HEADERS() diff --git a/core/zip/CMakeLists.txt b/core/zip/CMakeLists.txt index 70716436263b8..078505ad67c7b 100644 --- a/core/zip/CMakeLists.txt +++ b/core/zip/CMakeLists.txt @@ -9,8 +9,7 @@ target_sources(Core PRIVATE src/RZip.cxx ) -target_link_libraries(Core PRIVATE ZLIB::ZLIB) -target_include_directories(Core PRIVATE ../../builtins/zip) +target_link_libraries(Core PRIVATE ZLIB::ZLIB ROOTzip) target_include_directories(Core PUBLIC $ diff --git a/core/zstd/CMakeLists.txt b/core/zstd/CMakeLists.txt deleted file mode 100644 index 899fcc8dbd3e7..0000000000000 --- a/core/zstd/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -############################################################################ -# CMakeLists.txt file for building ROOT core/zstd package -############################################################################ - -target_sources(Core PRIVATE src/ZipZSTD.cxx) - -target_link_libraries(Core PRIVATE ZSTD::ZSTD) - -target_include_directories(Core PUBLIC $) - -ROOT_INSTALL_HEADERS()