diff options
author | Josh Rahm <rahm@google.com> | 2022-10-11 19:00:52 +0000 |
---|---|---|
committer | Josh Rahm <rahm@google.com> | 2022-10-11 19:00:52 +0000 |
commit | 21e2e46242033c7aaa6ccfb23e256680816c063c (patch) | |
tree | f089522cfb145d6e9c8a86a01d8e454ce5501e20 /cmake.deps/cmake | |
parent | 179d3ed87b17988f5fe00d8b99f2611a28212be7 (diff) | |
parent | 760b399f6c0c6470daa0663752bd22886997f9e6 (diff) | |
download | rneovim-floattitle.tar.gz rneovim-floattitle.tar.bz2 rneovim-floattitle.zip |
Merge remote-tracking branch 'upstream/master' into floattitlefloattitle
Diffstat (limited to 'cmake.deps/cmake')
-rw-r--r-- | cmake.deps/cmake/BuildGettext.cmake | 20 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLibiconv.cmake | 20 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLibtermkey.cmake | 60 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLibuv.cmake | 21 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLibvterm.cmake | 66 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLua.cmake | 55 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLuajit.cmake | 14 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLuarocks.cmake | 105 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildLuv.cmake | 92 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildMsgpack.cmake | 54 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildTreesitter.cmake | 67 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildTreesitterParsers.cmake | 51 | ||||
-rw-r--r-- | cmake.deps/cmake/BuildUnibilium.cmake | 65 | ||||
-rw-r--r-- | cmake.deps/cmake/DownloadAndExtractFile.cmake | 195 | ||||
-rw-r--r-- | cmake.deps/cmake/GetBinaryDeps.cmake | 14 | ||||
-rw-r--r-- | cmake.deps/cmake/LibvtermCMakeLists.txt | 8 | ||||
-rw-r--r-- | cmake.deps/cmake/TargetArch.cmake | 23 | ||||
-rw-r--r-- | cmake.deps/cmake/TreesitterParserCMakeLists.txt | 8 |
18 files changed, 230 insertions, 708 deletions
diff --git a/cmake.deps/cmake/BuildGettext.cmake b/cmake.deps/cmake/BuildGettext.cmake index f36c00c559..aecd5da626 100644 --- a/cmake.deps/cmake/BuildGettext.cmake +++ b/cmake.deps/cmake/BuildGettext.cmake @@ -1,30 +1,24 @@ if(MSVC) + if(USE_EXISTING_SRC_DIR) + unset(GETTEXT_URL) + endif() ExternalProject_Add(gettext - PREFIX ${DEPS_BUILD_DIR} URL ${GETTEXT_URL} + URL_HASH SHA256=${GETTEXT_SHA256} + DOWNLOAD_NO_PROGRESS TRUE DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/gettext - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/gettext - -DURL=${GETTEXT_URL} - -DEXPECTED_SHA256=${GETTEXT_SHA256} - -DTARGET=gettext - -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/GettextCMakeLists.txt ${DEPS_BUILD_DIR}/src/gettext/CMakeLists.txt COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/gettext -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} - # Pass toolchain - -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN} ${BUILD_TYPE_STRING} -DCMAKE_GENERATOR=${CMAKE_GENERATOR} -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..26d9b02e77 100644 --- a/cmake.deps/cmake/BuildLibiconv.cmake +++ b/cmake.deps/cmake/BuildLibiconv.cmake @@ -1,28 +1,22 @@ if(MSVC) + if(USE_EXISTING_SRC_DIR) + unset(LIBICONV_URL) + endif() ExternalProject_Add(libiconv - PREFIX ${DEPS_BUILD_DIR} URL ${LIBICONV_URL} + URL_HASH SHA256=${LIBICONV_SHA256} + DOWNLOAD_NO_PROGRESS TRUE DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libiconv - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/libiconv - -DURL=${LIBICONV_URL} - -DEXPECTED_SHA256=${LIBICONV_SHA256} - -DTARGET=libiconv - -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/LibiconvCMakeLists.txt ${DEPS_BUILD_DIR}/src/libiconv/CMakeLists.txt COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/libiconv -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} - # Pass toolchain - -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN} ${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..1e0fb5d36a 100644 --- a/cmake.deps/cmake/BuildLibtermkey.cmake +++ b/cmake.deps/cmake/BuildLibtermkey.cmake @@ -1,57 +1,37 @@ 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} - # Pass toolchain - -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN} ${BUILD_TYPE_STRING} # Hack to avoid -rdynamic in Mingw -DCMAKE_SHARED_LIBRARY_LINK_C_FLAGS="" -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() + +if(USE_EXISTING_SRC_DIR) + unset(LIBTERMKEY_URL) +endif() ExternalProject_Add(libtermkey - PREFIX ${DEPS_BUILD_DIR} URL ${LIBTERMKEY_URL} + URL_HASH SHA256=${LIBTERMKEY_SHA256} + DOWNLOAD_NO_PROGRESS TRUE 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() + 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/BuildLibuv.cmake b/cmake.deps/cmake/BuildLibuv.cmake index aee3b9a43f..c21e166d95 100644 --- a/cmake.deps/cmake/BuildLibuv.cmake +++ b/cmake.deps/cmake/BuildLibuv.cmake @@ -1,26 +1,19 @@ +if(USE_EXISTING_SRC_DIR) + unset(LIBUV_URL) +endif() ExternalProject_Add(libuv - PREFIX ${DEPS_BUILD_DIR} URL ${LIBUV_URL} + URL_HASH SHA256=${LIBUV_SHA256} + DOWNLOAD_NO_PROGRESS TRUE CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} -DCMAKE_INSTALL_LIBDIR=lib -DBUILD_TESTING=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DLIBUV_BUILD_SHARED=OFF + ${BUILD_TYPE_STRING} CMAKE_CACHE_ARGS -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libuv - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/libuv - -DURL=${LIBUV_URL} - -DEXPECTED_SHA256=${LIBUV_SHA256} - -DTARGET=libuv - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake - PATCH_COMMAND - ${GIT_EXECUTABLE} -C ${DEPS_BUILD_DIR}/src/libuv init - COMMAND ${GIT_EXECUTABLE} -C ${DEPS_BUILD_DIR}/src/libuv apply --ignore-whitespace - ${CMAKE_CURRENT_SOURCE_DIR}/patches/libuv-disable-shared.patch) + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libuv) list(APPEND THIRD_PARTY_DEPS libuv) diff --git a/cmake.deps/cmake/BuildLibvterm.cmake b/cmake.deps/cmake/BuildLibvterm.cmake index a905733abc..dffa545638 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,11 @@ 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") + if(NOT MSVC) + list(APPEND LIBVTERM_CONFIGURE_COMMAND "-DCMAKE_C_FLAGS:STRING=-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 +24,17 @@ else() install) endif() -BuildLibvterm(PATCH_COMMAND ${LIBVTERM_PATCH_COMMAND} - CONFIGURE_COMMAND ${LIBVTERM_CONFIGURE_COMMAND} - BUILD_COMMAND ${LIBVTERM_BUILD_COMMAND} - INSTALL_COMMAND ${LIBVTERM_INSTALL_COMMAND}) +if(USE_EXISTING_SRC_DIR) + unset(LIBVTERM_URL) +endif() +ExternalProject_Add(libvterm + URL ${LIBVTERM_URL} + URL_HASH SHA256=${LIBVTERM_SHA256} + DOWNLOAD_NO_PROGRESS TRUE + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libvterm + 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..b5ac8368a6 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") @@ -61,7 +28,7 @@ if(CLANG_ASAN_UBSAN) endif() set(LUA_CONFIGURE_COMMAND - sed -e "/^CC/s@gcc@${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1}@" + sed -e "/^CC/s@gcc@${CMAKE_C_COMPILER}@" -e "/^CFLAGS/s@-O2@${LUA_CFLAGS}@" -e "/^MYLDFLAGS/s@$@${LUA_LDFLAGS}@" -e "s@-lreadline@@g" @@ -72,16 +39,22 @@ 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}) +if(USE_EXISTING_SRC_DIR) + unset(LUA_URL) +endif() +ExternalProject_Add(lua + URL ${LUA_URL} + URL_HASH SHA256=${LUA_SHA256} + DOWNLOAD_NO_PROGRESS TRUE + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua + 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/BuildLuajit.cmake b/cmake.deps/cmake/BuildLuajit.cmake index 9b393310d6..1476ac31f4 100644 --- a/cmake.deps/cmake/BuildLuajit.cmake +++ b/cmake.deps/cmake/BuildLuajit.cmake @@ -15,18 +15,14 @@ function(BuildLuajit) set(_luajit_TARGET "luajit") endif() + if(USE_EXISTING_SRC_DIR) + unset(LUAJIT_URL) + endif() ExternalProject_Add(${_luajit_TARGET} - PREFIX ${DEPS_BUILD_DIR} URL ${LUAJIT_URL} + URL_HASH SHA256=${LUAJIT_SHA256} + DOWNLOAD_NO_PROGRESS TRUE DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/luajit - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/luajit - -DURL=${LUAJIT_URL} - -DEXPECTED_SHA256=${LUAJIT_SHA256} - -DTARGET=${_luajit_TARGET} - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake CONFIGURE_COMMAND "${_luajit_CONFIGURE_COMMAND}" BUILD_IN_SOURCE 1 BUILD_COMMAND "${_luajit_BUILD_COMMAND}" diff --git a/cmake.deps/cmake/BuildLuarocks.cmake b/cmake.deps/cmake/BuildLuarocks.cmake index 73f3331176..d0b4a8e7d1 100644 --- a/cmake.deps/cmake/BuildLuarocks.cmake +++ b/cmake.deps/cmake/BuildLuarocks.cmake @@ -1,55 +1,18 @@ -# Luarocks recipe. Luarocks is only required when building Neovim, when -# cross compiling we still want to build for the HOST system, whenever -# writing a recipe that is meant for cross-compile, use the HOSTDEPS_* variables -# instead of DEPS_* - check the main CMakeLists.txt for a list. -# +# Luarocks recipe. Luarocks is only required when building Neovim. # NOTE: LuaRocks rocks need to "DEPENDS" on the previous module, because # running luarocks in parallel will break, e.g. when some rocks have # the same dependency.. 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) +set(LUAROCKS_BINARY ${DEPS_BIN_DIR}/luarocks) # Arguments for calls to 'luarocks build' 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 CC=${HOSTDEPS_C_COMPILER} LD=${HOSTDEPS_C_COMPILER}) + set(LUAROCKS_BUILDARGS CC=${DEPS_C_COMPILER} LD=${DEPS_C_COMPILER}) endif() # Lua version, used with rocks directories. @@ -60,12 +23,12 @@ if(UNIX) if(USE_BUNDLED_LUAJIT) list(APPEND LUAROCKS_OPTS - --with-lua=${HOSTDEPS_INSTALL_DIR} - --with-lua-include=${HOSTDEPS_INSTALL_DIR}/include/luajit-2.1 + --with-lua=${DEPS_INSTALL_DIR} + --with-lua-include=${DEPS_INSTALL_DIR}/include/luajit-2.1 --with-lua-interpreter=luajit) elseif(USE_BUNDLED_LUA) list(APPEND LUAROCKS_OPTS - --with-lua=${HOSTDEPS_INSTALL_DIR}) + --with-lua=${DEPS_INSTALL_DIR}) else() find_package(LuaJit) if(LUAJIT_FOUND) @@ -90,10 +53,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=${DEPS_INSTALL_DIR} --force-config ${LUAROCKS_OPTS}) + set(LUAROCKS_INSTALL_COMMAND ${MAKE_PRG} -j1 bootstrap) elseif(MSVC OR MINGW) if(MINGW) @@ -103,7 +65,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 +81,19 @@ else() message(FATAL_ERROR "Trying to build luarocks in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}") endif() +if(USE_EXISTING_SRC_DIR) + unset(LUAROCKS_URL) +endif() +ExternalProject_Add(luarocks + URL ${LUAROCKS_URL} + URL_HASH SHA256=${LUAROCKS_SHA256} + DOWNLOAD_NO_PROGRESS TRUE + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/luarocks + 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) @@ -126,20 +101,18 @@ if(USE_BUNDLED_LUAJIT) elseif(USE_BUNDLED_LUA) add_dependencies(luarocks lua) endif() -set(ROCKS_DIR ${HOSTDEPS_LIB_DIR}/luarocks/rocks-${LUA_VERSION}) +set(ROCKS_DIR ${DEPS_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 +120,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,29 +135,26 @@ 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) # busted if(WIN32) - set(BUSTED_EXE "${HOSTDEPS_BIN_DIR}/busted.bat") - set(LUACHECK_EXE "${HOSTDEPS_BIN_DIR}/luacheck.bat") + set(BUSTED_EXE "${DEPS_BIN_DIR}/busted.bat") + set(LUACHECK_EXE "${DEPS_BIN_DIR}/luacheck.bat") else() - set(BUSTED_EXE "${HOSTDEPS_BIN_DIR}/busted") - set(LUACHECK_EXE "${HOSTDEPS_BIN_DIR}/luacheck") + set(BUSTED_EXE "${DEPS_BIN_DIR}/busted") + set(LUACHECK_EXE "${DEPS_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 +164,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 +172,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..1a599a9ee2 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") @@ -94,8 +40,7 @@ if(MSVC) ${LUV_CONFIGURE_COMMAND_COMMON} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} - # Same as Unix without fPIC - "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1} ${LUV_INCLUDE_FLAGS}" + "-DCMAKE_C_FLAGS:STRING=${LUV_INCLUDE_FLAGS}" # Make sure we use the same generator, otherwise we may # accidentally end up using different MSVC runtimes -DCMAKE_GENERATOR=${CMAKE_GENERATOR}) @@ -103,22 +48,39 @@ else() set(LUV_CONFIGURE_COMMAND ${LUV_CONFIGURE_COMMAND_COMMON} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1} ${LUV_INCLUDE_FLAGS} -fPIC") + "-DCMAKE_C_FLAGS:STRING=${LUV_INCLUDE_FLAGS} -fPIC") if(CMAKE_GENERATOR MATCHES "Unix Makefiles" AND (CMAKE_SYSTEM_NAME MATCHES ".*BSD" OR CMAKE_SYSTEM_NAME MATCHES "DragonFly")) set(LUV_CONFIGURE_COMMAND ${LUV_CONFIGURE_COMMAND} -DCMAKE_MAKE_PROGRAM=gmake) 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}) +if(USE_EXISTING_SRC_DIR) + unset(LUA_COMPAT53_URL) +endif() +ExternalProject_Add(lua-compat-5.3 + URL ${LUA_COMPAT53_URL} + URL_HASH SHA256=${LUA_COMPAT53_SHA256} + DOWNLOAD_NO_PROGRESS TRUE + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/lua-compat-5.3 + 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}) +if(USE_EXISTING_SRC_DIR) + unset(LUV_URL) +endif() +ExternalProject_Add(luv-static + DEPENDS lua-compat-5.3 + URL ${LUV_URL} + URL_HASH SHA256=${LUV_SHA256} + DOWNLOAD_NO_PROGRESS TRUE + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/luv + SOURCE_DIR ${DEPS_BUILD_DIR}/src/luv + 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..b59d98159d 100644 --- a/cmake.deps/cmake/BuildMsgpack.cmake +++ b/cmake.deps/cmake/BuildMsgpack.cmake @@ -1,48 +1,12 @@ -# 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 -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_ALT_SEP} - "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1} -fPIC" + "-DCMAKE_C_FLAGS:STRING=-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 @@ -52,14 +16,22 @@ if(MSVC) -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} ${BUILD_TYPE_STRING} - "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1}" # Make sure we use the same generator, otherwise we may # accidentally end up using different MSVC runtimes -DCMAKE_GENERATOR=${CMAKE_GENERATOR}) endif() -BuildMsgpack(CONFIGURE_COMMAND ${MSGPACK_CONFIGURE_COMMAND} - BUILD_COMMAND ${MSGPACK_BUILD_COMMAND} - INSTALL_COMMAND ${MSGPACK_INSTALL_COMMAND}) +if(USE_EXISTING_SRC_DIR) + unset(MSGPACK_URL) +endif() +ExternalProject_Add(msgpack + URL ${MSGPACK_URL} + URL_HASH SHA256=${MSGPACK_SHA256} + DOWNLOAD_NO_PROGRESS TRUE + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/msgpack + 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..c3ea02014f 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,28 @@ 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() + +if(USE_EXISTING_SRC_DIR) + unset(TREESITTER_URL) endif() +ExternalProject_Add(tree-sitter + URL ${TREESITTER_URL} + URL_HASH SHA256=${TREESITTER_SHA256} + DOWNLOAD_NO_PROGRESS TRUE + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/tree-sitter + INSTALL_DIR ${DEPS_INSTALL_DIR} + 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..ead039aae6 100644 --- a/cmake.deps/cmake/BuildTreesitterParsers.cmake +++ b/cmake.deps/cmake/BuildTreesitterParsers.cmake @@ -1,29 +1,24 @@ -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}) + if(USE_EXISTING_SRC_DIR) + unset(TS_URL) + endif() + ExternalProject_Add(${NAME} + URL ${TS_URL} + URL_HASH SHA256=${TS_SHA256} + DOWNLOAD_NO_PROGRESS TRUE + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/${NAME} + CMAKE_CACHE_ARGS + -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} + 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) +BuildTSParser(help ${TREESITTER_HELP_URL} ${TREESITTER_HELP_SHA256} TreesitterParserCMakeLists.txt) diff --git a/cmake.deps/cmake/BuildUnibilium.cmake b/cmake.deps/cmake/BuildUnibilium.cmake index fd5d68f9a8..cc56499edb 100644 --- a/cmake.deps/cmake/BuildUnibilium.cmake +++ b/cmake.deps/cmake/BuildUnibilium.cmake @@ -1,48 +1,31 @@ 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} + -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() +if(USE_EXISTING_SRC_DIR) + unset(UNIBILIUM_URL) +endif() +ExternalProject_Add(unibilium + URL ${UNIBILIUM_URL} + URL_HASH SHA256=${UNIBILIUM_SHA256} + DOWNLOAD_NO_PROGRESS TRUE + DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/unibilium + 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/DownloadAndExtractFile.cmake b/cmake.deps/cmake/DownloadAndExtractFile.cmake deleted file mode 100644 index abb1ddc81a..0000000000 --- a/cmake.deps/cmake/DownloadAndExtractFile.cmake +++ /dev/null @@ -1,195 +0,0 @@ -if(NOT DEFINED PREFIX) - message(FATAL_ERROR "PREFIX must be defined.") -endif() - -if(NOT DEFINED URL) - message(FATAL_ERROR "URL must be defined.") -endif() - -if(NOT DEFINED DOWNLOAD_DIR) - message(FATAL_ERROR "DOWNLOAD_DIR must be defined.") -endif() - -if(NOT DEFINED EXPECTED_SHA256) - message(FATAL_ERROR "EXPECTED_SHA256 must be defined.") -endif() - -if(NOT DEFINED TARGET) - message(FATAL_ERROR "TARGET must be defined.") -endif() - -if(NOT DEFINED SRC_DIR) - set(SRC_DIR ${PREFIX}/src/${TARGET}) -endif() -set(BINARY_DIR ${PREFIX}/src/${TARGET}-build) - -# Check whether the source has been downloaded. If true, skip it. -# Useful for external downloads like homebrew. -if(USE_EXISTING_SRC_DIR) - if(EXISTS "${SRC_DIR}" AND IS_DIRECTORY "${SRC_DIR}") - file(GLOB EXISTED_FILES "${SRC_DIR}/*") - if(EXISTED_FILES) - message(STATUS "${SRC_DIR} is found and not empty, skipping download and extraction. ") - return() - endif() - endif() - message(FATAL_ERROR "USE_EXISTING_SRC_DIR set to ON, but '${SRC_DIR}' does not exist or is empty.") -endif() - -# Taken from ExternalProject_Add. Let's hope we can drop this one day when -# ExternalProject_Add allows you to disable SHOW_PROGRESS on the file download. -if(TIMEOUT) - set(timeout_args TIMEOUT ${timeout}) - set(timeout_msg "${timeout} seconds") -else() - set(timeout_args "") - set(timeout_msg "none") -endif() - -string(REGEX MATCH "[^/\\?]*$" fname "${URL}") -if(NOT "${fname}" MATCHES "(\\.|=)(bz2|tar|tgz|tar\\.gz|zip)$") - string(REGEX MATCH "([^/\\?]+(\\.|=)(bz2|tar|tgz|tar\\.gz|zip))/.*$" match_result "${URL}") - set(fname "${CMAKE_MATCH_1}") -endif() -if(NOT "${fname}" MATCHES "(\\.|=)(bz2|tar|tgz|tar\\.gz|zip)$") - message(FATAL_ERROR "Could not extract tarball filename from url:\n ${url}") -endif() -string(REPLACE ";" "-" fname "${fname}") - -set(file ${DOWNLOAD_DIR}/${fname}) -message(STATUS "file: ${file}") - -set(EXISTING_SHA256 "") -if(EXISTS ${file}) - file(SHA256 ${file} EXISTING_SHA256) -endif() - -if(NOT EXISTING_SHA256 STREQUAL ${EXPECTED_SHA256}) - message(STATUS "downloading... - src='${URL}' - dst='${file}' - timeout='${timeout_msg}'") - - file(DOWNLOAD ${URL} ${file} - ${timeout_args} - ${hash_args} - STATUS status - LOG log) - - list(GET status 0 status_code) - list(GET status 1 status_string) - - if(NOT status_code EQUAL 0) - # Retry on certain errors, e.g. CURLE_COULDNT_RESOLVE_HOST, which is often - # seen with libtermkey (www.leonerd.org.uk). - if((status_code EQUAL 6) # "Couldn't resolve host name" - OR (status_code EQUAL 7)) # "Couldn't connect to server" - message(STATUS "warning: retrying '${URL}' (${status_string}, status ${status_code})") - execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 10) - file(DOWNLOAD ${URL} ${file} - ${timeout_args} - ${hash_args} - STATUS status - LOG log) - list(GET status 0 status_code) - list(GET status 1 status_string) - endif() - if(NOT status_code EQUAL 0) - message(FATAL_ERROR "error: downloading '${URL}' failed - status_code: ${status_code} - status_string: ${status_string} - log: ${log} - ") - endif() - endif() -endif() - -set(NULL_SHA256 "0000000000000000000000000000000000000000000000000000000000000000") - -# Allow users to use "SKIP" or "skip" as the sha256 to skip checking the hash. -# You can still use the all zeros hash too. -if((EXPECTED_SHA256 STREQUAL "SKIP") OR (EXPECTED_SHA256 STREQUAL "skip")) - set(EXPECTED_SHA256 ${NULL_SHA256}) -endif() - -# We could avoid computing the SHA256 entirely if a NULL_SHA256 was given, -# but we want to warn users of an empty file. -file(SHA256 ${file} ACTUAL_SHA256) -if(ACTUAL_SHA256 STREQUAL "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") - # File was empty. It's likely due to lack of SSL support. - message(FATAL_ERROR - "Failed to download ${URL}. The file is empty and likely means CMake " - "was built without SSL support. Please use a version of CMake with " - "proper SSL support. See " - "https://github.com/neovim/neovim/wiki/Building-Neovim#build-prerequisites " - "for more information.") -elseif((NOT EXPECTED_SHA256 STREQUAL NULL_SHA256) AND - (NOT EXPECTED_SHA256 STREQUAL ACTUAL_SHA256)) - # Wasn't a NULL SHA256 and we didn't match, so we fail. - message(FATAL_ERROR - "Failed to download ${URL}. Expected a SHA256 of " - "${EXPECTED_SHA256} but got ${ACTUAL_SHA256} instead.") -endif() - -message(STATUS "downloading... done") - -# Slurped from a generated extract-TARGET.cmake file. -message(STATUS "extracting... - src='${file}' - dst='${SRC_DIR}'") - -if(NOT EXISTS "${file}") - message(FATAL_ERROR "error: file to extract does not exist: '${file}'") -endif() - -# Prepare a space for extracting: -# -set(i 1234) -while(EXISTS "${SRC_DIR}/../ex-${TARGET}${i}") - math(EXPR i "${i} + 1") -endwhile() -set(ut_dir "${SRC_DIR}/../ex-${TARGET}${i}") -file(MAKE_DIRECTORY "${ut_dir}") - -# Extract it: -# -message(STATUS "extracting... [tar xfz]") -execute_process(COMMAND ${CMAKE_COMMAND} -E tar xfz ${file} - WORKING_DIRECTORY ${ut_dir} - RESULT_VARIABLE rv) - -if(NOT rv EQUAL 0) - message(STATUS "extracting... [error clean up]") - file(REMOVE_RECURSE "${ut_dir}") - message(FATAL_ERROR "error: extract of '${file}' failed") -endif() - -# Analyze what came out of the tar file: -# -message(STATUS "extracting... [analysis]") -file(GLOB contents "${ut_dir}/*") -list(LENGTH contents n) -if(NOT n EQUAL 1 OR NOT IS_DIRECTORY "${contents}") - set(contents "${ut_dir}") -endif() - -# Move "the one" directory to the final directory: -# -message(STATUS "extracting... [rename]") -file(REMOVE_RECURSE ${SRC_DIR}) -get_filename_component(contents ${contents} ABSOLUTE) -file(RENAME ${contents} ${SRC_DIR}) - -# Remove any existing BINARY_DIR, to force a new build. -# Without this a necessary output (e.g. libluv.a) might not be updated/installed. -# -message(STATUS "extracting... [clean binary dir]") -file(REMOVE_RECURSE ${BINARY_DIR}) -file(MAKE_DIRECTORY ${BINARY_DIR}) - -# Clean up: -# -message(STATUS "extracting... [clean up]") -file(REMOVE_RECURSE "${ut_dir}") - -message(STATUS "extracting... done") diff --git a/cmake.deps/cmake/GetBinaryDeps.cmake b/cmake.deps/cmake/GetBinaryDeps.cmake index 04e3f95a29..da4376998b 100644 --- a/cmake.deps/cmake/GetBinaryDeps.cmake +++ b/cmake.deps/cmake/GetBinaryDeps.cmake @@ -22,18 +22,14 @@ function(GetBinaryDep) message(FATAL_ERROR "${URL_VARNAME} and ${HASH_VARNAME} must be set") endif() + if(USE_EXISTING_SRC_DIR) + unset(URL) + endif() ExternalProject_Add(${_gettool_TARGET} - PREFIX ${DEPS_BUILD_DIR} URL ${URL} + URL_HASH SHA256=${HASH} + DOWNLOAD_NO_PROGRESS TRUE DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR} - DOWNLOAD_COMMAND ${CMAKE_COMMAND} - -DPREFIX=${DEPS_BUILD_DIR} - -DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR} - -DURL=${URL} - -DEXPECTED_SHA256=${HASH} - -DTARGET=${_gettool_TARGET} - -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} - -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake CONFIGURE_COMMAND "" BUILD_IN_SOURCE 1 BUILD_COMMAND "" diff --git a/cmake.deps/cmake/LibvtermCMakeLists.txt b/cmake.deps/cmake/LibvtermCMakeLists.txt index ff1d2d6b79..d7ec9eacad 100644 --- a/cmake.deps/cmake/LibvtermCMakeLists.txt +++ b/cmake.deps/cmake/LibvtermCMakeLists.txt @@ -41,14 +41,6 @@ file(GLOB VTERM_SOURCES ${CMAKE_SOURCE_DIR}/src/*.c) add_library(vterm ${VTERM_SOURCES} ${TBL_FILES_HEADERS}) install(TARGETS vterm ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) -add_library(vterm-shared SHARED ${VTERM_SOURCES} ${TBL_FILES_HEADERS}) -set_target_properties(vterm-shared PROPERTIES - OUTPUT_NAME vterm - SOVERSION 0) -install(TARGETS vterm-shared - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(FILES include/vterm.h include/vterm_keycodes.h DESTINATION include) diff --git a/cmake.deps/cmake/TargetArch.cmake b/cmake.deps/cmake/TargetArch.cmake deleted file mode 100644 index 71ea44ec59..0000000000 --- a/cmake.deps/cmake/TargetArch.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# Sets TARGET_ARCH to a normalized name (X86 or X86_64). -# See https://github.com/axr/solar-cmake/blob/master/TargetArch.cmake -include(CheckSymbolExists) - -# X86 -check_symbol_exists("_M_IX86" "" T_M_IX86) -check_symbol_exists("__i386__" "" T_I386) -if(T_M_IX86 OR T_I386) -set(TARGET_ARCH "X86") - return() -endif() - -# X86_64 -check_symbol_exists("_M_AMD64" "" T_M_AMD64) -check_symbol_exists("__x86_64__" "" T_X86_64) -check_symbol_exists("__amd64__" "" T_AMD64) - -if(T_M_AMD64 OR T_X86_64 OR T_AMD64) -set(TARGET_ARCH "X86_64") - return() -endif() - -message(FATAL_ERROR "Unknown target architecture") 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 |