103 lines
3.6 KiB
CMake
103 lines
3.6 KiB
CMake
# based on FindZLIB.cmake
|
|
|
|
set(_UNRAR_SEARCHES)
|
|
|
|
# Search UNRAR_ROOT first if it is set.
|
|
if(UNRAR_ROOT)
|
|
set(_UNRAR_SEARCH_ROOT PATHS ${UNRAR_ROOT} NO_DEFAULT_PATH)
|
|
list(APPEND _UNRAR_SEARCHES _UNRAR_SEARCH_ROOT)
|
|
endif()
|
|
|
|
# Normal search.
|
|
set(_UNRAR_x86 "(x86)")
|
|
set(_UNRAR_SEARCH_NORMAL
|
|
PATHS "$ENV{ProgramFiles}/unrar"
|
|
"$ENV{ProgramFiles${_UNRAR_x86}}/unrar")
|
|
unset(_UNRAR_x86)
|
|
list(APPEND _UNRAR_SEARCHES _UNRAR_SEARCH_NORMAL)
|
|
|
|
set(UNRAR_NAMES unrar)
|
|
set(UNRAR_NAMES_DEBUG unrar)
|
|
|
|
# Try each search configuration.
|
|
foreach(search ${_UNRAR_SEARCHES})
|
|
find_path(UNRAR_INCLUDE_DIR_UNRAR_H NAMES unrar.h ${${search}} PATH_SUFFIXES include unrar)
|
|
endforeach()
|
|
if(UNRAR_INCLUDE_DIR_UNRAR_H)
|
|
set(RAR_HDR_UNRAR_H 1)
|
|
set(UNRAR_INCLUDE_DIR ${UNRAR_INCLUDE_DIR_UNRAR_H})
|
|
else()
|
|
foreach(search ${_UNRAR_SEARCHES})
|
|
find_path(UNRAR_INCLUDE_DIR_DLL_HPP NAMES dll.hpp ${${search}} PATH_SUFFIXES include unrar)
|
|
endforeach()
|
|
if(UNRAR_INCLUDE_DIR_DLL_HPP)
|
|
set(RAR_HDR_DLL_HPP 1)
|
|
set(UNRAR_INCLUDE_DIR ${UNRAR_INCLUDE_DIR_DLL_HPP})
|
|
endif()
|
|
endif()
|
|
|
|
# Allow UNRAR_LIBRARY to be set manually, as the location of the unrar library
|
|
if(NOT UNRAR_LIBRARY)
|
|
foreach(search ${_UNRAR_SEARCHES})
|
|
find_library(UNRAR_LIBRARY_RELEASE NAMES ${UNRAR_NAMES} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
|
find_library(UNRAR_LIBRARY_DEBUG NAMES ${UNRAR_NAMES_DEBUG} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
|
endforeach()
|
|
|
|
include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake)
|
|
select_library_configurations(UNRAR)
|
|
endif()
|
|
|
|
unset(UNRAR_NAMES)
|
|
unset(UNRAR_NAMES_DEBUG)
|
|
|
|
mark_as_advanced(UNRAR_INCLUDE_DIR UNRAR_INCLUDE_DIR_UNRAR_H UNRAR_INCLUDE_DIR_DLL_HPP)
|
|
|
|
if(UNRAR_INCLUDE_DIR AND EXISTS "${UNRAR_INCLUDE_DIR}/version.hpp")
|
|
file(STRINGS "${UNRAR_INCLUDE_DIR}/version.hpp" UNRAR_H REGEX "^#define RARVER_.*$")
|
|
|
|
string(REGEX REPLACE "^.*RARVER_MAJOR *([0-9]+).*$" "\\1" UNRAR_VERSION_MAJOR "${UNRAR_H}")
|
|
string(REGEX REPLACE "^.*RARVER_MINOR *([0-9]+).*$" "\\1" UNRAR_VERSION_MINOR "${UNRAR_H}")
|
|
string(REGEX REPLACE "^.*RARVER_BETA *([0-9]+).*$" "\\1" UNRAR_VERSION_PATCH "${UNRAR_H}")
|
|
set(UNRAR_VERSION_STRING "${UNRAR_VERSION_MAJOR}.${UNRAR_VERSION_MINOR}.${UNRAR_VERSION_PATCH}")
|
|
|
|
set(UNRAR_MAJOR_VERSION "${UNRAR_VERSION_MAJOR}")
|
|
set(UNRAR_MINOR_VERSION "${UNRAR_VERSION_MINOR}")
|
|
set(UNRAR_PATCH_VERSION "${UNRAR_VERSION_PATCH}")
|
|
endif()
|
|
|
|
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
|
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(UNRAR REQUIRED_VARS UNRAR_LIBRARY UNRAR_INCLUDE_DIR
|
|
VERSION_VAR UNRAR_VERSION_STRING)
|
|
|
|
if(UNRAR_FOUND)
|
|
set(UNRAR_INCLUDE_DIRS ${UNRAR_INCLUDE_DIR})
|
|
|
|
if(NOT UNRAR_LIBRARIES)
|
|
set(UNRAR_LIBRARIES ${UNRAR_LIBRARY})
|
|
endif()
|
|
|
|
if(NOT TARGET UNRAR::UNRAR)
|
|
add_library(UNRAR::UNRAR UNKNOWN IMPORTED)
|
|
set_target_properties(UNRAR::UNRAR PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${UNRAR_INCLUDE_DIRS}")
|
|
|
|
if(UNRAR_LIBRARY_RELEASE)
|
|
set_property(TARGET UNRAR::UNRAR APPEND PROPERTY
|
|
IMPORTED_CONFIGURATIONS RELEASE)
|
|
set_target_properties(UNRAR::UNRAR PROPERTIES
|
|
IMPORTED_LOCATION_RELEASE "${UNRAR_LIBRARY_RELEASE}")
|
|
endif()
|
|
|
|
if(UNRAR_LIBRARY_DEBUG)
|
|
set_property(TARGET UNRAR::UNRAR APPEND PROPERTY
|
|
IMPORTED_CONFIGURATIONS DEBUG)
|
|
set_target_properties(UNRAR::UNRAR PROPERTIES
|
|
IMPORTED_LOCATION_DEBUG "${UNRAR_LIBRARY_DEBUG}")
|
|
endif()
|
|
|
|
if(NOT UNRAR_LIBRARY_RELEASE AND NOT UNRAR_LIBRARY_DEBUG)
|
|
set_property(TARGET UNRAR::UNRAR APPEND PROPERTY
|
|
IMPORTED_LOCATION "${UNRAR_LIBRARY}")
|
|
endif()
|
|
endif()
|
|
endif()
|