summaryrefslogtreecommitdiff
path: root/cmake/FindLua.cmake
diff options
context:
space:
mode:
authorAlexey Melnichuk <mimir@newmail.ru>2014-02-10 13:42:44 +0400
committerAlexey Melnichuk <mimir@newmail.ru>2014-02-10 13:42:44 +0400
commitb3f8cfa55284e3e2db588550ae8f516309f10332 (patch)
treef059852d6173ae4a5bd7809ebc7dc152065aa7f9 /cmake/FindLua.cmake
parent0ef254d0d5ea2619a295fe1c3832c886f70e5140 (diff)
downloadlua-llthreads2-b3f8cfa55284e3e2db588550ae8f516309f10332.tar.gz
lua-llthreads2-b3f8cfa55284e3e2db588550ae8f516309f10332.tar.bz2
lua-llthreads2-b3f8cfa55284e3e2db588550ae8f516309f10332.zip
Add. LuaDist files.
Diffstat (limited to 'cmake/FindLua.cmake')
-rw-r--r--cmake/FindLua.cmake127
1 files changed, 127 insertions, 0 deletions
diff --git a/cmake/FindLua.cmake b/cmake/FindLua.cmake
new file mode 100644
index 0000000..6991b4a
--- /dev/null
+++ b/cmake/FindLua.cmake
@@ -0,0 +1,127 @@
1# Locate Lua library
2# This module defines
3# LUA_EXECUTABLE, if found
4# LUA_FOUND, if false, do not try to link to Lua
5# LUA_LIBRARIES
6# LUA_INCLUDE_DIR, where to find lua.h
7# LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8)
8#
9# Note that the expected include convention is
10# #include "lua.h"
11# and not
12# #include <lua/lua.h>
13# This is because, the lua location is not standardized and may exist
14# in locations other than lua/
15
16#=============================================================================
17# Copyright 2007-2009 Kitware, Inc.
18# Modified to support Lua 5.2 by LuaDist 2012
19#
20# Distributed under the OSI-approved BSD License (the "License");
21# see accompanying file Copyright.txt for details.
22#
23# This software is distributed WITHOUT ANY WARRANTY; without even the
24# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
25# See the License for more information.
26#=============================================================================
27# (To distribute this file outside of CMake, substitute the full
28# License text for the above reference.)
29#
30# The required version of Lua can be specified using the
31# standard syntax, e.g. FIND_PACKAGE(Lua 5.1)
32# Otherwise the module will search for any available Lua implementation
33
34# Always search for non-versioned lua first (recommended)
35SET(_POSSIBLE_LUA_INCLUDE include include/lua)
36SET(_POSSIBLE_LUA_EXECUTABLE lua)
37SET(_POSSIBLE_LUA_LIBRARY lua)
38
39# Determine possible naming suffixes (there is no standard for this)
40IF(Lua_FIND_VERSION_MAJOR AND Lua_FIND_VERSION_MINOR)
41 SET(_POSSIBLE_SUFFIXES "${Lua_FIND_VERSION_MAJOR}${Lua_FIND_VERSION_MINOR}" "${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR}" "-${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR}")
42ELSE(Lua_FIND_VERSION_MAJOR AND Lua_FIND_VERSION_MINOR)
43 SET(_POSSIBLE_SUFFIXES "52" "5.2" "-5.2" "51" "5.1" "-5.1")
44ENDIF(Lua_FIND_VERSION_MAJOR AND Lua_FIND_VERSION_MINOR)
45
46# Set up possible search names and locations
47FOREACH(_SUFFIX ${_POSSIBLE_SUFFIXES})
48 LIST(APPEND _POSSIBLE_LUA_INCLUDE "include/lua${_SUFFIX}")
49 LIST(APPEND _POSSIBLE_LUA_EXECUTABLE "lua${_SUFFIX}")
50 LIST(APPEND _POSSIBLE_LUA_LIBRARY "lua${_SUFFIX}")
51ENDFOREACH(_SUFFIX)
52
53# Find the lua executable
54FIND_PROGRAM(LUA_EXECUTABLE
55 NAMES ${_POSSIBLE_LUA_EXECUTABLE}
56)
57
58# Find the lua header
59FIND_PATH(LUA_INCLUDE_DIR lua.h
60 HINTS
61 $ENV{LUA_DIR}
62 PATH_SUFFIXES ${_POSSIBLE_LUA_INCLUDE}
63 PATHS
64 ~/Library/Frameworks
65 /Library/Frameworks
66 /usr/local
67 /usr
68 /sw # Fink
69 /opt/local # DarwinPorts
70 /opt/csw # Blastwave
71 /opt
72)
73
74# Find the lua library
75FIND_LIBRARY(LUA_LIBRARY
76 NAMES ${_POSSIBLE_LUA_LIBRARY}
77 HINTS
78 $ENV{LUA_DIR}
79 PATH_SUFFIXES lib64 lib
80 PATHS
81 ~/Library/Frameworks
82 /Library/Frameworks
83 /usr/local
84 /usr
85 /sw
86 /opt/local
87 /opt/csw
88 /opt
89)
90
91IF(LUA_LIBRARY)
92 # include the math library for Unix
93 IF(UNIX AND NOT APPLE)
94 FIND_LIBRARY(LUA_MATH_LIBRARY m)
95 SET( LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}" CACHE STRING "Lua Libraries")
96 # For Windows and Mac, don't need to explicitly include the math library
97 ELSE(UNIX AND NOT APPLE)
98 SET( LUA_LIBRARIES "${LUA_LIBRARY}" CACHE STRING "Lua Libraries")
99 ENDIF(UNIX AND NOT APPLE)
100ENDIF(LUA_LIBRARY)
101
102# Determine Lua version
103IF(LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/lua.h")
104 FILE(STRINGS "${LUA_INCLUDE_DIR}/lua.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua .+\"")
105
106 STRING(REGEX REPLACE "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([^\"]+)\".*" "\\1" LUA_VERSION_STRING "${lua_version_str}")
107 UNSET(lua_version_str)
108ENDIF()
109
110# Lua 5.2
111IF(NOT LUA_VERSION_STRING)
112 FILE(STRINGS "${LUA_INCLUDE_DIR}/lua.h" lua_version_str REGEX "^#define LUA_VERSION_[A-Z]+[ \t]+\"[0-9]+\"")
113 STRING(REGEX REPLACE ".*#define LUA_VERSION_MAJOR[ \t]+\"([0-9]+)\".*" "\\1" LUA_VERSION_MAJOR ${lua_version_str})
114 STRING(REGEX REPLACE ".*#define LUA_VERSION_MINOR[ \t]+\"([0-9]+)\".*" "\\1" LUA_VERSION_MINOR ${lua_version_str})
115 STRING(REGEX REPLACE ".*#define LUA_VERSION_RELEASE[ \t]+\"([0-9]+)\".*" "\\1" LUA_VERSION_RELEASE ${lua_version_str})
116 SET(LUA_VERSION_STRING ${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}.${LUA_VERSION_RELEASE})
117ENDIF()
118
119INCLUDE(FindPackageHandleStandardArgs)
120# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE if
121# all listed variables are TRUE
122FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua
123 REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR
124 VERSION_VAR LUA_VERSION_STRING)
125
126MARK_AS_ADVANCED(LUA_INCLUDE_DIR LUA_LIBRARIES LUA_LIBRARY LUA_MATH_LIBRARY LUA_EXECUTABLE)
127