diff options
Diffstat (limited to 'cmake.deps')
-rw-r--r-- | cmake.deps/CMakeLists.txt | 36 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildGettext.cmake | 4 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLibiconv.cmake | 4 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLibtermkey.cmake | 58 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLibvterm.cmake | 64 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLua.cmake | 57 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLuarocks.cmake | 83 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLuv.cmake | 96 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildMsgpack.cmake | 55 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildTreesitter.cmake | 71 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildTreesitterParsers.cmake | 52 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildUnibilium.cmake | 71 | ||||
-rw-r--r-- | cmake.deps/cmake/TreesitterParserCMakeLists.txt | 8 | ||||
-rw-r--r-- | cmake.deps/patches/libvterm-Remove-VLAs-for-MSVC.patch | 50 |
14 files changed, 243 insertions, 466 deletions
diff --git a/cmake.deps/CMakeLists.txt b/cmake.deps/CMakeLists.txt index 27659b2a56..5ca610ba1f 100644 --- a/cmake.deps/CMakeLists.txt +++ b/cmake.deps/CMakeLists.txt @@ -2,22 +2,18 @@ cmake_minimum_required (VERSION 3.10) project(NVIM_DEPS C) -# Needed for: check_c_compiler_flag() -include(CheckCCompilerFlag) - # Point CMake at any custom modules we may ship list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" "${PROJECT_SOURCE_DIR}/../cmake") +include(CheckCCompilerFlag) +include(Util) + get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(NOT isMultiConfig) set(BUILD_TYPE_STRING -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}) endif() -# In Windows/MSVC CMAKE_BUILD_TYPE changes the paths/linking of the build -# recipes (libuv, msgpack), make sure it is set -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Release) -endif() +set_default_buildtype() set(DEFAULT_MAKE_CFLAGS CFLAGS+=-g) @@ -177,12 +173,12 @@ set(UNIBILIUM_SHA256 29815283c654277ef77a3adcc8840db79ddbb20a0f0b0c8f648bd8cd49a set(LIBTERMKEY_URL https://www.leonerd.org.uk/code/libtermkey/libtermkey-0.22.tar.gz) set(LIBTERMKEY_SHA256 6945bd3c4aaa83da83d80a045c5563da4edd7d0374c62c0d35aec09eb3014600) -set(LIBVTERM_URL https://www.leonerd.org.uk/code/libvterm/libvterm-0.1.4.tar.gz) -set(LIBVTERM_SHA256 bc70349e95559c667672fc8c55b9527d9db9ada0fb80a3beda533418d782d3dd) +set(LIBVTERM_URL https://www.leonerd.org.uk/code/libvterm/libvterm-0.3-RC1.tar.gz) +set(LIBVTERM_SHA256 441d1c372b84a0df12525100ab06c0366260fb4f6252abd1665ee4fa571b5134) -set(LUV_VERSION 1.44.2-0) -set(LUV_URL https://github.com/luvit/luv/archive/1.44.2-0.tar.gz) -set(LUV_SHA256 44ccda27035bfe683e6325a2a93f2c254be1eb76bde6efc2bd37c56a7af7b00a) +set(LUV_VERSION 1.44.2-1) +set(LUV_URL https://github.com/luvit/luv/archive/1.44.2-1.tar.gz) +set(LUV_SHA256 f8c69908e17ec8ab370253d1508e23deaecfc0c4752d2efb77e427e579501104) set(LUA_COMPAT53_URL https://github.com/keplerproject/lua-compat-5.3/archive/v0.9.tar.gz) set(LUA_COMPAT53_SHA256 ad05540d2d96a48725bb79a1def35cf6652a4e2ec26376e2617c8ce2baa6f416) @@ -205,11 +201,17 @@ set(GETTEXT_SHA256 66415634c6e8c3fa8b71362879ec7575e27da43da562c798a8a2f223e6e47 set(LIBICONV_URL https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz) set(LIBICONV_SHA256 ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178) -set(TREESITTER_C_URL https://github.com/tree-sitter/tree-sitter-c/archive/v0.20.1.tar.gz) -set(TREESITTER_C_SHA256 ffcc2ef0eded59ad1acec9aec4f9b0c7dd209fc1a85d85f8b0e81298e3dddcc2) +set(TREESITTER_C_URL https://github.com/tree-sitter/tree-sitter-c/archive/v0.20.2.tar.gz) +set(TREESITTER_C_SHA256 af66fde03feb0df4faf03750102a0d265b007e5d957057b6b293c13116a70af2 ) + +set(TREESITTER_LUA_URL https://github.com/MunifTanjim/tree-sitter-lua/archive/v0.0.12.tar.gz) +set(TREESITTER_LUA_SHA256 b6d7c6d04e9101a2e589d25f1d61668301e776c0b8defa6eae8dd86272e9e7c3) + +set(TREESITTER_VIM_URL https://github.com/vigoux/tree-sitter-viml/archive/v0.2.0.tar.gz) +set(TREESITTER_VIM_SHA256 608dcc31a7948cb66ae7f45494620e2e9face1af75598205541f80d782ec4501) -set(TREESITTER_URL https://github.com/tree-sitter/tree-sitter/archive/1f1b1eb4501ed0a2d195d37f7de15f72aa10acd0.tar.gz) -set(TREESITTER_SHA256 a324bdb7ff507cd5157a36b908224d60ba638f8e3363070dd51aa383c7cbd790) +set(TREESITTER_URL https://github.com/tree-sitter/tree-sitter/archive/v0.20.7.tar.gz) +set(TREESITTER_SHA256 b355e968ec2d0241bbd96748e00a9038f83968f85d822ecb9940cbe4c42e182e) if(USE_BUNDLED_UNIBILIUM) include(BuildUnibilium) diff --git a/cmake.deps/cmake/BuildGettext.cmake b/cmake.deps/cmake/BuildGettext.cmake index f36c00c559..d903fbc737 100644 --- a/cmake.deps/cmake/BuildGettext.cmake +++ b/cmake.deps/cmake/BuildGettext.cmake @@ -23,8 +23,8 @@ if(MSVC) -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} -DLIBICONV_INCLUDE_DIRS=${DEPS_INSTALL_DIR}/include -DLIBICONV_LIBRARIES=${DEPS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}libcharset${CMAKE_STATIC_LIBRARY_SUFFIX}$<SEMICOLON>${DEPS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}libiconv${CMAKE_STATIC_LIBRARY_SUFFIX} - BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} - INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}) + BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG> + INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>) else() message(FATAL_ERROR "Trying to build gettext in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}") endif() diff --git a/cmake.deps/cmake/BuildLibiconv.cmake b/cmake.deps/cmake/BuildLibiconv.cmake index 434bfd6979..29168340a1 100644 --- a/cmake.deps/cmake/BuildLibiconv.cmake +++ b/cmake.deps/cmake/BuildLibiconv.cmake @@ -21,8 +21,8 @@ if(MSVC) ${BUILD_TYPE_STRING} -DCMAKE_GENERATOR=${CMAKE_GENERATOR} -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} - BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} - INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}) + BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG> + INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>) else() message(FATAL_ERROR "Trying to build libiconv in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}") endif() diff --git a/cmake.deps/cmake/BuildLibtermkey.cmake b/cmake.deps/cmake/BuildLibtermkey.cmake index 66bac57d23..ee35112823 100644 --- a/cmake.deps/cmake/BuildLibtermkey.cmake +++ b/cmake.deps/cmake/BuildLibtermkey.cmake @@ -1,18 +1,6 @@ if(WIN32) -ExternalProject_Add(libtermkey - PREFIX ${DEPS_BUILD_DIR} - URL ${LIBTERMKEY_URL} - DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libtermkey - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/libtermkey - -DURL=${LIBTERMKEY_URL} - -DEXPECTED_SHA256=${LIBTERMKEY_SHA256} - -DTARGET=libtermkey - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake - CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/libtermkeyCMakeLists.txt + set(LIBTERMKEY_CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/libtermkeyCMakeLists.txt ${DEPS_BUILD_DIR}/src/libtermkey/CMakeLists.txt COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/libtermkey -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} @@ -24,34 +12,32 @@ ExternalProject_Add(libtermkey -DCMAKE_GENERATOR=${CMAKE_GENERATOR} -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} -DUNIBILIUM_INCLUDE_DIRS=${DEPS_INSTALL_DIR}/include - -DUNIBILIUM_LIBRARIES=${DEPS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}unibilium${CMAKE_STATIC_LIBRARY_SUFFIX} - BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} - INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}) + -DUNIBILIUM_LIBRARIES=${DEPS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}unibilium${CMAKE_STATIC_LIBRARY_SUFFIX}) + set(LIBTERMKEY_BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>) + set(LIBTERMKEY_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>) else() -find_package(PkgConfig REQUIRED) + find_package(PkgConfig REQUIRED) + + set(LIBTERMKEY_BUILD_COMMAND "" BUILD_IN_SOURCE 1) + set(LIBTERMKEY_INSTALL_COMMAND ${MAKE_PRG} CC=${DEPS_C_COMPILER} + PREFIX=${DEPS_INSTALL_DIR} PKG_CONFIG_PATH=${DEPS_LIB_DIR}/pkgconfig + CFLAGS=-fPIC LDFLAGS+=-static ${DEFAULT_MAKE_CFLAGS} install) +endif() ExternalProject_Add(libtermkey PREFIX ${DEPS_BUILD_DIR} URL ${LIBTERMKEY_URL} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libtermkey DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/libtermkey - -DURL=${LIBTERMKEY_URL} - -DEXPECTED_SHA256=${LIBTERMKEY_SHA256} - -DTARGET=libtermkey - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake - CONFIGURE_COMMAND "" - BUILD_IN_SOURCE 1 - BUILD_COMMAND "" - INSTALL_COMMAND ${MAKE_PRG} CC=${DEPS_C_COMPILER} - PREFIX=${DEPS_INSTALL_DIR} - PKG_CONFIG_PATH=${DEPS_LIB_DIR}/pkgconfig - CFLAGS=-fPIC - LDFLAGS+=-static - ${DEFAULT_MAKE_CFLAGS} - install) -endif() + -DPREFIX=${DEPS_BUILD_DIR} + -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/libtermkey + -DURL=${LIBTERMKEY_URL} + -DEXPECTED_SHA256=${LIBTERMKEY_SHA256} + -DTARGET=libtermkey + -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} + -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake + CONFIGURE_COMMAND "${LIBTERMKEY_CONFIGURE_COMMAND}" + BUILD_COMMAND "${LIBTERMKEY_BUILD_COMMAND}" + INSTALL_COMMAND "${LIBTERMKEY_INSTALL_COMMAND}") list(APPEND THIRD_PARTY_DEPS libtermkey) diff --git a/cmake.deps/cmake/BuildLibvterm.cmake b/cmake.deps/cmake/BuildLibvterm.cmake index a905733abc..8ab81e9bbe 100644 --- a/cmake.deps/cmake/BuildLibvterm.cmake +++ b/cmake.deps/cmake/BuildLibvterm.cmake @@ -1,43 +1,4 @@ -# BuildLibvterm(CONFIGURE_COMMAND ... BUILD_COMMAND ... INSTALL_COMMAND ...) -# Failing to pass a command argument will result in no command being run -function(BuildLibvterm) - cmake_parse_arguments(_libvterm - "" - "" - "PATCH_COMMAND;CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND" - ${ARGN}) - - if(NOT _libvterm_CONFIGURE_COMMAND AND NOT _libvterm_BUILD_COMMAND - AND NOT _libvterm_INSTALL_COMMAND) - message(FATAL_ERROR "Must pass at least one of CONFIGURE_COMMAND, BUILD_COMMAND, INSTALL_COMMAND") - endif() - - ExternalProject_Add(libvterm - PREFIX ${DEPS_BUILD_DIR} - URL ${LIBVTERM_URL} - DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libvterm - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/libvterm - -DURL=${LIBVTERM_URL} - -DEXPECTED_SHA256=${LIBVTERM_SHA256} - -DTARGET=libvterm - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake - PATCH_COMMAND "${_libvterm_PATCH_COMMAND}" - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND "${_libvterm_CONFIGURE_COMMAND}" - BUILD_COMMAND "${_libvterm_BUILD_COMMAND}" - INSTALL_COMMAND "${_libvterm_INSTALL_COMMAND}") -endfunction() - if(WIN32) - if(MSVC) - set(LIBVTERM_PATCH_COMMAND - ${GIT_EXECUTABLE} -C ${DEPS_BUILD_DIR}/src/libvterm init - COMMAND ${GIT_EXECUTABLE} -C ${DEPS_BUILD_DIR}/src/libvterm apply --ignore-whitespace - ${CMAKE_CURRENT_SOURCE_DIR}/patches/libvterm-Remove-VLAs-for-MSVC.patch) - endif() set(LIBVTERM_CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cmake/LibvtermCMakeLists.txt ${DEPS_BUILD_DIR}/src/libvterm/CMakeLists.txt @@ -49,14 +10,13 @@ if(WIN32) -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} -DCMAKE_GENERATOR=${CMAKE_GENERATOR}) - if(MSVC) list(APPEND LIBVTERM_CONFIGURE_COMMAND "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1}") else() list(APPEND LIBVTERM_CONFIGURE_COMMAND "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1} -fPIC") endif() - set(LIBVTERM_BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE}) - set(LIBVTERM_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}) + set(LIBVTERM_BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>) + set(LIBVTERM_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>) else() set(LIBVTERM_INSTALL_COMMAND ${MAKE_PRG} CC=${DEPS_C_COMPILER} PREFIX=${DEPS_INSTALL_DIR} @@ -66,9 +26,21 @@ else() install) endif() -BuildLibvterm(PATCH_COMMAND ${LIBVTERM_PATCH_COMMAND} - CONFIGURE_COMMAND ${LIBVTERM_CONFIGURE_COMMAND} - BUILD_COMMAND ${LIBVTERM_BUILD_COMMAND} - INSTALL_COMMAND ${LIBVTERM_INSTALL_COMMAND}) +ExternalProject_Add(libvterm + PREFIX ${DEPS_BUILD_DIR} + URL ${LIBVTERM_URL} + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libvterm + DOWNLOAD_COMMAND ${CMAKE_COMMAND} + -DPREFIX=${DEPS_BUILD_DIR} + -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/libvterm + -DURL=${LIBVTERM_URL} + -DEXPECTED_SHA256=${LIBVTERM_SHA256} + -DTARGET=libvterm + -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} + -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND "${LIBVTERM_CONFIGURE_COMMAND}" + BUILD_COMMAND "${LIBVTERM_BUILD_COMMAND}" + INSTALL_COMMAND "${LIBVTERM_INSTALL_COMMAND}") list(APPEND THIRD_PARTY_DEPS libvterm) diff --git a/cmake.deps/cmake/BuildLua.cmake b/cmake.deps/cmake/BuildLua.cmake index a40cb7dcb2..58131a4ba7 100644 --- a/cmake.deps/cmake/BuildLua.cmake +++ b/cmake.deps/cmake/BuildLua.cmake @@ -1,36 +1,3 @@ -# BuildLua(CONFIGURE_COMMAND ... BUILD_COMMAND ... INSTALL_COMMAND ...) -# Reusable function to build lua, wraps ExternalProject_Add. -# Failing to pass a command argument will result in no command being run -function(BuildLua) - cmake_parse_arguments(_lua - "" - "" - "CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND" - ${ARGN}) - - if(NOT _lua_CONFIGURE_COMMAND AND NOT _lua_BUILD_COMMAND - AND NOT _lua_INSTALL_COMMAND) - message(FATAL_ERROR "Must pass at least one of CONFIGURE_COMMAND, BUILD_COMMAND, INSTALL_COMMAND") - endif() - - ExternalProject_Add(lua - PREFIX ${DEPS_BUILD_DIR} - URL ${LUA_URL} - DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/lua - -DURL=${LUA_URL} - -DEXPECTED_SHA256=${LUA_SHA256} - -DTARGET=lua - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake - CONFIGURE_COMMAND "${_lua_CONFIGURE_COMMAND}" - BUILD_IN_SOURCE 1 - BUILD_COMMAND "${_lua_BUILD_COMMAND}" - INSTALL_COMMAND "${_lua_INSTALL_COMMAND}") -endfunction() - if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(LUA_TARGET linux) elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") @@ -72,16 +39,26 @@ set(LUA_CONFIGURE_COMMAND -e "s@\\(#define LUA_ROOT[ ]*\"\\)/usr/local@\\1${DEPS_INSTALL_DIR}@" -i ${DEPS_BUILD_DIR}/src/lua/src/luaconf.h) set(LUA_INSTALL_TOP_ARG "INSTALL_TOP=${DEPS_INSTALL_DIR}") -set(LUA_BUILD_COMMAND - ${MAKE_PRG} ${LUA_INSTALL_TOP_ARG} ${LUA_TARGET}) -set(LUA_INSTALL_COMMAND - ${MAKE_PRG} ${LUA_INSTALL_TOP_ARG} install) message(STATUS "Lua target is ${LUA_TARGET}") -BuildLua(CONFIGURE_COMMAND ${LUA_CONFIGURE_COMMAND} - BUILD_COMMAND ${LUA_BUILD_COMMAND} - INSTALL_COMMAND ${LUA_INSTALL_COMMAND}) +ExternalProject_Add(lua + PREFIX ${DEPS_BUILD_DIR} + URL ${LUA_URL} + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua + DOWNLOAD_COMMAND ${CMAKE_COMMAND} + -DPREFIX=${DEPS_BUILD_DIR} + -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/lua + -DURL=${LUA_URL} + -DEXPECTED_SHA256=${LUA_SHA256} + -DTARGET=lua + -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} + -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake + CONFIGURE_COMMAND "${LUA_CONFIGURE_COMMAND}" + BUILD_IN_SOURCE 1 + BUILD_COMMAND ${MAKE_PRG} ${LUA_INSTALL_TOP_ARG} ${LUA_TARGET} + INSTALL_COMMAND ${MAKE_PRG} ${LUA_INSTALL_TOP_ARG} install) + list(APPEND THIRD_PARTY_DEPS lua) set(BUSTED ${DEPS_INSTALL_DIR}/bin/busted) diff --git a/cmake.deps/cmake/BuildLuarocks.cmake b/cmake.deps/cmake/BuildLuarocks.cmake index 73f3331176..838653e7cb 100644 --- a/cmake.deps/cmake/BuildLuarocks.cmake +++ b/cmake.deps/cmake/BuildLuarocks.cmake @@ -9,39 +9,6 @@ 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. -# Failing to pass a command argument will result in no command being run -function(BuildLuarocks) - cmake_parse_arguments(_luarocks - "" - "" - "CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND" - ${ARGN}) - - if(NOT _luarocks_CONFIGURE_COMMAND AND NOT _luarocks_BUILD_COMMAND - AND NOT _luarocks_INSTALL_COMMAND) - message(FATAL_ERROR "Must pass at least one of CONFIGURE_COMMAND, BUILD_COMMAND, INSTALL_COMMAND") - 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 - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND "${_luarocks_CONFIGURE_COMMAND}" - BUILD_COMMAND "${_luarocks_BUILD_COMMAND}" - INSTALL_COMMAND "${_luarocks_INSTALL_COMMAND}") -endfunction() - # The luarocks binary location set(LUAROCKS_BINARY ${HOSTDEPS_BIN_DIR}/luarocks) @@ -90,10 +57,9 @@ if(UNIX) endif() endif() - BuildLuarocks( - CONFIGURE_COMMAND ${DEPS_BUILD_DIR}/src/luarocks/configure - --prefix=${HOSTDEPS_INSTALL_DIR} --force-config ${LUAROCKS_OPTS} - INSTALL_COMMAND ${MAKE_PRG} -j1 bootstrap) + set(LUAROCKS_CONFIGURE_COMMAND ${DEPS_BUILD_DIR}/src/luarocks/configure + --prefix=${HOSTDEPS_INSTALL_DIR} --force-config ${LUAROCKS_OPTS}) + set(LUAROCKS_INSTALL_COMMAND ${MAKE_PRG} -j1 bootstrap) elseif(MSVC OR MINGW) if(MINGW) @@ -103,7 +69,7 @@ elseif(MSVC OR MINGW) endif() # Ignore USE_BUNDLED_LUAJIT - always ON for native Win32 - BuildLuarocks(INSTALL_COMMAND install.bat /FORCECONFIG /NOREG /NOADMIN /Q /F + set(LUAROCKS_INSTALL_COMMAND install.bat /FORCECONFIG /NOREG /NOADMIN /Q /F /LUA ${DEPS_INSTALL_DIR} /LIB ${DEPS_LIB_DIR} /BIN ${DEPS_BIN_DIR} @@ -119,6 +85,23 @@ else() message(FATAL_ERROR "Trying to build luarocks in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}") 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 + -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} + -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND "${LUAROCKS_CONFIGURE_COMMAND}" + BUILD_COMMAND "" + INSTALL_COMMAND "${LUAROCKS_INSTALL_COMMAND}") + list(APPEND THIRD_PARTY_DEPS luarocks) if(USE_BUNDLED_LUAJIT) @@ -130,16 +113,14 @@ set(ROCKS_DIR ${HOSTDEPS_LIB_DIR}/luarocks/rocks-${LUA_VERSION}) # mpack add_custom_command(OUTPUT ${ROCKS_DIR}/mpack - COMMAND ${LUAROCKS_BINARY} - ARGS build mpack 1.0.8-0 ${LUAROCKS_BUILDARGS} + COMMAND ${LUAROCKS_BINARY} build mpack 1.0.8-0 ${LUAROCKS_BUILDARGS} DEPENDS luarocks) add_custom_target(mpack DEPENDS ${ROCKS_DIR}/mpack) list(APPEND THIRD_PARTY_DEPS mpack) # lpeg add_custom_command(OUTPUT ${ROCKS_DIR}/lpeg - COMMAND ${LUAROCKS_BINARY} - ARGS build lpeg 1.0.2-1 ${LUAROCKS_BUILDARGS} + COMMAND ${LUAROCKS_BINARY} build lpeg 1.0.2-1 ${LUAROCKS_BUILDARGS} DEPENDS mpack) add_custom_target(lpeg DEPENDS ${ROCKS_DIR}/lpeg) list(APPEND THIRD_PARTY_DEPS lpeg) @@ -147,8 +128,7 @@ list(APPEND THIRD_PARTY_DEPS lpeg) if((NOT USE_BUNDLED_LUAJIT) AND USE_BUNDLED_LUA) # luabitop add_custom_command(OUTPUT ${ROCKS_DIR}/luabitop - COMMAND ${LUAROCKS_BINARY} - ARGS build luabitop 1.0.2-3 ${LUAROCKS_BUILDARGS} + COMMAND ${LUAROCKS_BINARY} build luabitop 1.0.2-3 ${LUAROCKS_BUILDARGS} DEPENDS lpeg) add_custom_target(luabitop DEPENDS ${ROCKS_DIR}/luabitop) list(APPEND THIRD_PARTY_DEPS luabitop) @@ -163,8 +143,7 @@ if(USE_BUNDLED_BUSTED) # penlight add_custom_command(OUTPUT ${ROCKS_DIR}/penlight - COMMAND ${LUAROCKS_BINARY} - ARGS build penlight 1.5.4-1 ${LUAROCKS_BUILDARGS} + COMMAND ${LUAROCKS_BINARY} build penlight 1.5.4-1 ${LUAROCKS_BUILDARGS} DEPENDS ${PENLIGHT_DEPENDS}) add_custom_target(penlight DEPENDS ${ROCKS_DIR}/penlight) @@ -177,15 +156,13 @@ if(USE_BUNDLED_BUSTED) set(LUACHECK_EXE "${HOSTDEPS_BIN_DIR}/luacheck") endif() add_custom_command(OUTPUT ${BUSTED_EXE} - COMMAND ${LUAROCKS_BINARY} - ARGS build busted 2.0.0 ${LUAROCKS_BUILDARGS} + COMMAND ${LUAROCKS_BINARY} build busted 2.0.0 ${LUAROCKS_BUILDARGS} DEPENDS penlight) add_custom_target(busted DEPENDS ${BUSTED_EXE}) # luacheck add_custom_command(OUTPUT ${LUACHECK_EXE} - COMMAND ${LUAROCKS_BINARY} - ARGS build luacheck 0.23.0-1 ${LUAROCKS_BUILDARGS} + COMMAND ${LUAROCKS_BINARY} build luacheck 0.23.0-1 ${LUAROCKS_BUILDARGS} DEPENDS busted) add_custom_target(luacheck DEPENDS ${LUACHECK_EXE}) @@ -195,8 +172,7 @@ if(USE_BUNDLED_BUSTED) set(NVIM_CLIENT_DEPS luacheck luv-static lua-compat-5.3) else() add_custom_command(OUTPUT ${ROCKS_DIR}/luv - COMMAND ${LUAROCKS_BINARY} - ARGS build luv ${LUV_VERSION} ${LUAROCKS_BUILDARGS} + COMMAND ${LUAROCKS_BINARY} build luv ${LUV_VERSION} ${LUAROCKS_BUILDARGS} DEPENDS luacheck) add_custom_target(luv DEPENDS ${ROCKS_DIR}/luv) set(NVIM_CLIENT_DEPS luv) @@ -204,8 +180,7 @@ if(USE_BUNDLED_BUSTED) # nvim-client: https://github.com/neovim/lua-client add_custom_command(OUTPUT ${ROCKS_DIR}/nvim-client - COMMAND ${LUAROCKS_BINARY} - ARGS build nvim-client 0.2.4-1 ${LUAROCKS_BUILDARGS} + COMMAND ${LUAROCKS_BINARY} build nvim-client 0.2.4-1 ${LUAROCKS_BUILDARGS} DEPENDS ${NVIM_CLIENT_DEPS}) add_custom_target(nvim-client DEPENDS ${ROCKS_DIR}/nvim-client) diff --git a/cmake.deps/cmake/BuildLuv.cmake b/cmake.deps/cmake/BuildLuv.cmake index f960b24992..9aafd9239a 100644 --- a/cmake.deps/cmake/BuildLuv.cmake +++ b/cmake.deps/cmake/BuildLuv.cmake @@ -1,57 +1,3 @@ -# BuildLuv(PATCH_COMMAND ... CONFIGURE_COMMAND ... BUILD_COMMAND ... INSTALL_COMMAND ...) -# Reusable function to build luv, wraps ExternalProject_Add. -# Failing to pass a command argument will result in no command being run -function(BuildLuv) - cmake_parse_arguments(_luv - "" - "" - "PATCH_COMMAND;CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND" - ${ARGN}) - - if(NOT _luv_CONFIGURE_COMMAND AND NOT _luv_BUILD_COMMAND - AND NOT _luv_INSTALL_COMMAND) - message(FATAL_ERROR "Must pass at least one of CONFIGURE_COMMAND, BUILD_COMMAND, INSTALL_COMMAND") - endif() - - ExternalProject_Add(lua-compat-5.3 - PREFIX ${DEPS_BUILD_DIR} - URL ${LUA_COMPAT53_URL} - DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua-compat-5.3 - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/lua-compat-5.3 - -DURL=${LUA_COMPAT53_URL} - -DEXPECTED_SHA256=${LUA_COMPAT53_SHA256} - -DTARGET=lua-compat-5.3 - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake - PATCH_COMMAND "" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "") - - ExternalProject_Add(luv-static - PREFIX ${DEPS_BUILD_DIR} - DEPENDS lua-compat-5.3 - URL ${LUV_URL} - DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/luv - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/luv - -DURL=${LUV_URL} - -DEXPECTED_SHA256=${LUV_SHA256} - -DTARGET=luv-static - # The source is shared with BuildLuarocks (with USE_BUNDLED_LUV). - -DSRC_DIR=${DEPS_BUILD_DIR}/src/luv - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake - PATCH_COMMAND "${_luv_PATCH_COMMAND}" - CONFIGURE_COMMAND "${_luv_CONFIGURE_COMMAND}" - BUILD_COMMAND "${_luv_BUILD_COMMAND}" - INSTALL_COMMAND "${_luv_INSTALL_COMMAND}" - LIST_SEPARATOR |) -endfunction() - set(LUV_SRC_DIR ${DEPS_BUILD_DIR}/src/luv) set(LUV_INCLUDE_FLAGS "-I${DEPS_INSTALL_DIR}/include -I${DEPS_INSTALL_DIR}/include/luajit-2.1") @@ -110,15 +56,41 @@ else() endif() endif() -set(LUV_BUILD_COMMAND - ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE}) -set(LUV_INSTALL_COMMAND - ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}) +ExternalProject_Add(lua-compat-5.3 + PREFIX ${DEPS_BUILD_DIR} + URL ${LUA_COMPAT53_URL} + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua-compat-5.3 + DOWNLOAD_COMMAND ${CMAKE_COMMAND} + -DPREFIX=${DEPS_BUILD_DIR} + -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/lua-compat-5.3 + -DURL=${LUA_COMPAT53_URL} + -DEXPECTED_SHA256=${LUA_COMPAT53_SHA256} + -DTARGET=lua-compat-5.3 + -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} + -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "") -BuildLuv(PATCH_COMMAND ${LUV_PATCH_COMMAND} - CONFIGURE_COMMAND ${LUV_CONFIGURE_COMMAND} - BUILD_COMMAND ${LUV_BUILD_COMMAND} - INSTALL_COMMAND ${LUV_INSTALL_COMMAND}) +ExternalProject_Add(luv-static + PREFIX ${DEPS_BUILD_DIR} + DEPENDS lua-compat-5.3 + URL ${LUV_URL} + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/luv + DOWNLOAD_COMMAND ${CMAKE_COMMAND} + -DPREFIX=${DEPS_BUILD_DIR} + -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/luv + -DURL=${LUV_URL} + -DEXPECTED_SHA256=${LUV_SHA256} + -DTARGET=luv-static + # The source is shared with BuildLuarocks (with USE_BUNDLED_LUV). + -DSRC_DIR=${DEPS_BUILD_DIR}/src/luv + -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} + -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake + CONFIGURE_COMMAND "${LUV_CONFIGURE_COMMAND}" + BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG> + INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG> + LIST_SEPARATOR |) list(APPEND THIRD_PARTY_DEPS luv-static) if(USE_BUNDLED_LUAJIT) diff --git a/cmake.deps/cmake/BuildMsgpack.cmake b/cmake.deps/cmake/BuildMsgpack.cmake index ea3fa84d7b..f79117e4b1 100644 --- a/cmake.deps/cmake/BuildMsgpack.cmake +++ b/cmake.deps/cmake/BuildMsgpack.cmake @@ -1,36 +1,3 @@ -# BuildMsgpack(CONFIGURE_COMMAND ... BUILD_COMMAND ... INSTALL_COMMAND ...) -# Reusable function to build msgpack, wraps ExternalProject_Add. -# Failing to pass a command argument will result in no command being run -function(BuildMsgpack) - cmake_parse_arguments(_msgpack - "" - "" - "CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND" - ${ARGN}) - - if(NOT _msgpack_CONFIGURE_COMMAND AND NOT _msgpack_BUILD_COMMAND - AND NOT _msgpack_INSTALL_COMMAND) - message(FATAL_ERROR "Must pass at least one of CONFIGURE_COMMAND, BUILD_COMMAND, INSTALL_COMMAND") - endif() - - ExternalProject_Add(msgpack - PREFIX ${DEPS_BUILD_DIR} - URL ${MSGPACK_URL} - DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/msgpack - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/msgpack - -DURL=${MSGPACK_URL} - -DEXPECTED_SHA256=${MSGPACK_SHA256} - -DTARGET=msgpack - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake - CONFIGURE_COMMAND "${_msgpack_CONFIGURE_COMMAND}" - BUILD_COMMAND "${_msgpack_BUILD_COMMAND}" - INSTALL_COMMAND "${_msgpack_INSTALL_COMMAND}" - LIST_SEPARATOR |) -endfunction() - set(MSGPACK_CONFIGURE_COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/msgpack -DMSGPACK_BUILD_TESTS=OFF -DMSGPACK_BUILD_EXAMPLES=OFF @@ -40,9 +7,6 @@ set(MSGPACK_CONFIGURE_COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/msgpack "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1} -fPIC" -DCMAKE_GENERATOR=${CMAKE_GENERATOR}) -set(MSGPACK_BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE}) -set(MSGPACK_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}) - if(MSVC) # Same as Unix without fPIC set(MSGPACK_CONFIGURE_COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/msgpack @@ -58,8 +22,21 @@ if(MSVC) -DCMAKE_GENERATOR=${CMAKE_GENERATOR}) endif() -BuildMsgpack(CONFIGURE_COMMAND ${MSGPACK_CONFIGURE_COMMAND} - BUILD_COMMAND ${MSGPACK_BUILD_COMMAND} - INSTALL_COMMAND ${MSGPACK_INSTALL_COMMAND}) +ExternalProject_Add(msgpack + PREFIX ${DEPS_BUILD_DIR} + URL ${MSGPACK_URL} + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/msgpack + DOWNLOAD_COMMAND ${CMAKE_COMMAND} + -DPREFIX=${DEPS_BUILD_DIR} + -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/msgpack + -DURL=${MSGPACK_URL} + -DEXPECTED_SHA256=${MSGPACK_SHA256} + -DTARGET=msgpack + -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} + -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake + CONFIGURE_COMMAND "${MSGPACK_CONFIGURE_COMMAND}" + BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG> + INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG> + LIST_SEPARATOR |) list(APPEND THIRD_PARTY_DEPS msgpack) diff --git a/cmake.deps/cmake/BuildTreesitter.cmake b/cmake.deps/cmake/BuildTreesitter.cmake index 6d98f6179c..fe4e9e2c93 100644 --- a/cmake.deps/cmake/BuildTreesitter.cmake +++ b/cmake.deps/cmake/BuildTreesitter.cmake @@ -1,42 +1,5 @@ -# BuildTreeSitter(TARGET targetname CONFIGURE_COMMAND ... BUILD_COMMAND ... INSTALL_COMMAND ...) -function(BuildTreeSitter) - cmake_parse_arguments(_treesitter - "BUILD_IN_SOURCE" - "TARGET" - "CONFIGURE_COMMAND;BUILD_COMMAND;INSTALL_COMMAND" - ${ARGN}) - - if(NOT _treesitter_CONFIGURE_COMMAND AND NOT _treesitter_BUILD_COMMAND - AND NOT _treesitter_INSTALL_COMMAND) - message(FATAL_ERROR "Must pass at least one of CONFIGURE_COMMAND, BUILD_COMMAND, INSTALL_COMMAND") - endif() - if(NOT _treesitter_TARGET) - set(_treesitter_TARGET "tree-sitter") - endif() - - ExternalProject_Add(tree-sitter - PREFIX ${DEPS_BUILD_DIR} - URL ${TREESITTER_URL} - DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/tree-sitter - INSTALL_DIR ${DEPS_INSTALL_DIR} - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/tree-sitter - -DURL=${TREESITTER_URL} - -DEXPECTED_SHA256=${TREESITTER_SHA256} - -DTARGET=tree-sitter - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake - BUILD_IN_SOURCE ${_treesitter_BUILD_IN_SOURCE} - PATCH_COMMAND "" - CONFIGURE_COMMAND "${_treesitter_CONFIGURE_COMMAND}" - BUILD_COMMAND "${_treesitter_BUILD_COMMAND}" - INSTALL_COMMAND "${_treesitter_INSTALL_COMMAND}") -endfunction() - if(MSVC) - BuildTreeSitter(BUILD_IN_SOURCE - CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy + set(TREESITTER_CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cmake/TreesitterCMakeLists.txt ${DEPS_BUILD_DIR}/src/tree-sitter/CMakeLists.txt COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/tree-sitter/CMakeLists.txt @@ -44,16 +7,32 @@ if(MSVC) -DCMAKE_GENERATOR=${CMAKE_GENERATOR} -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} ${BUILD_TYPE_STRING} - -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} - BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} - INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE} - ) + -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}) + set(TREESITTER_BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>) + set(TREESITTER_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>) else() set(TS_CFLAGS "-O3 -Wall -Wextra") - BuildTreeSitter(BUILD_IN_SOURCE - CONFIGURE_COMMAND "" - BUILD_COMMAND ${MAKE_PRG} CC=${DEPS_C_COMPILER} CFLAGS=${TS_CFLAGS} - INSTALL_COMMAND ${MAKE_PRG} CC=${DEPS_C_COMPILER} PREFIX=${DEPS_INSTALL_DIR} install) + set(TREESITTER_BUILD_COMMAND ${MAKE_PRG} CC=${DEPS_C_COMPILER} CFLAGS=${TS_CFLAGS}) + set(TREESITTER_INSTALL_COMMAND + ${MAKE_PRG} CC=${DEPS_C_COMPILER} PREFIX=${DEPS_INSTALL_DIR} install) endif() +ExternalProject_Add(tree-sitter + PREFIX ${DEPS_BUILD_DIR} + URL ${TREESITTER_URL} + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/tree-sitter + INSTALL_DIR ${DEPS_INSTALL_DIR} + DOWNLOAD_COMMAND ${CMAKE_COMMAND} + -DPREFIX=${DEPS_BUILD_DIR} + -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/tree-sitter + -DURL=${TREESITTER_URL} + -DEXPECTED_SHA256=${TREESITTER_SHA256} + -DTARGET=tree-sitter + -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} + -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND "${TREESITTER_CONFIGURE_COMMAND}" + BUILD_COMMAND "${TREESITTER_BUILD_COMMAND}" + INSTALL_COMMAND "${TREESITTER_INSTALL_COMMAND}") + list(APPEND THIRD_PARTY_DEPS tree-sitter) diff --git a/cmake.deps/cmake/BuildTreesitterParsers.cmake b/cmake.deps/cmake/BuildTreesitterParsers.cmake index 1ff86e89b9..dd3f4eb308 100644 --- a/cmake.deps/cmake/BuildTreesitterParsers.cmake +++ b/cmake.deps/cmake/BuildTreesitterParsers.cmake @@ -1,29 +1,25 @@ -ExternalProject_Add(treesitter-c -PREFIX ${DEPS_BUILD_DIR} -URL ${TREESITTER_C_URL} -DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/treesitter-c -DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/treesitter-c - -DURL=${TREESITTER_C_URL} - -DEXPECTED_SHA256=${TREESITTER_C_SHA256} - -DTARGET=treesitter-c - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake -PATCH_COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/TreesitterParserCMakeLists.txt - ${DEPS_BUILD_DIR}/src/treesitter-c/CMakeLists.txt -CMAKE_ARGS - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_GENERATOR=${CMAKE_GENERATOR} - -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} - ${BUILD_TYPE_STRING} - -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} - -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_ALT_SEP} - # Pass toolchain - -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} - -DPARSERLANG=c +function(BuildTSParser LANG TS_URL TS_SHA256 TS_CMAKE_FILE) + set(NAME treesitter-${LANG}) + ExternalProject_Add(${NAME} + PREFIX ${DEPS_BUILD_DIR} + URL ${TREESITTER_C_URL} + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/${NAME} + DOWNLOAD_COMMAND ${CMAKE_COMMAND} + -DPREFIX=${DEPS_BUILD_DIR} + -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/${NAME} + -DURL=${TS_URL} + -DEXPECTED_SHA256=${TS_SHA256} + -DTARGET=${NAME} + -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} + -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake + PATCH_COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${TS_CMAKE_FILE} + ${DEPS_BUILD_DIR}/src/${NAME}/CMakeLists.txt + CMAKE_ARGS + -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} + -DPARSERLANG=${LANG}) +endfunction() -BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} -INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE} -LIST_SEPARATOR |) +BuildTSParser(c ${TREESITTER_C_URL} ${TREESITTER_C_SHA256} TreesitterParserCMakeLists.txt) +BuildTSParser(lua ${TREESITTER_LUA_URL} ${TREESITTER_LUA_SHA256} TreesitterParserCMakeLists.txt) +BuildTSParser(vim ${TREESITTER_VIM_URL} ${TREESITTER_VIM_SHA256} TreesitterParserCMakeLists.txt) diff --git a/cmake.deps/cmake/BuildUnibilium.cmake b/cmake.deps/cmake/BuildUnibilium.cmake index fd5d68f9a8..020f01ba0b 100644 --- a/cmake.deps/cmake/BuildUnibilium.cmake +++ b/cmake.deps/cmake/BuildUnibilium.cmake @@ -1,48 +1,37 @@ if(WIN32) - ExternalProject_Add(unibilium - PREFIX ${DEPS_BUILD_DIR} - URL ${UNIBILIUM_URL} - DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/unibilium - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/unibilium - -DURL=${UNIBILIUM_URL} - -DEXPECTED_SHA256=${UNIBILIUM_SHA256} - -DTARGET=unibilium - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake - CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy + set(UNIBILIUM_CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cmake/UnibiliumCMakeLists.txt ${DEPS_BUILD_DIR}/src/unibilium/CMakeLists.txt - COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/unibilium - -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} - # Pass toolchain - -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN} - -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} - ${BUILD_TYPE_STRING} - -DCMAKE_GENERATOR=${CMAKE_GENERATOR} - BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} - INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}) + COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/unibilium + -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} + # Pass toolchain + -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN} + -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} + ${BUILD_TYPE_STRING} + -DCMAKE_GENERATOR=${CMAKE_GENERATOR}) + set(UNIBILIUM_BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>) + set(UNIBILIUM_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config $<CONFIG>) else() - ExternalProject_Add(unibilium - PREFIX ${DEPS_BUILD_DIR} - URL ${UNIBILIUM_URL} - DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/unibilium - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/unibilium - -DURL=${UNIBILIUM_URL} - -DEXPECTED_SHA256=${UNIBILIUM_SHA256} - -DTARGET=unibilium - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake - CONFIGURE_COMMAND "" - BUILD_IN_SOURCE 1 - BUILD_COMMAND ${MAKE_PRG} CC=${DEPS_C_COMPILER} - PREFIX=${DEPS_INSTALL_DIR} - CFLAGS=-fPIC - LDFLAGS+=-static - INSTALL_COMMAND ${MAKE_PRG} PREFIX=${DEPS_INSTALL_DIR} install) + set(UNIBILIUM_BUILD_COMMAND ${MAKE_PRG} CC=${DEPS_C_COMPILER} + PREFIX=${DEPS_INSTALL_DIR} CFLAGS=-fPIC LDFLAGS+=-static + BUILD_IN_SOURCE 1) + set(UNIBILIUM_INSTALL_COMMAND ${MAKE_PRG} PREFIX=${DEPS_INSTALL_DIR} install) endif() +ExternalProject_Add(unibilium + PREFIX ${DEPS_BUILD_DIR} + URL ${UNIBILIUM_URL} + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/unibilium + DOWNLOAD_COMMAND ${CMAKE_COMMAND} + -DPREFIX=${DEPS_BUILD_DIR} + -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/unibilium + -DURL=${UNIBILIUM_URL} + -DEXPECTED_SHA256=${UNIBILIUM_SHA256} + -DTARGET=unibilium + -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} + -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake + CONFIGURE_COMMAND "${UNIBILIUM_CONFIGURE_COMMAND}" + BUILD_COMMAND "${UNIBILIUM_BUILD_COMMAND}" + INSTALL_COMMAND "${UNIBILIUM_INSTALL_COMMAND}") + list(APPEND THIRD_PARTY_DEPS unibilium) diff --git a/cmake.deps/cmake/TreesitterParserCMakeLists.txt b/cmake.deps/cmake/TreesitterParserCMakeLists.txt index 54bc35fb8a..be07f00a37 100644 --- a/cmake.deps/cmake/TreesitterParserCMakeLists.txt +++ b/cmake.deps/cmake/TreesitterParserCMakeLists.txt @@ -1,10 +1,12 @@ cmake_minimum_required(VERSION 3.10) -# some parsers have c++ scanner, problem? -project(parser C) # CXX +project(parser C) + +set(CMAKE_C_STANDARD 99) +file(GLOB source_files src/*.c) add_library(parser MODULE - src/parser.c + ${source_files} ) set_target_properties( parser diff --git a/cmake.deps/patches/libvterm-Remove-VLAs-for-MSVC.patch b/cmake.deps/patches/libvterm-Remove-VLAs-for-MSVC.patch deleted file mode 100644 index e999c0fa9b..0000000000 --- a/cmake.deps/patches/libvterm-Remove-VLAs-for-MSVC.patch +++ /dev/null @@ -1,50 +0,0 @@ -From eb386b1d82f7d07363c9133b7aa06902ccd555fe Mon Sep 17 00:00:00 2001 -Date: Tue, 27 Feb 2018 17:54:20 -0600 -Subject: [PATCH] Remove VLAs for MSVC - -VLAs are replaced with calls to _alloca() because MSVC does not support them. ---- - src/state.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/src/state.c b/src/state.c -index 84299df..f9aabb3 100644 ---- a/src/state.c -+++ b/src/state.c -@@ -1,5 +1,6 @@ - #include "vterm_internal.h" - -+#include <malloc.h> - #include <stdio.h> - #include <string.h> - -@@ -236,7 +237,7 @@ static int on_text(const char bytes[], size_t len, void *user) - VTermPos oldpos = state->pos; - - // We'll have at most len codepoints -- uint32_t codepoints[len]; -+ uint32_t* codepoints = _alloca(len * sizeof(uint32_t)); - int npoints = 0; - size_t eaten = 0; - -@@ -313,7 +314,7 @@ static int on_text(const char bytes[], size_t len, void *user) - - int width = 0; - -- uint32_t chars[glyph_ends - glyph_starts + 1]; -+ uint32_t* chars = _alloca((glyph_ends - glyph_starts + 1) * sizeof(uint32_t)); - - for( ; i < glyph_ends; i++) { - chars[i - glyph_starts] = codepoints[i]; -@@ -512,7 +513,7 @@ static int settermprop_int(VTermState *state, VTermProp prop, int v) - - static int settermprop_string(VTermState *state, VTermProp prop, const char *str, size_t len) - { -- char strvalue[len+1]; -+ char* strvalue = _alloca(len+1); - strncpy(strvalue, str, len); - strvalue[len] = 0; - --- -2.16.1.windows.4 - |