Blame CMakeLists.txt

Packit Service 1d0348
#
Packit Service 1d0348
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12 FATAL_ERROR)
Packit Service 1d0348
#
Packit Service 1d0348
PROJECT(libarchive C)
Packit Service 1d0348
#
Packit Service 1d0348
SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/build/cmake")
Packit Service 1d0348
if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
Packit Service 1d0348
  set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${libarchive_BINARY_DIR}/bin)
Packit Service 1d0348
endif()
Packit Service 1d0348
#
Packit Service 1d0348
# Set the Build type for make based generators.
Packit Service 1d0348
# You can choose following types:
Packit Service 1d0348
#   Debug          : Debug build
Packit Service 1d0348
#   Release        : Release build
Packit Service 1d0348
#   RelWithDebInfo : Release build with Debug Info
Packit Service 1d0348
#   MinSizeRel     : Release Min Size build
Packit Service 1d0348
IF(NOT CMAKE_BUILD_TYPE)
Packit Service 1d0348
  SET(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build Type" FORCE)
Packit Service 1d0348
ENDIF(NOT CMAKE_BUILD_TYPE)
Packit Service 1d0348
# Set a value type to properly display CMAKE_BUILD_TYPE on GUI if the
Packit Service 1d0348
# value type is "UNINITIALIZED".
Packit Service 1d0348
GET_PROPERTY(cached_type CACHE CMAKE_BUILD_TYPE PROPERTY TYPE)
Packit Service 1d0348
IF("${cached_type}" STREQUAL "UNINITIALIZED")
Packit Service 1d0348
  SET(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "Build Type" FORCE)
Packit Service 1d0348
ENDIF("${cached_type}" STREQUAL "UNINITIALIZED")
Packit Service 1d0348
# Check the Build Type.
Packit Service 1d0348
IF(NOT "${CMAKE_BUILD_TYPE}"
Packit Service 1d0348
       MATCHES "^(Debug|Release|RelWithDebInfo|MinSizeRel)\$")
Packit Service 1d0348
  MESSAGE(FATAL_ERROR
Packit Service 1d0348
          "Unknown keyword for CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}\n"
Packit Service 1d0348
          "Acceptable keywords: Debug,Release,RelWithDebInfo,MinSizeRel")
Packit Service 1d0348
ENDIF(NOT "${CMAKE_BUILD_TYPE}"
Packit Service 1d0348
          MATCHES "^(Debug|Release|RelWithDebInfo|MinSizeRel)\$")
Packit Service 1d0348
Packit Service 1d0348
# On MacOS, prefer MacPorts libraries to system libraries.
Packit Service 1d0348
# I haven't come up with a compelling argument for this to be conditional.
Packit Service 1d0348
list(APPEND CMAKE_PREFIX_PATH /opt/local)
Packit Service 1d0348
# Enable @rpath in the install name.
Packit Service 1d0348
# detail in "cmake  --help-policy CMP0042"
Packit Service 1d0348
SET(CMAKE_MACOSX_RPATH ON)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Version - read from 'version' file.
Packit Service 1d0348
#
Packit Service 1d0348
FILE(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/build/version _version)
Packit Service 1d0348
STRING(REGEX REPLACE
Packit Service 1d0348
 "^([0-9])[0-9][0-9][0-9][0-9][0-9][0-9][a-z]*$" "\\1" _major ${_version})
Packit Service 1d0348
STRING(REGEX REPLACE
Packit Service 1d0348
 "^[0-9]([0-9][0-9][0-9])[0-9][0-9][0-9][a-z]*$" "\\1" _minor ${_version})
Packit Service 1d0348
STRING(REGEX REPLACE
Packit Service 1d0348
 "^[0-9][0-9][0-9][0-9]([0-9][0-9][0-9])[a-z]*$" "\\1" _revision ${_version})
Packit Service 1d0348
STRING(REGEX REPLACE
Packit Service 1d0348
 "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9]([a-z]*)$" "\\1" _quality ${_version})
Packit Service 1d0348
SET(_version_number ${_major}${_minor}${_revision})
Packit Service 1d0348
STRING(REGEX REPLACE "[0]*([^0]*[0-9])$" "\\1" _trimmed_minor ${_minor})
Packit Service 1d0348
STRING(REGEX REPLACE "[0]*([^0]*[0-9])$" "\\1" _trimmed_revision ${_revision})
Packit Service 1d0348
#
Packit Service 1d0348
SET(VERSION                    "${_major}.${_trimmed_minor}.${_trimmed_revision}${_quality}")
Packit Service 1d0348
SET(BSDCPIO_VERSION_STRING     "${VERSION}")
Packit Service 1d0348
SET(BSDTAR_VERSION_STRING      "${VERSION}")
Packit Service 1d0348
SET(BSDCAT_VERSION_STRING      "${VERSION}")
Packit Service 1d0348
SET(LIBARCHIVE_VERSION_NUMBER  "${_version_number}")
Packit Service 1d0348
SET(LIBARCHIVE_VERSION_STRING  "${VERSION}")
Packit Service 1d0348
Packit Service 1d0348
# INTERFACE_VERSION increments with every release
Packit Service 1d0348
# libarchive 2.7 == interface version 9 = 2 + 7
Packit Service 1d0348
# libarchive 2.8 == interface version 10 = 2 + 8
Packit Service 1d0348
# libarchive 2.9 == interface version 11 = 2 + 9
Packit Service 1d0348
# libarchive 3.0 == interface version 12
Packit Service 1d0348
# libarchive 3.1 == interface version 13
Packit Service 1d0348
math(EXPR INTERFACE_VERSION  "13 + ${_minor}")
Packit Service 1d0348
Packit Service 1d0348
# Set SOVERSION == Interface version
Packit Service 1d0348
# ?? Should there be more here ??
Packit Service 1d0348
SET(SOVERSION "${INTERFACE_VERSION}")
Packit Service 1d0348
Packit Service 1d0348
# Enalbe CMAKE_PUSH_CHECK_STATE() and CMAKE_POP_CHECK_STATE() macros
Packit Service 1d0348
# saving and restoring the state of the variables.
Packit Service 1d0348
INCLUDE(CMakePushCheckState)
Packit Service 1d0348
Packit Service 1d0348
# Initialize the state of the variables. This initialization is not
Packit Service 1d0348
# necessary but this shows you what value the variables initially have.
Packit Service 1d0348
SET(CMAKE_REQUIRED_DEFINITIONS)
Packit Service 1d0348
SET(CMAKE_REQUIRED_INCLUDES)
Packit Service 1d0348
SET(CMAKE_REQUIRED_LIBRARIES)
Packit Service 1d0348
SET(CMAKE_REQUIRED_FLAGS)
Packit Service 1d0348
Packit Service 1d0348
# Especially for early development, we want to be a little
Packit Service 1d0348
# aggressive about diagnosing build problems; this can get
Packit Service 1d0348
# relaxed somewhat in final shipping versions.
Packit Service 1d0348
IF (CMAKE_C_COMPILER_ID MATCHES "^GNU$")
Packit Service 1d0348
  SET(CMAKE_REQUIRED_FLAGS "-Wall -Wformat -Wformat-security")
Packit Service 1d0348
  #################################################################
Packit Service 1d0348
  # Set compile flags for all build types.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wformat -Wformat-security")
Packit Service 1d0348
  #################################################################
Packit Service 1d0348
  # Set compile flags for debug build.
Packit Service 1d0348
  # This is added into CMAKE_C_FLAGS when CMAKE_BUILD_TYPE is "Debug"
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Werror")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wextra")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wunused")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wshadow")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wmissing-prototypes")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wcast-qual")
Packit Service 1d0348
ENDIF (CMAKE_C_COMPILER_ID MATCHES "^GNU$")
Packit Service 1d0348
IF (CMAKE_C_COMPILER_ID MATCHES "^Clang$")
Packit Service 1d0348
  SET(CMAKE_REQUIRED_FLAGS "-Wall -Wformat -Wformat-security")
Packit Service 1d0348
  #################################################################
Packit Service 1d0348
  # Set compile flags for all build types.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wformat -Wformat-security")
Packit Service 1d0348
  #################################################################
Packit Service 1d0348
  # Set compile flags for debug build.
Packit Service 1d0348
  # This is added into CMAKE_C_FLAGS when CMAKE_BUILD_TYPE is "Debug"
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Werror")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wextra")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wunused")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wshadow")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wmissing-prototypes")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wcast-qual")
Packit Service 1d0348
ENDIF (CMAKE_C_COMPILER_ID MATCHES "^Clang$")
Packit Service 1d0348
IF (CMAKE_C_COMPILER_ID MATCHES "^XL$")
Packit Service 1d0348
  SET(CMAKE_C_COMPILER "xlc_r")
Packit Service 1d0348
  SET(CMAKE_REQUIRED_FLAGS "-qflag=e:e -qformat=sec")
Packit Service 1d0348
  #################################################################
Packit Service 1d0348
  # Set compile flags for all build types.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -qflag=e:e -qformat=sec")
Packit Service 1d0348
  #################################################################
Packit Service 1d0348
  # Set compile flags for debug build.
Packit Service 1d0348
  # This is added into CMAKE_C_FLAGS when CMAKE_BUILD_TYPE is "Debug"
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -qhalt=w")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -qflag=w:w")
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -qinfo=pro:use")
Packit Service 1d0348
ENDIF(CMAKE_C_COMPILER_ID MATCHES "^XL$")
Packit Service 1d0348
IF (MSVC)
Packit Service 1d0348
  #################################################################
Packit Service 1d0348
  # Set compile flags for debug build.
Packit Service 1d0348
  # This is added into CMAKE_C_FLAGS when CMAKE_BUILD_TYPE is "Debug"
Packit Service 1d0348
  # Enable level 4 C4061: The enumerate has no associated handler in a switch
Packit Service 1d0348
  #                       statement.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /we4061")
Packit Service 1d0348
  # Enable level 4 C4254: A larger bit field was assigned to a smaller bit
Packit Service 1d0348
  #                       field.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /we4254")
Packit Service 1d0348
  # Enable level 4 C4295: An array was initialized but the last character in
Packit Service 1d0348
  #                       the array is not a null; accessing the array may
Packit Service 1d0348
  #                       produce unexpected results.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /we4295")
Packit Service 1d0348
  # Enable level 4 C4296: An unsigned variable was used in a comparison
Packit Service 1d0348
  #                       operation with zero.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /we4296")
Packit Service 1d0348
  # Enable level 4 C4389: An operation involved signed and unsigned variables.
Packit Service 1d0348
  #                       This could result in a loss of data.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /we4389")
Packit Service 1d0348
  # Enable level 4 C4505: The given function is local and not referenced in
Packit Service 1d0348
  #                       the body of the module; therefore, the function is
Packit Service 1d0348
  #                       dead code.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /we4505")
Packit Service 1d0348
  # Enable level 4 C4514: The optimizer removed an inline function that is not
Packit Service 1d0348
  #                       called.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /we4514")
Packit Service 1d0348
  # Enable level 4 C4702: Unreachable code.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /we4702")
Packit Service 1d0348
  # Enable level 4 C4706: The test value in a conditional expression was the
Packit Service 1d0348
  #                       result of an assignment.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /we4706")
Packit Service 1d0348
  # /WX option is the same as gcc's -Werror option.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /WX")
Packit Service 1d0348
  # /Oi option enables built-in functions.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /Oi")
Packit Service 1d0348
  #################################################################
Packit Service 1d0348
  # Set compile flags for release build.
Packit Service 1d0348
  SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Oi")
Packit Service 1d0348
ENDIF (MSVC)
Packit Service 1d0348
Packit Service 1d0348
# Enable CTest/CDash support
Packit Service 1d0348
include(CTest)
Packit Service 1d0348
Packit Service 1d0348
OPTION(ENABLE_NETTLE "Enable use of Nettle" ON)
Packit Service 1d0348
OPTION(ENABLE_OPENSSL "Enable use of OpenSSL" ON)
Packit Service 1d0348
OPTION(ENABLE_LZ4 "Enable the use of the system LZ4 library if found" ON)
Packit Service 1d0348
OPTION(ENABLE_LZO "Enable the use of the system LZO library if found" OFF)
Packit Service 1d0348
OPTION(ENABLE_LZMA "Enable the use of the system LZMA library if found" ON)
Packit Service 1d0348
Packit Service 1d0348
OPTION(ENABLE_ZLIB "Enable the use of the system ZLIB library if found" ON)
Packit Service 1d0348
OPTION(ENABLE_BZip2 "Enable the use of the system BZip2 library if found" ON)
Packit Service 1d0348
OPTION(ENABLE_LIBXML2 "Enable the use of the system libxml2 library if found" ON)
Packit Service 1d0348
OPTION(ENABLE_EXPAT "Enable the use of the system EXPAT library if found" ON)
Packit Service 1d0348
OPTION(ENABLE_PCREPOSIX "Enable the use of the system PCREPOSIX library if found" ON)
Packit Service 1d0348
OPTION(ENABLE_LibGCC "Enable the use of the system LibGCC library if found" ON)
Packit Service 1d0348
# CNG is used for encrypt/decrypt Zip archives on Windows.
Packit Service 1d0348
OPTION(ENABLE_CNG "Enable the use of CNG(Crypto Next Generation)" ON)
Packit Service 1d0348
Packit Service 1d0348
OPTION(ENABLE_TAR "Enable tar building" ON)
Packit Service 1d0348
OPTION(ENABLE_TAR_SHARED "Enable dynamic build of tar" FALSE)
Packit Service 1d0348
OPTION(ENABLE_CPIO "Enable cpio building" ON)
Packit Service 1d0348
OPTION(ENABLE_CPIO_SHARED "Enable dynamic build of cpio" FALSE)
Packit Service 1d0348
OPTION(ENABLE_CAT "Enable cat building" ON)
Packit Service 1d0348
OPTION(ENABLE_CAT_SHARED "Enable dynamic build of cat" FALSE)
Packit Service 1d0348
OPTION(ENABLE_XATTR "Enable extended attribute support" ON)
Packit Service 1d0348
OPTION(ENABLE_ACL "Enable ACL support" ON)
Packit Service 1d0348
OPTION(ENABLE_ICONV "Enable iconv support" ON)
Packit Service 1d0348
OPTION(ENABLE_TEST "Enable unit and regression tests" ON)
Packit Service 1d0348
OPTION(ENABLE_COVERAGE "Enable code coverage (GCC only, automatically sets ENABLE_TEST to ON)" FALSE)
Packit Service 1d0348
OPTION(ENABLE_INSTALL "Enable installing of libraries" ON)
Packit Service 1d0348
Packit Service 1d0348
SET(POSIX_REGEX_LIB "AUTO" CACHE STRING "Choose what library should provide POSIX regular expression support")
Packit Service 1d0348
SET(ENABLE_SAFESEH "AUTO" CACHE STRING "Enable use of /SAFESEH linker flag (MSVC only)")
Packit Service 1d0348
SET(WINDOWS_VERSION "WIN7" CACHE STRING "Set Windows version to use (Windows only)")
Packit Service 1d0348
Packit Service 1d0348
IF(ENABLE_COVERAGE)
Packit Service 1d0348
	include(LibarchiveCodeCoverage)
Packit Service 1d0348
ENDIF(ENABLE_COVERAGE)
Packit Service 1d0348
Packit Service 1d0348
IF(ENABLE_TEST)
Packit Service 1d0348
	ENABLE_TESTING()
Packit Service 1d0348
ENDIF(ENABLE_TEST)
Packit Service 1d0348
Packit Service 1d0348
IF(WIN32)
Packit Service 1d0348
  IF(WINDOWS_VERSION STREQUAL "WIN8")
Packit Service 1d0348
    SET(NTDDI_VERSION 0x06020000)
Packit Service 1d0348
    SET(_WIN32_WINNT 0x0602)
Packit Service 1d0348
    SET(WINVER 0x0602)
Packit Service 1d0348
  ELSEIF(WINDOWS_VERSION STREQUAL "WIN7")
Packit Service 1d0348
    SET(NTDDI_VERSION 0x06010000)
Packit Service 1d0348
    SET(_WIN32_WINNT 0x0601)
Packit Service 1d0348
    SET(WINVER 0x0601)
Packit Service 1d0348
  ELSEIF(WINDOWS_VERSION STREQUAL "WS08")
Packit Service 1d0348
    SET(NTDDI_VERSION 0x06000100)
Packit Service 1d0348
    SET(_WIN32_WINNT 0x0600)
Packit Service 1d0348
    SET(WINVER 0x0600)
Packit Service 1d0348
  ELSEIF(WINDOWS_VERSION STREQUAL "VISTA")
Packit Service 1d0348
    SET(NTDDI_VERSION 0x06000000)
Packit Service 1d0348
    SET(_WIN32_WINNT 0x0600)
Packit Service 1d0348
    SET(WINVER 0x0600)
Packit Service 1d0348
  ELSEIF(WINDOWS_VERSION STREQUAL "WS03")
Packit Service 1d0348
    SET(NTDDI_VERSION 0x05020000)
Packit Service 1d0348
    SET(_WIN32_WINNT 0x0502)
Packit Service 1d0348
    SET(WINVER 0x0502)
Packit Service 1d0348
  ELSEIF(WINDOWS_VERSION STREQUAL "WINXP")
Packit Service 1d0348
    SET(NTDDI_VERSION 0x05010000)
Packit Service 1d0348
    SET(_WIN32_WINNT 0x0501)
Packit Service 1d0348
    SET(WINVER 0x0501)
Packit Service 1d0348
  ELSE(WINDOWS_VERSION STREQUAL "WIN8")
Packit Service 1d0348
    # Default to Windows Server 2003 API if we don't recognize the specifier
Packit Service 1d0348
    SET(NTDDI_VERSION 0x05020000)
