Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/kicklib/cmake/tools/FindLua5.1.cmake @ 8043

Last change on this file since 8043 was 7951, checked in by rgrieder, 14 years ago

Bugfix for FindLua5.1.cmake

  • Property svn:eol-style set to native
File size: 3.5 KB
RevLine 
[2626]1 #
2 #             ORXONOX - the hottest 3D action shooter ever to exist
3 #                             > www.orxonox.net <
4 #
5 #        This program is free software; you can redistribute it and/or
6 #         modify it under the terms of the GNU General Public License
7 #        as published by the Free Software Foundation; either version 2
8 #            of the License, or (at your option) any later version.
9 #
10 #       This program is distributed in the hope that it will be useful,
11 #        but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #                 GNU General Public License for more details.
14 #
15 #   You should have received a copy of the GNU General Public License along
16 #      with this program; if not, write to the Free Software Foundation,
17 #     Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18 #
19 #
20 #  Author:
21 #    Reto Grieder
22 #  Description:
[7944]23 #    Finds Lua 5.1 on the system.
24 #    Handles REQUIRED and QUIET arguments.
[2626]25 #    When the search was successful, the following variables are set:
[7944]26 #    LUA5.1_INCLUDE_DIR, LUA5.1_LIBRARY, LUA5.1_VERSION, LUA5.1_FOUND
[2626]27 #
28
[2615]29INCLUDE(CompareVersionStrings)
30INCLUDE(FindPackageHandleAdvancedArgs)
31INCLUDE(HandleLibraryTypes)
32
33# Macro that determines Lua version. Should work for versions 2.2 and above (current release: 5.1.4)
34FUNCTION(DETERMINE_LUA_VERSION _file _varname)
35  IF(EXISTS ${_file})
36    FILE(STRINGS ${_file} _file_content REGEX "LUA_VERSION|LUA_RELEASE")
[2624]37  ELSE()
[2615]38    SET(${_varname} "0" PARENT_SCOPE)
39    RETURN()
[2624]40  ENDIF()
[2615]41  STRING(REGEX REPLACE "^.*LUA_RELEASE[ \t]+\"Lua[ \t]+([.0-9]+)\".*$" "\\1" ${_varname} "${_file_content}")
42  IF(${_varname} STREQUAL "${_file_content}")
43    # At most version 5.1.0
44    STRING(REGEX REPLACE "^.*LUA_VERSION[ \t]+\"Lua[ \t]+([.0-9]+)\".*$" "\\1" ${_varname} "${_file_content}")
45    IF(${_varname} STREQUAL "${_file_content}")
46      MESSAGE(FATAL_ERROR "Could not determine Lua version which means this script has a bug")
[2624]47    ENDIF()
[2615]48    IF(${_varname} MATCHES "^[0-9]+\\.[0-9]+$")
49      SET(${_varname} "${${_varname}}.0") # E.g. "3.2" is "3.2.0" actually
[2624]50    ENDIF()
51  ENDIF()
[2615]52  SET(${_varname} "${${_varname}}" PARENT_SCOPE)
53ENDFUNCTION(DETERMINE_LUA_VERSION)
54
55
[7944]56# Find include path
57FIND_PATH(LUA5.1_INCLUDE_DIR lua.h
[7951]58  PATHS $ENV{LUA5.1_DIR}
[2677]59  PATH_SUFFIXES include/lua51 include/lua5.1 include/lua include
[2615]60)
[7944]61
62# Check whether we really found Lua version 5.1
63IF(LUA5.1_INCLUDE_DIR)
64  DETERMINE_LUA_VERSION(${LUA5.1_INCLUDE_DIR}/lua.h LUA5.1_VERSION)
65  COMPARE_VERSION_STRINGS("${LUA5.1_VERSION}" "5.1" _version_compare TRUE)
[2615]66  IF(NOT _version_compare EQUAL 0)
[7944]67    # Wrong version
[7951]68    MESSAGE(SEND_ERROR "Version of Lua header found is not 5.1")
[7944]69    SET(LUA5.1_INCLUDE_DIR "LUA5.1_INCLUDE_DIR-NOTFOUND" CACHE PATH "" FORCE)
[2615]70  ENDIF(NOT _version_compare EQUAL 0)
[7944]71ENDIF(LUA5.1_INCLUDE_DIR)
[2615]72
[7944]73# Find library
74FIND_LIBRARY(LUA5.1_LIBRARY_OPTIMIZED
75  NAMES lua51 lua5.1 lua
76  PATHS $ENV{LUA5.1_DIR} $ENV{LUA_DIR}
77  PATH_SUFFIXES lib64 lib
[2615]78)
[7944]79FIND_LIBRARY(LUA5.1_LIBRARY_DEBUG
80  NAMES lua51d lua51_d lua5.1d lua5.1_d
81        lua51D lua51_D lua5.1D lua5.1_D
82        luad lua_d luad lua_D
83  PATHS $ENV{LUA5.1_DIR} $ENV{LUA_DIR}
84  PATH_SUFFIXES lib64 lib
85)
[2615]86
[7944]87# Handle the REQUIRED argument and set LUA5.1_FOUND
[7951]88FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua5.1 DEFAULT_MSG
89  LUA5.1_LIBRARY_OPTIMIZED
[7944]90  LUA5.1_INCLUDE_DIR
[2615]91)
92
[7944]93# Collect optimized and debug libraries
94HANDLE_LIBRARY_TYPES(LUA5.1)
[2615]95
96MARK_AS_ADVANCED(
[7944]97  LUA5.1_INCLUDE_DIR
98  LUA5.1_LIBRARY_OPTIMIZED
99  LUA5.1_LIBRARY_DEBUG
[2615]100)
Note: See TracBrowser for help on using the repository browser.