# Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file LICENSE.rst or https://cmake.org/licensing for details. #[=======================================================================[.rst: FindLua51 --------- .. note:: This module is specifically for Lua version branch 5.1, which is obsolete and not maintained anymore. In new code use the latest supported Lua version and the version-agnostic module :module:`FindLua` instead. Finds the Lua library: .. code-block:: cmake find_package(Lua51 [] [...]) Lua is a embeddable scripting language. When working with Lua, its library headers are intended to be included in project source code as: .. code-block:: c #include and not: .. code-block:: c #include This is because, the location of Lua headers may differ across platforms and may exist in locations other than ``lua/``. Result Variables ^^^^^^^^^^^^^^^^ This module defines the following variables: ``Lua51_FOUND`` .. versionadded:: 3.3 Boolean indicating whether (the requested version of) Lua was found. ``Lua_VERSION`` .. versionadded:: 4.2 The version of Lua found. Cache Variables ^^^^^^^^^^^^^^^ The following cache variables may also be set: ``LUA_INCLUDE_DIR`` The directory containing the Lua header files, such as ``lua.h``, ``lualib.h``, and ``lauxlib.h``, needed to use Lua. ``LUA_LIBRARIES`` Libraries needed to link against to use Lua. Deprecated Variables ^^^^^^^^^^^^^^^^^^^^ The following variables are provided for backward compatibility: ``LUA51_FOUND`` .. deprecated:: 4.2 Use ``Lua51_FOUND``, which has the same value. Boolean indicating whether (the requested version of) Lua was found. ``LUA_VERSION_STRING`` .. deprecated:: 4.2 Superseded by the ``Lua_VERSION``. The version of Lua found. Examples ^^^^^^^^ Finding the Lua 5.1 library and creating an interface :ref:`imported target ` that encapsulates its usage requirements for linking to a project target: .. code-block:: cmake find_package(Lua51) if(Lua51_FOUND AND NOT TARGET Lua51::Lua51) add_library(Lua51::Lua51 INTERFACE IMPORTED) set_target_properties( Lua51::Lua51 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LUA_INCLUDE_DIR}" INTERFACE_LINK_LIBRARIES "${LUA_LIBRARIES}" ) endif() target_link_libraries(project_target PRIVATE Lua51::Lua51) See Also ^^^^^^^^ * The :module:`FindLua` module to find Lua in version-agnostic way. #]=======================================================================] cmake_policy(PUSH) cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_ find_path(LUA_INCLUDE_DIR lua.h HINTS ENV LUA_DIR PATH_SUFFIXES lua51 lua5.1 lua-5.1 lua PATHS ~/Library/Frameworks /Library/Frameworks /opt ) find_library(LUA_LIBRARY NAMES lua51 lua5.1 lua-5.1 lua HINTS ENV LUA_DIR PATH_SUFFIXES lib PATHS ~/Library/Frameworks /Library/Frameworks /opt ) if(LUA_LIBRARY) # include the math library for Unix if(UNIX AND NOT APPLE AND NOT BEOS AND NOT HAIKU) find_library(LUA_MATH_LIBRARY m) set( LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}" CACHE STRING "Lua Libraries") # For Windows and Mac, don't need to explicitly include the math library else() set( LUA_LIBRARIES "${LUA_LIBRARY}" CACHE STRING "Lua Libraries") endif() endif() if(LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/lua.h") file(STRINGS "${LUA_INCLUDE_DIR}/lua.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua .+\"") string(REGEX REPLACE "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([^\"]+)\".*" "\\1" Lua_VERSION "${lua_version_str}") set(LUA_VERSION_STRING "${Lua_VERSION}") unset(lua_version_str) endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Lua51 REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR VERSION_VAR Lua_VERSION) mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARIES LUA_LIBRARY LUA_MATH_LIBRARY) cmake_policy(POP)