diff --git a/CMakeLists.txt b/CMakeLists.txt index 4fd93d0480..2efc0e14b9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,9 +4,15 @@ if(POLICY CMP0074) cmake_policy(SET CMP0074 NEW) #3.12.0 `find_package()`` uses ``_ROOT`` variables. endif() # +include("cmake/HunterGate.cmake") +HunterGate( + URL "https://github.com/cpp-pm/hunter/archive/v0.23.253.tar.gz" + SHA1 "88ea6d37c897a81a080eb9ae0f69d7807bbb3c73" +) +# PROJECT(libarchive C) # -SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/build/cmake") +SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/build/cmake) if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${libarchive_BINARY_DIR}/bin) endif() @@ -405,21 +411,21 @@ SET(ADDITIONAL_LIBS "") # Find ZLIB # IF(ENABLE_ZLIB) - FIND_PACKAGE(ZLIB) + hunter_add_package(ZLIB) + find_package(ZLIB CONFIG REQUIRED) ELSE() SET(ZLIB_FOUND FALSE) # Override cached value ENDIF() IF(ZLIB_FOUND) SET(HAVE_LIBZ 1) SET(HAVE_ZLIB_H 1) - INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) - LIST(APPEND ADDITIONAL_LIBS ${ZLIB_LIBRARIES}) + LIST(APPEND ADDITIONAL_LIBS ZLIB::zlib) IF(WIN32 AND NOT CYGWIN) # # Test if ZLIB_WINAPI macro is needed to use. # TRY_MACRO_FOR_LIBRARY( - "${ZLIB_INCLUDE_DIR}" "${ZLIB_LIBRARIES}" + "" "ZLIB::zlib" RUNS "#include \nint main() {uLong f = zlibCompileFlags(); return (f&(1U<<10))?0:-1; }" ZLIB_WINAPI) @@ -428,7 +434,7 @@ IF(ZLIB_FOUND) ELSE(ZLIB_WINAPI) # Test if a macro is needed for the library. TRY_MACRO_FOR_LIBRARY( - "${ZLIB_INCLUDE_DIR}" "${ZLIB_LIBRARIES}" + "" "ZLIB::zlib" COMPILES "#include \nint main() {return zlibVersion()?1:0; }" "ZLIB_DLL;WITHOUT_ZLIB_DLL") @@ -444,18 +450,18 @@ MARK_AS_ADVANCED(CLEAR ZLIB_LIBRARY) # Find BZip2 # IF(ENABLE_BZip2) - FIND_PACKAGE(BZip2) + hunter_add_package(BZip2) + find_package(BZip2 CONFIG REQUIRED) ELSE() - SET(BZIP2_FOUND FALSE) # Override cached value + SET(BZip2_FOUND FALSE) # Override cached value ENDIF() -IF(BZIP2_FOUND) +IF(BZip2_FOUND) SET(HAVE_LIBBZ2 1) SET(HAVE_BZLIB_H 1) - INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR}) - LIST(APPEND ADDITIONAL_LIBS ${BZIP2_LIBRARIES}) + LIST(APPEND ADDITIONAL_LIBS BZip2::bz2) # Test if a macro is needed for the library. TRY_MACRO_FOR_LIBRARY( - "${BZIP2_INCLUDE_DIR}" "${BZIP2_LIBRARIES}" + "" "BZip2::bz2" COMPILES "#include \nint main() {return BZ2_bzlibVersion()?1:0; }" "USE_BZIP2_DLL;USE_BZIP2_STATIC") @@ -464,7 +470,7 @@ IF(BZIP2_FOUND) ELSEIF(USE_BZIP2_STATIC) ADD_DEFINITIONS(-DUSE_BZIP2_STATIC) ENDIF(USE_BZIP2_DLL) -ENDIF(BZIP2_FOUND) +ENDIF(BZip2_FOUND) MARK_AS_ADVANCED(CLEAR BZIP2_INCLUDE_DIR) MARK_AS_ADVANCED(CLEAR BZIP2_LIBRARIES) @@ -473,22 +479,20 @@ MARK_AS_ADVANCED(CLEAR BZIP2_LIBRARIES) # Find LZMA # IF(ENABLE_LZMA) - FIND_PACKAGE(LibLZMA) + hunter_add_package(lzma) + find_package(lzma CONFIG REQUIRED) ELSE() - SET(LIBLZMA_FOUND FALSE) # Override cached value + SET(lzma_FOUND FALSE) # Override cached value ENDIF() -IF(LIBLZMA_FOUND) +IF(lzma_FOUND) SET(HAVE_LIBLZMA 1) SET(HAVE_LZMA_H 1) CMAKE_PUSH_CHECK_STATE() - SET(CMAKE_REQUIRED_INCLUDES ${LIBLZMA_INCLUDE_DIR}) - SET(CMAKE_REQUIRED_LIBRARIES ${LIBLZMA_LIBRARIES}) - INCLUDE_DIRECTORIES(${LIBLZMA_INCLUDE_DIRS}) - LIST(APPEND ADDITIONAL_LIBS ${LIBLZMA_LIBRARIES}) + LIST(APPEND ADDITIONAL_LIBS lzma::lzma) # Test if a macro is needed for the library. TRY_MACRO_FOR_LIBRARY( - "${LIBLZMA_INCLUDE_DIRS}" "${LIBLZMA_LIBRARIES}" + "" "lzma::lzma" COMPILES "#include \nint main() {return (int)lzma_version_number(); }" "WITHOUT_LZMA_API_STATIC;LZMA_API_STATIC") @@ -496,9 +500,9 @@ IF(LIBLZMA_FOUND) ADD_DEFINITIONS(-DLZMA_API_STATIC) ENDIF(NOT WITHOUT_LZMA_API_STATIC AND LZMA_API_STATIC) CMAKE_POP_CHECK_STATE() -ELSE(LIBLZMA_FOUND) +ELSE(lzma_FOUND) # LZMA not found and will not be used. -ENDIF(LIBLZMA_FOUND) +ENDIF(lzma_FOUND) MARK_AS_ADVANCED(CLEAR LIBLZMA_INCLUDE_DIR) MARK_AS_ADVANCED(CLEAR LIBLZMA_LIBRARY) @@ -563,62 +567,45 @@ ENDIF(LIBB2_FOUND) # Find LZ4 # IF(ENABLE_LZ4) - IF (LZ4_INCLUDE_DIR) - # Already in cache, be silent - SET(LZ4_FIND_QUIETLY TRUE) - ENDIF (LZ4_INCLUDE_DIR) - - FIND_PATH(LZ4_INCLUDE_DIR lz4.h) - FIND_LIBRARY(LZ4_LIBRARY NAMES lz4 liblz4) - INCLUDE(FindPackageHandleStandardArgs) - FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZ4 DEFAULT_MSG LZ4_LIBRARY LZ4_INCLUDE_DIR) + hunter_add_package(lz4) + find_package(lz4 CONFIG REQUIRED) ELSE(ENABLE_LZ4) - SET(LZ4_FOUND FALSE) # Override cached value + SET(lz4_FOUND FALSE) # Override cached value ENDIF(ENABLE_LZ4) -IF(LZ4_FOUND) +IF(lz4_FOUND) SET(HAVE_LIBLZ4 1) SET(HAVE_LZ4_H 1) + LIST(APPEND ADDITIONAL_LIBS lz4::lz4) CMAKE_PUSH_CHECK_STATE() # Save the state of the variables - SET(CMAKE_REQUIRED_INCLUDES ${LZ4_INCLUDE_DIR}) + SET(CMAKE_REQUIRED_LIBRARIES lz4::lz4) CHECK_INCLUDE_FILES("lz4hc.h" HAVE_LZ4HC_H) CMAKE_POP_CHECK_STATE() # Restore the state of the variables - INCLUDE_DIRECTORIES(${LZ4_INCLUDE_DIR}) - LIST(APPEND ADDITIONAL_LIBS ${LZ4_LIBRARY}) # # TODO: test for static library. # -ENDIF(LZ4_FOUND) +ENDIF(lz4_FOUND) MARK_AS_ADVANCED(CLEAR LZ4_INCLUDE_DIR) MARK_AS_ADVANCED(CLEAR LZ4_LIBRARY) # # Find Zstd # IF(ENABLE_ZSTD) - IF (ZSTD_INCLUDE_DIR) - # Already in cache, be silent - SET(ZSTD_FIND_QUIETLY TRUE) - ENDIF (ZSTD_INCLUDE_DIR) - - FIND_PATH(ZSTD_INCLUDE_DIR zstd.h) - FIND_LIBRARY(ZSTD_LIBRARY NAMES zstd libzstd) - INCLUDE(FindPackageHandleStandardArgs) - FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZSTD DEFAULT_MSG ZSTD_LIBRARY ZSTD_INCLUDE_DIR) + hunter_add_package(zstd) + find_package(zstd CONFIG REQUIRED) ELSE(ENABLE_ZSTD) - SET(ZSTD_FOUND FALSE) # Override cached value + SET(zstd_FOUND FALSE) # Override cached value ENDIF(ENABLE_ZSTD) -IF(ZSTD_FOUND) +IF(zstd_FOUND) SET(HAVE_ZSTD_H 1) - INCLUDE_DIRECTORIES(${ZSTD_INCLUDE_DIR}) - LIST(APPEND ADDITIONAL_LIBS ${ZSTD_LIBRARY}) + LIST(APPEND ADDITIONAL_LIBS zstd::libzstd_static) CMAKE_PUSH_CHECK_STATE() - SET(CMAKE_REQUIRED_LIBRARIES ${ZSTD_LIBRARY}) - SET(CMAKE_REQUIRED_INCLUDES ${ZSTD_INCLUDE_DIR}) + SET(CMAKE_REQUIRED_LIBRARIES zstd::libzstd_static) CHECK_FUNCTION_EXISTS(ZSTD_compressStream HAVE_LIBZSTD) # # TODO: test for static library. # CMAKE_POP_CHECK_STATE() -ENDIF(ZSTD_FOUND) +ENDIF(zstd_FOUND) MARK_AS_ADVANCED(CLEAR ZSTD_INCLUDE_DIR) MARK_AS_ADVANCED(CLEAR ZSTD_LIBRARY) @@ -1143,7 +1130,8 @@ ELSE(LIBXML2_FOUND) # Find Expat # IF(ENABLE_EXPAT) - FIND_PACKAGE(EXPAT) + hunter_add_package(Expat) + find_package(EXPAT REQUIRED) ELSE() SET(EXPAT_FOUND FALSE) ENDIF()