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.cmake91
1 files changed, 68 insertions, 23 deletions
diff --git a/third-party/cmake/BuildLuarocks.cmake b/third-party/cmake/BuildLuarocks.cmake
index ef8a8450f1..b5fcf7f3e5 100644
--- a/third-party/cmake/BuildLuarocks.cmake
+++ b/third-party/cmake/BuildLuarocks.cmake
@@ -12,7 +12,7 @@ function(BuildLuarocks)
cmake_parse_arguments(_luarocks
""
""
- "CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND"
+ "PATCH_COMMAND;CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND"
${ARGN})
if(NOT _luarocks_CONFIGURE_COMMAND AND NOT _luarocks_BUILD_COMMAND
@@ -32,6 +32,7 @@ function(BuildLuarocks)
-DTARGET=luarocks
-DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
+ PATCH_COMMAND "${_luarocks_PATCH_COMMAND}"
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND "${_luarocks_CONFIGURE_COMMAND}"
BUILD_COMMAND "${_luarocks_BUILD_COMMAND}"
@@ -50,28 +51,43 @@ if(NOT MSVC)
# version already knows, and passing them here breaks the build
set(LUAROCKS_BUILDARGS CC=${HOSTDEPS_C_COMPILER} LD=${HOSTDEPS_C_COMPILER})
endif()
+if(WIN32)
+ # Use our bundled curl.exe for downloading packages
+ set(LUAROCKS_BUILDARGS ${LUAROCKS_BUILDARGS} CURL=${DEPS_BIN_DIR}/curl.exe)
+endif()
+
if(UNIX OR (MINGW AND CMAKE_CROSSCOMPILING))
if(USE_BUNDLED_LUAJIT)
list(APPEND LUAROCKS_OPTS
--with-lua=${HOSTDEPS_INSTALL_DIR}
- --with-lua-include=${HOSTDEPS_INSTALL_DIR}/include/luajit-2.0)
+ --with-lua-include=${HOSTDEPS_INSTALL_DIR}/include/luajit-2.0
+ --lua-suffix=jit)
+ elseif(USE_BUNDLED_LUA)
+ list(APPEND LUAROCKS_OPTS
+ --with-lua=${HOSTDEPS_INSTALL_DIR})
endif()
BuildLuarocks(
CONFIGURE_COMMAND ${DEPS_BUILD_DIR}/src/luarocks/configure
--prefix=${HOSTDEPS_INSTALL_DIR} --force-config ${LUAROCKS_OPTS}
- --lua-suffix=jit
- INSTALL_COMMAND ${MAKE_PRG} bootstrap)
+ INSTALL_COMMAND ${MAKE_PRG} -j1 bootstrap)
elseif(MSVC OR MINGW)
if(MINGW)
- set(MINGW_FLAG /MW)
+ set(COMPILER_FLAG /MW)
+ elseif(MSVC)
+ set(COMPILER_FLAG /MSVC)
endif()
# Ignore USE_BUNDLED_LUAJIT - always ON for native Win32
- BuildLuarocks(INSTALL_COMMAND install.bat /FORCECONFIG /NOREG /NOADMIN /Q /F
+ BuildLuarocks(
+ PATCH_COMMAND
+ ${GIT_EXECUTABLE} -C ${DEPS_BUILD_DIR}/src/luarocks init
+ COMMAND ${GIT_EXECUTABLE} -C ${DEPS_BUILD_DIR}/src/luarocks apply --ignore-whitespace
+ ${CMAKE_CURRENT_SOURCE_DIR}/patches/luarocks-Change-default-downloader-to-curl.patch
+ INSTALL_COMMAND install.bat /FORCECONFIG /NOREG /NOADMIN /Q /F
/LUA ${DEPS_INSTALL_DIR}
/LIB ${DEPS_LIB_DIR}
/BIN ${DEPS_BIN_DIR}
@@ -79,10 +95,12 @@ elseif(MSVC OR MINGW)
/P ${DEPS_INSTALL_DIR}/${LUAROCKS_VERSION} /TREE ${DEPS_INSTALL_DIR}
/SCRIPTS ${DEPS_BIN_DIR}
/CMOD ${DEPS_BIN_DIR}
- ${MINGW_FLAG}
+ ${COMPILER_FLAG}
/LUAMOD ${DEPS_BIN_DIR}/lua)
set(LUAROCKS_BINARY ${DEPS_INSTALL_DIR}/${LUAROCKS_VERSION}/luarocks.bat)
+ add_dependencies(luarocks wintools)
+
else()
message(FATAL_ERROR "Trying to build luarocks in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}")
endif()
@@ -94,63 +112,88 @@ if(USE_BUNDLED_LUAJIT)
if(MINGW AND CMAKE_CROSSCOMPILING)
add_dependencies(luarocks luajit_host)
endif()
+elseif(USE_BUNDLED_LUA)
+ add_dependencies(luarocks lua)
endif()
-# Each target depends on the previous module, this serializes all calls to
-# luarocks since it is unhappy to be called in parallel.
+# DEPENDS on the previous module, because Luarocks breaks if parallel.
add_custom_command(OUTPUT ${HOSTDEPS_LIB_DIR}/luarocks/rocks/mpack
COMMAND ${LUAROCKS_BINARY}
- ARGS build mpack ${LUAROCKS_BUILDARGS}
+ ARGS build mpack 1.0.7-0 ${LUAROCKS_BUILDARGS}
DEPENDS luarocks)
add_custom_target(mpack
DEPENDS ${HOSTDEPS_LIB_DIR}/luarocks/rocks/mpack)
list(APPEND THIRD_PARTY_DEPS mpack)
-
+# DEPENDS on the previous module, because Luarocks breaks if parallel.
add_custom_command(OUTPUT ${HOSTDEPS_LIB_DIR}/luarocks/rocks/lpeg
COMMAND ${LUAROCKS_BINARY}
- ARGS build lpeg ${LUAROCKS_BUILDARGS}
+ ARGS build lpeg 1.0.1-1 ${LUAROCKS_BUILDARGS}
DEPENDS mpack)
add_custom_target(lpeg
DEPENDS ${HOSTDEPS_LIB_DIR}/luarocks/rocks/lpeg)
list(APPEND THIRD_PARTY_DEPS lpeg)
+# DEPENDS on the previous module, because Luarocks breaks if parallel.
add_custom_command(OUTPUT ${HOSTDEPS_LIB_DIR}/luarocks/rocks/inspect
COMMAND ${LUAROCKS_BINARY}
- ARGS build inspect ${LUAROCKS_BUILDARGS}
- DEPENDS mpack)
+ ARGS build inspect 3.1.1-0 ${LUAROCKS_BUILDARGS}
+ DEPENDS lpeg)
add_custom_target(inspect
DEPENDS ${HOSTDEPS_LIB_DIR}/luarocks/rocks/inspect)
list(APPEND THIRD_PARTY_DEPS inspect)
-if(USE_BUNDLED_BUSTED)
- add_custom_command(OUTPUT ${HOSTDEPS_LIB_DIR}/luarocks/rocks/penlight/1.3.2-2
+if((NOT USE_BUNDLED_LUAJIT) AND USE_BUNDLED_LUA)
+ # DEPENDS on the previous module, because Luarocks breaks if parallel.
+ add_custom_command(OUTPUT ${HOSTDEPS_LIB_DIR}/luarocks/rocks/luabitop
COMMAND ${LUAROCKS_BINARY}
- ARGS build penlight 1.3.2-2 ${LUAROCKS_BUILDARGS}
+ ARGS build luabitop 1.0.2-3 ${LUAROCKS_BUILDARGS}
DEPENDS inspect)
+ add_custom_target(luabitop
+ DEPENDS ${HOSTDEPS_LIB_DIR}/luarocks/rocks/luabitop)
+
+ list(APPEND THIRD_PARTY_DEPS luabitop)
+endif()
+
+if(USE_BUNDLED_BUSTED)
+ if((NOT USE_BUNDLED_LUAJIT) AND USE_BUNDLED_LUA)
+ set(PENLIGHT_DEPENDS luabitop)
+ else()
+ set(PENLIGHT_DEPENDS inspect)
+ endif()
+
+ # DEPENDS on the previous module, because Luarocks breaks if parallel.
+ add_custom_command(OUTPUT ${HOSTDEPS_LIB_DIR}/luarocks/rocks/penlight
+ COMMAND ${LUAROCKS_BINARY}
+ ARGS build penlight 1.5.4-1 ${LUAROCKS_BUILDARGS}
+ DEPENDS ${PENLIGHT_DEPENDS})
add_custom_target(penlight
- DEPENDS ${HOSTDEPS_LIB_DIR}/luarocks/rocks/penlight/1.3.2-2)
+ DEPENDS ${HOSTDEPS_LIB_DIR}/luarocks/rocks/penlight)
if(WIN32)
set(BUSTED_EXE "${HOSTDEPS_BIN_DIR}/busted.bat")
+ set(LUACHECK_EXE "${HOSTDEPS_BIN_DIR}/luacheck.bat")
else()
set(BUSTED_EXE "${HOSTDEPS_BIN_DIR}/busted")
+ set(LUACHECK_EXE "${HOSTDEPS_BIN_DIR}/luacheck")
endif()
+ # DEPENDS on the previous module, because Luarocks breaks if parallel.
add_custom_command(OUTPUT ${BUSTED_EXE}
COMMAND ${LUAROCKS_BINARY}
- ARGS build https://raw.githubusercontent.com/Olivine-Labs/busted/v2.0.rc12-1/busted-2.0.rc12-1.rockspec ${LUAROCKS_BUILDARGS}
+ ARGS build busted 2.0.rc12-1 ${LUAROCKS_BUILDARGS}
DEPENDS penlight)
add_custom_target(busted
DEPENDS ${BUSTED_EXE})
- add_custom_command(OUTPUT ${HOSTDEPS_BIN_DIR}/luacheck
+ # DEPENDS on the previous module, because Luarocks breaks if parallel.
+ add_custom_command(OUTPUT ${LUACHECK_EXE}
COMMAND ${LUAROCKS_BINARY}
- ARGS build https://raw.githubusercontent.com/mpeterv/luacheck/master/luacheck-scm-1.rockspec ${LUAROCKS_BUILDARGS}
+ ARGS build luacheck 0.21.2-1 ${LUAROCKS_BUILDARGS}
DEPENDS busted)
add_custom_target(luacheck
- DEPENDS ${HOSTDEPS_BIN_DIR}/luacheck)
+ DEPENDS ${LUACHECK_EXE})
set(LUV_DEPS luacheck luv-static)
if(MINGW AND CMAKE_CROSSCOMPILING)
@@ -160,6 +203,7 @@ if(USE_BUNDLED_BUSTED)
if(USE_BUNDLED_LIBUV)
list(APPEND LUV_ARGS LIBUV_DIR=${HOSTDEPS_INSTALL_DIR})
endif()
+ # DEPENDS on the previous module, because Luarocks breaks if parallel.
add_custom_command(OUTPUT ${HOSTDEPS_LIB_DIR}/luarocks/rocks/luv
COMMAND ${LUAROCKS_BINARY}
ARGS make ${LUAROCKS_BUILDARGS} ${LUV_ARGS}
@@ -168,9 +212,10 @@ if(USE_BUNDLED_BUSTED)
add_custom_target(luv
DEPENDS ${HOSTDEPS_LIB_DIR}/luarocks/rocks/luv)
+ # DEPENDS on the previous module, because Luarocks breaks if parallel.
add_custom_command(OUTPUT ${HOSTDEPS_LIB_DIR}/luarocks/rocks/nvim-client
COMMAND ${LUAROCKS_BINARY}
- ARGS build https://raw.githubusercontent.com/neovim/lua-client/0.0.1-26/nvim-client-0.0.1-26.rockspec ${LUAROCKS_BUILDARGS}
+ ARGS build nvim-client 0.0.1-26 ${LUAROCKS_BUILDARGS}
DEPENDS luv)
add_custom_target(nvim-client
DEPENDS ${HOSTDEPS_LIB_DIR}/luarocks/rocks/nvim-client)