Packit Service 1d0348
    SET(_WIN32_WINNT 0x0502)
Packit Service 1d0348
    SET(WINVER 0x0502)
Packit Service 1d0348
  ENDIF(WINDOWS_VERSION STREQUAL "WIN8")
Packit Service 1d0348
ENDIF(WIN32)
Packit Service 1d0348
Packit Service 1d0348
IF(MSVC)
Packit Service 1d0348
  IF(ENABLE_SAFESEH STREQUAL "YES")
Packit Service 1d0348
    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH")
Packit Service 1d0348
    SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH")
Packit Service 1d0348
    SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH")
Packit Service 1d0348
    SET(ENV{LDFLAGS} "$ENV{LDFLAGS} /SAFESEH")
Packit Service 1d0348
  ELSEIF(ENABLE_SAFESEH STREQUAL "NO")
Packit Service 1d0348
    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
Packit Service 1d0348
    SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
Packit Service 1d0348
    SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO")
Packit Service 1d0348
    SET(ENV{LDFLAGS} "$ENV{LDFLAGS} /SAFESEH:NO")
Packit Service 1d0348
  ENDIF(ENABLE_SAFESEH STREQUAL "YES")
Packit Service 1d0348
ENDIF(MSVC)
Packit Service 1d0348
Packit Service 1d0348
IF("${CMAKE_C_PLATFORM_ID}" MATCHES "^(HP-UX)$")
Packit Service 1d0348
  ADD_DEFINITIONS(-D_XOPEN_SOURCE=500) # Ask wchar.h for mbstate_t
Packit Service 1d0348
ENDIF()
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
INCLUDE(CheckCSourceCompiles)
Packit Service 1d0348
INCLUDE(CheckCSourceRuns)
Packit Service 1d0348
INCLUDE(CheckFileOffsetBits)
Packit Service 1d0348
INCLUDE(CheckFuncs)
Packit Service 1d0348
INCLUDE(CheckHeaderDirent)
Packit Service 1d0348
INCLUDE(CheckIncludeFile)
Packit Service 1d0348
INCLUDE(CheckIncludeFiles)
Packit Service 1d0348
INCLUDE(CheckLibraryExists)
Packit Service 1d0348
INCLUDE(CheckStructHasMember)
Packit Service 1d0348
INCLUDE(CheckSymbolExists)
Packit Service 1d0348
INCLUDE(CheckTypeExists)
Packit Service 1d0348
INCLUDE(CheckTypeSize)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Generate list.h
Packit Service 1d0348
#
Packit Service 1d0348
MACRO (GENERATE_LIST_H _listfile _cmlist __list_sources)
Packit Service 1d0348
  SET(_argv ${ARGV})
Packit Service 1d0348
  # Remove _listfile and _cmlist from _argv
Packit Service 1d0348
  LIST(REMOVE_AT _argv 0 1)
Packit Service 1d0348
  IF (NOT EXISTS "${_listfile}" OR
Packit Service 1d0348
     ${_cmlist} IS_NEWER_THAN "${_listfile}")
Packit Service 1d0348
Packit Service 1d0348
    MESSAGE(STATUS "Generating ${_listfile}")
Packit Service 1d0348
    FILE(WRITE ${_listfile} "")
Packit Service 1d0348
    FOREACH (testfile ${_argv})
Packit Service 1d0348
      IF (testfile MATCHES "^test_[^/]+[.]c$")
Packit Service 1d0348
        FILE(STRINGS ${testfile} testvar REGEX "^DEFINE_TEST")
Packit Service 1d0348
        FOREACH (deftest ${testvar})
Packit Service 1d0348
          FILE(APPEND ${_listfile} "${deftest}\n")
Packit Service 1d0348
        ENDFOREACH (deftest)
Packit Service 1d0348
      ENDIF (testfile MATCHES "^test_[^/]+[.]c$")
Packit Service 1d0348
    ENDFOREACH (testfile)
Packit Service 1d0348
Packit Service 1d0348
  ENDIF (NOT EXISTS "${_listfile}" OR
Packit Service 1d0348
     ${_cmlist} IS_NEWER_THAN "${_listfile}")
Packit Service 1d0348
ENDMACRO (GENERATE_LIST_H)
Packit Service 1d0348
#
Packit Service 1d0348
# Generate installation rules for man pages.
Packit Service 1d0348
#
Packit Service 1d0348
MACRO (INSTALL_MAN __mans)
Packit Service 1d0348
  FOREACH (_man ${ARGV})
Packit Service 1d0348
    STRING(REGEX REPLACE "^.+[.]([1-9])" "\\1" _mansect ${_man})
Packit Service 1d0348
    INSTALL(FILES ${_man} DESTINATION "share/man/man${_mansect}")
Packit Service 1d0348
  ENDFOREACH (_man)
Packit Service 1d0348
ENDMACRO (INSTALL_MAN __mans)
Packit Service 1d0348
#
Packit Service 1d0348
# Find out what macro is needed to use libraries on Windows.
Packit Service 1d0348
#
Packit Service 1d0348
MACRO (TRY_MACRO_FOR_LIBRARY INCLUDES LIBRARIES
Packit Service 1d0348
       TRY_TYPE SAMPLE_SOURCE MACRO_LIST)
Packit Service 1d0348
  IF(WIN32 AND NOT CYGWIN)
Packit Service 1d0348
    CMAKE_PUSH_CHECK_STATE()	# Save the state of the variables
Packit Service 1d0348
    SET(CMAKE_REQUIRED_INCLUDES ${INCLUDES})
Packit Service 1d0348
    SET(CMAKE_REQUIRED_LIBRARIES ${LIBRARIES})
Packit Service 1d0348
    FOREACH(VAR ${MACRO_LIST})
Packit Service 1d0348
      # Clear ${VAR} from CACHE If the libraries which ${VAR} was
Packit Service 1d0348
      # checked with are changed.
Packit Service 1d0348
      SET(VAR_WITH_LIB "${VAR}_WITH_LIB")
Packit Service 1d0348
      GET_PROPERTY(PREV_VAR_WITH_LIB VARIABLE PROPERTY ${VAR_WITH_LIB})
Packit Service 1d0348
      IF(NOT "${PREV_VAR_WITH_LIB}" STREQUAL "${LIBRARIES}")
Packit Service 1d0348
        UNSET(${VAR} CACHE)
Packit Service 1d0348
      ENDIF(NOT "${PREV_VAR_WITH_LIB}" STREQUAL "${LIBRARIES}")
Packit Service 1d0348
      # Check if the library can be used with the macro.
Packit Service 1d0348
      IF("${TRY_TYPE}" MATCHES "COMPILES")
Packit Service 1d0348
        CHECK_C_SOURCE_COMPILES("${SAMPLE_SOURCE}" ${VAR})
Packit Service 1d0348
      ELSEIF("${TRY_TYPE}" MATCHES "RUNS")
Packit Service 1d0348
        CHECK_C_SOURCE_RUNS("${SAMPLE_SOURCE}" ${VAR})
Packit Service 1d0348
      ELSE("${TRY_TYPE}" MATCHES "COMPILES")
Packit Service 1d0348
        MESSAGE(FATAL_ERROR "UNKNOWN KEYWORD \"${TRY_TYPE}\" FOR TRY_TYPE")
Packit Service 1d0348
      ENDIF("${TRY_TYPE}" MATCHES "COMPILES")
Packit Service 1d0348
      # Save the libraries which ${VAR} is checked with.
Packit Service 1d0348
      SET(${VAR_WITH_LIB} "${LIBRARIES}" CACHE INTERNAL
Packit Service 1d0348
          "Macro ${VAR} is checked with")
Packit Service 1d0348
    ENDFOREACH(VAR)
Packit Service 1d0348
    CMAKE_POP_CHECK_STATE()	# Restore the state of the variables
Packit Service 1d0348
  ENDIF(WIN32 AND NOT CYGWIN)
Packit Service 1d0348
ENDMACRO (TRY_MACRO_FOR_LIBRARY)
Packit Service 1d0348
#
Packit Service 1d0348
# Check compress/decompress libraries
Packit Service 1d0348
#
Packit Service 1d0348
IF(WIN32 AND NOT CMAKE_CL_64 AND NOT CYGWIN)
Packit Service 1d0348
  # GnuWin32 is only for Win32, not Win64.
Packit Service 1d0348
  SET(__GNUWIN32PATH "C:/Program Files/GnuWin32")
Packit Service 1d0348
ENDIF(WIN32 AND NOT CMAKE_CL_64 AND NOT CYGWIN)
Packit Service 1d0348
IF(DEFINED __GNUWIN32PATH AND EXISTS "${__GNUWIN32PATH}")
Packit Service 1d0348
  # You have to add a path availabel DLL file into PATH environment variable.
Packit Service 1d0348
  # Maybe DLL path is "C:/Program Files/GnuWin32/bin".
Packit Service 1d0348
  # The zlib and the bzip2 Setup program have installed programs and DLLs into
Packit Service 1d0348
  # "C:/Program Files/GnuWin32" by default.
Packit Service 1d0348
  # This is convenience setting for Windows.
Packit Service 1d0348
  SET(CMAKE_PREFIX_PATH ${__GNUWIN32PATH} $(CMAKE_PREFIX_PATH))
Packit Service 1d0348
  #
Packit Service 1d0348
  # If you didn't use Setup program or installed into nonstandard path,
Packit Service 1d0348
  # cmake cannot find out your zlib or bzip2 libraries and include files,
Packit Service 1d0348
  # you should execute cmake with  -DCMAKE_PREFIX_PATH option.
Packit Service 1d0348
  #   e.g.
Packit Service 1d0348
  #     cmake -DCMAKE_PREFIX_PATH=<your-GnuWin32-path> <path-to-source>
Packit Service 1d0348
  #
Packit Service 1d0348
  # If compiling error occurred in zconf.h, You may need patch to zconf.h.
Packit Service 1d0348
  #--- zconf.h.orig	2005-07-21 00:40:26.000000000
Packit Service 1d0348
  #+++ zconf.h	2009-01-19 11:39:10.093750000
Packit Service 1d0348
  #@@ -286,7 +286,7 @@
Packit Service 1d0348
  #
Packit Service 1d0348
  # #if 1           /* HAVE_UNISTD_H -- this line is updated by ./configure */
Packit Service 1d0348
  # #  include <sys/types.h> /* for off_t */
Packit Service 1d0348
  #-#  include <unistd.h>    /* for SEEK_* and off_t */
Packit Service 1d0348
  #+#  include <stdio.h>    /* for SEEK_* and off_t */
Packit Service 1d0348
  # #  ifdef VMS
Packit Service 1d0348
  # #    include <unixio.h>   /* for off_t */
Packit Service 1d0348
  # #  endif
Packit Service 1d0348
ENDIF(DEFINED __GNUWIN32PATH AND EXISTS "${__GNUWIN32PATH}")
Packit Service 1d0348
Packit Service 1d0348
SET(ADDITIONAL_LIBS "")
Packit Service 1d0348
#
Packit Service 1d0348
# Find ZLIB
Packit Service 1d0348
#
Packit Service 1d0348
IF(ENABLE_ZLIB)
Packit Service 1d0348
  FIND_PACKAGE(ZLIB)
Packit Service 1d0348
ELSE()
Packit Service 1d0348
  SET(ZLIB_FOUND FALSE) # Override cached value
Packit Service 1d0348
ENDIF()
Packit Service 1d0348
IF(ZLIB_FOUND)
Packit Service 1d0348
  SET(HAVE_LIBZ 1)
Packit Service 1d0348
  SET(HAVE_ZLIB_H 1)
Packit Service 1d0348
  INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
Packit Service 1d0348
  LIST(APPEND ADDITIONAL_LIBS ${ZLIB_LIBRARIES})
Packit Service 1d0348
  IF(WIN32 AND NOT CYGWIN)
Packit Service 1d0348
    #
Packit Service 1d0348
    # Test if ZLIB_WINAPI macro is needed to use.
Packit Service 1d0348
    #
Packit Service 1d0348
    TRY_MACRO_FOR_LIBRARY(
Packit Service 1d0348
      "${ZLIB_INCLUDE_DIR}" "${ZLIB_LIBRARIES}"
Packit Service 1d0348
      RUNS
Packit Service 1d0348
      "#include <zlib.h>\nint main() {uLong f = zlibCompileFlags(); return (f&(1U<<10))?0:-1; }"
Packit Service 1d0348
      ZLIB_WINAPI)
Packit Service 1d0348
    IF(ZLIB_WINAPI)
Packit Service 1d0348
      ADD_DEFINITIONS(-DZLIB_WINAPI)
Packit Service 1d0348
    ELSE(ZLIB_WINAPI)
Packit Service 1d0348
      # Test if a macro is needed for the library.
Packit Service 1d0348
      TRY_MACRO_FOR_LIBRARY(
Packit Service 1d0348
        "${ZLIB_INCLUDE_DIR}" "${ZLIB_LIBRARIES}"
Packit Service 1d0348
        COMPILES
Packit Service 1d0348
        "#include <zlib.h>\nint main() {return zlibVersion()?1:0; }"
Packit Service 1d0348
        "ZLIB_DLL;WITHOUT_ZLIB_DLL")
Packit Service 1d0348
      IF(ZLIB_DLL)
Packit Service 1d0348
        ADD_DEFINITIONS(-DZLIB_DLL)
Packit Service 1d0348
      ENDIF(ZLIB_DLL)
Packit Service 1d0348
    ENDIF(ZLIB_WINAPI)
Packit Service 1d0348
  ENDIF(WIN32 AND NOT CYGWIN)
Packit Service 1d0348
ENDIF(ZLIB_FOUND)
Packit Service 1d0348
MARK_AS_ADVANCED(CLEAR ZLIB_INCLUDE_DIR)
Packit Service 1d0348
MARK_AS_ADVANCED(CLEAR ZLIB_LIBRARY)
Packit Service 1d0348
#
Packit Service 1d0348
# Find BZip2
Packit Service 1d0348
#
Packit Service 1d0348
IF(ENABLE_BZip2)
Packit Service 1d0348
  FIND_PACKAGE(BZip2)
Packit Service 1d0348
ELSE()
Packit Service 1d0348
  SET(BZIP2_FOUND FALSE) # Override cached value
Packit Service 1d0348
ENDIF()
Packit Service 1d0348
IF(BZIP2_FOUND)
Packit Service 1d0348
  SET(HAVE_LIBBZ2 1)
Packit Service 1d0348
  SET(HAVE_BZLIB_H 1)
Packit Service 1d0348
  INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR})
Packit Service 1d0348
  LIST(APPEND ADDITIONAL_LIBS ${BZIP2_LIBRARIES})
Packit Service 1d0348
  # Test if a macro is needed for the library.
Packit Service 1d0348
  TRY_MACRO_FOR_LIBRARY(
Packit Service 1d0348
    "${BZIP2_INCLUDE_DIR}" "${BZIP2_LIBRARIES}"
Packit Service 1d0348
    COMPILES
Packit Service 1d0348
    "#include <bzlib.h>\nint main() {return BZ2_bzlibVersion()?1:0; }"
Packit Service 1d0348
    "USE_BZIP2_DLL;USE_BZIP2_STATIC")
Packit Service 1d0348
  IF(USE_BZIP2_DLL)
Packit Service 1d0348
    ADD_DEFINITIONS(-DUSE_BZIP2_DLL)
Packit Service 1d0348
  ELSEIF(USE_BZIP2_STATIC)
Packit Service 1d0348
    ADD_DEFINITIONS(-DUSE_BZIP2_STATIC)
Packit Service 1d0348
  ENDIF(USE_BZIP2_DLL)
Packit Service 1d0348
ENDIF(BZIP2_FOUND)
Packit Service 1d0348
MARK_AS_ADVANCED(CLEAR BZIP2_INCLUDE_DIR)
Packit Service 1d0348
MARK_AS_ADVANCED(CLEAR BZIP2_LIBRARIES)
Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Find LZMA
Packit Service 1d0348
#
Packit Service 1d0348
IF(ENABLE_LZMA)
Packit Service 1d0348
  FIND_PACKAGE(LibLZMA)
Packit Service 1d0348
ELSE()
Packit Service 1d0348
  SET(LIBZMA_FOUND FALSE) # Override cached value
Packit Service 1d0348
ENDIF()
Packit Service 1d0348
Packit Service 1d0348
IF(LIBLZMA_FOUND)
Packit Service 1d0348
  SET(HAVE_LIBLZMA 1)
Packit Service 1d0348
  SET(HAVE_LZMA_H 1)
Packit Service 1d0348
  SET(CMAKE_REQUIRED_INCLUDES ${LIBLZMA_INCLUDE_DIR})
Packit Service 1d0348
  SET(CMAKE_REQUIRED_LIBRARIES ${LIBLZMA_LIBRARIES})
Packit Service 1d0348
  INCLUDE_DIRECTORIES(${LIBLZMA_INCLUDE_DIRS})
Packit Service 1d0348
  LIST(APPEND ADDITIONAL_LIBS ${LIBLZMA_LIBRARIES})
Packit Service 1d0348
  # Test if a macro is needed for the library.
Packit Service 1d0348
  TRY_MACRO_FOR_LIBRARY(
Packit Service 1d0348
    "${LIBLZMA_INCLUDE_DIRS}" "${LIBLZMA_LIBRARIES}"
Packit Service 1d0348
    COMPILES
Packit Service 1d0348
    "#include <lzma.h>\nint main() {return (int)lzma_version_number(); }"
Packit Service 1d0348
    "WITHOUT_LZMA_API_STATIC;LZMA_API_STATIC")
Packit Service 1d0348
  IF(NOT WITHOUT_LZMA_API_STATIC AND LZMA_API_STATIC)
Packit Service 1d0348
    ADD_DEFINITIONS(-DLZMA_API_STATIC)
Packit Service 1d0348
  ENDIF(NOT WITHOUT_LZMA_API_STATIC AND LZMA_API_STATIC)
Packit Service 1d0348
ELSE(LIBLZMA_FOUND)
Packit Service 1d0348
# LZMA not found and will not be used.
Packit Service 1d0348
ENDIF(LIBLZMA_FOUND)
Packit Service 1d0348
#
Packit Service 1d0348
# Find LZO2
Packit Service 1d0348
#
Packit Service 1d0348
IF(ENABLE_LZO)
Packit Service 1d0348
  IF (LZO2_INCLUDE_DIR)
Packit Service 1d0348
    # Already in cache, be silent
Packit Service 1d0348
    SET(LZO2_FIND_QUIETLY TRUE)
Packit Service 1d0348
  ENDIF (LZO2_INCLUDE_DIR)
Packit Service 1d0348
Packit Service 1d0348
  FIND_PATH(LZO2_INCLUDE_DIR lzo/lzoconf.h)
Packit Service 1d0348
  FIND_LIBRARY(LZO2_LIBRARY NAMES lzo2 liblzo2)
Packit Service 1d0348
  INCLUDE(FindPackageHandleStandardArgs)
Packit Service 1d0348
  FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZO2 DEFAULT_MSG LZO2_LIBRARY LZO2_INCLUDE_DIR)
Packit Service 1d0348
ELSE(ENABLE_LZO)
Packit Service 1d0348
  SET(LZO2_FOUND FALSE) # Override cached value
Packit Service 1d0348
ENDIF(ENABLE_LZO)
Packit Service 1d0348
IF(LZO2_FOUND)
Packit Service 1d0348
  SET(HAVE_LIBLZO2 1)
Packit Service 1d0348
  SET(HAVE_LZO_LZOCONF_H 1)
Packit Service 1d0348
  SET(HAVE_LZO_LZO1X_H 1)
Packit Service 1d0348
  INCLUDE_DIRECTORIES(${LZO2_INCLUDE_DIR})
Packit Service 1d0348
  LIST(APPEND ADDITIONAL_LIBS ${LZO2_LIBRARY})
Packit Service 1d0348
  #
Packit Service 1d0348
  # TODO: test for static library.
Packit Service 1d0348
  #
Packit Service 1d0348
ENDIF(LZO2_FOUND)
Packit Service 1d0348
MARK_AS_ADVANCED(CLEAR LZO2_INCLUDE_DIR)
Packit Service 1d0348
MARK_AS_ADVANCED(CLEAR LZO2_LIBRARY)
Packit Service 1d0348
#
Packit Service 1d0348
# Find LZ4
Packit Service 1d0348
#
Packit Service 1d0348
IF(ENABLE_LZ4)
Packit Service 1d0348
  IF (LZ4_INCLUDE_DIR)
Packit Service 1d0348
    # Already in cache, be silent
Packit Service 1d0348
    SET(LZ4_FIND_QUIETLY TRUE)
Packit Service 1d0348
  ENDIF (LZ4_INCLUDE_DIR)
Packit Service 1d0348
Packit Service 1d0348
  FIND_PATH(LZ4_INCLUDE_DIR lz4.h)
Packit Service 1d0348
  FIND_LIBRARY(LZ4_LIBRARY NAMES lz4 liblz4)
Packit Service 1d0348
  INCLUDE(FindPackageHandleStandardArgs)
Packit Service 1d0348
  FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZ4 DEFAULT_MSG LZ4_LIBRARY LZ4_INCLUDE_DIR)
Packit Service 1d0348
ELSE(ENABLE_LZ4)
Packit Service 1d0348
  SET(LZ4_FOUND FALSE) # Override cached value
Packit Service 1d0348
ENDIF(ENABLE_LZ4)
Packit Service 1d0348
IF(LZ4_FOUND)
Packit Service 1d0348
  SET(HAVE_LIBLZ4 1)
Packit Service 1d0348
  SET(HAVE_LZ4_H 1)
Packit Service 1d0348
  CMAKE_PUSH_CHECK_STATE()	# Save the state of the variables
Packit Service 1d0348
  SET(CMAKE_REQUIRED_INCLUDES ${LZ4_INCLUDE_DIR})
Packit Service 1d0348
  CHECK_INCLUDE_FILES("lz4hc.h" HAVE_LZ4HC_H)
Packit Service 1d0348
  CMAKE_POP_CHECK_STATE()	# Restore the state of the variables
Packit Service 1d0348
  INCLUDE_DIRECTORIES(${LZ4_INCLUDE_DIR})
Packit Service 1d0348
  LIST(APPEND ADDITIONAL_LIBS ${LZ4_LIBRARY})
Packit Service 1d0348
  #
Packit Service 1d0348
  # TODO: test for static library.
Packit Service 1d0348
  #
Packit Service 1d0348
ENDIF(LZ4_FOUND)
Packit Service 1d0348
MARK_AS_ADVANCED(CLEAR LZ4_INCLUDE_DIR)
Packit Service 1d0348
MARK_AS_ADVANCED(CLEAR LZ4_LIBRARY)
Packit Service 1d0348
#
Packit Service 1d0348
# Find Zstd
Packit Service 1d0348
#
Packit Service 1d0348
IF (ZSTD_INCLUDE_DIR)
Packit Service 1d0348
  # Already in cache, be silent
Packit Service 1d0348
  SET(ZSTD_FIND_QUIETLY TRUE)
Packit Service 1d0348
ENDIF (ZSTD_INCLUDE_DIR)
Packit Service 1d0348
Packit Service 1d0348
FIND_PATH(ZSTD_INCLUDE_DIR zstd.h)
Packit Service 1d0348
FIND_LIBRARY(ZSTD_LIBRARY NAMES zstd libzstd)
Packit Service 1d0348
INCLUDE(FindPackageHandleStandardArgs)
Packit Service 1d0348
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZSTD DEFAULT_MSG ZSTD_LIBRARY ZSTD_INCLUDE_DIR)
Packit Service 1d0348
IF(ZSTD_FOUND)
Packit Service 1d0348
  SET(HAVE_ZSTD_H 1)
Packit Service 1d0348
  INCLUDE_DIRECTORIES(${ZSTD_INCLUDE_DIR})
Packit Service 1d0348
  LIST(APPEND ADDITIONAL_LIBS ${ZSTD_LIBRARY})
Packit Service 1d0348
  SET(CMAKE_REQUIRED_LIBRARIES ${ZSTD_LIBRARY})
Packit Service 1d0348
  SET(CMAKE_REQUIRED_INCLUDES ${ZSTD_INCLUDE_DIR})
Packit Service 1d0348
  CHECK_FUNCTION_EXISTS(ZSTD_compressStream HAVE_LIBZSTD)
Packit Service 1d0348
  #
Packit Service 1d0348
  # TODO: test for static library.
Packit Service 1d0348
  #
Packit Service 1d0348
ENDIF(ZSTD_FOUND)
Packit Service 1d0348
MARK_AS_ADVANCED(CLEAR ZSTD_INCLUDE_DIR)
Packit Service 1d0348
MARK_AS_ADVANCED(CLEAR ZSTD_LIBRARY)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Check headers
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_HEADER_DIRENT()
Packit Service 1d0348
Packit Service 1d0348
SET(INCLUDES "")
Packit Service 1d0348
MACRO (LA_CHECK_INCLUDE_FILE header var)
Packit Service 1d0348
      CHECK_INCLUDE_FILES("${INCLUDES};${header}" ${var})
Packit Service 1d0348
      IF (${var})
Packit Service 1d0348
      	 SET(INCLUDES ${INCLUDES} ${header})
Packit Service 1d0348
      ENDIF (${var})
