From a7ff5daec854b648fa46fe74b91529d0cb02813d Mon Sep 17 00:00:00 2001 From: Guilherme Amadio <amadio@cern.ch> Date: Thu, 15 Feb 2018 17:38:13 +0100 Subject: [PATCH] Use new xxHash and LZ4 builtins --- builtins/lz4/CMakeLists.txt | 5 +- cmake/modules/SearchInstalledSoftware.cmake | 73 +++++---------------- core/CMakeLists.txt | 4 +- core/lz4/CMakeLists.txt | 26 ++------ 4 files changed, 29 insertions(+), 79 deletions(-) diff --git a/builtins/lz4/CMakeLists.txt b/builtins/lz4/CMakeLists.txt index 04ba944d715..b900957fc3d 100644 --- a/builtins/lz4/CMakeLists.txt +++ b/builtins/lz4/CMakeLists.txt @@ -1,5 +1,7 @@ project(LZ4 C) +find_package(xxHash REQUIRED) + set(LZ4_PUBLIC_HEADERS lz4.h lz4frame.h @@ -34,8 +36,9 @@ set(LZ4_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "") set(LZ4_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "") add_library(lz4 STATIC ${LZ4_PUBLIC_HEADERS} ${LZ4_PRIVATE_HEADERS} ${LZ4_SOURCES}) -target_include_directories(lz4 INTERFACE $<BUILD_INTERFACE:${LZ4_INCLUDE_DIR}>) target_compile_options(lz4 PRIVATE -fvisibility=hidden) +target_include_directories(lz4 INTERFACE $<BUILD_INTERFACE:${LZ4_INCLUDE_DIR}>) +target_link_libraries(lz4 PRIVATE xxHash::xxHash) add_library(LZ4::LZ4 ALIAS lz4) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 9859882049f..a33ebd75de6 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -209,73 +209,36 @@ if(builtin_lzma) endif() endif() +#---Check for xxHash----------------------------------------------------------------- +if(NOT builtin_xxhash) + message(STATUS "Looking for xxHash") + find_package(xxHash) + if(NOT xxHash_FOUND) + message(STATUS "xxHash not found. Switching on builtin_xxhash option") + set(builtin_xxhash ON CACHE BOOL "" FORCE) + endif() +endif() + +if(builtin_xxhash) + list(APPEND ROOT_BUILTINS xxHash) + add_subdirectory(builtins/xxhash) +endif() #---Check for LZ4-------------------------------------------------------------------- if(NOT builtin_lz4) message(STATUS "Looking for LZ4") find_package(LZ4) - if(LZ4_FOUND) - else() + if(NOT LZ4_FOUND) message(STATUS "LZ4 not found. Switching on builtin_lz4 option") set(builtin_lz4 ON CACHE BOOL "" FORCE) endif() endif() -# Note: the above if-statement may change the value of builtin_lz4 to ON. + if(builtin_lz4) - set(lz4_version v1.7.5) - message(STATUS "Building LZ4 version ${lz4_version} included in ROOT itself") - if(CMAKE_CXX_COMPILER_ID STREQUAL Clang) - set(LZ4_CFLAGS "-Wno-format-nonliteral") - elseif( CMAKE_CXX_COMPILER_ID STREQUAL Intel) - set(LZ4_CFLAGS "-wd188 -wd181 -wd1292 -wd10006 -wd10156 -wd2259 -wd981 -wd128 -wd3179") - elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - set(LZ4_CFLAGS "/Zl") - endif() - set(LZ4_URL ${lcgpackages}/lz4-${lz4_version}.tar.gz) - set(LZ4_LIBRARIES ${CMAKE_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}lz4${CMAKE_STATIC_LIBRARY_SUFFIX}) - if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_GREATER 3.6.99) - message(WARNING "Obsoleted code needs to be removed since the the minimal required version of CMake make it useless") - endif() - if(CMAKE_VERSION VERSION_LESS 3.7.0) - ExternalProject_Add( - LZ4 - URL ${LZ4_URL} - URL_HASH SHA256=0190cacd63022ccb86f44fa5041dc6c3804407ad61550ca21c382827319e7e7e - INSTALL_DIR ${CMAKE_BINARY_DIR} - CONFIGURE_COMMAND ${CMAKE_COMMAND} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} - -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} - -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} - -DBUILD_SHARED_LIBS=OFF - -DCMAKE_INSTALL_LIBDIR=lib - -G${CMAKE_GENERATOR} - <SOURCE_DIR>/contrib/cmake_unofficial - BUILD_COMMAND ${CMAKE_COMMAND} --build . - INSTALL_COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> -P cmake_install.cmake - LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 BUILD_IN_SOURCE 1 - BUILD_BYPRODUCTS ${LZ4_LIBRARIES}) - else() - ExternalProject_Add( - LZ4 - URL ${LZ4_URL} - URL_HASH SHA256=0190cacd63022ccb86f44fa5041dc6c3804407ad61550ca21c382827319e7e7e - INSTALL_DIR ${CMAKE_BINARY_DIR} - SOURCE_SUBDIR contrib/cmake_unofficial - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} - -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} - -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} - -DBUILD_SHARED_LIBS=OFF - -DCMAKE_INSTALL_LIBDIR=lib - LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 BUILD_IN_SOURCE 1 - BUILD_BYPRODUCTS ${LZ4_LIBRARIES}) - endif() - set(LZ4_INCLUDE_DIR ${CMAKE_BINARY_DIR}/include) + list(APPEND ROOT_BUILTINS LZ4) + add_subdirectory(builtins/lz4) endif() - #---Check for X11 which is mandatory lib on Unix-------------------------------------- if(x11) message(STATUS "Looking for X11") diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index b69e8201f10..fe85287a7b2 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -114,9 +114,9 @@ add_subdirectory(rootcling_stage1) ROOT_LINKER_LIBRARY(Core $<TARGET_OBJECTS:BaseTROOT> ${objectlibs} - LIBRARIES ${PCRE_LIBRARIES} ${LZMA_LIBRARIES} ${LZ4_LIBRARIES} ZLIB::ZLIB + LIBRARIES ${PCRE_LIBRARIES} ${LZMA_LIBRARIES} xxHash::xxHash LZ4::LZ4 ZLIB::ZLIB ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT} ${corelinklibs} - BUILTINS PCRE LZMA LZ4) + BUILTINS PCRE LZMA) if(cling) add_dependencies(Core CLING) diff --git a/core/lz4/CMakeLists.txt b/core/lz4/CMakeLists.txt index 665b7e7ca36..ef742978e68 100644 --- a/core/lz4/CMakeLists.txt +++ b/core/lz4/CMakeLists.txt @@ -1,26 +1,10 @@ -############################################################################ -# CMakeLists.txt file for building ROOT core/lz4 package -############################################################################ +find_package(LZ4 REQUIRED) +find_package(xxHash REQUIRED) - -#---The builtin LZ4 library is built using the CMake ExternalProject standard module -# in cmake/modules/SearchInstalledSoftare.cmake - -#---Declare ZipLZ4 sources as part of libCore------------------------------- -set(headers ${CMAKE_CURRENT_SOURCE_DIR}/inc/ZipLZ4.h) -set(sources ${CMAKE_CURRENT_SOURCE_DIR}/src/ZipLZ4.cxx) - - -foreach(dir ${LZ4_INCLUDE_DIR}) - include_directories(${dir}) -endforeach() +ROOT_GLOB_HEADERS(headers inc/ZipLZ4.h) +ROOT_GLOB_SOURCES(sources src/ZipLZ4.cxx) ROOT_OBJECT_LIBRARY(Lz4 ${sources}) -target_compile_definitions(Lz4 PRIVATE ${LZ4_DEFINITIONS}) - -if(builtin_lz4) - add_dependencies(Lz4 LZ4) -endif() +target_include_directories(Lz4 PRIVATE ${LZ4_INCLUDE_DIR} ${xxHash_INCLUDE_DIR}) ROOT_INSTALL_HEADERS() -install(FILES ${LZ4_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -- GitLab