aboutsummaryrefslogtreecommitdiff
path: root/cmake/LuaHelpers.cmake
diff options
context:
space:
mode:
authorJohn Szakmeister <john@szakmeister.net>2014-07-11 19:29:26 -0400
committerJohn Szakmeister <john@szakmeister.net>2014-07-11 19:29:26 -0400
commit77db0b2bba97603e59614bb95d6eab76e42f9288 (patch)
tree63401fd0e0b5ca766695366a32e05ab956ae1475 /cmake/LuaHelpers.cmake
parente47968537cfc958b991ff10c6be1dcda65cb95f0 (diff)
parent5d44f89a8cdd41531177f041fb73f106c03686d8 (diff)
downloadrneovim-77db0b2bba97603e59614bb95d6eab76e42f9288.tar.gz
rneovim-77db0b2bba97603e59614bb95d6eab76e42f9288.tar.bz2
rneovim-77db0b2bba97603e59614bb95d6eab76e42f9288.zip
Merge #932 'Check lua dependencies for all lua interpreters'
Diffstat (limited to 'cmake/LuaHelpers.cmake')
-rw-r--r--cmake/LuaHelpers.cmake38
1 files changed, 38 insertions, 0 deletions
diff --git a/cmake/LuaHelpers.cmake b/cmake/LuaHelpers.cmake
new file mode 100644
index 0000000000..b1e67e0ca7
--- /dev/null
+++ b/cmake/LuaHelpers.cmake
@@ -0,0 +1,38 @@
+#
+# Functions to help checking for a Lua interpreter
+#
+
+# Check if a module is available in Lua
+function(check_lua_module LUA_PRG_PATH MODULE RESULT_VAR)
+ execute_process(COMMAND ${LUA_PRG_PATH} -e "require('${MODULE}')"
+ RESULT_VARIABLE module_missing
+ ERROR_QUIET)
+ if(module_missing)
+ message(STATUS
+ "[${LUA_PRG_PATH}] The '${MODULE}' lua package is required for building Neovim")
+ set(${RESULT_VAR} False PARENT_SCOPE)
+ else()
+ set(${RESULT_VAR} True PARENT_SCOPE)
+ endif()
+endfunction()
+
+# Check Lua interpreter for dependencies
+function(check_lua_deps LUA_PRG_PATH MODULES RESULT_VAR)
+ # Check if the lua interpreter at the given path
+ # satisfies all Neovim dependencies
+ message(STATUS "Checking Lua interpreter ${LUA_PRG_PATH}")
+ if(NOT EXISTS ${LUA_PRG_PATH})
+ message(STATUS
+ "[${LUA_PRG_PATH}] file not found")
+ endif()
+
+ foreach(module ${MODULES})
+ check_lua_module(${LUA_PRG_PATH} ${module} has_module)
+ if(NOT has_module)
+ set(${RESULT_VAR} False PARENT_SCOPE)
+ return()
+ endif()
+ endforeach()
+
+ set(${RESULT_VAR} True PARENT_SCOPE)
+endfunction()