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.cmake61
1 files changed, 45 insertions, 16 deletions
diff --git a/third-party/cmake/BuildLuarocks.cmake b/third-party/cmake/BuildLuarocks.cmake
index 1662f89b24..268df7c62f 100644
--- a/third-party/cmake/BuildLuarocks.cmake
+++ b/third-party/cmake/BuildLuarocks.cmake
@@ -3,11 +3,7 @@
# writing a recipe that is meant for cross-compile, use the HOSTDEPS_* variables
# instead of DEPS_* - check the main CMakeLists.txt for a list.
-if(MSVC)
- message(STATUS "Building busted in Windows is not supported (skipping)")
-else()
- option(USE_BUNDLED_BUSTED "Use the bundled version of busted to run tests." ON)
-endif()
+option(USE_BUNDLED_BUSTED "Use the bundled version of busted to run tests." ON)
# BuildLuarocks(CONFIGURE_COMMAND ... BUILD_COMMAND ... INSTALL_COMMAND ...)
# Reusable function to build luarocks, wraps ExternalProject_Add.
@@ -46,11 +42,9 @@ endfunction()
set(LUAROCKS_BINARY ${HOSTDEPS_BIN_DIR}/luarocks)
# Arguments for calls to 'luarocks build'
-if(MSVC)
- # In native Win32 don't pass the compiler/linker to luarocks, the bundled
+if(NOT MSVC)
+ # In MSVC don't pass the compiler/linker to luarocks, the bundled
# version already knows, and passing them here breaks the build
- set(LUAROCKS_BUILDARGS CFLAGS=/MT)
-else()
set(LUAROCKS_BUILDARGS CC=${HOSTDEPS_C_COMPILER} LD=${HOSTDEPS_C_COMPILER})
endif()
@@ -67,8 +61,12 @@ if(UNIX OR (MINGW AND CMAKE_CROSSCOMPILING))
--prefix=${HOSTDEPS_INSTALL_DIR} --force-config ${LUAROCKS_OPTS}
--lua-suffix=jit
INSTALL_COMMAND ${MAKE_PRG} bootstrap)
+elseif(MSVC OR MINGW)
+
+ if(MINGW)
+ set(MINGW_FLAG /MW)
+ endif()
-elseif(MSVC)
# Ignore USE_BUNDLED_LUAJIT - always ON for native Win32
BuildLuarocks(INSTALL_COMMAND install.bat /FORCECONFIG /NOREG /NOADMIN /Q /F
/LUA ${DEPS_INSTALL_DIR}
@@ -78,6 +76,7 @@ elseif(MSVC)
/P ${DEPS_INSTALL_DIR} /TREE ${DEPS_INSTALL_DIR}
/SCRIPTS ${DEPS_BIN_DIR}
/CMOD ${DEPS_BIN_DIR}
+ ${MINGW_FLAG}
/LUAMOD ${DEPS_BIN_DIR}/lua)
set(LUAROCKS_BINARY ${DEPS_INSTALL_DIR}/2.2/luarocks.bat)
@@ -114,17 +113,43 @@ add_custom_target(lpeg
list(APPEND THIRD_PARTY_DEPS lpeg)
+add_custom_command(OUTPUT ${HOSTDEPS_LIB_DIR}/luarocks/rocks/inspect
+ COMMAND ${LUAROCKS_BINARY}
+ ARGS build inspect ${LUAROCKS_BUILDARGS}
+ DEPENDS mpack)
+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_BIN_DIR}/busted
+
+ find_program(UNZIP_PRG unzip)
+ if(NOT UNZIP_PRG)
+ message(FATAL_ERROR "'unzip' must be installed to allow for penlight installation")
+ endif()
+ add_custom_command(OUTPUT ${HOSTDEPS_LIB_DIR}/luarocks/rocks/penlight/1.3.2-2
+ COMMAND ${LUAROCKS_BINARY}
+ ARGS build penlight 1.3.2-2 ${LUAROCKS_BUILDARGS}
+ DEPENDS inspect)
+ add_custom_target(penlight
+ DEPENDS ${HOSTDEPS_LIB_DIR}/luarocks/rocks/penlight/1.3.2-2)
+
+ if(WIN32)
+ set(BUSTED_EXE "${HOSTDEPS_BIN_DIR}/busted.bat")
+ else()
+ set(BUSTED_EXE "${HOSTDEPS_BIN_DIR}/busted")
+ endif()
+ add_custom_command(OUTPUT ${BUSTED_EXE}
COMMAND ${LUAROCKS_BINARY}
ARGS build https://raw.githubusercontent.com/Olivine-Labs/busted/v2.0.rc11-0/busted-2.0.rc11-0.rockspec ${LUAROCKS_BUILDARGS}
- DEPENDS lpeg)
+ DEPENDS penlight)
add_custom_target(busted
- DEPENDS ${HOSTDEPS_BIN_DIR}/busted)
+ DEPENDS ${BUSTED_EXE})
add_custom_command(OUTPUT ${HOSTDEPS_BIN_DIR}/luacheck
COMMAND ${LUAROCKS_BINARY}
- ARGS build https://raw.githubusercontent.com/mpeterv/luacheck/3929eaa3528be2a8a50c593d687c8625205a2033/luacheck-scm-1.rockspec ${LUAROCKS_BUILDARGS}
+ ARGS build https://raw.githubusercontent.com/mpeterv/luacheck/master/luacheck-scm-1.rockspec ${LUAROCKS_BUILDARGS}
DEPENDS busted)
add_custom_target(luacheck
DEPENDS ${HOSTDEPS_BIN_DIR}/luacheck)
@@ -133,9 +158,13 @@ if(USE_BUNDLED_BUSTED)
if(MINGW AND CMAKE_CROSSCOMPILING)
set(LUV_DEPS ${LUV_DEPS} libuv_host)
endif()
+ set(LUV_ARGS "CFLAGS=-O0 -g3 -fPIC")
+ if(USE_BUNDLED_LIBUV)
+ list(APPEND LUV_ARGS LIBUV_DIR=${HOSTDEPS_INSTALL_DIR})
+ endif()
add_custom_command(OUTPUT ${HOSTDEPS_LIB_DIR}/luarocks/rocks/luv
COMMAND ${LUAROCKS_BINARY}
- ARGS make ${LUAROCKS_BUILDARGS} LIBUV_DIR=${HOSTDEPS_INSTALL_DIR} CFLAGS='-O0 -g3 -fPIC'
+ ARGS make ${LUAROCKS_BUILDARGS} ${LUV_ARGS}
WORKING_DIRECTORY ${DEPS_BUILD_DIR}/src/luv
DEPENDS ${LUV_DEPS})
add_custom_target(luv
@@ -143,7 +172,7 @@ if(USE_BUNDLED_BUSTED)
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-24/nvim-client-0.0.1-24.rockspec ${LUAROCKS_BUILDARGS}
+ ARGS build https://raw.githubusercontent.com/neovim/lua-client/0.0.1-25/nvim-client-0.0.1-25.rockspec ${LUAROCKS_BUILDARGS}
DEPENDS luv)
add_custom_target(nvim-client
DEPENDS ${HOSTDEPS_LIB_DIR}/luarocks/rocks/nvim-client)