OpenTTD-patches/cmake/FindLZO.cmake
Patric Stout 56d54cf60e Add: introduce CMake for project management
CMake works on all our supported platforms, like MSVC, Mingw, GCC,
Clang, and many more. It allows for a single way of doing things,
so no longer we need shell scripts and vbs scripts to work on all
our supported platforms.

Additionally, CMake allows to generate project files for like MSVC,
KDevelop, etc.

This heavily reduces the lines of code we need to support multiple
platforms from a project perspective.

Addtiionally, this heavily improves our detection of libraries, etc.
2020-06-05 19:36:05 +02:00

90 lines
2.3 KiB
CMake

#[=======================================================================[.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
)