diff options
Diffstat (limited to 'third-party')
-rw-r--r-- | third-party/CMakeLists.txt | 68 | ||||
-rw-r--r-- | third-party/cmake/BuildGettext.cmake | 4 | ||||
-rw-r--r-- | third-party/cmake/BuildLibtermkey.cmake | 1 | ||||
-rw-r--r-- | third-party/cmake/BuildLibvterm.cmake | 2 | ||||
-rw-r--r-- | third-party/cmake/BuildLuajit.cmake | 22 | ||||
-rw-r--r-- | third-party/cmake/BuildLuarocks.cmake | 34 | ||||
-rw-r--r-- | third-party/cmake/BuildLuv.cmake | 31 | ||||
-rw-r--r-- | third-party/cmake/BuildMsgpack.cmake | 2 | ||||
-rw-r--r-- | third-party/cmake/BuildTreesitterParsers.cmake | 27 | ||||
-rw-r--r-- | third-party/cmake/BuildUnibilium.cmake | 1 | ||||
-rw-r--r-- | third-party/cmake/DownloadAndExtractFile.cmake | 3 | ||||
-rw-r--r-- | third-party/cmake/GettextCMakeLists.txt | 278 | ||||
-rw-r--r-- | third-party/cmake/TreesitterParserCMakeLists.txt | 19 | ||||
-rw-r--r-- | third-party/patches/gettext-Fix-building-with-MSVC.patch | 50 | ||||
-rw-r--r-- | third-party/patches/gettext-Fix-compilation-on-a-system-without-alloca.patch | 28 |
15 files changed, 320 insertions, 250 deletions
diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt index 43cad34aae..477e25a882 100644 --- a/third-party/CMakeLists.txt +++ b/third-party/CMakeLists.txt @@ -41,6 +41,7 @@ option(USE_BUNDLED_LUV "Use the bundled version of luv." ${USE_BUNDLED}) #XXX(tarruda): Lua is only used for debugging the functional test client, no # build it unless explicitly requested option(USE_BUNDLED_LUA "Use the bundled version of lua." OFF) +option(USE_BUNDLED_TS_PARSERS "Use the bundled treesitter parsers." ${USE_BUNDLED}) if(USE_BUNDLED AND MSVC) option(USE_BUNDLED_GETTEXT "Use the bundled version of gettext." ON) @@ -134,38 +135,38 @@ include(ExternalProject) if(WIN32) # "nvim" branch of https://github.com/neovim/libuv - set(LIBUV_URL https://github.com/neovim/libuv/archive/eeae18d085de25f138c23966f98a179f0fb609e7.tar.gz) - set(LIBUV_SHA256 c37d0b7cb1defe69ae8dbb4d712c0d7cf838d6539178e8bcf71c72579ab5b666) + set(LIBUV_URL https://github.com/neovim/libuv/archive/b899d12b0d56d217f31222da83f8c398355b69ef.tar.gz) + set(LIBUV_SHA256 eb7e37b824887e1b31a4e31d1d9bad4c03d8b98532d9cce5f67a3b70495a4b2a) else() - set(LIBUV_URL https://github.com/libuv/libuv/archive/v1.30.0.tar.gz) - set(LIBUV_SHA256 44c8fdadf3b3f393006a4ac4ba144020673a3f9cd72bed1fbb2c366ebcf0d199) + set(LIBUV_URL https://github.com/libuv/libuv/archive/v1.34.2.tar.gz) + set(LIBUV_SHA256 0d9d38558b45c006c1ea4e8529bae64caf8becda570295ea74e3696362aeb7f2) endif() set(MSGPACK_URL https://github.com/msgpack/msgpack-c/releases/download/cpp-3.0.0/msgpack-3.0.0.tar.gz) set(MSGPACK_SHA256 bfbb71b7c02f806393bc3cbc491b40523b89e64f83860c58e3e54af47de176e4) -# https://github.com/LuaJIT/LuaJIT/tree/v2.0 -set(LUAJIT_URL https://github.com/LuaJIT/LuaJIT/archive/61464b0a5b685489bee7b6680c0e9663f2143a84.tar.gz) -set(LUAJIT_SHA256 033fa4ef19f559ef18a9b9fb017d0cb8be58befe05ab604e92814234910f1c68) +# https://github.com/LuaJIT/LuaJIT/tree/v2.1 +set(LUAJIT_URL https://github.com/LuaJIT/LuaJIT/archive/f0e865dd4861520258299d0f2a56491bd9d602e1.tar.gz) +set(LUAJIT_SHA256 ad5077bd861241bf5e50ae4bf543d291c5fcffab95ccc3218401131f503e45bd) set(LUA_URL https://www.lua.org/ftp/lua-5.1.5.tar.gz) set(LUA_SHA256 2640fc56a795f29d28ef15e13c34a47e223960b0240e8cb0a82d9b0738695333) -set(LUAROCKS_URL https://github.com/luarocks/luarocks/archive/v2.4.4.tar.gz) -set(LUAROCKS_SHA256 9eb3d0738fd02ad8bf39bcedccac4e83e9b5fff2bcca247c3584b925b2075d9c) +set(LUAROCKS_URL https://github.com/luarocks/luarocks/archive/v3.2.1.tar.gz) +set(LUAROCKS_SHA256 0cab9f79311083f33e4d8f5a76021604f1d3f7141ce9a2ef1d8b717d92058370) set(UNIBILIUM_URL https://github.com/neovim/unibilium/archive/92d929f.tar.gz) set(UNIBILIUM_SHA256 29815283c654277ef77a3adcc8840db79ddbb20a0f0b0c8f648bd8cd49a02e4b) -set(LIBTERMKEY_URL http://www.leonerd.org.uk/code/libtermkey/libtermkey-0.21.1.tar.gz) -set(LIBTERMKEY_SHA256 cecbf737f35d18f433c8d7864f63c0f878af41f8bd0255a3ebb16010dc044d5f) +set(LIBTERMKEY_URL http://www.leonerd.org.uk/code/libtermkey/libtermkey-0.22.tar.gz) +set(LIBTERMKEY_SHA256 6945bd3c4aaa83da83d80a045c5563da4edd7d0374c62c0d35aec09eb3014600) -set(LIBVTERM_URL https://github.com/neovim/libvterm/archive/4a5fa43e0dbc0db4fe67d40d788d60852864df9e.tar.gz) -set(LIBVTERM_SHA256 49b3cf2dcb988b887671b1011cfeac98ff81bb5c23fb4ac34b91a59524992935) +set(LIBVTERM_URL https://github.com/neovim/libvterm/archive/65dbda3ed214f036ee799d18b2e693a833a0e591.tar.gz) +set(LIBVTERM_SHA256 95d3c7e86336fbd40dfd7a0aa0a795320bb71bc957ea995ea0e549c96d20db3a) -set(LUV_VERSION 1.30.0-0) +set(LUV_VERSION 1.30.1-1) set(LUV_URL https://github.com/luvit/luv/archive/${LUV_VERSION}.tar.gz) -set(LUV_SHA256 6e468fa17bf222ca8ce0bfffdbdf947fc897da48643a12955db92f80e2c852f5) +set(LUV_SHA256 2b17921e2e18094df6221e3cd291c82d4569e50d8c081518d3e775dceae267cf) set(LUA_COMPAT53_URL https://github.com/keplerproject/lua-compat-5.3/archive/v0.7.tar.gz) set(LUA_COMPAT53_SHA256 bec3a23114a3d9b3218038309657f0f506ad10dfbc03bb54e91da7e5ffdba0a2) @@ -177,8 +178,8 @@ set(GPERF_SHA256 588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae set(WINTOOLS_URL https://github.com/neovim/deps/raw/2f9acbecf06365c10baa3c0087f34a54c9c6f949/opt/win32tools.zip) set(WINTOOLS_SHA256 8bfce7e3a365721a027ce842f2ec1cf878f1726233c215c05964aac07300798c) -set(WINGUI_URL https://github.com/equalsraf/neovim-qt/releases/download/v0.2.14/neovim-qt.zip) -set(WINGUI_SHA256 dfcb1f7d25d4907dc1d4f20edd71ff9eb4762196225106bec01274dd668fb04c) +set(WINGUI_URL https://github.com/equalsraf/neovim-qt/releases/download/v0.2.16/neovim-qt.zip) +set(WINGUI_SHA256 aad95a1f8413a9ebf36fc0298d0dfd7d786abf88cb0f4ae9f7ec895b70c7b312) set(WIN32YANK_X86_URL https://github.com/equalsraf/win32yank/releases/download/v0.0.4/win32yank-x86.zip) set(WIN32YANK_X86_SHA256 62f34e5a46c5d4a7b3f3b512e1ff7b77fedd432f42581cbe825233a996eed62c) @@ -188,12 +189,15 @@ set(WIN32YANK_X86_64_SHA256 33a747a92da60fb65e668edbf7661d3d902411a2d545fe9dc086 set(WINPTY_URL https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-msvc2015.zip) set(WINPTY_SHA256 35a48ece2ff4acdcbc8299d4920de53eb86b1fb41e64d2fe5ae7898931bcee89) -set(GETTEXT_URL https://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.8.1.tar.gz) -set(GETTEXT_SHA256 ff942af0e438ced4a8b0ea4b0b6e0d6d657157c5e2364de57baa279c1c125c43) +set(GETTEXT_URL https://ftp.gnu.org/pub/gnu/gettext/gettext-0.20.1.tar.gz) +set(GETTEXT_SHA256 66415634c6e8c3fa8b71362879ec7575e27da43da562c798a8a2f223e6e47f5c) 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/6002fcd.tar.gz) +set(TREESITTER_C_SHA256 46f8d44fa886d9ddb92571bb6fa8b175992c8758eca749cb1217464e512b6e97) + if(USE_BUNDLED_UNIBILIUM) include(BuildUnibilium) endif() @@ -245,6 +249,10 @@ if(USE_BUNDLED_LIBICONV) include(BuildLibiconv) endif() +if(USE_BUNDLED_TS_PARSERS) + include(BuildTreesitterParsers) +endif() + if(WIN32) include(GetBinaryDeps) @@ -278,13 +286,21 @@ if(WIN32) -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyFilesGlob.cmake) endif() -add_custom_target(clean-shared-libraries - COMMAND ${CMAKE_COMMAND} - -DREMOVE_FILE_GLOB=${DEPS_INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}*${CMAKE_SHARED_LIBRARY_SUFFIX}* - -P ${PROJECT_SOURCE_DIR}/cmake/RemoveFiles.cmake - DEPENDS ${THIRD_PARTY_DEPS} -) +# clean-shared-libraries removes ${DEPS_INSTALL_DIR}/lib/nvim/parser/c.dll, +# resulting in MSVC build failure in CI. +if (MSVC) + set(ALL_DEPS ${THIRD_PARTY_DEPS}) +else() + add_custom_target(clean-shared-libraries + COMMAND ${CMAKE_COMMAND} + -DREMOVE_FILE_GLOB=${DEPS_INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}*${CMAKE_SHARED_LIBRARY_SUFFIX}* + -P ${PROJECT_SOURCE_DIR}/cmake/RemoveFiles.cmake + DEPENDS ${THIRD_PARTY_DEPS} + ) + set(ALL_DEPS clean-shared-libraries) +endif() add_custom_target(third-party ALL COMMAND ${CMAKE_COMMAND} -E touch .third-party - DEPENDS clean-shared-libraries) + DEPENDS ${ALL_DEPS} +) diff --git a/third-party/cmake/BuildGettext.cmake b/third-party/cmake/BuildGettext.cmake index 45264167a5..9357456343 100644 --- a/third-party/cmake/BuildGettext.cmake +++ b/third-party/cmake/BuildGettext.cmake @@ -12,10 +12,6 @@ if(MSVC) -DTARGET=gettext -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/gettext init - COMMAND ${GIT_EXECUTABLE} -C ${DEPS_BUILD_DIR}/src/gettext apply --ignore-whitespace - ${CMAKE_CURRENT_SOURCE_DIR}/patches/gettext-Fix-compilation-on-a-system-without-alloca.patch - ${CMAKE_CURRENT_SOURCE_DIR}/patches/gettext-Fix-building-with-MSVC.patch CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cmake/GettextCMakeLists.txt ${DEPS_BUILD_DIR}/src/gettext/CMakeLists.txt diff --git a/third-party/cmake/BuildLibtermkey.cmake b/third-party/cmake/BuildLibtermkey.cmake index b2332ed65a..10e98fbab3 100644 --- a/third-party/cmake/BuildLibtermkey.cmake +++ b/third-party/cmake/BuildLibtermkey.cmake @@ -48,6 +48,7 @@ ExternalProject_Add(libtermkey PREFIX=${DEPS_INSTALL_DIR} PKG_CONFIG_PATH=${DEPS_LIB_DIR}/pkgconfig CFLAGS=-fPIC + LDFLAGS+=-static ${DEFAULT_MAKE_CFLAGS} install) endif() diff --git a/third-party/cmake/BuildLibvterm.cmake b/third-party/cmake/BuildLibvterm.cmake index e4649986af..c3485dac25 100644 --- a/third-party/cmake/BuildLibvterm.cmake +++ b/third-party/cmake/BuildLibvterm.cmake @@ -27,7 +27,6 @@ function(BuildLibvterm) -DUSE_EXISTING_SRC_DIR=${USE_EXISTING_SRC_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake PATCH_COMMAND "${_libvterm_PATCH_COMMAND}" - CONFIGURE_COMMAND "" BUILD_IN_SOURCE 1 CONFIGURE_COMMAND "${_libvterm_CONFIGURE_COMMAND}" BUILD_COMMAND "${_libvterm_BUILD_COMMAND}" @@ -58,6 +57,7 @@ else() set(LIBVTERM_INSTALL_COMMAND ${MAKE_PRG} CC=${DEPS_C_COMPILER} PREFIX=${DEPS_INSTALL_DIR} CFLAGS=-fPIC + LDFLAGS+=-static ${DEFAULT_MAKE_CFLAGS} install) endif() diff --git a/third-party/cmake/BuildLuajit.cmake b/third-party/cmake/BuildLuajit.cmake index 791da4b7df..c0b24fb2a5 100644 --- a/third-party/cmake/BuildLuajit.cmake +++ b/third-party/cmake/BuildLuajit.cmake @@ -33,8 +33,21 @@ function(BuildLuajit) BUILD_IN_SOURCE 1 BUILD_COMMAND "${_luajit_BUILD_COMMAND}" INSTALL_COMMAND "${_luajit_INSTALL_COMMAND}") + + # Create symlink for development version manually. + if(UNIX) + add_custom_command( + TARGET ${_luajit_TARGET} + COMMAND ${CMAKE_COMMAND} -E create_symlink luajit-2.1.0-beta3 ${DEPS_BIN_DIR}/luajit) + endif() endfunction() +check_c_compiler_flag(-fno-stack-check HAS_NO_STACK_CHECK) +if(CMAKE_SYSTEM_NAME MATCHES "Darwin" AND HAS_NO_STACK_CHECK) + set(NO_STACK_CHECK "CFLAGS+=-fno-stack-check") +else() + set(NO_STACK_CHECK "") +endif() if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD") set(AMD64_ABI "LDFLAGS=-lpthread -lc++abi") else() @@ -43,6 +56,7 @@ endif() set(INSTALLCMD_UNIX ${MAKE_PRG} CFLAGS=-fPIC CFLAGS+=-DLUA_USE_APICHECK CFLAGS+=-DLUA_USE_ASSERT + ${NO_STACK_CHECK} ${AMD64_ABI} CCDEBUG+=-g Q= @@ -107,8 +121,8 @@ elseif(MINGW) # Luarocks searches for lua51.dll in lib COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/lua51.dll ${DEPS_INSTALL_DIR}/lib COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/libluajit.a ${DEPS_INSTALL_DIR}/lib - COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/include/luajit-2.0 - COMMAND ${CMAKE_COMMAND} -DFROM_GLOB=${DEPS_BUILD_DIR}/src/luajit/src/*.h -DTO=${DEPS_INSTALL_DIR}/include/luajit-2.0 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyFilesGlob.cmake + COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/include/luajit-2.1 + COMMAND ${CMAKE_COMMAND} -DFROM_GLOB=${DEPS_BUILD_DIR}/src/luajit/src/*.h -DTO=${DEPS_INSTALL_DIR}/include/luajit-2.1 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyFilesGlob.cmake ) elseif(MSVC) @@ -122,8 +136,8 @@ elseif(MSVC) COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/lua51.lib ${DEPS_INSTALL_DIR}/lib/lua51.lib # Luv searches for luajit.lib COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/lua51.lib ${DEPS_INSTALL_DIR}/lib/luajit.lib - COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/include/luajit-2.0 - COMMAND ${CMAKE_COMMAND} -DFROM_GLOB=${DEPS_BUILD_DIR}/src/luajit/src/*.h -DTO=${DEPS_INSTALL_DIR}/include/luajit-2.0 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyFilesGlob.cmake) + COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/include/luajit-2.1 + COMMAND ${CMAKE_COMMAND} -DFROM_GLOB=${DEPS_BUILD_DIR}/src/luajit/src/*.h -DTO=${DEPS_INSTALL_DIR}/include/luajit-2.1 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyFilesGlob.cmake) else() message(FATAL_ERROR "Trying to build luajit in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}") diff --git a/third-party/cmake/BuildLuarocks.cmake b/third-party/cmake/BuildLuarocks.cmake index 87e2946c96..c5595bf840 100644 --- a/third-party/cmake/BuildLuarocks.cmake +++ b/third-party/cmake/BuildLuarocks.cmake @@ -52,13 +52,17 @@ if(NOT MSVC) set(LUAROCKS_BUILDARGS CC=${HOSTDEPS_C_COMPILER} LD=${HOSTDEPS_C_COMPILER}) endif() +# Lua version, used with rocks directories. +# Defaults to 5.1 for bundled LuaJIT/Lua. +set(LUA_VERSION "5.1") + if(UNIX OR (MINGW AND CMAKE_CROSSCOMPILING)) if(USE_BUNDLED_LUAJIT) list(APPEND LUAROCKS_OPTS --with-lua=${HOSTDEPS_INSTALL_DIR} - --with-lua-include=${HOSTDEPS_INSTALL_DIR}/include/luajit-2.0 - --lua-suffix=jit) + --with-lua-include=${HOSTDEPS_INSTALL_DIR}/include/luajit-2.1 + --with-lua-interpreter=luajit) elseif(USE_BUNDLED_LUA) list(APPEND LUAROCKS_OPTS --with-lua=${HOSTDEPS_INSTALL_DIR}) @@ -66,9 +70,23 @@ if(UNIX OR (MINGW AND CMAKE_CROSSCOMPILING)) find_package(LuaJit) if(LUAJIT_FOUND) list(APPEND LUAROCKS_OPTS - --lua-version=5.1 --with-lua-include=${LUAJIT_INCLUDE_DIRS} - --lua-suffix=jit) + --with-lua-interpreter=luajit) + endif() + + # Get LUA_VERSION used with rocks output. + if(LUAJIT_FOUND) + set(LUA_EXE "luajit") + else() + set(LUA_EXE "lua") + endif() + execute_process( + COMMAND ${LUA_EXE} -e "print(string.sub(_VERSION, 5))" + OUTPUT_VARIABLE LUA_VERSION + ERROR_VARIABLE ERR + RESULT_VARIABLE RES) + if(NOT RES EQUAL 0) + message(FATAL_ERROR "Could not get LUA_VERSION with ${LUA_EXE}: ${ERR}") endif() endif() @@ -89,7 +107,7 @@ elseif(MSVC OR MINGW) /LUA ${DEPS_INSTALL_DIR} /LIB ${DEPS_LIB_DIR} /BIN ${DEPS_BIN_DIR} - /INC ${DEPS_INSTALL_DIR}/include/luajit-2.0 + /INC ${DEPS_INSTALL_DIR}/include/luajit-2.1 /P ${DEPS_INSTALL_DIR}/luarocks /TREE ${DEPS_INSTALL_DIR} /SCRIPTS ${DEPS_BIN_DIR} /CMOD ${DEPS_BIN_DIR} @@ -111,7 +129,7 @@ if(USE_BUNDLED_LUAJIT) elseif(USE_BUNDLED_LUA) add_dependencies(luarocks lua) endif() -set(ROCKS_DIR ${HOSTDEPS_LIB_DIR}/luarocks/rocks) +set(ROCKS_DIR ${HOSTDEPS_LIB_DIR}/luarocks/rocks-${LUA_VERSION}) # mpack add_custom_command(OUTPUT ${ROCKS_DIR}/mpack @@ -199,10 +217,10 @@ if(USE_BUNDLED_BUSTED) endif() add_custom_target(luv DEPENDS ${ROCKS_DIR}/luv) - # nvim-client + # 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.0-1 ${LUAROCKS_BUILDARGS} + ARGS build nvim-client 0.2.2-1 ${LUAROCKS_BUILDARGS} DEPENDS luv) add_custom_target(nvim-client DEPENDS ${ROCKS_DIR}/nvim-client) diff --git a/third-party/cmake/BuildLuv.cmake b/third-party/cmake/BuildLuv.cmake index 967e0a1711..ab3e2190ab 100644 --- a/third-party/cmake/BuildLuv.cmake +++ b/third-party/cmake/BuildLuv.cmake @@ -55,7 +55,7 @@ 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.0") + "-I${DEPS_INSTALL_DIR}/include -I${DEPS_INSTALL_DIR}/include/luajit-2.1") # Replace luv default rockspec with the alternate one under the "rockspecs" # directory @@ -65,6 +65,7 @@ set(LUV_PATCH_COMMAND set(LUV_CONFIGURE_COMMAND_COMMON ${CMAKE_COMMAND} ${LUV_SRC_DIR} -DCMAKE_GENERATOR=${CMAKE_GENERATOR} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} -DLUA_BUILD_TYPE=System -DWITH_SHARED_LIBUV=ON @@ -87,7 +88,8 @@ endif() if(USE_BUNDLED_LIBUV) set(LUV_CONFIGURE_COMMAND_COMMON ${LUV_CONFIGURE_COMMAND_COMMON} - -DCMAKE_PREFIX_PATH=${DEPS_INSTALL_DIR}) + -DCMAKE_PREFIX_PATH=${DEPS_INSTALL_DIR} + -DLUA_COMPAT53_DIR=${DEPS_BUILD_DIR}/src/lua-compat-5.3) endif() if(MINGW AND CMAKE_CROSSCOMPILING) @@ -106,28 +108,23 @@ elseif(MSVC) # Same as Unix without fPIC "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1} ${LUV_INCLUDE_FLAGS}" # Make sure we use the same generator, otherwise we may - # accidentaly end up using different MSVC runtimes - -DCMAKE_GENERATOR=${CMAKE_GENERATOR} - # Use static runtime - -DCMAKE_C_FLAGS_DEBUG="-MTd" - -DCMAKE_C_FLAGS_RELEASE="-MT") + # accidentally end up using different MSVC runtimes + -DCMAKE_GENERATOR=${CMAKE_GENERATOR}) 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") + 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() -if(CMAKE_GENERATOR MATCHES "Unix Makefiles" AND - (CMAKE_SYSTEM_NAME MATCHES ".*BSD" OR CMAKE_SYSTEM_NAME MATCHES "DragonFly")) - set(LUV_BUILD_COMMAND ${CMAKE_COMMAND} - "-DLUA_COMPAT53_DIR=${DEPS_BUILD_DIR}/src/lua-compat-5.3" - "-DCMAKE_MAKE_PROGRAM=gmake" --build .) -else() - set(LUV_BUILD_COMMAND ${CMAKE_COMMAND} - "-DLUA_COMPAT53_DIR=${DEPS_BUILD_DIR}/src/lua-compat-5.3" --build .) -endif() -set(LUV_INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install) +set(LUV_BUILD_COMMAND + ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE}) +set(LUV_INSTALL_COMMAND + ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}) BuildLuv(PATCH_COMMAND ${LUV_PATCH_COMMAND} CONFIGURE_COMMAND ${LUV_CONFIGURE_COMMAND} diff --git a/third-party/cmake/BuildMsgpack.cmake b/third-party/cmake/BuildMsgpack.cmake index 616b6e5f83..30af5f060b 100644 --- a/third-party/cmake/BuildMsgpack.cmake +++ b/third-party/cmake/BuildMsgpack.cmake @@ -68,7 +68,7 @@ elseif(MSVC) "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_COMPILER_ARG1}" -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} # Make sure we use the same generator, otherwise we may - # accidentaly end up using different MSVC runtimes + # accidentally end up using different MSVC runtimes -DCMAKE_GENERATOR=${CMAKE_GENERATOR}) endif() diff --git a/third-party/cmake/BuildTreesitterParsers.cmake b/third-party/cmake/BuildTreesitterParsers.cmake new file mode 100644 index 0000000000..5284a7fd62 --- /dev/null +++ b/third-party/cmake/BuildTreesitterParsers.cmake @@ -0,0 +1,27 @@ +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_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_GENERATOR=${CMAKE_GENERATOR} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} + # Pass toolchain + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + -DPARSERLANG=c + +BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} +INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}) diff --git a/third-party/cmake/BuildUnibilium.cmake b/third-party/cmake/BuildUnibilium.cmake index e9deeb4987..74c1cbddb0 100644 --- a/third-party/cmake/BuildUnibilium.cmake +++ b/third-party/cmake/BuildUnibilium.cmake @@ -40,6 +40,7 @@ else() 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) endif() diff --git a/third-party/cmake/DownloadAndExtractFile.cmake b/third-party/cmake/DownloadAndExtractFile.cmake index bb8cf1b674..e008fa8a8a 100644 --- a/third-party/cmake/DownloadAndExtractFile.cmake +++ b/third-party/cmake/DownloadAndExtractFile.cmake @@ -76,7 +76,8 @@ 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" + 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} diff --git a/third-party/cmake/GettextCMakeLists.txt b/third-party/cmake/GettextCMakeLists.txt index 5a6253df3b..c3f78716d0 100644 --- a/third-party/cmake/GettextCMakeLists.txt +++ b/third-party/cmake/GettextCMakeLists.txt @@ -8,6 +8,10 @@ endmacro() file(READ gettext-runtime/config.h.in CONFIG_CONTENT) string(REPLACE "#undef HAVE_GETCWD" "#define HAVE_GETCWD 1" CONFIG_CONTENT ${CONFIG_CONTENT}) +string(REPLACE "#undef HAVE_LONG_LONG_INT" "#define HAVE_LONG_LONG_INT 1" CONFIG_CONTENT ${CONFIG_CONTENT}) +string(REPLACE "#undef HAVE_ICONV_H" "#define HAVE_ICONV_H 1" CONFIG_CONTENT ${CONFIG_CONTENT}) +string(REPLACE "#undef HAVE_ICONV" "#define HAVE_ICONV 1" CONFIG_CONTENT ${CONFIG_CONTENT}) +string(REPLACE "#undef ICONV_CONST" "#define ICONV_CONST const" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef uintmax_t" " #if _WIN64 # define intmax_t long long @@ -24,6 +28,8 @@ set(HAVE_POSIX_PRINTF 0) set(HAVE_SNPRINTF 0) set(HAVE_ASPRINTF 0) set(HAVE_WPRINTF 0) +set(HAVE_NAMELESS_LOCALES 0) +set(HAVE_LONG_LONG_INT 1) configure_file(gettext-runtime/intl/libgnuintl.in.h ${CMAKE_CURRENT_BINARY_DIR}/gettext-runtime/intl/libgnuintl.h) @@ -45,16 +51,20 @@ add_definitions(-DLOCALEDIR=\"${LOCALDIR}\" set(libintl_SOURCES bindtextdom.c dcgettext.c dcigettext.c dcngettext.c dgettext.c dngettext.c - explodename.c finddomain.c gettext.c hash-string.c l10nflist.c langprefs.c - loadmsgcat.c localcharset.c localealias.c localename.c lock.c log.c ngettext.c + explodename.c finddomain.c gettext.c hash-string.c intl-compat.c l10nflist.c + langprefs.c loadmsgcat.c localcharset.c localealias.c localename-table.c + localename.c lock.c log.c ngettext.c osdep.c plural-exp.c plural.c printf.c relocatable.c setlocale.c textdomain.c - threadlib.c version.c) + threadlib.c version.c xsize.c) + PREFIX_LIST_ITEMS(libintl_SOURCES "gettext-runtime/intl/") add_library(libintl ${libintl_SOURCES}) +target_link_libraries(libintl ${LIBICONV_LIBRARIES}) set_property(TARGET libintl APPEND PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR}/gettext-runtime - ${CMAKE_CURRENT_BINARY_DIR}/gettext-runtime/intl) + ${CMAKE_CURRENT_BINARY_DIR}/gettext-runtime/intl + ${LIBICONV_INCLUDE_DIRS}) set_property(TARGET libintl APPEND PROPERTY COMPILE_DEFINITIONS BUILDING_LIBINTL IN_LIBINTL @@ -68,16 +78,22 @@ set_property(TARGET libintl APPEND PROPERTY COMPILE_DEFINITIONS file(READ gettext-tools/config.h.in CONFIG_CONTENT) +string(REPLACE "#undef FLEXIBLE_ARRAY_MEMBER" "#define FLEXIBLE_ARRAY_MEMBER 1" CONFIG_CONTENT ${CONFIG_CONTENT}) +string(REPLACE "__declspec (dllimport)" "" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef ENDIANNESS" "#define ENDIANNESS 0" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef GNULIB_FWRITEERROR" "#define GNULIB_FWRITEERROR 1" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef HAVE_DECL_STRERROR_R" "#define HAVE_DECL_STRERROR_R 0" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef HAVE_DUP2" "#define HAVE_DUP2 1" CONFIG_CONTENT ${CONFIG_CONTENT}) +string(REPLACE "#undef HAVE_ICONV_H" "#define HAVE_ICONV_H 1" CONFIG_CONTENT ${CONFIG_CONTENT}) +string(REPLACE "#undef HAVE_ICONV" "#define HAVE_ICONV 1" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef HAVE_LIBUNISTRING" "#define HAVE_LIBUNISTRING 1" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef HAVE_STDINT_H_WITH_UINTMAX" "#define HAVE_STDINT_H_WITH_UINTMAX 1" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef HAVE_STDINT_H" "#define HAVE_STDINT_H 1" CONFIG_CONTENT ${CONFIG_CONTENT}) +string(REPLACE "#undef HAVE_LONG_LONG_INT" "#define HAVE_LONG_LONG_INT 1" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef HAVE_STRING_H" "#define HAVE_STRING_H 1" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef HAVE_SYS_TIMEB_H" "#define HAVE_SYS_TIMEB_H 1" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef HAVE__FTIME" "#define HAVE__FTIME 1" CONFIG_CONTENT ${CONFIG_CONTENT}) +string(REPLACE "#undef HAVE_FLOAT_H" "#define HAVE_FLOAT_H 1" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef ICONV_CONST" "#define ICONV_CONST const" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef PACKAGE" "#define PACKAGE \"gettext\"\n#define gettext_VERSION" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef VERSION" "#define VERSION \"\"" CONFIG_CONTENT ${CONFIG_CONTENT}) @@ -86,13 +102,14 @@ string(REPLACE "#undef pid_t" "#define pid_t int" CONFIG_CONTENT ${CONFIG_CONTEN string(REPLACE "#undef restrict" "#define restrict __restrict" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef ssize_t" "#include <BaseTsd.h>\n#define ssize_t SSIZE_T" CONFIG_CONTENT ${CONFIG_CONTENT}) string(REPLACE "#undef uid_t" "#define uid_t int" CONFIG_CONTENT ${CONFIG_CONTENT}) +string(REPLACE "#undef HAVE_DECL___ARGV" "#define HAVE_DECL___ARGV 1" CONFIG_CONTENT ${CONFIG_CONTENT}) +set(CONFIG_CONTENT "${CONFIG_CONTENT}\n#define isatty libtextstyle_isatty") file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/gettext-tools/config.h ${CONFIG_CONTENT}) -set(libgettextsrc_COMMON_SOURCE +set(libgettextsrc_COMMON_SOURCE message.c po-error.c po-xerror.c read-catalog-abstract.c po-lex.c po-gram-gen.c po-charset.c read-po.c read-properties.c read-stringtable.c - open-catalog.c dir-list.c - str-list.c) + open-catalog.c dir-list.c str-list.c) set(libgettextsrc_FORMAT_SOURCE format.c format-invalid.h format-c.c format-c-parse.h format-sh.c @@ -104,11 +121,12 @@ set(libgettextsrc_FORMAT_SOURCE format-javascript.c) set(libgettextsrc_SOURCES - ${libgettextsrc_COMMON_SOURCE} read-catalog.c color.c write-catalog.c - write-properties.c write-stringtable.c write-po.c msgl-ascii.c msgl-iconv.c - msgl-equal.c msgl-cat.c msgl-header.c msgl-english.c msgl-check.c file-list.c - msgl-charset.c po-time.c plural-exp.c plural-eval.c plural-count.c - plural-table.c quote.h sentence.h sentence.c ${libgettextsrc_FORMAT_SOURCE} + ${libgettextsrc_COMMON_SOURCE} read-catalog.c + write-catalog.c write-properties.c write-stringtable.c write-po.c + msgl-ascii.c msgl-iconv.c msgl-equal.c msgl-cat.c msgl-header.c msgl-english.c + msgl-check.c file-list.c msgl-charset.c po-time.c plural-exp.c plural-eval.c + plural-table.c quote.h sentence.h sentence.c + ${libgettextsrc_FORMAT_SOURCE} read-desktop.c locating-rule.c its.c search-path.c) PREFIX_LIST_ITEMS(libgettextsrc_SOURCES "gettext-tools/src/") @@ -118,101 +136,141 @@ set(GLIBC_SOURCE gettimeofday.c getdtablesize.c fcntl.c dup-safer-flag.c cloexec.c fd-safer-flag.c fd-safer.c pipe2.c pipe2-safer.c spawn-pipe.c xmemdup0.c secure_getenv.c tmpdir.c tempname.c mkdtemp.c fnmatch.c clean-temp.c - gl_array_list.c tputs.c wait-process.c waitpid.c getdelim.c getline.c - sigprocmask.c sigaction.c addext.c argmatch.c backupfile.c basename.c - c-strcasecmp.c c-strncasecmp.c c-strstr.c closeout.c concat-filename.c - error-progname.c error.c exitfail.c file-ostream.c fstrcmp.c full-write.c - fwriteerror.c getopt.c getopt1.c hash.c libxml/buf.c localcharset.c malloca.c - mbchar.c mbslen.c mbsstr.c mbswidth.c obstack.c ostream.c html-ostream.c - fd-ostream.c styled-ostream.c progname.c html-styled-ostream.c printf-args.c - printf-parse.c propername.c quotearg.c rawmemchr.c safe-read.c safe-write.c - stpcpy.c stpncpy.c strchrnul.c striconveh.c striconveha.c strnlen1.c - term-ostream.c term-styled-ostream.c tparm.c trim.c gcd.c gl_linkedhash_list.c + wait-process.c waitpid.c getdelim.c getline.c sigprocmask.c sigaction.c + addext.c argmatch.c backupfile.c basename.c c-strcasecmp.c c-strncasecmp.c + c-strstr.c closeout.c concat-filename.c error-progname.c error.c exitfail.c + fstrcmp.c full-write.c fwriteerror.c getopt.c getopt1.c hash.c libxml/buf.c + localcharset.c malloca.c mbchar.c mbslen.c mbsstr.c mbswidth.c obstack.c + progname.c printf-args.c printf-parse.c propername.c quotearg.c rawmemchr.c + safe-read.c safe-write.c stpcpy.c stpncpy.c strchrnul.c striconv.c + striconveh.c striconveha.c strnlen1.c trim.c gcd.c gl_linkedhash_list.c uniconv/u8-conv-from-enc.c unictype/ctype_space.c unilbrk/lbrktables.c unilbrk/u8-possible-linebreaks.c unilbrk/u8-width-linebreaks.c unilbrk/ulc-common.c unilbrk/ulc-width-linebreaks.c unistr/u16-mbtouc-aux.c - unistr/u16-mbtouc.c unistr/u8-check.c unistr/u8-mblen.c unistr/u8-mbtouc-aux.c - unistr/u8-mbtouc-unsafe-aux.c unistr/u8-mbtouc-unsafe.c unistr/u8-mbtouc.c - unistr/u8-mbtoucr.c unistr/u8-prev.c unistr/u8-uctomb-aux.c unistr/u8-uctomb.c - uniwidth/width.c vasnprintf.c vasprintf.c wcwidth.c xasprintf.c - xconcat-filename.c xerror.c xmalloc.c xstrdup.c xvasprintf.c glib/ghash.c - glib/glist.c glib/gmessages.c glib/gprimes.c glib/gstrfuncs.c glib/gstring.c - libcroco/cr-additional-sel.c libcroco/cr-attr-sel.c libcroco/cr-cascade.c - libcroco/cr-declaration.c libcroco/cr-doc-handler.c libcroco/cr-enc-handler.c - libcroco/cr-fonts.c libcroco/cr-input.c libcroco/cr-num.c - libcroco/cr-om-parser.c libcroco/cr-parser.c libcroco/cr-parsing-location.c - libcroco/cr-prop-list.c libcroco/cr-pseudo.c libcroco/cr-rgb.c - libcroco/cr-sel-eng.c libcroco/cr-selector.c libcroco/cr-simple-sel.c - libcroco/cr-statement.c libcroco/cr-string.c libcroco/cr-style.c - libcroco/cr-stylesheet.c libcroco/cr-term.c libcroco/cr-tknzr.c - libcroco/cr-token.c libcroco/cr-utils.c libxml/DOCBparser.c - libxml/HTMLparser.c libxml/HTMLtree.c libxml/SAX.c libxml/SAX2.c libxml/c14n.c - libxml/catalog.c libxml/chvalid.c libxml/debugXML.c libxml/dict.c - libxml/encoding.c libxml/entities.c libxml/error.c libxml/globals.c - libxml/hash.c libxml/legacy.c libxml/list.c libxml/nanoftp.c libxml/nanohttp.c - libxml/parser.c libxml/parserInternals.c libxml/pattern.c libxml/relaxng.c - libxml/schematron.c libxml/threads.c libxml/tree.c libxml/trionan.c - libxml/uri.c libxml/valid.c libxml/xinclude.c libxml/xlink.c libxml/xmlIO.c - libxml/xmlmemory.c libxml/xmlmodule.c libxml/xmlreader.c libxml/xmlregexp.c - libxml/xmlsave.c libxml/xmlschemas.c libxml/xmlschemastypes.c - libxml/xmlstring.c libxml/xmlunicode.c libxml/xmlwriter.c libxml/xpath.c - libxml/xpointer.c fatal-signal.c copy-file.c) + unistr/u16-mbtouc.c unistr/u8-check.c unistr/u8-mblen.c + unistr/u8-mbtouc-aux.c unistr/u8-mbtouc-unsafe-aux.c + unistr/u8-mbtouc-unsafe.c unistr/u8-mbtouc.c unistr/u8-mbtoucr.c + unistr/u8-prev.c unistr/u8-uctomb-aux.c unistr/u8-uctomb.c uniwidth/width.c + vasnprintf.c vasprintf.c wcwidth.c xasprintf.c xconcat-filename.c xerror.c + xmalloc.c xstrdup.c xstriconv.c xstriconveh.c xvasprintf.c + libxml/DOCBparser.c libxml/HTMLparser.c libxml/HTMLtree.c libxml/SAX.c + libxml/SAX2.c libxml/c14n.c libxml/catalog.c libxml/chvalid.c + libxml/debugXML.c libxml/dict.c libxml/encoding.c libxml/entities.c + libxml/error.c libxml/globals.c libxml/hash.c libxml/legacy.c libxml/list.c + libxml/nanoftp.c libxml/nanohttp.c libxml/parser.c libxml/parserInternals.c + libxml/pattern.c libxml/relaxng.c libxml/schematron.c libxml/threads.c + libxml/tree.c libxml/trionan.c libxml/uri.c libxml/valid.c libxml/xinclude.c + libxml/xlink.c libxml/xmlIO.c libxml/xmlmemory.c libxml/xmlmodule.c + libxml/xmlreader.c libxml/xmlregexp.c libxml/xmlsave.c libxml/xmlschemas.c + libxml/xmlschemastypes.c libxml/xmlstring.c libxml/xmlunicode.c + libxml/xmlwriter.c libxml/xpath.c libxml/xpointer.c fatal-signal.c + copy-file.c read-file.c ftello.c utime.c gettime.c utimens.c) PREFIX_LIST_ITEMS(GLIBC_SOURCE "gettext-tools/gnulib-lib/") -set(libgettextsrc_SOURCES ${libgettextsrc_SOURCES} ${GLIBC_SOURCE}) - -set(HEADER_TEMPLATES_PATH "gettext-tools/gnulib-lib") -set(HEADER_TEMPLATES_ABS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${HEADER_TEMPLATES_PATH}") -file(GLOB_RECURSE HEADER_TEMPLATES "${HEADER_TEMPLATES_ABS_PATH}/*.in.h") -list(REMOVE_ITEM HEADER_TEMPLATES "${HEADER_TEMPLATES_ABS_PATH}/stdint.in.h") -list(REMOVE_ITEM HEADER_TEMPLATES "${HEADER_TEMPLATES_ABS_PATH}/wchar.in.h") -foreach(HEADER_TEMPLATE ${HEADER_TEMPLATES}) - file(READ ${HEADER_TEMPLATE} HEADER_CONTENT) - string(REPLACE "/* The definition of _GL_ARG_NONNULL is copied here. */" "#include \"arg-nonnull.h\"" HEADER_CONTENT "${HEADER_CONTENT}") - string(REPLACE "/* The definition of _GL_WARN_ON_USE is copied here. */" "#include \"warn-on-use.h\"" HEADER_CONTENT "${HEADER_CONTENT}") - string(REPLACE "/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */" "#include \"c++defs.h\"" HEADER_CONTENT "${HEADER_CONTENT}") - string(REPLACE "@GNULIB_LSTAT@" "1" HEADER_CONTENT "${HEADER_CONTENT}") - string(REPLACE "@GNULIB_MBSINIT@" "1" HEADER_CONTENT "${HEADER_CONTENT}") - string(REPLACE "@GNULIB_SIGACTION@" "1" HEADER_CONTENT "${HEADER_CONTENT}") - string(REPLACE "@GNULIB_SIGPROCMASK@" "1" HEADER_CONTENT "${HEADER_CONTENT}") - string(REPLACE "@GNULIB_STPCPY@" "1" HEADER_CONTENT "${HEADER_CONTENT}") - string(REPLACE "@GNULIB_STPNCPY@" "1" HEADER_CONTENT "${HEADER_CONTENT}") - string(REPLACE "@GNULIB_STRCHRNUL@" "1" HEADER_CONTENT "${HEADER_CONTENT}") - string(REPLACE "@HAVE_ISWCNTRL@" "1" HEADER_CONTENT "${HEADER_CONTENT}") - string(REPLACE "@HAVE_WCTYPE_T@" "1" HEADER_CONTENT "${HEADER_CONTENT}") - string(REPLACE "@PRAGMA_COLUMNS@" "" HEADER_CONTENT "${HEADER_CONTENT}") - - string(REGEX REPLACE "^${HEADER_TEMPLATES_ABS_PATH}/" "" HEADER_PATH "${HEADER_TEMPLATE}") - string(REPLACE ".in" "" HEADER_PATH ${HEADER_PATH}) - string(REPLACE "_" "/" HEADER_PATH ${HEADER_PATH}) - # find_file will create a cache entry for the variable - # SYSTEM_HEADER, so reset it before each call - set(SYSTEM_HEADER "SYSTEM_HEADER-NOTFOUND") - find_file(SYSTEM_HEADER ${HEADER_PATH} PATHS "${LIBICONV_INCLUDE_DIRS}") - if(SYSTEM_HEADER) - # Gnulib uses #include_next to extend system header files, - # but MSVC doesn't support it, so a regular include directive - # with a relative path is used instead - string(REGEX REPLACE ".*/(.*/${HEADER_PATH})" "../\\1" - INCLUDE_PATH "${SYSTEM_HEADER}") - string(REGEX REPLACE "@INCLUDE_NEXT[^@]*@ @NEXT_[^@\n]+@" - "include <${INCLUDE_PATH}>" HEADER_CONTENT "${HEADER_CONTENT}") - endif() - - # Default any remaining template variables to 0 - string(REGEX REPLACE "@[^@\n]+@" "0" HEADER_CONTENT "${HEADER_CONTENT}") - - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${HEADER_TEMPLATES_PATH}/${HEADER_PATH}" "${HEADER_CONTENT}") -endforeach() +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/gettext-tools/gnulib-lib/configmake.h "#define PKGDATADIR \"gettext\"") + +set(LIBGLIB_SOURCES + ghash.c glist.c gmessages.c gprimes.c gstrfuncs.c gstring.c) +PREFIX_LIST_ITEMS(LIBGLIB_SOURCES "libtextstyle/lib/glib/") + +set(LIBTEXTSTYLE_SOURCE + gl_array_list.h gl_array_list.c binary-io.h + binary-io.c c-ctype.h c-ctype.c c-strcase.h c-strcasecmp.c + c-strncasecmp.c concat-filename.c dirname-lgpl.c + basename-lgpl.c stripslash.c exitfail.c fatal-signal.h + fatal-signal.c fd-hook.c fd-ostream.c file-ostream.c + full-write.h full-write.c getprogname.h getprogname.c + gettext.h hash.h hash.c html-ostream.c html-styled-ostream.c + iconv-ostream.c gl_list.h gl_list.c math.c memory-ostream.c + minmax.h noop-styled-ostream.c ostream.c safe-read.c + safe-write.c sig-handler.c size_max.h styled-ostream.c + term-ostream.c term-style-control.c term-styled-ostream.c + unistd.c xalloc.h xmalloc.c xstrdup.c + xconcat-filename.c gl_xlist.h gl_xlist.c xsize.h xsize.c + xvasprintf.h xvasprintf.c xasprintf.c color.h color.c misc.h + misc.c version.c isatty.c fsync.c tparm.c tputs.c) +PREFIX_LIST_ITEMS(LIBTEXTSTYLE_SOURCE "libtextstyle/lib/") + +configure_file( + libtextstyle/lib/stdbool.mini.h + ${CMAKE_CURRENT_BINARY_DIR}/libtextstyle/lib/textstyle/stdbool.h + COPYONLY) + +set(LIBCROCO_SOURCES + cr-additional-sel.c cr-attr-sel.c cr-cascade.c cr-declaration.c + cr-doc-handler.c cr-enc-handler.c cr-fonts.c cr-input.c cr-num.c + cr-om-parser.c cr-parser.c cr-parsing-location.c cr-prop-list.c cr-pseudo.c + cr-rgb.c cr-sel-eng.c cr-selector.c cr-simple-sel.c cr-statement.c + cr-string.c cr-style.c cr-stylesheet.c cr-term.c cr-tknzr.c cr-token.c + cr-utils.c) +PREFIX_LIST_ITEMS(LIBCROCO_SOURCES "libtextstyle/lib/libcroco/") + +set(libgettextsrc_SOURCES + ${libgettextsrc_SOURCES} ${GLIBC_SOURCE} ${LIBGLIB_SOURCES} + ${LIBTEXTSTYLE_SOURCE} ${LIBCROCO_SOURCES}) + +macro(CONFIGURE_HEADER_FILES HEADER_TEMPLATES_PATH) + set(HEADER_TEMPLATES_ABS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${HEADER_TEMPLATES_PATH}") + file(GLOB_RECURSE HEADER_TEMPLATES "${HEADER_TEMPLATES_ABS_PATH}/*.in.h") + list(REMOVE_ITEM HEADER_TEMPLATES "${HEADER_TEMPLATES_ABS_PATH}/stdint.in.h") + list(REMOVE_ITEM HEADER_TEMPLATES "${HEADER_TEMPLATES_ABS_PATH}/wchar.in.h") + foreach(HEADER_TEMPLATE ${HEADER_TEMPLATES}) + file(READ ${HEADER_TEMPLATE} HEADER_CONTENT) + string(REPLACE "/* The definition of _GL_ARG_NONNULL is copied here. */" "#include \"arg-nonnull.h\"" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "/* The definition of _GL_WARN_ON_USE is copied here. */" "#include \"warn-on-use.h\"" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */" "#include \"c++defs.h\"" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@GNULIB_LSTAT@" "1" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@GNULIB_MBSINIT@" "1" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@GNULIB_SIGACTION@" "1" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@GNULIB_SIGPROCMASK@" "1" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@GNULIB_STPCPY@" "1" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@GNULIB_STPNCPY@" "1" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@GNULIB_STRCHRNUL@" "1" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@HAVE_ISWCNTRL@" "1" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@HAVE_WCTYPE_T@" "1" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@HAVE_STRUCT_TIMEVAL@" "1" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@HAVE_WINSOCK2_H@" "1" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@DLL_VARIABLE@" "" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@HAVE_NEWLOCALE@" "0" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@PRAGMA_COLUMNS@" "" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "#if @GNULIB_UTIME@" "#if 1\n#define utime gl_utime" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@HAVE_UTIME@" "1" HEADER_CONTENT "${HEADER_CONTENT}") + string(REPLACE "@HAVE_LONG_LONG_INT@" "1" HEADER_CONTENT "${HEADER_CONTENT}") + + string(REGEX REPLACE "^${HEADER_TEMPLATES_ABS_PATH}/" "" HEADER_PATH "${HEADER_TEMPLATE}") + string(REPLACE ".in" "" HEADER_PATH ${HEADER_PATH}) + string(REPLACE "_" "/" HEADER_PATH ${HEADER_PATH}) + # find_file will create a cache entry for the variable + # SYSTEM_HEADER, so reset it before each call + set(SYSTEM_HEADER "SYSTEM_HEADER-NOTFOUND") + find_file(SYSTEM_HEADER ${HEADER_PATH} PATHS "${LIBICONV_INCLUDE_DIRS}") + if(SYSTEM_HEADER) + # Gnulib uses #include_next to extend system header files, + # but MSVC doesn't support it, so a regular include directive + # with a relative path is used instead + string(REGEX REPLACE ".*/(.*/${HEADER_PATH})" "../\\1" + INCLUDE_PATH "${SYSTEM_HEADER}") + string(REGEX REPLACE "@INCLUDE_NEXT[^@]*@ @NEXT_[^@\n]+@" + "include <${INCLUDE_PATH}>" HEADER_CONTENT "${HEADER_CONTENT}") + endif() + + # Default any remaining template variables to 0 + string(REGEX REPLACE "@[^@\n]+@" "0" HEADER_CONTENT "${HEADER_CONTENT}") + + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${HEADER_TEMPLATES_PATH}/${HEADER_PATH}" "${HEADER_CONTENT}") + endforeach() +endmacro() + +CONFIGURE_HEADER_FILES("gettext-tools/gnulib-lib") +CONFIGURE_HEADER_FILES("libtextstyle/lib") add_library(libgettextsrc ${libgettextsrc_SOURCES}) target_link_libraries(libgettextsrc ${LIBICONV_LIBRARIES}) +set_property(TARGET libgettextsrc APPEND PROPERTY COMPILE_DEFINITIONS + LIBTEXTSTYLE_DLL_VARIABLE=) set(msgmerge_SOURCES - msgmerge.c - msgl-fsearch.c - lang-table.c - ) + msgmerge.c msgl-fsearch.c lang-table.c plural-count.c) PREFIX_LIST_ITEMS(msgmerge_SOURCES "gettext-tools/src/") add_executable(msgmerge ${msgmerge_SOURCES}) @@ -220,25 +278,21 @@ target_link_libraries(msgmerge libgettextsrc) add_dependencies(msgmerge libgettextsrc libintl) set(msgfmt_SOURCES - msgfmt.c - write-mo.c - write-java.c - write-csharp.c - write-resources.c - write-tcl.c - write-qt.c - write-desktop.c - write-xml.c) + msgfmt.c write-mo.c write-java.c write-csharp.c write-resources.c write-tcl.c + write-qt.c write-desktop.c write-xml.c + ../../gettext-runtime/intl/hash-string.c) PREFIX_LIST_ITEMS(msgfmt_SOURCES "gettext-tools/src/") -add_executable(msgfmt ${msgfmt_SOURCES} gettext-runtime/intl/hash-string.c) +add_executable(msgfmt ${msgfmt_SOURCES}) target_link_libraries(msgfmt libgettextsrc) add_dependencies(msgfmt libgettextsrc libintl) set(xgettext_SOURCES - xgettext.c x-c.c x-po.c x-sh.c x-python.c x-lisp.c x-elisp.c x-librep.c - x-scheme.c x-smalltalk.c x-java.c x-csharp.c x-awk.c x-ycp.c x-tcl.c x-perl.c - x-php.c x-rst.c x-lua.c x-javascript.c x-vala.c x-desktop.c) + xgettext.c xg-pos.c xg-encoding.c xg-mixed-string.c xg-arglist-context.c + xg-arglist-callshape.c xg-arglist-parser.c xg-message.c x-c.c x-po.c x-sh.c + x-python.c x-lisp.c x-elisp.c x-librep.c x-scheme.c x-smalltalk.c x-java.c + x-csharp.c x-awk.c x-ycp.c x-tcl.c x-perl.c x-php.c x-rst.c x-lua.c + x-javascript.c x-vala.c x-desktop.c) PREFIX_LIST_ITEMS(xgettext_SOURCES "gettext-tools/src/") add_executable(xgettext ${xgettext_SOURCES}) @@ -252,9 +306,13 @@ set_property(TARGET msgmerge msgfmt xgettext libgettextsrc APPEND PROPERTY ${CMAKE_CURRENT_SOURCE_DIR}/gettext-tools/gnulib-lib ${CMAKE_CURRENT_SOURCE_DIR}/gettext-tools/gnulib-lib/libcroco ${CMAKE_CURRENT_SOURCE_DIR}/build-aux/snippet + ${CMAKE_CURRENT_SOURCE_DIR}/libtextstyle/lib + ${CMAKE_CURRENT_SOURCE_DIR}/libtextstyle/lib/libcroco ${CMAKE_CURRENT_BINARY_DIR}/gettext-runtime/intl ${CMAKE_CURRENT_BINARY_DIR}/gettext-tools ${CMAKE_CURRENT_BINARY_DIR}/gettext-tools/gnulib-lib + ${CMAKE_CURRENT_BINARY_DIR}/libtextstyle/lib + ${CMAKE_CURRENT_BINARY_DIR}/libtextstyle/lib/textstyle ${LIBICONV_INCLUDE_DIRS}) include(GNUInstallDirs) diff --git a/third-party/cmake/TreesitterParserCMakeLists.txt b/third-party/cmake/TreesitterParserCMakeLists.txt new file mode 100644 index 0000000000..2808a9ee14 --- /dev/null +++ b/third-party/cmake/TreesitterParserCMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 2.8.12) +# some parsers have c++ scanner, problem? +project(parser C) # CXX + +add_library(parser + MODULE + src/parser.c +) +set_target_properties( + parser + PROPERTIES + POSITION_INDEPENDENT_CODE ON + OUTPUT_NAME ${PARSERLANG} + PREFIX "" +) + +include_directories(src) + +install(TARGETS parser LIBRARY DESTINATION lib/nvim/parser) diff --git a/third-party/patches/gettext-Fix-building-with-MSVC.patch b/third-party/patches/gettext-Fix-building-with-MSVC.patch deleted file mode 100644 index d15901bce3..0000000000 --- a/third-party/patches/gettext-Fix-building-with-MSVC.patch +++ /dev/null @@ -1,50 +0,0 @@ -diff --git a/gettext-tools/config.h.in b/gettext-tools/config.h.in -index 6818a4d..9842a71 100644 ---- a/gettext-tools/config.h.in -+++ b/gettext-tools/config.h.in -@@ -3147,7 +3147,7 @@ - #define PAGE_WIDTH 79 - - /* On Windows, variables that may be in a DLL must be marked specially. */ --#if ((defined _MSC_VER && defined _DLL) || defined WOE32DLL) && !defined IN_RELOCWRAPPER -+#if ((defined _MSC_VER && defined DLL_IMPORT) || defined WOE32DLL) && !defined IN_RELOCWRAPPER - # define DLL_VARIABLE __declspec (dllimport) - #else - # define DLL_VARIABLE -diff --git a/gettext-tools/gnulib-lib/javaversion.c b/gettext-tools/gnulib-lib/javaversion.c -index d760c32..4867fda 100644 ---- a/gettext-tools/gnulib-lib/javaversion.c -+++ b/gettext-tools/gnulib-lib/javaversion.c -@@ -39,7 +39,7 @@ - #define _(str) gettext (str) - - /* Get PKGDATADIR. */ --#include "configmake.h" -+#define PKGDATADIR "" - - - struct locals -diff --git a/gettext-tools/libgettextpo/xalloc.h b/gettext-tools/libgettextpo/xalloc.h -index f4a329e..a38dcf1 100644 ---- a/gettext-tools/libgettextpo/xalloc.h -+++ b/gettext-tools/libgettextpo/xalloc.h -@@ -60,7 +60,7 @@ extern "C" { - in charge of honoring the three previous items. This is the - function to call when one wants the program to die because of a - memory allocation failure. */ --extern void xalloc_die (void) -+extern _Noreturn void xalloc_die (void) - #if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) && !__STRICT_ANSI__ - __attribute__ ((__noreturn__)) - #endif -diff --git a/gettext-tools/src/plural-exp.c b/gettext-tools/src/plural-exp.c -index d5b9deb..e2c6bc4 100644 ---- a/gettext-tools/src/plural-exp.c -+++ b/gettext-tools/src/plural-exp.c -@@ -17,5 +17,5 @@ - - /* Include the expression parsing code from libintl, with different function - names. */ --#include "../intl/pluralx.c" -+#include "../intl/plural.c" - #include "../../gettext-runtime/intl/plural-exp.c" diff --git a/third-party/patches/gettext-Fix-compilation-on-a-system-without-alloca.patch b/third-party/patches/gettext-Fix-compilation-on-a-system-without-alloca.patch deleted file mode 100644 index 5c472c470f..0000000000 --- a/third-party/patches/gettext-Fix-compilation-on-a-system-without-alloca.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 1d12aeb7334104f77070361492ff7cc8225503f5 Mon Sep 17 00:00:00 2001 -From: Daiki Ueno <ueno@gnu.org> -Date: Mon, 14 Nov 2016 13:27:58 +0100 -Subject: [PATCH] intl: Fix compilation on a system without alloca - -* gettext-runtime/intl/dcigettext.c (DCIGETTEXT): Fix typo 'tmp_dirname' --> 'resolved_dirname'. Reported by Egor Pugin in: -http://lists.gnu.org/archive/html/bug-gettext/2016-09/msg00008.html ---- - gettext-runtime/intl/dcigettext.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gettext-runtime/intl/dcigettext.c b/gettext-runtime/intl/dcigettext.c -index 83bd77574..92f6fd685 100644 ---- a/gettext-runtime/intl/dcigettext.c -+++ b/gettext-runtime/intl/dcigettext.c -@@ -634,7 +634,7 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2, - for (;;) - { - resolved_dirname = (char *) alloca (path_max + dirname_len); -- ADD_BLOCK (block_list, tmp_dirname); -+ ADD_BLOCK (block_list, resolved_dirname); - - __set_errno (0); - ret = getcwd (resolved_dirname, path_max); --- -2.16.1.windows.4 - |