--- cmake/Modules/FindLua.cmake | 216 ++++++++++++++++++++++++++++++++------------ 1 file changed, 161 insertions(+), 55 deletions(-) Index: luv-1.51.0-1/cmake/Modules/FindLua.cmake =================================================================== --- luv-1.51.0-1.orig/cmake/Modules/FindLua.cmake 2026-02-26 17:13:01.531141499 +0100 +++ luv-1.51.0-1/cmake/Modules/FindLua.cmake 2026-02-26 17:56:37.051497829 +0100 @@ -1,49 +1,145 @@ -# This is a copy of CMake's builtin FindLua to get support for Lua 5.4 -# on earlier CMake versions. - # Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. +# file LICENSE.rst or https://cmake.org/licensing for details. #[=======================================================================[.rst: FindLua ------- +Finds the Lua library: +.. code-block:: cmake -Locate Lua library. + find_package(Lua [] [...]) -This module defines:: +Lua is a embeddable scripting language. -:: +.. versionadded:: 3.18 + Support for Lua 5.4. - LUA_FOUND - if false, do not try to link to Lua - LUA_LIBRARIES - both lua and lualib - LUA_INCLUDE_DIR - where to find lua.h - LUA_VERSION_STRING - the version of Lua found - LUA_VERSION_MAJOR - the major version of Lua - LUA_VERSION_MINOR - the minor version of Lua - LUA_VERSION_PATCH - the patch version of Lua +.. versionadded:: 4.3 + Support for Lua 5.5. +When working with Lua, its library headers are intended to be included in +project source code as: +.. code-block:: c -Note that the expected include convention is + #include -:: +and not: - #include "lua.h" +.. code-block:: c -and not + #include -:: +This is because, the location of Lua headers may differ across platforms and may +exist in locations other than ``lua/``. - #include +Result Variables +^^^^^^^^^^^^^^^^ + +This module defines the following variables: + +``Lua_FOUND`` + .. versionadded:: 3.3 + + Boolean indicating whether (the requested version of) Lua was found. + +``Lua_VERSION`` + .. versionadded:: 4.2 + + The version of Lua found. + +``Lua_VERSION_MAJOR`` + .. versionadded:: 4.2 + + The major version of Lua found. + +``Lua_VERSION_MINOR`` + .. versionadded:: 4.2 + + The minor version of Lua found. + +``Lua_VERSION_PATCH`` + .. versionadded:: 4.2 + + The patch version of Lua found. + +``LUA_LIBRARIES`` + Libraries needed to link against to use Lua. This list includes both ``lua`` + and ``lualib`` libraries. + +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. + +Deprecated Variables +^^^^^^^^^^^^^^^^^^^^ + +The following variables are provided for backward compatibility: -This is because, the lua location is not standardized and may exist in -locations other than lua/ +``LUA_FOUND`` + .. deprecated:: 4.2 + Use ``Lua_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. + +``LUA_VERSION_MAJOR`` + .. deprecated:: 4.2 + Superseded by the ``Lua_VERSION_MAJOR``. + + The major version of Lua found. + +``LUA_VERSION_MINOR`` + .. deprecated:: 4.2 + Superseded by the ``Lua_VERSION_MINOR``. + + The minor version of Lua found. + +``LUA_VERSION_PATCH`` + .. deprecated:: 4.2 + Superseded by the ``Lua_VERSION_PATCH``. + + The patch version of Lua found. + +Examples +^^^^^^^^ + +Finding the Lua library and creating an interface :ref:`imported target +` that encapsulates its usage requirements for linking to a +project target: + +.. code-block:: cmake + + find_package(Lua) + + if(Lua_FOUND AND NOT TARGET Lua::Lua) + add_library(Lua::Lua INTERFACE IMPORTED) + set_target_properties( + Lua::Lua + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${LUA_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES "${LUA_LIBRARIES}" + ) + endif() + + target_link_libraries(project_target PRIVATE Lua::Lua) #]=======================================================================] cmake_policy(PUSH) # Policies apply to functions at definition-time -cmake_policy(SET CMP0012 NEW) # For while(TRUE) +cmake_policy(SET CMP0140 NEW) +cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_ unset(_lua_include_subdirs) unset(_lua_library_names) @@ -51,7 +147,7 @@ # this is a function only to have all the variables inside go away automatically function(_lua_get_versions) - set(LUA_VERSIONS5 5.4 5.3 5.2 5.1 5.0) + set(LUA_VERSIONS5 5.5 5.4 5.3 5.2 5.1 5.0) if (Lua_FIND_VERSION_EXACT) if (Lua_FIND_VERSION_COUNT GREATER 1) @@ -105,10 +201,10 @@ endforeach () set(_lua_include_subdirs "${_lua_include_subdirs}" PARENT_SCOPE) -endfunction(_lua_set_version_vars) +endfunction() function(_lua_get_header_version) - unset(LUA_VERSION_STRING PARENT_SCOPE) + unset(Lua_VERSION PARENT_SCOPE) set(_hdr_file "${LUA_INCLUDE_DIR}/lua.h") if (NOT EXISTS "${_hdr_file}") @@ -121,30 +217,42 @@ file(STRINGS "${_hdr_file}" lua_version_strings REGEX "^#define[ \t]+LUA_(RELEASE[ \t]+\"Lua [0-9]|VERSION([ \t]+\"Lua [0-9]|_[MR])).*") - string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MAJOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MAJOR ";${lua_version_strings};") - if (LUA_VERSION_MAJOR MATCHES "^[0-9]+$") - string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MINOR[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_MINOR ";${lua_version_strings};") - string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_RELEASE[ \t]+\"([0-9])\"[ \t]*;.*" "\\1" LUA_VERSION_PATCH ";${lua_version_strings};") - set(LUA_VERSION_STRING "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}.${LUA_VERSION_PATCH}") + string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MAJOR(_N)?[ \t]+\"?([0-9])\"?[ \t]*;.*" "\\2" Lua_VERSION_MAJOR ";${lua_version_strings};") + + if (Lua_VERSION_MAJOR MATCHES "^[0-9]+$") + string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_MINOR(_N)?[ \t]+\"?([0-9])\"?[ \t]*;.*" "\\2" Lua_VERSION_MINOR ";${lua_version_strings};") + string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION_RELEASE(_N)?[ \t]+\"?([0-9])\"?[ \t]*;.*" "\\2" Lua_VERSION_PATCH ";${lua_version_strings};") + set(Lua_VERSION "${Lua_VERSION_MAJOR}.${Lua_VERSION_MINOR}.${Lua_VERSION_PATCH}") else () - string(REGEX REPLACE ".*;#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};") - if (NOT LUA_VERSION_STRING MATCHES "^[0-9.]+$") - string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" LUA_VERSION_STRING ";${lua_version_strings};") + string(REGEX REPLACE ".*;#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" Lua_VERSION ";${lua_version_strings};") + if (NOT Lua_VERSION MATCHES "^[0-9.]+$") + string(REGEX REPLACE ".*;#define[ \t]+LUA_VERSION[ \t]+\"Lua ([0-9.]+)\"[ \t]*;.*" "\\1" Lua_VERSION ";${lua_version_strings};") endif () - string(REGEX REPLACE "^([0-9]+)\\.[0-9.]*$" "\\1" LUA_VERSION_MAJOR "${LUA_VERSION_STRING}") - string(REGEX REPLACE "^[0-9]+\\.([0-9]+)[0-9.]*$" "\\1" LUA_VERSION_MINOR "${LUA_VERSION_STRING}") - string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]).*" "\\1" LUA_VERSION_PATCH "${LUA_VERSION_STRING}") + string(REGEX REPLACE "^([0-9]+)\\.[0-9.]*$" "\\1" Lua_VERSION_MAJOR "${Lua_VERSION}") + string(REGEX REPLACE "^[0-9]+\\.([0-9]+)[0-9.]*$" "\\1" Lua_VERSION_MINOR "${Lua_VERSION}") + string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]).*" "\\1" Lua_VERSION_PATCH "${Lua_VERSION}") endif () foreach (ver IN LISTS _lua_append_versions) - if (ver STREQUAL "${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}") - set(LUA_VERSION_MAJOR ${LUA_VERSION_MAJOR} PARENT_SCOPE) - set(LUA_VERSION_MINOR ${LUA_VERSION_MINOR} PARENT_SCOPE) - set(LUA_VERSION_PATCH ${LUA_VERSION_PATCH} PARENT_SCOPE) - set(LUA_VERSION_STRING ${LUA_VERSION_STRING} PARENT_SCOPE) - return() + if (ver STREQUAL "${Lua_VERSION_MAJOR}.${Lua_VERSION_MINOR}") + set(LUA_VERSION_STRING "${Lua_VERSION}") + set(LUA_VERSION_MAJOR "${Lua_VERSION_MAJOR}") + set(LUA_VERSION_MINOR "${Lua_VERSION_MINOR}") + set(LUA_VERSION_PATCH "${Lua_VERSION_PATCH}") + + return( + PROPAGATE + Lua_VERSION + Lua_VERSION_MAJOR + Lua_VERSION_MINOR + Lua_VERSION_PATCH + LUA_VERSION_STRING + LUA_VERSION_MAJOR + LUA_VERSION_MINOR + LUA_VERSION_PATCH + ) endif () endforeach () -endfunction(_lua_get_header_version) +endfunction() function(_lua_find_header) _lua_set_version_vars() @@ -170,9 +278,9 @@ endif() _lua_get_header_version() # Found accepted version -> Ok - if (LUA_VERSION_STRING) + if (Lua_VERSION) if (LUA_Debug) - message(STATUS "Found suitable version ${LUA_VERSION_STRING} in ${LUA_INCLUDE_DIR}/lua.h") + message(STATUS "Found suitable version ${Lua_VERSION} in ${LUA_INCLUDE_DIR}/lua.h") endif() return() endif() @@ -192,12 +300,12 @@ _lua_get_header_version() unset(_lua_append_versions) -if (LUA_VERSION_STRING) +if (Lua_VERSION) set(_lua_library_names - lua${LUA_VERSION_MAJOR}${LUA_VERSION_MINOR} - lua${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR} - lua-${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR} - lua.${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR} + lua${Lua_VERSION_MAJOR}${Lua_VERSION_MINOR} + lua${Lua_VERSION_MAJOR}.${Lua_VERSION_MINOR} + lua-${Lua_VERSION_MAJOR}.${Lua_VERSION_MINOR} + lua.${Lua_VERSION_MAJOR}.${Lua_VERSION_MINOR} ) endif () @@ -230,11 +338,9 @@ endif () include(FindPackageHandleStandardArgs) -# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE if -# all listed variables are TRUE -FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua +find_package_handle_standard_args(Lua REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR - VERSION_VAR LUA_VERSION_STRING) + VERSION_VAR Lua_VERSION) mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARY)