aboutsummaryrefslogtreecommitdiff
path: root/third-party/cmake/BuildLuarocks.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'third-party/cmake/BuildLuarocks.cmake')
-rw-r--r--third-party/cmake/BuildLuarocks.cmake86
1 files changed, 86 insertions, 0 deletions
diff --git a/third-party/cmake/BuildLuarocks.cmake b/third-party/cmake/BuildLuarocks.cmake
new file mode 100644
index 0000000000..796e324297
--- /dev/null
+++ b/third-party/cmake/BuildLuarocks.cmake
@@ -0,0 +1,86 @@
+
+if(USE_BUNDLED_LUAJIT)
+ list(APPEND LUAROCKS_OPTS
+ --with-lua=${DEPS_INSTALL_DIR}
+ --with-lua-include=${DEPS_INSTALL_DIR}/include/luajit-2.0)
+endif()
+ExternalProject_Add(luarocks
+ PREFIX ${DEPS_BUILD_DIR}
+ URL ${LUAROCKS_URL}
+ DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/luarocks
+ DOWNLOAD_COMMAND ${CMAKE_COMMAND}
+ -DPREFIX=${DEPS_BUILD_DIR}
+ -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/luarocks
+ -DURL=${LUAROCKS_URL}
+ -DEXPECTED_SHA256=${LUAROCKS_SHA256}
+ -DTARGET=luarocks
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
+ BUILD_IN_SOURCE 1
+ CONFIGURE_COMMAND ${DEPS_BUILD_DIR}/src/luarocks/configure
+ --prefix=${DEPS_INSTALL_DIR} --force-config ${LUAROCKS_OPTS}
+ --lua-suffix=jit
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ${MAKE_PRG} bootstrap)
+list(APPEND THIRD_PARTY_DEPS luarocks)
+if(USE_BUNDLED_LUAJIT)
+ add_dependencies(luarocks luajit)
+endif()
+
+add_custom_command(OUTPUT ${DEPS_LIB_DIR}/luarocks/rocks/stable-busted-deps
+ COMMAND ${DEPS_BIN_DIR}/luarocks
+ ARGS build lua_cliargs 2.3-3 CC=${DEPS_C_COMPILER} LD=${DEPS_C_COMPILER}
+ COMMAND ${DEPS_BIN_DIR}/luarocks
+ ARGS build luafilesystem 1.6.3-1 CC=${DEPS_C_COMPILER} LD=${DEPS_C_COMPILER}
+ COMMAND ${DEPS_BIN_DIR}/luarocks
+ ARGS build dkjson 2.5-1 CC=${DEPS_C_COMPILER} LD=${DEPS_C_COMPILER}
+ COMMAND ${DEPS_BIN_DIR}/luarocks
+ ARGS build say 1.2-1 CC=${DEPS_C_COMPILER} LD=${DEPS_C_COMPILER}
+ COMMAND ${DEPS_BIN_DIR}/luarocks
+ ARGS build luassert 1.7.2-0 CC=${DEPS_C_COMPILER} LD=${DEPS_C_COMPILER}
+ COMMAND ${DEPS_BIN_DIR}/luarocks
+ ARGS build ansicolors 1.0.2-3 CC=${DEPS_C_COMPILER} LD=${DEPS_C_COMPILER}
+ COMMAND ${DEPS_BIN_DIR}/luarocks
+ ARGS build penlight 1.0.0-1 CC=${DEPS_C_COMPILER} LD=${DEPS_C_COMPILER}
+ COMMAND ${DEPS_BIN_DIR}/luarocks
+ ARGS build mediator_lua 1.1-3 CC=${DEPS_C_COMPILER} LD=${DEPS_C_COMPILER}
+ COMMAND touch ${DEPS_LIB_DIR}/luarocks/rocks/stable-busted-deps
+ DEPENDS luarocks)
+add_custom_target(stable-busted-deps
+ DEPENDS ${DEPS_LIB_DIR}/luarocks/rocks/stable-busted-deps)
+
+add_custom_command(OUTPUT ${DEPS_BIN_DIR}/busted
+ COMMAND ${DEPS_BIN_DIR}/luarocks
+ ARGS build busted 2.0.rc4 CC=${DEPS_C_COMPILER} LD=${DEPS_C_COMPILER}
+ DEPENDS stable-busted-deps)
+add_custom_target(busted
+ DEPENDS ${DEPS_BIN_DIR}/busted)
+
+# lua-messagepack doesn't depend on busted, but luarocks is unhappy to have
+# two instances running in parallel. So we depend on busted to force it to
+# be serialized.
+add_custom_command(OUTPUT ${DEPS_LIB_DIR}/luarocks/rocks/lua-messagepack
+ COMMAND ${DEPS_BIN_DIR}/luarocks
+ ARGS build lua-messagepack CC=${DEPS_C_COMPILER} LD=${DEPS_C_COMPILER}
+ DEPENDS busted)
+add_custom_target(lua-messagepack
+ DEPENDS ${DEPS_LIB_DIR}/luarocks/rocks/lua-messagepack)
+
+# Like before, depend on lua-messagepack to ensure serialization of install
+# commands
+add_custom_command(OUTPUT ${DEPS_LIB_DIR}/luarocks/rocks/lpeg
+ COMMAND ${DEPS_BIN_DIR}/luarocks
+ ARGS build lpeg CC=${DEPS_C_COMPILER} LD=${DEPS_C_COMPILER}
+ DEPENDS lua-messagepack)
+add_custom_target(lpeg
+ DEPENDS ${DEPS_LIB_DIR}/luarocks/rocks/lpeg)
+
+add_custom_command(OUTPUT ${DEPS_LIB_DIR}/luarocks/rocks/nvim-client
+ COMMAND ${DEPS_BIN_DIR}/luarocks
+ ARGS build https://raw.githubusercontent.com/neovim/lua-client/8cc5b6090ac61cd0bba53ba984f15792fbb64573/nvim-client-0.0.1-11.rockspec CC=${DEPS_C_COMPILER} LD=${DEPS_C_COMPILER} LIBUV_DIR=${DEPS_INSTALL_DIR}
+ DEPENDS lpeg libuv)
+add_custom_target(nvim-client
+ DEPENDS ${DEPS_LIB_DIR}/luarocks/rocks/nvim-client)
+
+list(APPEND THIRD_PARTY_DEPS stable-busted-deps busted lua-messagepack lpeg nvim-client)
+
+