Packit Service 1d0348
ENDMACRO (LA_CHECK_INCLUDE_FILE)
Packit Service 1d0348
Packit Service 1d0348
# Some FreeBSD headers assume sys/types.h was already included.
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/types.h" HAVE_SYS_TYPES_H)
Packit Service 1d0348
Packit Service 1d0348
# Alphabetize the rest unless there's a compelling reason
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("acl/libacl.h" HAVE_ACL_LIBACL_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("attr/xattr.h" HAVE_ATTR_XATTR_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("ctype.h" HAVE_CTYPE_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("copyfile.h" HAVE_COPYFILE_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("direct.h" HAVE_DIRECT_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("errno.h" HAVE_ERRNO_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("ext2fs/ext2_fs.h" HAVE_EXT2FS_EXT2_FS_H)
Packit Service 1d0348
Packit Service 1d0348
CHECK_C_SOURCE_COMPILES("#include <sys/ioctl.h>
Packit Service 1d0348
#include <ext2fs/ext2_fs.h>
Packit Service 1d0348
int main(void) { return EXT2_IOC_GETFLAGS; }" HAVE_WORKING_EXT2_IOC_GETFLAGS)
Packit Service 1d0348
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("fcntl.h" HAVE_FCNTL_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("grp.h" HAVE_GRP_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("io.h" HAVE_IO_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("langinfo.h" HAVE_LANGINFO_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("limits.h" HAVE_LIMITS_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("linux/types.h" HAVE_LINUX_TYPES_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("linux/fiemap.h" HAVE_LINUX_FIEMAP_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("linux/fs.h" HAVE_LINUX_FS_H)
Packit Service 1d0348
Packit Service 1d0348
CHECK_C_SOURCE_COMPILES("#include <sys/ioctl.h>
Packit Service 1d0348
#include <linux/fs.h>
Packit Service 1d0348
int main(void) { return FS_IOC_GETFLAGS; }" HAVE_WORKING_FS_IOC_GETFLAGS)
Packit Service 1d0348
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("linux/magic.h" HAVE_LINUX_MAGIC_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("locale.h" HAVE_LOCALE_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("membership.h" HAVE_MEMBERSHIP_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("memory.h" HAVE_MEMORY_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("paths.h" HAVE_PATHS_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("poll.h" HAVE_POLL_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("process.h" HAVE_PROCESS_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("pthread.h" HAVE_PTHREAD_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("pwd.h" HAVE_PWD_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("readpassphrase.h" HAVE_READPASSPHRASE_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("regex.h" HAVE_REGEX_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("signal.h" HAVE_SIGNAL_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("spawn.h" HAVE_SPAWN_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("stdarg.h" HAVE_STDARG_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("stdint.h" HAVE_STDINT_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("stdlib.h" HAVE_STDLIB_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("string.h" HAVE_STRING_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("strings.h" HAVE_STRINGS_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/acl.h" HAVE_SYS_ACL_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/cdefs.h" HAVE_SYS_CDEFS_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/extattr.h" HAVE_SYS_EXTATTR_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/ioctl.h" HAVE_SYS_IOCTL_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/mkdev.h" HAVE_SYS_MKDEV_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/mount.h" HAVE_SYS_MOUNT_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/param.h" HAVE_SYS_PARAM_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/poll.h" HAVE_SYS_POLL_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/richacl.h" HAVE_SYS_RICHACL_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/select.h" HAVE_SYS_SELECT_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/statfs.h" HAVE_SYS_STATFS_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/statvfs.h" HAVE_SYS_STATVFS_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/sysmacros.h" HAVE_SYS_SYSMACROS_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/time.h" HAVE_SYS_TIME_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/utime.h" HAVE_SYS_UTIME_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/utsname.h" HAVE_SYS_UTSNAME_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/vfs.h" HAVE_SYS_VFS_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/wait.h" HAVE_SYS_WAIT_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("sys/xattr.h" HAVE_SYS_XATTR_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("time.h" HAVE_TIME_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("utime.h" HAVE_UTIME_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("wchar.h" HAVE_WCHAR_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("wctype.h" HAVE_WCTYPE_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("windows.h" HAVE_WINDOWS_H)
Packit Service 1d0348
IF(ENABLE_CNG)
Packit Service 1d0348
  LA_CHECK_INCLUDE_FILE("Bcrypt.h" HAVE_BCRYPT_H)
Packit Service 1d0348
  IF(HAVE_BCRYPT_H)
Packit Service 1d0348
    LIST(APPEND ADDITIONAL_LIBS "Bcrypt")
Packit Service 1d0348
  ENDIF(HAVE_BCRYPT_H)
Packit Service 1d0348
ELSE(ENABLE_CNG)
Packit Service 1d0348
  UNSET(HAVE_BCRYPT_H CACHE)
Packit Service 1d0348
ENDIF(ENABLE_CNG)
Packit Service 1d0348
# Following files need windows.h, so we should test it after windows.h test.
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("wincrypt.h" HAVE_WINCRYPT_H)
Packit Service 1d0348
LA_CHECK_INCLUDE_FILE("winioctl.h" HAVE_WINIOCTL_H)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Check whether use of __EXTENSIONS__ is safe.
Packit Service 1d0348
# We need some macro such as _GNU_SOURCE to use extension functions.
Packit Service 1d0348
#
Packit Service 1d0348
SET(_INCLUDE_FILES)
Packit Service 1d0348
FOREACH (it ${_HEADER})
Packit Service 1d0348
   SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n")
Packit Service 1d0348
ENDFOREACH (it)
Packit Service 1d0348
Packit Service 1d0348
CHECK_C_SOURCE_COMPILES(
Packit Service 1d0348
  "#define __EXTENSIONS__ 1
Packit Service 1d0348
   ${_INCLUDE_FILES}
Packit Service 1d0348
   int main() { return 0;}"
Packit Service 1d0348
 SAFE_TO_DEFINE_EXTENSIONS)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Find Nettle
Packit Service 1d0348
#
Packit Service 1d0348
IF(ENABLE_NETTLE)
Packit Service 1d0348
  FIND_PACKAGE(Nettle)
Packit Service 1d0348
  IF(NETTLE_FOUND)
Packit Service 1d0348
    SET(HAVE_LIBNETTLE 1)
Packit Service 1d0348
    LIST(APPEND ADDITIONAL_LIBS ${NETTLE_LIBRARIES})
Packit Service 1d0348
    INCLUDE_DIRECTORIES(${NETTLE_INCLUDE_DIR})
Packit Service 1d0348
Packit Service 1d0348
    LIST(APPEND CMAKE_REQUIRED_INCLUDES ${NETTLE_INCLUDE_DIR})
Packit Service 1d0348
    LA_CHECK_INCLUDE_FILE("nettle/aes.h" HAVE_NETTLE_AES_H)
Packit Service 1d0348
    LA_CHECK_INCLUDE_FILE("nettle/hmac.h" HAVE_NETTLE_HMAC_H)
Packit Service 1d0348
    LA_CHECK_INCLUDE_FILE("nettle/md5.h" HAVE_NETTLE_MD5_H)
Packit Service 1d0348
    LA_CHECK_INCLUDE_FILE("nettle/pbkdf2.h" HAVE_NETTLE_PBKDF2_H)
Packit Service 1d0348
    LA_CHECK_INCLUDE_FILE("nettle/ripemd160.h" HAVE_NETTLE_RIPEMD160_H)
Packit Service 1d0348
    LA_CHECK_INCLUDE_FILE("nettle/sha.h" HAVE_NETTLE_SHA_H)
Packit Service 1d0348
Packit Service 1d0348
  ENDIF(NETTLE_FOUND)
Packit Service 1d0348
  MARK_AS_ADVANCED(CLEAR NETTLE_INCLUDE_DIR)
Packit Service 1d0348
  MARK_AS_ADVANCED(CLEAR NETTLE_LIBRARIES)
Packit Service 1d0348
ENDIF(ENABLE_NETTLE)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Find OpenSSL
Packit Service 1d0348
# (Except on Mac, where OpenSSL is deprecated.)
Packit Service 1d0348
#
Packit Service 1d0348
IF(ENABLE_OPENSSL AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
Packit Service 1d0348
  FIND_PACKAGE(OpenSSL)
Packit Service 1d0348
  IF(OPENSSL_FOUND)
Packit Service 1d0348
    SET(HAVE_LIBCRYPTO 1)
Packit Service 1d0348
    INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
Packit Service 1d0348
    LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_CRYPTO_LIBRARY})
Packit Service 1d0348
  ENDIF(OPENSSL_FOUND)
Packit Service 1d0348
ELSE()
Packit Service 1d0348
  SET(OPENSSL_FOUND FALSE) # Override cached value
Packit Service 1d0348
ENDIF()
Packit Service 1d0348
Packit Service 1d0348
# FreeBSD libmd
Packit Service 1d0348
IF(NOT OPENSSL_FOUND)
Packit Service 1d0348
  CHECK_LIBRARY_EXISTS(md "MD5Init" "" LIBMD_FOUND)
Packit Service 1d0348
  IF(LIBMD_FOUND)
Packit Service 1d0348
    CMAKE_PUSH_CHECK_STATE()	# Save the state of the variables
Packit Service 1d0348
    SET(CMAKE_REQUIRED_LIBRARIES "md")
Packit Service 1d0348
    FIND_LIBRARY(LIBMD_LIBRARY NAMES md)
Packit Service 1d0348
    LIST(APPEND ADDITIONAL_LIBS ${LIBMD_LIBRARY})
Packit Service 1d0348
    CMAKE_POP_CHECK_STATE()	# Restore the state of the variables
Packit Service 1d0348
  ENDIF(LIBMD_FOUND)
Packit Service 1d0348
ENDIF(NOT OPENSSL_FOUND)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# How to prove that CRYPTO functions, which have several names on various
Packit Service 1d0348
# platforms, just see if archive_digest.c can compile and link against
Packit Service 1d0348
# required libraries.
Packit Service 1d0348
#
Packit Service 1d0348
MACRO(CHECK_CRYPTO ALGORITHMS IMPLEMENTATION)
Packit Service 1d0348
    FOREACH(ALGORITHM ${ALGORITHMS})
Packit Service 1d0348
      IF(NOT ARCHIVE_CRYPTO_${ALGORITHM})
Packit Service 1d0348
      STRING(TOLOWER "${ALGORITHM}" lower_algorithm)
Packit Service 1d0348
      STRING(TOUPPER "${ALGORITHM}" algorithm)
Packit Service 1d0348
      IF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND NOT OPENSSL_FOUND)
Packit Service 1d0348
        SET(ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION} FALSE)
Packit Service 1d0348
      ELSEIF("${IMPLEMENTATION}" MATCHES "^NETTLE$" AND NOT NETTLE_FOUND)
Packit Service 1d0348
        SET(ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION} FALSE)
Packit Service 1d0348
      ENDIF("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND NOT OPENSSL_FOUND)
Packit Service 1d0348
Packit Service 1d0348
      IF(NOT DEFINED ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
Packit Service 1d0348
        # Probe the local implementation for whether this
Packit Service 1d0348
	# crypto implementation is available on this platform.
Packit Service 1d0348
	SET(TRY_CRYPTO_REQUIRED_INCLUDES
Packit Service 1d0348
	  "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}/libarchive;${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp")
Packit Service 1d0348
	SET(TRY_CRYPTO_REQUIRED_LIBS)
Packit Service 1d0348
	IF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
Packit Service 1d0348
	    SET(TRY_CRYPTO_REQUIRED_INCLUDES
Packit Service 1d0348
	      "${TRY_CRYPTO_REQUIRED_INCLUDES};${OPENSSL_INCLUDE_DIR}")
Packit Service 1d0348
	    SET(TRY_CRYPTO_REQUIRED_LIBS
Packit Service 1d0348
	        "-DLINK_LIBRARIES:STRING=${OPENSSL_LIBRARIES}")
Packit Service 1d0348
	ELSEIF("${IMPLEMENTATION}" MATCHES "^NETTLE$" AND NETTLE_FOUND)
Packit Service 1d0348
	    SET(TRY_CRYPTO_REQUIRED_INCLUDES
Packit Service 1d0348
	      "${TRY_CRYPTO_REQUIRED_INCLUDES};${NETTLE_INCLUDE_DIR}")
Packit Service 1d0348
	    SET(TRY_CRYPTO_REQUIRED_LIBS
Packit Service 1d0348
	        "-DLINK_LIBRARIES:STRING=${NETTLE_LIBRARY}")
Packit Service 1d0348
	ELSEIF("${IMPLEMENTATION}" MATCHES "^LIBMD$" AND LIBMD_FOUND)
Packit Service 1d0348
	    SET(TRY_CRYPTO_REQUIRED_LIBS
Packit Service 1d0348
	        "-DLINK_LIBRARIES:STRING=${LIBMD_LIBRARY}")
Packit Service 1d0348
	ENDIF("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
Packit Service 1d0348
Packit Service 1d0348
    CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/config.h.in
Packit Service 1d0348
      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/confdefs.h)
Packit Service 1d0348
	FILE(READ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/confdefs.h"
Packit Service 1d0348
	     CONFDEFS_H)
Packit Service 1d0348
	FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/libarchive/archive_digest.c"
Packit Service 1d0348
	     ARCHIVE_CRYPTO_C)
Packit Service 1d0348
Packit Service 1d0348
	SET(SOURCE "${CONFDEFS_H}
Packit Service 1d0348
Packit Service 1d0348
#define ARCHIVE_${algorithm}_COMPILE_TEST
Packit Service 1d0348
#define ARCHIVE_CRYPTO_${algorithm}_${IMPLEMENTATION}
Packit Service 1d0348
#define PLATFORM_CONFIG_H \"check_crypto_md.h\"
Packit Service 1d0348
Packit Service 1d0348
${ARCHIVE_CRYPTO_C}
Packit Service 1d0348
Packit Service 1d0348
int
Packit Service 1d0348
main(int argc, char **argv)
Packit Service 1d0348
{
Packit Service 1d0348
  archive_${lower_algorithm}_ctx ctx;
Packit Service 1d0348
  archive_${lower_algorithm}_init(&ctx;;
Packit Service 1d0348
  archive_${lower_algorithm}_update(&ctx, *argv, argc);
Packit Service 1d0348
  archive_${lower_algorithm}_final(&ctx, NULL);
Packit Service 1d0348
  return 0;
Packit Service 1d0348
}
Packit Service 1d0348
")
Packit Service 1d0348
Packit Service 1d0348
  FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_crypto_md.h" "")
Packit Service 1d0348
	FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_crypto_md.c" "${SOURCE}")
Packit Service 1d0348
	MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION}")
Packit Service 1d0348
Packit Service 1d0348
	TRY_COMPILE(ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION}
Packit Service 1d0348
	  ${CMAKE_BINARY_DIR}
Packit Service 1d0348
	  ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_crypto_md.c
Packit Service 1d0348
	  CMAKE_FLAGS
Packit Service 1d0348
	   "${TRY_CRYPTO_REQUIRED_LIBS}"
Packit Service 1d0348
	   "${TRY_CRYPTO_REQUIRED_INCLUDES}"
Packit Service 1d0348
	  OUTPUT_VARIABLE OUTPUT)
Packit Service 1d0348
Packit Service 1d0348
	# Inform user whether or not we found it; if not, log why we didn't.
Packit Service 1d0348
        IF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
Packit Service 1d0348
          MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION} -- found")
Packit Service 1d0348
		  SET(ARCHIVE_CRYPTO_${ALGORITHM} 1)
Packit Service 1d0348
        ELSE (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
Packit Service 1d0348
          MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION} -- not found")
Packit Service 1d0348
          FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
Packit Service 1d0348
    	    "Checking support for ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION} failed with the following output:\n"
Packit Service 1d0348
    	    "${OUTPUT}\n"
Packit Service 1d0348
    	    "Source file was:\n${SOURCE}\n")
Packit Service 1d0348
        ENDIF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
Packit Service 1d0348
      ENDIF(NOT DEFINED ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
Packit Service 1d0348
Packit Service 1d0348
      # Add appropriate libs/includes depending on whether the implementation
Packit Service 1d0348
      # was found on this platform.
Packit Service 1d0348
      IF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
Packit Service 1d0348
        IF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
Packit Service 1d0348
          INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
Packit Service 1d0348
	  LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_LIBRARIES})
Packit Service 1d0348
	   LIST(REMOVE_DUPLICATES ADDITIONAL_LIBS)
Packit Service 1d0348
        ENDIF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
Packit Service 1d0348
      ENDIF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
Packit Service 1d0348
      ENDIF(NOT ARCHIVE_CRYPTO_${ALGORITHM})
Packit Service 1d0348
    ENDFOREACH(ALGORITHM ${ALGORITHMS})
Packit Service 1d0348
ENDMACRO(CHECK_CRYPTO ALGORITHMS IMPLEMENTATION)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# CRYPTO functions on Windows is defined at archive_windows.c, thus we do not
Packit Service 1d0348
# need the test what the functions can be mapped to archive_{crypto name}_init,
Packit Service 1d0348
# archive_{crypto name}_update and archive_{crypto name}_final.
Packit Service 1d0348
# The functions on Windows use CALG_{crypto name} macro to create a crypt object
Packit Service 1d0348
# and then we need to know what CALG_{crypto name} macros is available to show
Packit Service 1d0348
# ARCHIVE_CRYPTO_{crypto name}_WIN macros because Windows 2000 and earlier version
Packit Service 1d0348
# of Windows XP do not support SHA256, SHA384 and SHA512.
Packit Service 1d0348
#
Packit Service 1d0348
MACRO(CHECK_CRYPTO_WIN CRYPTO_LIST)
Packit Service 1d0348
  IF(WIN32 AND NOT CYGWIN)
Packit Service 1d0348
    FOREACH(CRYPTO ${CRYPTO_LIST})
Packit Service 1d0348
      IF(NOT ARCHIVE_CRYPTO_${CRYPTO})
Packit Service 1d0348
      IF(NOT DEFINED ARCHIVE_CRYPTO_${CRYPTO}_WIN)
Packit Service 1d0348
	STRING(TOUPPER "${CRYPTO}" crypto)
Packit Service 1d0348
	SET(ALGID "")
Packit Service 1d0348
	IF ("${CRYPTO}" MATCHES "^MD5$")
Packit Service 1d0348
	    SET(ALGID "CALG_MD5")
Packit Service 1d0348
	ENDIF ("${CRYPTO}" MATCHES "^MD5$")
Packit Service 1d0348
	IF ("${CRYPTO}" MATCHES "^SHA1$")
Packit Service 1d0348
	    SET(ALGID "CALG_SHA1")
Packit Service 1d0348
	ENDIF ("${CRYPTO}" MATCHES "^SHA1$")
Packit Service 1d0348
	IF ("${CRYPTO}" MATCHES "^SHA256$")
Packit Service 1d0348
	    SET(ALGID "CALG_SHA_256")
Packit Service 1d0348
	ENDIF ("${CRYPTO}" MATCHES "^SHA256$")
Packit Service 1d0348
	IF ("${CRYPTO}" MATCHES "^SHA384$")
Packit Service 1d0348
	    SET(ALGID "CALG_SHA_384")
Packit Service 1d0348
	ENDIF ("${CRYPTO}" MATCHES "^SHA384$")
Packit Service 1d0348
	IF ("${CRYPTO}" MATCHES "^SHA512$")
Packit Service 1d0348
	    SET(ALGID "CALG_SHA_512")
Packit Service 1d0348
	ENDIF ("${CRYPTO}" MATCHES "^SHA512$")
Packit Service 1d0348
Packit Service 1d0348
    CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/config.h.in
Packit Service 1d0348
      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/confdefs.h)
Packit Service 1d0348
	FILE(READ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/confdefs.h"
Packit Service 1d0348
	     CONFDEFS_H)
Packit Service 1d0348
Packit Service 1d0348
	SET(SOURCE "${CONFDEFS_H}
Packit Service 1d0348
Packit Service 1d0348
#define ${crypto}_COMPILE_TEST
Packit Service 1d0348
#include <windows.h>
Packit Service 1d0348
#include <wincrypt.h>
Packit Service 1d0348
Packit Service 1d0348
int
Packit Service 1d0348
main(int argc, char **argv)
Packit Service 1d0348
{
Packit Service 1d0348
	return ${ALGID};
Packit Service 1d0348
}
Packit Service 1d0348
")
Packit Service 1d0348
	SET(SOURCE_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_crypto_win.c")
Packit Service 1d0348
Packit Service 1d0348
	FILE(WRITE "${SOURCE_FILE}" "${SOURCE}")
Packit Service 1d0348
	MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${CRYPTO}_WIN")
Packit Service 1d0348
Packit Service 1d0348
	TRY_COMPILE(ARCHIVE_CRYPTO_${CRYPTO}_WIN
Packit Service 1d0348
	  ${CMAKE_BINARY_DIR}
Packit Service 1d0348
	  ${SOURCE_FILE}
Packit Service 1d0348
	  CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}/libarchive"
Packit Service 1d0348
	  OUTPUT_VARIABLE OUTPUT)
Packit Service 1d0348
Packit Service 1d0348
	IF (ARCHIVE_CRYPTO_${CRYPTO}_WIN)
Packit Service 1d0348
	    MESSAGE(STATUS
Packit Service 1d0348
	        "Checking support for ARCHIVE_CRYPTO_${CRYPTO}_WIN -- found")
Packit Service 1d0348
		SET(ARCHIVE_CRYPTO_${CRYPTO} 1)
Packit Service 1d0348
	ELSE (ARCHIVE_CRYPTO_${CRYPTO}_WIN)
Packit Service 1d0348
	    MESSAGE(STATUS
Packit Service 1d0348
	         "Checking support for ARCHIVE_CRYPTO_${CRYPTO}_WIN -- not found")
Packit Service 1d0348
    	    FILE(APPEND
Packit Service 1d0348
	        ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
Packit Service 1d0348
                "Checking support for ARCHIVE_CRYPTO_${CRYPTO}_WIN failed with the following output:\n"
Packit Service 1d0348
        	"${OUTPUT}\n"
Packit Service 1d0348
        	"Source file was:\n${SOURCE}\n")
Packit Service 1d0348
	ENDIF (ARCHIVE_CRYPTO_${CRYPTO}_WIN)
Packit Service 1d0348
Packit Service 1d0348
      ENDIF(NOT DEFINED ARCHIVE_CRYPTO_${CRYPTO}_WIN)
Packit Service 1d0348
      ENDIF(NOT ARCHIVE_CRYPTO_${CRYPTO})
Packit Service 1d0348
    ENDFOREACH(CRYPTO)
Packit Service 1d0348
  ENDIF(WIN32 AND NOT CYGWIN)
Packit Service 1d0348
ENDMACRO(CHECK_CRYPTO_WIN CRYPTO_LIST)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Find iconv
Packit Service 1d0348
# POSIX defines the second arg as const char **
Packit Service 1d0348
# and requires it to be in libc.  But we can accept
Packit Service 1d0348
# a non-const argument here and can support iconv()
Packit Service 1d0348
# being in libiconv.
Packit Service 1d0348
#
Packit Service 1d0348
MACRO(CHECK_ICONV LIB TRY_ICONV_CONST)
Packit Service 1d0348
  IF(NOT HAVE_ICONV)
Packit Service 1d0348
    CMAKE_PUSH_CHECK_STATE()	# Save the state of the variables
Packit Service 1d0348
    IF (CMAKE_C_COMPILER_ID MATCHES "^GNU$" OR
Packit Service 1d0348
        CMAKE_C_COMPILER_ID MATCHES "^Clang$")
Packit Service 1d0348
      #
Packit Service 1d0348
      # During checking iconv proto type, we should use -Werror to avoid the
Packit Service 1d0348
      # success of iconv detection with a warnig which success is a miss
Packit Service 1d0348
      # detection. So this needs for all build mode(even it's a release mode).
Packit Service 1d0348
      #
Packit Service 1d0348
      SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror")
Packit Service 1d0348
    ENDIF (CMAKE_C_COMPILER_ID MATCHES "^GNU$" OR
Packit Service 1d0348
           CMAKE_C_COMPILER_ID MATCHES "^Clang$")
Packit Service 1d0348
    IF (CMAKE_C_COMPILER_ID MATCHES "^XL$")
Packit Service 1d0348
      SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -qhalt=w -qflag=w:w")
Packit Service 1d0348
    ENDIF (CMAKE_C_COMPILER_ID MATCHES "^XL$")
Packit Service 1d0348
    IF (MSVC)
Packit Service 1d0348
      # NOTE: /WX option is the same as gcc's -Werror option.
Packit Service 1d0348
      SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} /WX")
Packit Service 1d0348
    ENDIF (MSVC)
Packit Service 1d0348
    #
Packit Service 1d0348
    CHECK_C_SOURCE_COMPILES(
Packit Service 1d0348
      "#include <stdlib.h>
Packit Service 1d0348
       #include <iconv.h>
Packit Service 1d0348
       int main() {
Packit Service 1d0348
          ${TRY_ICONV_CONST} char *ccp;
Packit Service 1d0348
          iconv_t cd = iconv_open(\"\", \"\");
Packit Service 1d0348
          iconv(cd, &ccp, (size_t *)0, (char **)0, (size_t *)0);
Packit Service 1d0348
          iconv_close(cd);
Packit Service 1d0348
          return 0;
Packit Service 1d0348
       }"
Packit Service 1d0348
     HAVE_ICONV_${LIB}_${TRY_ICONV_CONST})
Packit Service 1d0348
    IF(HAVE_ICONV_${LIB}_${TRY_ICONV_CONST})
Packit Service 1d0348
      SET(HAVE_ICONV true)
Packit Service 1d0348
      SET(ICONV_CONST ${TRY_ICONV_CONST})
Packit Service 1d0348
    ENDIF(HAVE_ICONV_${LIB}_${TRY_ICONV_CONST})
Packit Service 1d0348
    CMAKE_POP_CHECK_STATE()	# Restore the state of the variables
Packit Service 1d0348
  ENDIF(NOT HAVE_ICONV)
Packit Service 1d0348
ENDMACRO(CHECK_ICONV TRY_ICONV_CONST)
Packit Service 1d0348
Packit Service 1d0348
IF(ENABLE_ICONV)
Packit Service 1d0348
  CMAKE_PUSH_CHECK_STATE()	# Save the state of the variables
Packit Service 1d0348
  FIND_PATH(ICONV_INCLUDE_DIR iconv.h)
Packit Service 1d0348
  IF(ICONV_INCLUDE_DIR)
Packit Service 1d0348
    #SET(INCLUDES ${INCLUDES} "iconv.h")
Packit Service 1d0348
    SET(HAVE_ICONV_H 1)
Packit Service 1d0348
    INCLUDE_DIRECTORIES(${ICONV_INCLUDE_DIR})
Packit Service 1d0348
    SET(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR})
Packit Service 1d0348
    CHECK_ICONV("libc" "const")
Packit Service 1d0348
    CHECK_ICONV("libc" "")
Packit Service 1d0348
Packit Service 1d0348
    # If iconv isn't in libc and we have a libiconv, try that.
Packit Service 1d0348
    FIND_LIBRARY(LIBICONV_PATH NAMES iconv libiconv)
Packit Service 1d0348
    IF(NOT HAVE_ICONV AND LIBICONV_PATH)
Packit Service 1d0348
      LIST(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBICONV_PATH})
Packit Service 1d0348
      # Test if a macro is needed for the library.
Packit Service 1d0348
      TRY_MACRO_FOR_LIBRARY(
Packit Service 1d0348
        "${ICONV_INCLUDE_DIR}" "${LIBICONV_PATH}"
Packit Service 1d0348
        COMPILES
Packit Service 1d0348
        "#include <iconv.h>\nint main() {return iconv_close((iconv_t)0);}"
Packit Service 1d0348
        "WITHOUT_LIBICONV_STATIC;LIBICONV_STATIC")
Packit Service 1d0348
      IF(NOT WITHOUT_LIBICONV_STATIC AND LIBICONV_STATIC)
Packit Service 1d0348
        ADD_DEFINITIONS(-DLIBICONV_STATIC)
Packit Service 1d0348
      ENDIF(NOT WITHOUT_LIBICONV_STATIC AND LIBICONV_STATIC)
Packit Service 1d0348
      #
Packit Service 1d0348
      # Set up CMAKE_REQUIRED_* for CHECK_ICONV
Packit Service 1d0348
      #
Packit Service 1d0348
      SET(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR})
Packit Service 1d0348
      SET(CMAKE_REQUIRED_LIBRARIES ${LIBICONV_PATH})
Packit Service 1d0348
      IF(LIBICONV_STATIC)
Packit Service 1d0348
        # LIBICONV_STATIC is necessary for the success of CHECK_ICONV
Packit Service 1d0348
        # on Windows.
Packit Service 1d0348
        SET(CMAKE_REQUIRED_DEFINITIONS "-DLIBICONV_STATIC")
Packit Service 1d0348
      ELSE(LIBICONV_STATIC)
Packit Service 1d0348
        SET(CMAKE_REQUIRED_DEFINITIONS)
Packit Service 1d0348
      ENDIF(LIBICONV_STATIC)
Packit Service 1d0348
      CHECK_ICONV("libiconv" "const")
Packit Service 1d0348
      CHECK_ICONV("libiconv" "")
Packit Service 1d0348
      IF (HAVE_ICONV)
Packit Service 1d0348
        LIST(APPEND ADDITIONAL_LIBS ${LIBICONV_PATH})
Packit Service 1d0348
      ENDIF(HAVE_ICONV)
Packit Service 1d0348
    ENDIF(NOT HAVE_ICONV AND LIBICONV_PATH)
Packit Service 1d0348
  ENDIF(ICONV_INCLUDE_DIR)
Packit Service 1d0348
  #
Packit Service 1d0348
  # Find locale_charset() for libiconv.
Packit Service 1d0348
  #
Packit Service 1d0348
  IF(LIBICONV_PATH)
Packit Service 1d0348
    SET(CMAKE_REQUIRED_DEFINITIONS)
Packit Service 1d0348
    SET(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR})
Packit Service 1d0348
    SET(CMAKE_REQUIRED_LIBRARIES)
Packit Service 1d0348
    CHECK_INCLUDE_FILES("localcharset.h" HAVE_LOCALCHARSET_H)
Packit Service 1d0348
    FIND_LIBRARY(LIBCHARSET_PATH NAMES charset libcharset)
Packit Service 1d0348
    IF(LIBCHARSET_PATH)
Packit Service 1d0348
      SET(CMAKE_REQUIRED_LIBRARIES ${LIBCHARSET_PATH})
Packit Service 1d0348
      IF(WIN32 AND NOT CYGWIN)
Packit Service 1d0348
        # Test if a macro is needed for the library.
Packit Service 1d0348
        TRY_MACRO_FOR_LIBRARY(
Packit Service 1d0348
          "${ICONV_INCLUDE_DIR}" "${LIBCHARSET_PATH}"
Packit Service 1d0348
          COMPILES
Packit Service 1d0348
          "#include <localcharset.h>\nint main() {return locale_charset()?1:0;}"
Packit Service 1d0348
          "WITHOUT_LIBCHARSET_STATIC;LIBCHARSET_STATIC")
Packit Service 1d0348
        IF(NOT WITHOUT_LIBCHARSET_STATIC AND LIBCHARSET_STATIC)
Packit Service 1d0348
          ADD_DEFINITIONS(-DLIBCHARSET_STATIC)
Packit Service 1d0348
        ENDIF(NOT WITHOUT_LIBCHARSET_STATIC AND LIBCHARSET_STATIC)
Packit Service 1d0348
        IF(WITHOUT_LIBCHARSET_STATIC OR LIBCHARSET_STATIC)
Packit Service 1d0348
          SET(HAVE_LOCALE_CHARSET ON CACHE INTERNAL
Packit Service 1d0348
              "Have function locale_charset")
Packit Service 1d0348
        ENDIF(WITHOUT_LIBCHARSET_STATIC OR LIBCHARSET_STATIC)
Packit Service 1d0348
      ELSE(WIN32 AND NOT CYGWIN)
Packit Service 1d0348
        CHECK_FUNCTION_EXISTS_GLIBC(locale_charset HAVE_LOCALE_CHARSET)
Packit Service 1d0348
      ENDIF(WIN32 AND NOT CYGWIN)
Packit Service 1d0348
      IF(HAVE_LOCALE_CHARSET)
Packit Service 1d0348
        LIST(APPEND ADDITIONAL_LIBS ${LIBCHARSET_PATH})
Packit Service 1d0348
      ENDIF(HAVE_LOCALE_CHARSET)
Packit Service 1d0348
    ENDIF(LIBCHARSET_PATH)
Packit Service 1d0348
  ENDIF(LIBICONV_PATH)
Packit Service 1d0348
  CMAKE_POP_CHECK_STATE()	# Restore the state of the variables
Packit Service 1d0348
ELSE(ENABLE_ICONV)
Packit Service 1d0348
  # Make sure ICONV variables are not in CACHE after ENABLE_ICONV disabled
Packit Service 1d0348
  # (once enabled).
Packit Service 1d0348
  UNSET(HAVE_LOCALE_CHARSET CACHE)
Packit Service 1d0348
  UNSET(HAVE_ICONV CACHE)
Packit Service 1d0348
  UNSET(HAVE_ICONV_libc_ CACHE)
Packit Service 1d0348
  UNSET(HAVE_ICONV_libc_const CACHE)
Packit Service 1d0348
  UNSET(HAVE_ICONV_libiconv_ CACHE)
Packit Service 1d0348
  UNSET(HAVE_ICONV_libiconv_const CACHE)
Packit Service 1d0348
  UNSET(ICONV_INCLUDE_DIR CACHE)
Packit Service 1d0348
  UNSET(LIBICONV_PATH CACHE)
Packit Service 1d0348
  UNSET(LIBICONV_DLL CACHE)
Packit Service 1d0348
  UNSET(LIBICONV_STATIC CACHE)
Packit Service 1d0348
  UNSET(LIBCHARSET_DLL CACHE)
Packit Service 1d0348
  UNSET(LIBCHARSET_STATIC CACHE)
Packit Service 1d0348
ENDIF(ENABLE_ICONV)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Find Libxml2
Packit Service 1d0348
#
Packit Service 1d0348
IF(ENABLE_LIBXML2)
Packit Service 1d0348
  FIND_PACKAGE(LibXml2)
Packit Service 1d0348
ELSE()
Packit Service 1d0348
  SET(LIBXML2_FOUND FALSE)
Packit Service 1d0348
ENDIF()
Packit Service 1d0348
IF(LIBXML2_FOUND)
Packit Service 1d0348
  CMAKE_PUSH_CHECK_STATE()	# Save the state of the variables
Packit Service 1d0348
  INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
Packit Service 1d0348
  LIST(APPEND ADDITIONAL_LIBS ${LIBXML2_LIBRARIES})
Packit Service 1d0348
  SET(HAVE_LIBXML2 1)
Packit Service 1d0348
  # libxml2's include files use iconv.h
Packit Service 1d0348
  SET(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR})
Packit Service 1d0348
  CHECK_INCLUDE_FILES("libxml/xmlreader.h" HAVE_LIBXML_XMLREADER_H)
Packit Service 1d0348
  CHECK_INCLUDE_FILES("libxml/xmlwriter.h" HAVE_LIBXML_XMLWRITER_H)
Packit Service 1d0348
  # Test if a macro is needed for the library.
Packit Service 1d0348
  TRY_MACRO_FOR_LIBRARY(
Packit Service 1d0348
    "${ICONV_INCLUDE_DIR};${LIBXML2_INCLUDE_DIR}"
Packit Service 1d0348
    "ws2_32.lib;${ZLIB_LIBRARIES};${LIBICONV_PATH};${LIBXML2_LIBRARIES}"
Packit Service 1d0348
    COMPILES
Packit Service 1d0348
    "#include <stddef.h>\n#include <libxml/xmlreader.h>\nint main() {return xmlTextReaderRead((xmlTextReaderPtr)(void *)0);}"
Packit Service 1d0348
    "WITHOUT_LIBXML_STATIC;LIBXML_STATIC")
Packit Service 1d0348
  IF(NOT WITHOUT_LIBXML_STATIC AND LIBXML_STATIC)
Packit Service 1d0348
    ADD_DEFINITIONS(-DLIBXML_STATIC)
Packit Service 1d0348
  ENDIF(NOT WITHOUT_LIBXML_STATIC AND LIBXML_STATIC)
Packit Service 1d0348
  CMAKE_POP_CHECK_STATE()	# Restore the state of the variables
Packit Service 1d0348
ELSE(LIBXML2_FOUND)
Packit Service 1d0348
  #
Packit Service 1d0348
  # Find Expat
Packit Service 1d0348
  #
Packit Service 1d0348
  IF(ENABLE_EXPAT)
Packit Service 1d0348
    FIND_PACKAGE(EXPAT)
Packit Service 1d0348
  ELSE()
Packit Service 1d0348
    SET(EXPAT_FOUND FALSE)
Packit Service 1d0348
  ENDIF()
Packit Service 1d0348
  IF(EXPAT_FOUND)
Packit Service 1d0348
    CMAKE_PUSH_CHECK_STATE()	# Save the state of the variables
Packit Service 1d0348
    INCLUDE_DIRECTORIES(${EXPAT_INCLUDE_DIR})
Packit Service 1d0348
    LIST(APPEND ADDITIONAL_LIBS ${EXPAT_LIBRARIES})
Packit Service 1d0348
    SET(HAVE_LIBEXPAT 1)
Packit Service 1d0348
    LA_CHECK_INCLUDE_FILE("expat.h" HAVE_EXPAT_H)
Packit Service 1d0348
    CMAKE_POP_CHECK_STATE()	# Restore the state of the variables
Packit Service 1d0348
  ENDIF(EXPAT_FOUND)
Packit Service 1d0348
ENDIF(LIBXML2_FOUND)
Packit Service 1d0348
MARK_AS_ADVANCED(CLEAR LIBXML2_INCLUDE_DIR)
Packit Service 1d0348
MARK_AS_ADVANCED(CLEAR LIBXML2_LIBRARIES)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# POSIX Regular Expression support
Packit Service 1d0348
#
Packit Service 1d0348
IF(POSIX_REGEX_LIB MATCHES "^(AUTO|LIBC|LIBREGEX)$")
Packit Service 1d0348
  #
Packit Service 1d0348
  # If PCREPOSIX is not found or not requested, try using regex
Packit Service 1d0348
  # from libc or libregex
Packit Service 1d0348
  #
Packit Service 1d0348
  FIND_PATH(REGEX_INCLUDE_DIR regex.h)
Packit Service 1d0348
  IF(REGEX_INCLUDE_DIR)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(regcomp HAVE_REGCOMP_LIBC)
Packit Service 1d0348
    #
Packit Service 1d0348
    # If libc does not provide regex, find libregex.
Packit Service 1d0348
    #
Packit Service 1d0348
    IF(NOT HAVE_REGCOMP_LIBC)
Packit Service 1d0348
      CMAKE_PUSH_CHECK_STATE()	# Save the state of the variables
Packit Service 1d0348
      FIND_LIBRARY(REGEX_LIBRARY regex)
Packit Service 1d0348
      IF(REGEX_LIBRARY)
Packit Service 1d0348
        SET(CMAKE_REQUIRED_LIBRARIES ${REGEX_LIBRARY})
Packit Service 1d0348
        CHECK_FUNCTION_EXISTS_GLIBC(regcomp HAVE_REGCOMP_LIBREGEX)
Packit Service 1d0348
        IF(HAVE_REGCOMP_LIBREGEX)
Packit Service 1d0348
          LIST(APPEND ADDITIONAL_LIBS ${REGEX_LIBRARY})
Packit Service 1d0348
          #
Packit Service 1d0348
          # If regex.h is not found, retry looking for regex.h at
Packit Service 1d0348
          # REGEX_INCLUDE_DIR
Packit Service 1d0348
          #
Packit Service 1d0348
          IF(NOT HAVE_REGEX_H)
Packit Service 1d0348
            UNSET(HAVE_REGEX_H CACHE)
Packit Service 1d0348
            INCLUDE_DIRECTORIES(${REGEX_INCLUDE_DIR})
Packit Service 1d0348
            SET(CMAKE_REQUIRED_INCLUDES ${REGEX_INCLUDE_DIR})
Packit Service 1d0348
            LA_CHECK_INCLUDE_FILE("regex.h" HAVE_REGEX_H)
Packit Service 1d0348
          ENDIF(NOT HAVE_REGEX_H)
Packit Service 1d0348
          # Test if a macro is needed for the library.
Packit Service 1d0348
          TRY_MACRO_FOR_LIBRARY(
Packit Service 1d0348
            "${REGEX_INCLUDE_DIR}" "${REGEX_LIBRARY}"
Packit Service 1d0348
            COMPILES
Packit Service 1d0348
            "#include <stddef.h>\n#include <regex.h>\nint main() {regex_t r;return regcomp(&r, \"\", 0);}"
Packit Service 1d0348
            "USE_REGEX_DLL;USE_REGEX_STATIC")
Packit Service 1d0348
          IF(USE_REGEX_DLL)
Packit Service 1d0348
            ADD_DEFINITIONS(-DUSE_REGEX_DLL)
Packit Service 1d0348
          ELSEIF(USE_REGEX_STATIC)
Packit Service 1d0348
            ADD_DEFINITIONS(-DUSE_REGEX_STATIC)
Packit Service 1d0348
          ENDIF(USE_REGEX_DLL)
Packit Service 1d0348
        ENDIF(HAVE_REGCOMP_LIBREGEX)
Packit Service 1d0348
      ENDIF(REGEX_LIBRARY)
Packit Service 1d0348
      CMAKE_POP_CHECK_STATE()	# Restore the state of the variables
Packit Service 1d0348
    ENDIF(NOT HAVE_REGCOMP_LIBC)
Packit Service 1d0348
  ENDIF(REGEX_INCLUDE_DIR)
Packit Service 1d0348
  IF(HAVE_REGCOMP_LIBC OR HAVE_REGCOMP_LIBREGEX)
Packit Service 1d0348
    SET(FOUND_POSIX_REGEX_LIB 1)
Packit Service 1d0348
  ENDIF(HAVE_REGCOMP_LIBC OR HAVE_REGCOMP_LIBREGEX)
Packit Service 1d0348
ENDIF(POSIX_REGEX_LIB MATCHES "^(AUTO|LIBC|LIBREGEX)$")
Packit Service 1d0348
Packit Service 1d0348
IF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX)$")
Packit Service 1d0348
  #
Packit Service 1d0348
  # If requested, try finding library for PCREPOSIX
Packit Service 1d0348
  #
Packit Service 1d0348
  IF(ENABLE_LibGCC)
Packit Service 1d0348
    FIND_PACKAGE(LibGCC)
Packit Service 1d0348
  ELSE()
Packit Service 1d0348
    SET(LIBGCC_FOUND FALSE) # Override cached value
Packit Service 1d0348
  ENDIF()
Packit Service 1d0348
  IF(ENABLE_PCREPOSIX)
Packit Service 1d0348
    FIND_PACKAGE(PCREPOSIX)
Packit Service 1d0348
  ELSE()
Packit Service 1d0348
    SET(PCREPOSIX_FOUND FALSE) # Override cached value
Packit Service 1d0348
  ENDIF()
Packit Service 1d0348
  IF(PCREPOSIX_FOUND)
Packit Service 1d0348
    INCLUDE_DIRECTORIES(${PCRE_INCLUDE_DIR})
Packit Service 1d0348
    LIST(APPEND ADDITIONAL_LIBS ${PCREPOSIX_LIBRARIES})
Packit Service 1d0348
    # Test if a macro is needed for the library.
Packit Service 1d0348
    TRY_MACRO_FOR_LIBRARY(
Packit Service 1d0348
      "${PCRE_INCLUDE_DIR}" "${PCREPOSIX_LIBRARIES}"
Packit Service 1d0348
      COMPILES
Packit Service 1d0348
      "#include <pcreposix.h>\nint main() {regex_t r;return regcomp(&r, \"\", 0);}"
Packit Service 1d0348
      "WITHOUT_PCRE_STATIC;PCRE_STATIC")
Packit Service 1d0348
    IF(NOT WITHOUT_PCRE_STATIC AND PCRE_STATIC)
Packit Service 1d0348
      ADD_DEFINITIONS(-DPCRE_STATIC)
Packit Service 1d0348
	ELSEIF(NOT WITHOUT_PCRE_STATIC AND NOT PCRE_STATIC AND PCRE_FOUND)
Packit Service 1d0348
	  # Determine if pcre static libraries are to be used.
Packit Service 1d0348
      LIST(APPEND ADDITIONAL_LIBS ${PCRE_LIBRARIES})
Packit Service 1d0348
      SET(TMP_LIBRARIES ${PCREPOSIX_LIBRARIES} ${PCRE_LIBRARIES})
Packit Service 1d0348
      MESSAGE(STATUS "trying again with -lpcre included")
Packit Service 1d0348
      TRY_MACRO_FOR_LIBRARY(
Packit Service 1d0348
        "${PCRE_INCLUDE_DIR}" "${TMP_LIBRARIES}"
Packit Service 1d0348
        COMPILES
Packit Service 1d0348
        "#include <pcreposix.h>\nint main() {regex_t r;return regcomp(&r, \"\", 0);}"
Packit Service 1d0348
        "WITHOUT_PCRE_STATIC;PCRE_STATIC")
Packit Service 1d0348
      IF(NOT WITHOUT_PCRE_STATIC AND PCRE_STATIC)
Packit Service 1d0348
        ADD_DEFINITIONS(-DPCRE_STATIC)
Packit Service 1d0348
      ELSEIF(NOT WITHOUT_PCRE_STATIC AND NOT PCRE_STATIC AND MSVC AND LIBGCC_FOUND)
Packit Service 1d0348
        # When doing a Visual Studio build using pcre static libraries
Packit Service 1d0348
        # built using the mingw toolchain, -lgcc is needed to resolve
Packit Service 1d0348
        # ___chkstk_ms.
Packit Service 1d0348
        MESSAGE(STATUS "Visual Studio build detected, trying again with -lgcc included")
Packit Service 1d0348
        LIST(APPEND ADDITIONAL_LIBS ${LIBGCC_LIBRARIES})
Packit Service 1d0348
        SET(TMP_LIBRARIES ${PCREPOSIX_LIBRARIES} ${PCRE_LIBRARIES} ${LIBGCC_LIBRARIES})
Packit Service 1d0348
          TRY_MACRO_FOR_LIBRARY(
Packit Service 1d0348
            "${PCRE_INCLUDE_DIR}" "${TMP_LIBRARIES}"
Packit Service 1d0348
            COMPILES
Packit Service 1d0348
            "#include <pcreposix.h>\nint main() {regex_t r;return regcomp(&r, \"\", 0);}"
Packit Service 1d0348
            "WITHOUT_PCRE_STATIC;PCRE_STATIC")
Packit Service 1d0348
          IF(NOT WITHOUT_PCRE_STATIC AND PCRE_STATIC)
Packit Service 1d0348
            ADD_DEFINITIONS(-DPCRE_STATIC)
Packit Service 1d0348
          ENDIF(NOT WITHOUT_PCRE_STATIC AND PCRE_STATIC)
Packit Service 1d0348
      ENDIF(NOT WITHOUT_PCRE_STATIC AND PCRE_STATIC)
Packit Service 1d0348
    ENDIF(NOT WITHOUT_PCRE_STATIC AND PCRE_STATIC)
Packit Service 1d0348
  ENDIF(PCREPOSIX_FOUND)
Packit Service 1d0348
  MARK_AS_ADVANCED(CLEAR PCRE_INCLUDE_DIR)
Packit Service 1d0348
  MARK_AS_ADVANCED(CLEAR PCREPOSIX_LIBRARIES)
Packit Service 1d0348
  MARK_AS_ADVANCED(CLEAR PCRE_LIBRARIES)
Packit Service 1d0348
  MARK_AS_ADVANCED(CLEAR LIBGCC_LIBRARIES)
Packit Service 1d0348
ENDIF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX)$")
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Check functions
Packit Service 1d0348
#
Packit Service 1d0348
CMAKE_PUSH_CHECK_STATE()	# Save the state of the variables
Packit Service 1d0348
IF (CMAKE_C_COMPILER_ID MATCHES "^GNU$" OR
Packit Service 1d0348
    CMAKE_C_COMPILER_ID MATCHES "^Clang$")
Packit Service 1d0348
  #
Packit Service 1d0348
  # During checking functions, we should use -fno-builtin to avoid the
Packit Service 1d0348
  # failure of function detection which failure is an error "conflicting
Packit Service 1d0348
  # types for built-in function" caused by using -Werror option.
Packit Service 1d0348
  #
Packit Service 1d0348
  SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fno-builtin")
Packit Service 1d0348
ENDIF (CMAKE_C_COMPILER_ID MATCHES "^GNU$" OR
Packit Service 1d0348
       CMAKE_C_COMPILER_ID MATCHES "^Clang$")
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(_CrtSetReportMode "crtdbg.h" HAVE__CrtSetReportMode)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(arc4random_buf HAVE_ARC4RANDOM_BUF)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(chflags HAVE_CHFLAGS)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(chown HAVE_CHOWN)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(chroot HAVE_CHROOT)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(ctime_r HAVE_CTIME_R)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(fchdir HAVE_FCHDIR)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(fchflags HAVE_FCHFLAGS)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(fchmod HAVE_FCHMOD)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(fchown HAVE_FCHOWN)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(fcntl HAVE_FCNTL)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(fdopendir HAVE_FDOPENDIR)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(fork HAVE_FORK)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(fstat HAVE_FSTAT)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(fstatat HAVE_FSTATAT)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(fstatfs HAVE_FSTATFS)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(fstatvfs HAVE_FSTATVFS)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(ftruncate HAVE_FTRUNCATE)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(futimens HAVE_FUTIMENS)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(futimes HAVE_FUTIMES)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(futimesat HAVE_FUTIMESAT)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(geteuid HAVE_GETEUID)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(getgrgid_r HAVE_GETGRGID_R)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(getgrnam_r HAVE_GETGRNAM_R)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(getpwnam_r HAVE_GETPWNAM_R)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(getpwuid_r HAVE_GETPWUID_R)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(getpid HAVE_GETPID)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(getvfsbyname HAVE_GETVFSBYNAME)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(gmtime_r HAVE_GMTIME_R)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(lchflags HAVE_LCHFLAGS)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(lchmod HAVE_LCHMOD)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(lchown HAVE_LCHOWN)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(link HAVE_LINK)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(localtime_r HAVE_LOCALTIME_R)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(lstat HAVE_LSTAT)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(lutimes HAVE_LUTIMES)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(mbrtowc HAVE_MBRTOWC)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(memmove HAVE_MEMMOVE)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(mkdir HAVE_MKDIR)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(mkfifo HAVE_MKFIFO)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(mknod HAVE_MKNOD)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(mkstemp HAVE_MKSTEMP)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(nl_langinfo HAVE_NL_LANGINFO)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(openat HAVE_OPENAT)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(pipe HAVE_PIPE)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(poll HAVE_POLL)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(posix_spawnp HAVE_POSIX_SPAWNP)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(readlink HAVE_READLINK)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(readpassphrase HAVE_READPASSPHRASE)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(select HAVE_SELECT)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(setenv HAVE_SETENV)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(setlocale HAVE_SETLOCALE)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(sigaction HAVE_SIGACTION)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(statfs HAVE_STATFS)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(statvfs HAVE_STATVFS)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(strchr HAVE_STRCHR)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(strdup HAVE_STRDUP)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(strerror HAVE_STRERROR)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(strncpy_s HAVE_STRNCPY_S)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(strrchr HAVE_STRRCHR)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(symlink HAVE_SYMLINK)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(timegm HAVE_TIMEGM)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(tzset HAVE_TZSET)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(unsetenv HAVE_UNSETENV)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(utime HAVE_UTIME)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(utimes HAVE_UTIMES)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(utimensat HAVE_UTIMENSAT)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(vfork HAVE_VFORK)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(wcrtomb HAVE_WCRTOMB)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(wcscmp HAVE_WCSCMP)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(wcscpy HAVE_WCSCPY)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(wcslen HAVE_WCSLEN)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(wctomb HAVE_WCTOMB)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(_ctime64_s HAVE__CTIME64_S)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(_fseeki64 HAVE__FSEEKI64)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(_get_timezone HAVE__GET_TIMEZONE)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(_localtime64_s HAVE__LOCALTIME64_S)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS_GLIBC(_mkgmtime64 HAVE__MKGMTIME64)
Packit Service 1d0348
Packit Service 1d0348
SET(CMAKE_REQUIRED_LIBRARIES "")
Packit Service 1d0348
CHECK_FUNCTION_EXISTS(cygwin_conv_path HAVE_CYGWIN_CONV_PATH)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS(fseeko HAVE_FSEEKO)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS(strerror_r HAVE_STRERROR_R)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS(strftime HAVE_STRFTIME)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS(vprintf HAVE_VPRINTF)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS(wmemcmp HAVE_WMEMCMP)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS(wmemcpy HAVE_WMEMCPY)
Packit Service 1d0348
CHECK_FUNCTION_EXISTS(wmemmove HAVE_WMEMMOVE)
Packit Service 1d0348
Packit Service 1d0348
CMAKE_POP_CHECK_STATE()	# Restore the state of the variables
Packit Service 1d0348
Packit Service 1d0348
CHECK_C_SOURCE_COMPILES(
Packit Service 1d0348
  "#include <sys/types.h>\n#include <sys/mount.h>\nint main(void) { struct vfsconf v; return sizeof(v);}"
Packit Service 1d0348
  HAVE_STRUCT_VFSCONF)
Packit Service 1d0348
Packit Service 1d0348
CHECK_C_SOURCE_COMPILES(
Packit Service 1d0348
  "#include <sys/types.h>\n#include <sys/mount.h>\nint main(void) { struct xvfsconf v; return sizeof(v);}"
Packit Service 1d0348
  HAVE_STRUCT_XVFSCONF)
Packit Service 1d0348
Packit Service 1d0348
# Make sure we have the POSIX version of readdir_r, not the
Packit Service 1d0348
# older 2-argument version.
Packit Service 1d0348
CHECK_C_SOURCE_COMPILES(
Packit Service 1d0348
  "#include <dirent.h>\nint main() {DIR *d = opendir(\".\"); struct dirent e,*r; return readdir_r(d,&e,&r);}"
Packit Service 1d0348
  HAVE_READDIR_R)
Packit Service 1d0348
Packit Service 1d0348
# dirfd can be either a function or a macro.
Packit Service 1d0348
CHECK_C_SOURCE_COMPILES(
Packit Service 1d0348
  "#include <dirent.h>\nint main() {DIR *d = opendir(\".\"); return dirfd(d);}"
Packit Service 1d0348
  HAVE_DIRFD)
Packit Service 1d0348
Packit Service 1d0348
# Only detect readlinkat() if we also have AT_FDCWD in unistd.h.
Packit Service 1d0348
# NOTE: linux requires fcntl.h for AT_FDCWD.
Packit Service 1d0348
CHECK_C_SOURCE_COMPILES(
Packit Service 1d0348
  "#include <fcntl.h>\n#include <unistd.h>\nint main() {char buf[10]; return readlinkat(AT_FDCWD, \"\", buf, 0);}"
Packit Service 1d0348
  HAVE_READLINKAT)
Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348
# To verify major(), we need to both include the header
Packit Service 1d0348
# of interest and verify that the result can be linked.
Packit Service 1d0348
# CHECK_FUNCTION_EXISTS doesn't accept a header argument,
Packit Service 1d0348
# CHECK_SYMBOL_EXISTS doesn't test linkage.
Packit Service 1d0348
CHECK_C_SOURCE_COMPILES(
Packit Service 1d0348
  "#include <sys/mkdev.h>\nint main() { return major(256); }"
Packit Service 1d0348
  MAJOR_IN_MKDEV)
Packit Service 1d0348
CHECK_C_SOURCE_COMPILES(
Packit Service 1d0348
  "#include <sys/sysmacros.h>\nint main() { return major(256); }"
Packit Service 1d0348
  MAJOR_IN_SYSMACROS)
Packit Service 1d0348
Packit Service 1d0348
CHECK_C_SOURCE_COMPILES(
Packit Service 1d0348
  "#include <lzma.h>\n#if LZMA_VERSION < 50020000\n#error unsupported\n#endif\nint main(void){lzma_stream_encoder_mt(0, 0); return 0;}"
Packit Service 1d0348
  HAVE_LZMA_STREAM_ENCODER_MT)
Packit Service 1d0348
Packit Service 1d0348
IF(HAVE_STRERROR_R)
Packit Service 1d0348
  SET(HAVE_DECL_STRERROR_R 1)
Packit Service 1d0348
ENDIF(HAVE_STRERROR_R)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Check defines
Packit Service 1d0348
#
Packit Service 1d0348
SET(headers "limits.h")
Packit Service 1d0348
IF(HAVE_STDINT_H)
Packit Service 1d0348
  LIST(APPEND headers "stdint.h")
Packit Service 1d0348
ENDIF(HAVE_STDINT_H)
Packit Service 1d0348
IF(HAVE_INTTYPES_H)
Packit Service 1d0348
  LIST(APPEND headers "inttypes.h")
Packit Service 1d0348
ENDIF(HAVE_INTTYPES_H)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(EFTYPE           "errno.h"    HAVE_EFTYPE)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(EILSEQ           "errno.h"    HAVE_EILSEQ)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(D_MD_ORDER       "langinfo.h" HAVE_D_MD_ORDER)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(INT32_MAX        "${headers}" HAVE_DECL_INT32_MAX)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(INT32_MIN        "${headers}" HAVE_DECL_INT32_MIN)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(INT64_MAX        "${headers}" HAVE_DECL_INT64_MAX)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(INT64_MIN        "${headers}" HAVE_DECL_INT64_MIN)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(INTMAX_MAX       "${headers}" HAVE_DECL_INTMAX_MAX)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(INTMAX_MIN       "${headers}" HAVE_DECL_INTMAX_MIN)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(UINT32_MAX       "${headers}" HAVE_DECL_UINT32_MAX)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(UINT64_MAX       "${headers}" HAVE_DECL_UINT64_MAX)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(UINTMAX_MAX      "${headers}" HAVE_DECL_UINTMAX_MAX)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(SIZE_MAX         "${headers}" HAVE_DECL_SIZE_MAX)
Packit Service 1d0348
CHECK_SYMBOL_EXISTS(SSIZE_MAX        "limits.h"   HAVE_DECL_SSIZE_MAX)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Check struct members
Packit Service 1d0348
#
Packit Service 1d0348
# Check for tm_gmtoff in struct tm
Packit Service 1d0348
CHECK_STRUCT_HAS_MEMBER("struct tm" tm_gmtoff
Packit Service 1d0348
    "time.h" HAVE_STRUCT_TM_TM_GMTOFF)
Packit Service 1d0348
CHECK_STRUCT_HAS_MEMBER("struct tm" __tm_gmtoff
Packit Service 1d0348
    "time.h" HAVE_STRUCT_TM___TM_GMTOFF)
Packit Service 1d0348
Packit Service 1d0348
# Check for f_namemax in struct statfs
Packit Service 1d0348
CHECK_STRUCT_HAS_MEMBER("struct statfs" f_namemax
Packit Service 1d0348
    "sys/param.h;sys/mount.h" HAVE_STRUCT_STATFS_F_NAMEMAX)
Packit Service 1d0348
Packit Service 1d0348
# Check for birthtime in struct stat
Packit Service 1d0348
CHECK_STRUCT_HAS_MEMBER("struct stat" st_birthtime
Packit Service 1d0348
    "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_BIRTHTIME)
Packit Service 1d0348
Packit Service 1d0348
# Check for high-resolution timestamps in struct stat
Packit Service 1d0348
CHECK_STRUCT_HAS_MEMBER("struct stat" st_birthtimespec.tv_nsec
Packit Service 1d0348
    "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC)
Packit Service 1d0348
CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtimespec.tv_nsec
Packit Service 1d0348
    "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC)
Packit Service 1d0348
CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtim.tv_nsec
Packit Service 1d0348
    "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC)
Packit Service 1d0348
CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtime_n
Packit Service 1d0348
    "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIME_N)
Packit Service 1d0348
CHECK_STRUCT_HAS_MEMBER("struct stat" st_umtime
Packit Service 1d0348
    "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_UMTIME)
Packit Service 1d0348
CHECK_STRUCT_HAS_MEMBER("struct stat" st_mtime_usec
Packit Service 1d0348
    "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIME_USEC)
Packit Service 1d0348
# Check for block size support in struct stat
Packit Service 1d0348
CHECK_STRUCT_HAS_MEMBER("struct stat" st_blksize
Packit Service 1d0348
    "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_BLKSIZE)
Packit Service 1d0348
# Check for st_flags in struct stat (BSD fflags)
Packit Service 1d0348
CHECK_STRUCT_HAS_MEMBER("struct stat" st_flags
Packit Service 1d0348
    "sys/types.h;sys/stat.h" HAVE_STRUCT_STAT_ST_FLAGS)
Packit Service 1d0348
Packit Service 1d0348
IF(HAVE_SYS_STATVFS_H)
Packit Service 1d0348
  CHECK_STRUCT_HAS_MEMBER("struct statvfs" f_iosize
Packit Service 1d0348
    "sys/types.h;sys/statvfs.h" HAVE_STRUCT_STATVFS_F_IOSIZE)
Packit Service 1d0348
ENDIF()
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_STRUCT_HAS_MEMBER("struct tm" tm_sec
Packit Service 1d0348
    "sys/types.h;sys/time.h;time.h" TIME_WITH_SYS_TIME)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Check for integer types
Packit Service 1d0348
#
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_TYPE_SIZE("short" SIZE_OF_SHORT)
Packit Service 1d0348
CHECK_TYPE_SIZE("int" SIZE_OF_INT)
Packit Service 1d0348
CHECK_TYPE_SIZE("long" SIZE_OF_LONG)
Packit Service 1d0348
CHECK_TYPE_SIZE("long long"     SIZE_OF_LONG_LONG)
Packit Service 1d0348
Packit Service 1d0348
CHECK_TYPE_SIZE("unsigned short" SIZE_OF_UNSIGNED_SHORT)
Packit Service 1d0348
CHECK_TYPE_SIZE("unsigned" SIZE_OF_UNSIGNED)
Packit Service 1d0348
CHECK_TYPE_SIZE("unsigned long" SIZE_OF_UNSIGNED_LONG)
Packit Service 1d0348
CHECK_TYPE_SIZE("unsigned long long" SIZE_OF_UNSIGNED_LONG_LONG)
Packit Service 1d0348
Packit Service 1d0348
CHECK_TYPE_SIZE("__int64" __INT64)
Packit Service 1d0348
CHECK_TYPE_SIZE("unsigned __int64" UNSIGNED___INT64)
Packit Service 1d0348
Packit Service 1d0348
CHECK_TYPE_SIZE(int16_t INT16_T)
Packit Service 1d0348
CHECK_TYPE_SIZE(int32_t INT32_T)
Packit Service 1d0348
CHECK_TYPE_SIZE(int64_t INT64_T)
Packit Service 1d0348
CHECK_TYPE_SIZE(intmax_t INTMAX_T)
Packit Service 1d0348
CHECK_TYPE_SIZE(uint8_t UINT8_T)
Packit Service 1d0348
CHECK_TYPE_SIZE(uint16_t UINT16_T)
Packit Service 1d0348
CHECK_TYPE_SIZE(uint32_t UINT32_T)
Packit Service 1d0348
CHECK_TYPE_SIZE(uint64_t UINT64_T)
Packit Service 1d0348
CHECK_TYPE_SIZE(uintmax_t UINTMAX_T)
Packit Service 1d0348
Packit Service 1d0348
CHECK_TYPE_SIZE(dev_t       DEV_T)
Packit Service 1d0348
IF(NOT HAVE_DEV_T)
Packit Service 1d0348
  IF(MSVC)
Packit Service 1d0348
    SET(dev_t "unsigned int")
Packit Service 1d0348
  ENDIF(MSVC)
Packit Service 1d0348
ENDIF(NOT HAVE_DEV_T)
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_TYPE_SIZE(gid_t       GID_T)
Packit Service 1d0348
IF(NOT HAVE_GID_T)
Packit Service 1d0348
  IF(WIN32)
Packit Service 1d0348
    SET(gid_t "short")
Packit Service 1d0348
  ELSE(WIN32)
Packit Service 1d0348
    SET(gid_t "unsigned int")
Packit Service 1d0348
  ENDIF(WIN32)
Packit Service 1d0348
ENDIF(NOT HAVE_GID_T)
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_TYPE_SIZE(id_t        ID_T)
Packit Service 1d0348
IF(NOT HAVE_ID_T)
Packit Service 1d0348
  IF(WIN32)
Packit Service 1d0348
    SET(id_t "short")
Packit Service 1d0348
  ELSE(WIN32)
Packit Service 1d0348
    SET(id_t "unsigned int")
Packit Service 1d0348
  ENDIF(WIN32)
Packit Service 1d0348
ENDIF(NOT HAVE_ID_T)
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_TYPE_SIZE(mode_t      MODE_T)
Packit Service 1d0348
IF(NOT HAVE_MODE_T)
Packit Service 1d0348
  IF(WIN32)
Packit Service 1d0348
    SET(mode_t "unsigned short")
Packit Service 1d0348
  ELSE(WIN32)
Packit Service 1d0348
    SET(mode_t "int")
Packit Service 1d0348
  ENDIF(WIN32)
Packit Service 1d0348
ENDIF(NOT HAVE_MODE_T)
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_TYPE_SIZE(off_t       OFF_T)
Packit Service 1d0348
IF(NOT HAVE_OFF_T)
Packit Service 1d0348
  SET(off_t "__int64")
Packit Service 1d0348
ENDIF(NOT HAVE_OFF_T)
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_TYPE_SIZE(size_t      SIZE_T)
Packit Service 1d0348
IF(NOT HAVE_SIZE_T)
Packit Service 1d0348
  IF("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
Packit Service 1d0348
    SET(size_t "uint64_t")
Packit Service 1d0348
  ELSE("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
Packit Service 1d0348
    SET(size_t   "uint32_t")
Packit Service 1d0348
  ENDIF("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
Packit Service 1d0348
ENDIF(NOT HAVE_SIZE_T)
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_TYPE_SIZE(ssize_t     SSIZE_T)
Packit Service 1d0348
IF(NOT HAVE_SSIZE_T)
Packit Service 1d0348
  IF("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
Packit Service 1d0348
    SET(ssize_t "int64_t")
Packit Service 1d0348
  ELSE("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
Packit Service 1d0348
    SET(ssize_t "long")
Packit Service 1d0348
  ENDIF("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
Packit Service 1d0348
ENDIF(NOT HAVE_SSIZE_T)
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_TYPE_SIZE(uid_t       UID_T)
Packit Service 1d0348
IF(NOT HAVE_UID_T)
Packit Service 1d0348
  IF(WIN32)
Packit Service 1d0348
    SET(uid_t "short")
Packit Service 1d0348
  ELSE(WIN32)
Packit Service 1d0348
    SET(uid_t "unsigned int")
Packit Service 1d0348
  ENDIF(WIN32)
Packit Service 1d0348
ENDIF(NOT HAVE_UID_T)
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_TYPE_SIZE(pid_t       PID_T)
Packit Service 1d0348
IF(NOT HAVE_PID_T)
Packit Service 1d0348
  IF(WIN32)
Packit Service 1d0348
    SET(pid_t "int")
Packit Service 1d0348
  ELSE(WIN32)
Packit Service 1d0348
    MESSAGE(FATAL_ERROR "pid_t doesn't exist on this platform?")
Packit Service 1d0348
  ENDIF(WIN32)
Packit Service 1d0348
ENDIF(NOT HAVE_PID_T)
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_TYPE_SIZE(intptr_t   INTPTR_T)
Packit Service 1d0348
IF(NOT HAVE_INTPTR_T)
Packit Service 1d0348
  IF("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
Packit Service 1d0348
    SET(intptr_t "int64_t")
Packit Service 1d0348
  ELSE()
Packit Service 1d0348
    SET(intptr_t "int32_t")
Packit Service 1d0348
  ENDIF()
Packit Service 1d0348
ENDIF(NOT HAVE_INTPTR_T)
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_TYPE_SIZE(uintptr_t   UINTPTR_T)
Packit Service 1d0348
IF(NOT HAVE_UINTPTR_T)
Packit Service 1d0348
  IF("${CMAKE_SIZEOF_VOID_P}" EQUAL 8)
Packit Service 1d0348
    SET(uintptr_t "uint64_t")
Packit Service 1d0348
  ELSE()
Packit Service 1d0348
    SET(uintptr_t "uint32_t")
Packit Service 1d0348
  ENDIF()
Packit Service 1d0348
ENDIF(NOT HAVE_UINTPTR_T)
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_TYPE_SIZE(wchar_t     SIZEOF_WCHAR_T)
Packit Service 1d0348
IF(HAVE_SIZEOF_WCHAR_T)
Packit Service 1d0348
  SET(HAVE_WCHAR_T 1)
Packit Service 1d0348
ENDIF(HAVE_SIZEOF_WCHAR_T)
Packit Service 1d0348
#
Packit Service 1d0348
# Check if _FILE_OFFSET_BITS macro needed for large files
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_FILE_OFFSET_BITS()
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Check for Extended Attribute libraries, headers, and functions
Packit Service 1d0348
#
Packit Service 1d0348
IF(ENABLE_XATTR)
Packit Service 1d0348
  CHECK_LIBRARY_EXISTS(attr "setxattr" "" HAVE_LIBATTR)
Packit Service 1d0348
  IF(HAVE_LIBATTR)
Packit Service 1d0348
    SET(CMAKE_REQUIRED_LIBRARIES "attr")
Packit Service 1d0348
  ENDIF(HAVE_LIBATTR)
Packit Service 1d0348
  CHECK_SYMBOL_EXISTS(EXTATTR_NAMESPACE_USER "sys/types.h;sys/extattr.h" HAVE_DECL_EXTATTR_NAMESPACE_USER)
Packit Service 1d0348
  CHECK_SYMBOL_EXISTS(XATTR_NOFOLLOW "sys/xattr.h" HAVE_DECL_XATTR_NOFOLLOW)
Packit Service 1d0348
  IF(HAVE_SYS_XATTR_H AND HAVE_DECL_XATTR_NOFOLLOW)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(fgetxattr HAVE_FGETXATTR)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(flistxattr HAVE_FLISTXATTR)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(fsetxattr HAVE_FSETXATTR)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(getxattr HAVE_GETXATTR)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(listxattr HAVE_LISTXATTR)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(setxattr HAVE_SETXATTR)
Packit Service 1d0348
    IF(HAVE_FGETXATTR AND
Packit Service 1d0348
       HAVE_FLISTXATTR AND
Packit Service 1d0348
       HAVE_FSETXATTR AND
Packit Service 1d0348
       HAVE_GETXATTR AND
Packit Service 1d0348
       HAVE_LISTXATTR AND
Packit Service 1d0348
       HAVE_SETXATTR)
Packit Service 1d0348
      SET(ARCHIVE_XATTR_DARWIN TRUE)
Packit Service 1d0348
    ENDIF()
Packit Service 1d0348
  ELSEIF(HAVE_SYS_EXTATTR_H AND HAVE_DECL_EXTATTR_NAMESPACE_USER)
Packit Service 1d0348
    # FreeBSD xattr support
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(extattr_get_fd HAVE_EXTATTR_GET_FD)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(extattr_get_file HAVE_EXTATTR_GET_FILE)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(extattr_get_link HAVE_EXTATTR_GET_LINK)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(extattr_list_fd HAVE_EXTATTR_LIST_FD)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(extattr_list_file HAVE_EXTATTR_LIST_FILE)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(extattr_list_link HAVE_EXTATTR_LIST_LINK)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(extattr_set_fd HAVE_EXTATTR_SET_FD)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(extattr_set_link HAVE_EXTATTR_SET_LINK)
Packit Service 1d0348
    IF(HAVE_EXTATTR_GET_FD AND
Packit Service 1d0348
       HAVE_EXTATTR_GET_FILE AND
Packit Service 1d0348
       HAVE_EXTATTR_GET_LINK AND
Packit Service 1d0348
       HAVE_EXTATTR_LIST_FD AND
Packit Service 1d0348
       HAVE_EXTATTR_LIST_FILE AND
Packit Service 1d0348
       HAVE_EXTATTR_LIST_LINK AND
Packit Service 1d0348
       HAVE_EXTATTR_SET_FD AND
Packit Service 1d0348
       HAVE_EXTATTR_SET_LINK)
Packit Service 1d0348
      SET(ARCHIVE_XATTR_FREEBSD TRUE)
Packit Service 1d0348
    ENDIF()
Packit Service 1d0348
  ELSEIF(HAVE_SYS_XATTR_H OR HAVE_ATTR_XATTR_H)
Packit Service 1d0348
    # Linux xattr support
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(fgetxattr HAVE_FGETXATTR)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(flistxattr HAVE_FLISTXATTR)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(fsetxattr HAVE_FSETXATTR)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(getxattr HAVE_GETXATTR)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(lgetxattr HAVE_LGETXATTR)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(listxattr HAVE_LISTXATTR)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(llistxattr HAVE_LLISTXATTR)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(lsetxattr HAVE_LSETXATTR)
Packit Service 1d0348
    IF(HAVE_FGETXATTR AND
Packit Service 1d0348
       HAVE_FLISTXATTR AND
Packit Service 1d0348
       HAVE_FSETXATTR AND
Packit Service 1d0348
       HAVE_GETXATTR AND
Packit Service 1d0348
       HAVE_LGETXATTR AND
Packit Service 1d0348
       HAVE_LISTXATTR AND
Packit Service 1d0348
       HAVE_LLISTXATTR AND
Packit Service 1d0348
       HAVE_LSETXATTR)
Packit Service 1d0348
      SET(ARCHIVE_XATTR_LINUX TRUE)
Packit Service 1d0348
    ENDIF()
Packit Service 1d0348
  ELSEIF(HAVE_SYS_EA_H)
Packit Service 1d0348
    # AIX xattr support
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(fgetea HAVE_FGETEA)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(flistea HAVE_FLISTEA)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(fsetea HAVE_FSETEA)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(getea HAVE_GETEA)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(lgetea HAVE_LGETEA)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(listea HAVE_LISTEA)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(llistea HAVE_LLISTEA)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS(lsetea HAVE_LSETEA)
Packit Service 1d0348
    IF(HAVE_FGETEA AND
Packit Service 1d0348
       HAVE_FLISTEA AND
Packit Service 1d0348
       HAVE_FSETEA AND
Packit Service 1d0348
       HAVE_GETEA AND
Packit Service 1d0348
       HAVE_LGETEA AND
Packit Service 1d0348
       HAVE_LISTEA AND
Packit Service 1d0348
       HAVE_LLISTEA AND
Packit Service 1d0348
       HAVE_LSETEA)
Packit Service 1d0348
      SET(ARCHIVE_XATTR_AIX TRUE)
Packit Service 1d0348
    ENDIF()
Packit Service 1d0348
  ENDIF()
Packit Service 1d0348
Packit Service 1d0348
  IF(ARCHIVE_XATTR_DARWIN)
Packit Service 1d0348
    MESSAGE(STATUS "Extended attributes support: Darwin")
Packit Service 1d0348
  ELSEIF(ARCHIVE_XATTR_FREEBSD)
Packit Service 1d0348
    MESSAGE(STATUS "Extended attributes support: FreeBSD")
Packit Service 1d0348
  ELSEIF(ARCHIVE_XATTR_LINUX)
Packit Service 1d0348
    MESSAGE(STATUS "Extended attributes support: Linux")
Packit Service 1d0348
  ELSEIF(ARCHIVE_XATTR_AIX)
Packit Service 1d0348
    MESSAGE(STATUS "Extended attributes support: AIX")
Packit Service 1d0348
  ELSE()
Packit Service 1d0348
    MESSAGE(STATUS "Extended attributes support: none")
Packit Service 1d0348
  ENDIF()
Packit Service 1d0348
ELSE(ENABLE_XATTR)
Packit Service 1d0348
  SET(ARCHIVE_XATTR_DARWIN FALSE)
Packit Service 1d0348
  SET(ARCHIVE_XATTR_FREEBSD FALSE)
Packit Service 1d0348
  SET(ARCHIVE_XATTR_LINUX FALSE)
Packit Service 1d0348
  SET(ARCHIVE_XATTR_AIX FALSE)
Packit Service 1d0348
ENDIF(ENABLE_XATTR)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Check for ACL libraries, headers, and functions
Packit Service 1d0348
#
Packit Service 1d0348
# The ACL support in libarchive is written against the POSIX1e draft,
Packit Service 1d0348
# which was never officially approved and varies quite a bit across
Packit Service 1d0348
# platforms.  Worse, some systems have completely non-POSIX acl functions,
Packit Service 1d0348
# which makes the following checks rather more complex than I would like.
Packit Service 1d0348
#
Packit Service 1d0348
IF(ENABLE_ACL)
Packit Service 1d0348
  # Solaris and derivates ACLs
Packit Service 1d0348
  CHECK_FUNCTION_EXISTS(acl HAVE_ACL)
Packit Service 1d0348
  CHECK_FUNCTION_EXISTS(facl HAVE_FACL)
Packit Service 1d0348
Packit Service 1d0348
  # Libacl
Packit Service 1d0348
  CHECK_LIBRARY_EXISTS(acl "acl_get_file" "" HAVE_LIBACL)
Packit Service 1d0348
  IF(HAVE_LIBACL)
Packit Service 1d0348
    SET(CMAKE_REQUIRED_LIBRARIES "acl")
Packit Service 1d0348
    FIND_LIBRARY(ACL_LIBRARY NAMES acl)
Packit Service 1d0348
    LIST(APPEND ADDITIONAL_LIBS ${ACL_LIBRARY})
Packit Service 1d0348
  ENDIF(HAVE_LIBACL)
Packit Service 1d0348
Packit Service 1d0348
  CHECK_TYPE_EXISTS(acl_t "sys/types.h;sys/acl.h" HAVE_ACL_T)
Packit Service 1d0348
  CHECK_TYPE_EXISTS(acl_entry_t "sys/types.h;sys/acl.h" HAVE_ACL_ENTRY_T)
Packit Service 1d0348
  CHECK_TYPE_EXISTS(acl_permset_t "sys/types.h;sys/acl.h" HAVE_ACL_PERMSET_T)
Packit Service 1d0348
  CHECK_TYPE_EXISTS(acl_tag_t "sys/types.h;sys/acl.h" HAVE_ACL_TAG_T)
Packit Service 1d0348
Packit Service 1d0348
  IF(HAVE_ACL AND HAVE_FACL)
Packit Service 1d0348
    CHECK_TYPE_EXISTS(aclent_t "sys/acl.h" HAVE_ACLENT_T)
Packit Service 1d0348
    IF(HAVE_ACLENT_T)
Packit Service 1d0348
      CHECK_SYMBOL_EXISTS(GETACL "sys/acl.h" HAVE_DECL_GETACL)
Packit Service 1d0348
      CHECK_SYMBOL_EXISTS(GETACLCNT "sys/acl.h" HAVE_DECL_GETACLCNT)
Packit Service 1d0348
      CHECK_SYMBOL_EXISTS(SETACL "sys/acl.h" HAVE_DECL_SETACL)
Packit Service 1d0348
      IF(HAVE_DECL_GETACL AND
Packit Service 1d0348
         HAVE_DECL_GETACLCNT AND
Packit Service 1d0348
         HAVE_DECL_SETACL)
Packit Service 1d0348
        SET(ARCHIVE_ACL_SUNOS TRUE)
Packit Service 1d0348
      ENDIF()
Packit Service 1d0348
      CHECK_TYPE_EXISTS(ace_t "sys/acl.h" HAVE_ACE_T)
Packit Service 1d0348
      IF(HAVE_ACE_T)
Packit Service 1d0348
        CHECK_SYMBOL_EXISTS(ACE_GETACL "sys/acl.h" HAVE_DECL_ACE_GETACL)
Packit Service 1d0348
        CHECK_SYMBOL_EXISTS(ACE_GETACLCNT "sys/acl.h" HAVE_DECL_ACE_GETACLCNT)
Packit Service 1d0348
        CHECK_SYMBOL_EXISTS(ACE_SETACL "sys/acl.h" HAVE_DECL_ACE_SETACL)
Packit Service 1d0348
        IF(HAVE_DECL_ACE_GETACL AND
Packit Service 1d0348
           HAVE_DECL_ACE_GETACLCNT AND
Packit Service 1d0348
           HAVE_DECL_ACE_SETACL)
Packit Service 1d0348
          SET(ARCHIVE_ACL_SUNOS_NFS4 TRUE)
Packit Service 1d0348
        ENDIF()
Packit Service 1d0348
      ENDIF(HAVE_ACE_T)
Packit Service 1d0348
    ENDIF(HAVE_ACLENT_T)
Packit Service 1d0348
  ENDIF(HAVE_ACL AND HAVE_FACL)
Packit Service 1d0348
Packit Service 1d0348
  IF(HAVE_ACL_T AND HAVE_ACL_ENTRY_T AND HAVE_ACL_PERMSET_T AND HAVE_ACL_TAG_T)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_add_perm HAVE_ACL_ADD_PERM)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_clear_perms HAVE_ACL_CLEAR_PERMS)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_create_entry HAVE_ACL_CREATE_ENTRY)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_delete_def_file HAVE_ACL_DELETE_DEF_FILE)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_free HAVE_ACL_FREE)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_get_entry HAVE_ACL_GET_ENTRY)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_get_fd HAVE_ACL_GET_FD)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_get_file HAVE_ACL_GET_FILE)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_get_permset HAVE_ACL_GET_PERMSET)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_get_qualifier HAVE_ACL_GET_QUALIFIER)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_get_tag_type HAVE_ACL_GET_TAG_TYPE)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_init HAVE_ACL_INIT)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_set_fd HAVE_ACL_SET_FD)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_set_file HAVE_ACL_SET_FILE)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_set_qualifier HAVE_ACL_SET_QUALIFIER)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_set_tag_type HAVE_ACL_SET_TAG_TYPE)
Packit Service 1d0348
    IF(HAVE_ACL_ADD_PERM AND
Packit Service 1d0348
       HAVE_ACL_CLEAR_PERMS AND
Packit Service 1d0348
       HAVE_ACL_CREATE_ENTRY AND
Packit Service 1d0348
       HAVE_ACL_DELETE_DEF_FILE AND
Packit Service 1d0348
       HAVE_ACL_FREE AND
Packit Service 1d0348
       HAVE_ACL_GET_ENTRY AND
Packit Service 1d0348
       HAVE_ACL_GET_FD AND
Packit Service 1d0348
       HAVE_ACL_GET_FILE AND
Packit Service 1d0348
       HAVE_ACL_GET_PERMSET AND
Packit Service 1d0348
       HAVE_ACL_GET_QUALIFIER AND
Packit Service 1d0348
       HAVE_ACL_GET_TAG_TYPE AND
Packit Service 1d0348
       HAVE_ACL_INIT AND
Packit Service 1d0348
       HAVE_ACL_SET_FD AND
Packit Service 1d0348
       HAVE_ACL_SET_FILE AND
Packit Service 1d0348
       HAVE_ACL_SET_QUALIFIER AND
Packit Service 1d0348
       HAVE_ACL_SET_TAG_TYPE)
Packit Service 1d0348
         SET(HAVE_POSIX_ACL_FUNCS 1)
Packit Service 1d0348
    ENDIF()
Packit Service 1d0348
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(acl_get_perm HAVE_ACL_GET_PERM)
Packit Service 1d0348
Packit Service 1d0348
    IF(HAVE_POSIX_ACL_FUNCS AND HAVE_ACL_LIBACL_H AND HAVE_LIBACL AND
Packit Service 1d0348
       HAVE_ACL_GET_PERM)
Packit Service 1d0348
      SET(ARCHIVE_ACL_LIBACL TRUE)
Packit Service 1d0348
    ELSE()
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(acl_add_flag_np HAVE_ACL_ADD_FLAG_NP)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(acl_clear_flags_np HAVE_ACL_CLEAR_FLAGS_NP)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(acl_get_brand_np HAVE_ACL_GET_BRAND_NP)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(acl_get_entry_type_np HAVE_ACL_GET_ENTRY_TYPE_NP)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(acl_get_flag_np HAVE_ACL_GET_FLAG_NP)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(acl_get_flagset_np HAVE_ACL_GET_FLAGSET_NP)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(acl_get_fd_np HAVE_ACL_GET_FD_NP)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(acl_get_link_np HAVE_ACL_GET_LINK_NP)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(acl_get_perm_np HAVE_ACL_GET_PERM_NP)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(acl_is_trivial_np HAVE_ACL_IS_TRIVIAL_NP)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(acl_set_entry_type_np HAVE_ACL_SET_ENTRY_TYPE_NP)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(acl_set_fd_np HAVE_ACL_SET_FD_NP)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(acl_set_link_np HAVE_ACL_SET_LINK_NP)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(mbr_gid_to_uuid HAVE_MBR_GID_TO_UUID)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(mbr_uid_to_uuid HAVE_MBR_UID_TO_UUID)
Packit Service 1d0348
      CHECK_FUNCTION_EXISTS(mbr_uuid_to_id HAVE_MBR_UUID_TO_ID)
Packit Service 1d0348
Packit Service 1d0348
      CHECK_C_SOURCE_COMPILES("#include <sys/types.h>
Packit Service 1d0348
#include <sys/acl.h>
Packit Service 1d0348
int main(void) { return ACL_TYPE_EXTENDED; }" HAVE_DECL_ACL_TYPE_EXTENDED)
Packit Service 1d0348
      CHECK_C_SOURCE_COMPILES("#include <sys/types.h>
Packit Service 1d0348
#include <sys/acl.h>
Packit Service 1d0348
int main(void) { return ACL_SYNCHRONIZE; }" HAVE_DECL_ACL_SYNCHRONIZE)
Packit Service 1d0348
      CHECK_SYMBOL_EXISTS(ACL_TYPE_NFS4 "sys/acl.h" HAVE_DECL_ACL_TYPE_NFS4)
Packit Service 1d0348
      CHECK_SYMBOL_EXISTS(ACL_USER "sys/acl.h" HAVE_DECL_ACL_USER)
Packit Service 1d0348
Packit Service 1d0348
      IF(HAVE_POSIX_ACL_FUNCS AND
Packit Service 1d0348
         HAVE_ACL_GET_FD_NP AND
Packit Service 1d0348
         HAVE_ACL_GET_PERM_NP AND
Packit Service 1d0348
         NOT HAVE_ACL_GET_PERM AND
Packit Service 1d0348
         HAVE_ACL_SET_FD_NP)
Packit Service 1d0348
        IF(HAVE_DECL_ACL_USER)
Packit Service 1d0348
          SET(ARCHIVE_ACL_FREEBSD TRUE)
Packit Service 1d0348
          IF(HAVE_DECL_ACL_TYPE_NFS4 AND
Packit Service 1d0348
             HAVE_ACL_ADD_FLAG_NP AND
Packit Service 1d0348
             HAVE_ACL_CLEAR_FLAGS_NP AND
Packit Service 1d0348
             HAVE_ACL_GET_BRAND_NP AND
Packit Service 1d0348
             HAVE_ACL_GET_ENTRY_TYPE_NP AND
Packit Service 1d0348
             HAVE_ACL_GET_FLAGSET_NP AND
Packit Service 1d0348
             HAVE_ACL_SET_ENTRY_TYPE_NP)
Packit Service 1d0348
            SET(ARCHIVE_ACL_FREEBSD_NFS4 TRUE)
Packit Service 1d0348
          ENDIF()
Packit Service 1d0348
        ELSEIF(HAVE_DECL_ACL_TYPE_EXTENDED AND
Packit Service 1d0348
               HAVE_MEMBERSHIP_H AND
Packit Service 1d0348
               HAVE_ACL_ADD_FLAG_NP AND
Packit Service 1d0348
               HAVE_ACL_CLEAR_FLAGS_NP AND
Packit Service 1d0348
               HAVE_ACL_GET_FLAGSET_NP AND
Packit Service 1d0348
               HAVE_ACL_GET_LINK_NP AND
Packit Service 1d0348
               HAVE_ACL_SET_LINK_NP AND
Packit Service 1d0348
               HAVE_MBR_UID_TO_UUID AND
Packit Service 1d0348
               HAVE_MBR_GID_TO_UUID AND
Packit Service 1d0348
               HAVE_MBR_UUID_TO_ID)
Packit Service 1d0348
          SET(ARCHIVE_ACL_DARWIN TRUE)
Packit Service 1d0348
        ENDIF()
Packit Service 1d0348
      ENDIF()
Packit Service 1d0348
    ENDIF()
Packit Service 1d0348
  ENDIF(HAVE_ACL_T AND HAVE_ACL_ENTRY_T AND HAVE_ACL_PERMSET_T AND
Packit Service 1d0348
        HAVE_ACL_TAG_T)
Packit Service 1d0348
Packit Service 1d0348
  # Richacl
Packit Service 1d0348
  CHECK_LIBRARY_EXISTS(richacl "richacl_get_file" "" HAVE_LIBRICHACL)
Packit Service 1d0348
  IF(HAVE_LIBRICHACL)
Packit Service 1d0348
    SET(CMAKE_REQUIRED_LIBRARIES "richacl")
Packit Service 1d0348
    FIND_LIBRARY(RICHACL_LIBRARY NAMES richacl)
Packit Service 1d0348
    LIST(APPEND ADDITIONAL_LIBS ${RICHACL_LIBRARY})
Packit Service 1d0348
  ENDIF(HAVE_LIBRICHACL)
Packit Service 1d0348
Packit Service 1d0348
  CHECK_STRUCT_HAS_MEMBER("struct richace" e_type "sys/richacl.h"
Packit Service 1d0348
    HAVE_STRUCT_RICHACE)
Packit Service 1d0348
  CHECK_STRUCT_HAS_MEMBER("struct richacl" a_flags "sys/richacl.h"
Packit Service 1d0348
    HAVE_STRUCT_RICHACL)
Packit Service 1d0348
Packit Service 1d0348
  IF(HAVE_LIBRICHACL AND HAVE_STRUCT_RICHACL AND HAVE_STRUCT_RICHACE)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(richacl_alloc HAVE_RICHACL_ALLOC)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(richacl_equiv_mode HAVE_RICHACL_EQUIV_MODE)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(richacl_free HAVE_RICHACL_FREE)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(richacl_get_fd HAVE_RICHACL_GET_FD)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(richacl_get_file HAVE_RICHACL_GET_FILE)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(richacl_set_fd HAVE_RICHACL_SET_FD)
Packit Service 1d0348
    CHECK_FUNCTION_EXISTS_GLIBC(richacl_set_file HAVE_RICHACL_SET_FILE)
Packit Service 1d0348
    IF(HAVE_RICHACL_ALLOC AND
Packit Service 1d0348
       HAVE_RICHACL_EQUIV_MODE AND
Packit Service 1d0348
       HAVE_RICHACL_FREE AND
Packit Service 1d0348
       HAVE_RICHACL_GET_FD AND
Packit Service 1d0348
       HAVE_RICHACL_GET_FILE AND
Packit Service 1d0348
       HAVE_RICHACL_SET_FD AND
Packit Service 1d0348
       HAVE_RICHACL_SET_FILE)
Packit Service 1d0348
      SET(ARCHIVE_ACL_LIBRICHACL TRUE)
Packit Service 1d0348
    ENDIF()
Packit Service 1d0348
  ENDIF(HAVE_LIBRICHACL AND HAVE_STRUCT_RICHACL AND HAVE_STRUCT_RICHACE)
Packit Service 1d0348
Packit Service 1d0348
  IF(ARCHIVE_ACL_DARWIN)
Packit Service 1d0348
    MESSAGE(STATUS "ACL support: Darwin (limited NFSv4)")
Packit Service 1d0348
  ELSEIF(ARCHIVE_ACL_FREEBSD_NFS4)
Packit Service 1d0348
    MESSAGE(STATUS "ACL support: FreeBSD (POSIX.1e and NFSv4)")
Packit Service 1d0348
  ELSEIF(ARCHIVE_ACL_FREEBSD)
Packit Service 1d0348
    MESSAGE(STATUS "ACL support: FreeBSD (POSIX.1e)")
Packit Service 1d0348
  ELSEIF(ARCHIVE_ACL_LIBACL OR ARCHIVE_ACL_LIBRICHACL)
Packit Service 1d0348
    IF(ARCHIVE_ACL_LIBACL AND ARCHIVE_ACL_LIBRICHACL)
Packit Service 1d0348
      MESSAGE(STATUS "ACL support: libacl (POSIX.1e) + librichacl (NFSv4)")
Packit Service 1d0348
    ELSEIF(ARCHIVE_ACL_LIBRICHACL)
Packit Service 1d0348
      MESSAGE(STATUS "ACL support: librichacl (NFSv4)")
Packit Service 1d0348
    ELSE()
Packit Service 1d0348
      MESSAGE(STATUS "ACL support: libacl (POSIX.1e)")
Packit Service 1d0348
    ENDIF()
Packit Service 1d0348
  ELSEIF(ARCHIVE_ACL_SUNOS_NFS4)
Packit Service 1d0348
    MESSAGE(STATUS "ACL support: Solaris (POSIX.1e and NFSv4)")
Packit Service 1d0348
  ELSEIF(ARCHIVE_ACL_SUNOS)
Packit Service 1d0348
    MESSAGE(STATUS "ACL support: Solaris (POSIX.1e)")
Packit Service 1d0348
  ELSE()
Packit Service 1d0348
    MESSAGE(STATUS "ACL support: none")
Packit Service 1d0348
  ENDIF()
Packit Service 1d0348
Packit Service 1d0348
ELSE(ENABLE_ACL)
Packit Service 1d0348
  # If someone runs cmake, then disables ACL support, we need
Packit Service 1d0348
  # to forcibly override the cached values for these.
Packit Service 1d0348
  SET(ARCHIVE_ACL_DARWIN FALSE)
Packit Service 1d0348
  SET(ARCHIVE_ACL_FREEBSD FALSE)
Packit Service 1d0348
  SET(ARCHIVE_ACL_FREEBSD_NFS4 FALSE)
Packit Service 1d0348
  SET(ARCHIVE_ACL_LIBACL FALSE)
Packit Service 1d0348
  SET(ARCHIVE_ACL_SUNOS FALSE)
Packit Service 1d0348
  SET(ARCHIVE_ACL_SUNOS_NFS4 FALSE)
Packit Service 1d0348
ENDIF(ENABLE_ACL)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Check MD5/RMD160/SHA support
Packit Service 1d0348
# NOTE: Crypto checks must be run last before generating config.h
Packit Service 1d0348
#
Packit Service 1d0348
CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" LIBC)
Packit Service 1d0348
CHECK_CRYPTO("SHA256;SHA384;SHA512" LIBC2)
Packit Service 1d0348
CHECK_CRYPTO("SHA256;SHA384;SHA512" LIBC3)
Packit Service 1d0348
CHECK_CRYPTO("MD5;SHA1;SHA256;SHA384;SHA512" LIBSYSTEM)
Packit Service 1d0348
CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" NETTLE)
Packit Service 1d0348
CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA384;SHA512" OPENSSL)
Packit Service 1d0348
Packit Service 1d0348
# Libmd has to be probed after OpenSSL.
Packit Service 1d0348
CHECK_CRYPTO("MD5;RMD160;SHA1;SHA256;SHA512" LIBMD)
Packit Service 1d0348
Packit Service 1d0348
CHECK_CRYPTO_WIN("MD5;SHA1;SHA256;SHA384;SHA512")
Packit Service 1d0348
Packit Service 1d0348
# Generate "config.h" from "build/cmake/config.h.in"
Packit Service 1d0348
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/config.h.in
Packit Service 1d0348
	${CMAKE_CURRENT_BINARY_DIR}/config.h)
Packit Service 1d0348
INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
Packit Service 1d0348
ADD_DEFINITIONS(-DHAVE_CONFIG_H)
Packit Service 1d0348
Packit Service 1d0348
# Handle generation of the libarchive.pc file for pkg-config
Packit Service 1d0348
INCLUDE(CreatePkgConfigFile)
Packit Service 1d0348
Packit Service 1d0348
#
Packit Service 1d0348
# Register installation of PDF documents.
Packit Service 1d0348
#
Packit Service 1d0348
IF(WIN32 AND NOT CYGWIN)
Packit Service 1d0348
  #
Packit Service 1d0348
  # On Windows platform, It's better that we install PDF documents
Packit Service 1d0348
  # on one's computer.
Packit Service 1d0348
  # These PDF documents are available in the release package.
Packit Service 1d0348
  #
Packit Service 1d0348
  IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/doc/pdf)
Packit Service 1d0348
    INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc/pdf
Packit Service 1d0348
            DESTINATION share/man
Packit Service 1d0348
            FILES_MATCHING PATTERN "*.pdf"
Packit Service 1d0348
    )
Packit Service 1d0348
  ENDIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/doc/pdf)
Packit Service 1d0348
ENDIF(WIN32 AND NOT CYGWIN)
Packit Service 1d0348
#
Packit Service 1d0348
#
Packit Service 1d0348
#
Packit Service 1d0348
INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/libarchive)
Packit Service 1d0348
#
Packit Service 1d0348
IF(MSVC)
Packit Service 1d0348
  ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
Packit Service 1d0348
ENDIF(MSVC)
Packit Service 1d0348
Packit Service 1d0348
IF(ENABLE_TEST)
Packit Service 1d0348
  ADD_CUSTOM_TARGET(run_all_tests)
Packit Service 1d0348
ENDIF(ENABLE_TEST)
Packit Service 1d0348
Packit Service 1d0348
add_subdirectory(libarchive)
Packit Service 1d0348
add_subdirectory(cat)
Packit Service 1d0348
add_subdirectory(tar)
Packit Service 1d0348
add_subdirectory(cpio)