diff options
Diffstat (limited to 'third-party/cmake/BuildLuarocks.cmake')
-rw-r--r-- | third-party/cmake/BuildLuarocks.cmake | 86 |
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) + + |