summaryrefslogtreecommitdiff
path: root/cmake/FindLZO.cmake
blob: dacd9387d9deb780a39826de70471c4e76b61b6c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#[=======================================================================[.rst:
FindLZO
-------

Finds the LZO library.

Result Variables
^^^^^^^^^^^^^^^^

This will define the following variables:

``LZO_FOUND``
  True if the system has the LZO library.
``LZO_INCLUDE_DIRS``
  Include directories needed to use LZO.
``LZO_LIBRARIES``
  Libraries needed to link to LZO.
``LZO_VERSION``
  The version of the LZO library which was found.

Cache Variables
^^^^^^^^^^^^^^^

The following cache variables may also be set:

``LZO_INCLUDE_DIR``
  The directory containing ``lzo/lzo1x.h``.
``LZO_LIBRARY``
  The path to the LZO library.

#]=======================================================================]

find_package(PkgConfig QUIET)
pkg_check_modules(PC_LZO QUIET lzo2)

find_path(LZO_INCLUDE_DIR
    NAMES lzo/lzo1x.h
    PATHS ${PC_LZO_INCLUDE_DIRS}
)

find_library(LZO_LIBRARY
    NAMES lzo2
    PATHS ${PC_LZO_LIBRARY_DIRS}
)

# With vcpkg, the library path should contain both 'debug' and 'optimized'
# entries (see target_link_libraries() documentation for more information)
#
# NOTE: we only patch up when using vcpkg; the same issue might happen
# when not using vcpkg, but this is non-trivial to fix, as we have no idea
# what the paths are. With vcpkg we do. And we only official support vcpkg
# with Windows.
#
# NOTE: this is based on the assumption that the debug file has the same
# name as the optimized file. This is not always the case, but so far
# experiences has shown that in those case vcpkg CMake files do the right
# thing.
if(VCPKG_TOOLCHAIN AND LZO_LIBRARY)
    if(LZO_LIBRARY MATCHES "/debug/")
        set(LZO_LIBRARY_DEBUG ${LZO_LIBRARY})
        string(REPLACE "/debug/lib/" "/lib/" LZO_LIBRARY_RELEASE ${LZO_LIBRARY})
    else()
        set(LZO_LIBRARY_RELEASE ${LZO_LIBRARY})
        string(REPLACE "/lib/" "/debug/lib/" LZO_LIBRARY_DEBUG ${LZO_LIBRARY})
    endif()
    include(SelectLibraryConfigurations)
    select_library_configurations(LZO)
endif()

set(LZO_VERSION ${PC_LZO_VERSION})

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LZO
    FOUND_VAR LZO_FOUND
    REQUIRED_VARS
        LZO_LIBRARY
        LZO_INCLUDE_DIR
    VERSION_VAR LZO_VERSION
)

if(LZO_FOUND)
    set(LZO_LIBRARIES ${LZO_LIBRARY})
    set(LZO_INCLUDE_DIRS ${LZO_INCLUDE_DIR})
endif()

mark_as_advanced(
    LZO_INCLUDE_DIR
    LZO_LIBRARY
)