build: build all dependencies in parallel (#22329)

Previously, all targets were connected in one main target called
third-party in order to remove any potentially conflicting shared
library. We can make each dependency target independent of each other by
only removing shared libraries from luajit and msgpack in their own
targets, as only these has unwanted shared libraries.
This commit is contained in:
dundargoc 2023-02-19 21:11:27 +01:00 committed by GitHub
parent bfe6b49447
commit 5ffd3d035d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 22 additions and 57 deletions

View File

@ -274,23 +274,3 @@ if(WIN32)
GetBinaryDep(TARGET win32yank_X86_64 GetBinaryDep(TARGET win32yank_X86_64
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy win32yank.exe ${DEPS_INSTALL_DIR}/bin) INSTALL_COMMAND ${CMAKE_COMMAND} -E copy win32yank.exe ${DEPS_INSTALL_DIR}/bin)
endif() endif()
# 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}
-D REMOVE_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()
# TODO(justinmk): does anyone use this target?
add_custom_target(third-party ALL
COMMAND ${CMAKE_COMMAND} -E touch .third-party
DEPENDS ${ALL_DEPS}
)

View File

@ -18,7 +18,6 @@ else()
message(FATAL_ERROR "Trying to build gettext in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}") message(FATAL_ERROR "Trying to build gettext in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}")
endif() endif()
list(APPEND THIRD_PARTY_DEPS gettext)
if(USE_BUNDLED_LIBICONV) if(USE_BUNDLED_LIBICONV)
add_dependencies(gettext libiconv) add_dependencies(gettext libiconv)
endif() endif()

View File

@ -15,5 +15,3 @@ if(MSVC)
else() else()
message(FATAL_ERROR "Trying to build libiconv in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}") message(FATAL_ERROR "Trying to build libiconv in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}")
endif() endif()
list(APPEND THIRD_PARTY_DEPS libiconv)

View File

@ -14,5 +14,3 @@ ExternalProject_Add(libtermkey
-D UNIBILIUM_INCLUDE_DIRS=${DEPS_INSTALL_DIR}/include -D UNIBILIUM_INCLUDE_DIRS=${DEPS_INSTALL_DIR}/include
-D UNIBILIUM_LIBRARIES=${DEPS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}unibilium${CMAKE_STATIC_LIBRARY_SUFFIX} -D UNIBILIUM_LIBRARIES=${DEPS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}unibilium${CMAKE_STATIC_LIBRARY_SUFFIX}
CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}) CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
list(APPEND THIRD_PARTY_DEPS libtermkey)

View File

@ -11,5 +11,3 @@ ExternalProject_Add(libuv
-D BUILD_TESTING=OFF -D BUILD_TESTING=OFF
-D LIBUV_BUILD_SHARED=OFF -D LIBUV_BUILD_SHARED=OFF
CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}) CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
list(APPEND THIRD_PARTY_DEPS libuv)

View File

@ -11,5 +11,3 @@ ExternalProject_Add(libvterm
${DEPS_BUILD_DIR}/src/libvterm/CMakeLists.txt ${DEPS_BUILD_DIR}/src/libvterm/CMakeLists.txt
CMAKE_ARGS ${DEPS_CMAKE_ARGS} CMAKE_ARGS ${DEPS_CMAKE_ARGS}
CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}) CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
list(APPEND THIRD_PARTY_DEPS libvterm)

View File

@ -55,15 +55,11 @@ ExternalProject_Add(lua
BUILD_COMMAND ${MAKE_PRG} ${LUA_INSTALL_TOP_ARG} ${LUA_TARGET} BUILD_COMMAND ${MAKE_PRG} ${LUA_INSTALL_TOP_ARG} ${LUA_TARGET}
INSTALL_COMMAND ${MAKE_PRG} ${LUA_INSTALL_TOP_ARG} install) INSTALL_COMMAND ${MAKE_PRG} ${LUA_INSTALL_TOP_ARG} install)
list(APPEND THIRD_PARTY_DEPS lua)
set(BUSTED ${DEPS_INSTALL_DIR}/bin/busted) set(BUSTED ${DEPS_INSTALL_DIR}/bin/busted)
set(BUSTED_LUA ${BUSTED}-lua) set(BUSTED_LUA ${BUSTED}-lua)
add_custom_command(OUTPUT ${BUSTED_LUA} add_custom_command(OUTPUT ${BUSTED_LUA}
COMMAND sed -e 's/^exec/exec $$LUA_DEBUGGER/' -e 's/jit//g' < ${BUSTED} > ${BUSTED_LUA} && chmod +x ${BUSTED_LUA} COMMAND sed -e 's/^exec/exec $$LUA_DEBUGGER/' -e 's/jit//g' < ${BUSTED} > ${BUSTED_LUA} && chmod +x ${BUSTED_LUA}
DEPENDS lua busted ${BUSTED}) DEPENDS lua busted ${BUSTED})
add_custom_target(busted-lua add_custom_target(busted-lua ALL
DEPENDS ${DEPS_INSTALL_DIR}/bin/busted-lua) DEPENDS ${DEPS_INSTALL_DIR}/bin/busted-lua)
list(APPEND THIRD_PARTY_DEPS busted-lua)

View File

@ -149,4 +149,10 @@ else()
message(FATAL_ERROR "Trying to build luajit in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}") message(FATAL_ERROR "Trying to build luajit in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}")
endif() endif()
list(APPEND THIRD_PARTY_DEPS luajit) if (NOT MSVC)
add_custom_target(clean_shared_libraries_luajit ALL
COMMAND ${CMAKE_COMMAND}
-D REMOVE_FILE_GLOB=${DEPS_INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}*${CMAKE_SHARED_LIBRARY_SUFFIX}*
-P ${PROJECT_SOURCE_DIR}/cmake/RemoveFiles.cmake)
add_dependencies(clean_shared_libraries_luajit luajit)
endif()

View File

@ -94,8 +94,6 @@ ExternalProject_Add(luarocks
BUILD_COMMAND "" BUILD_COMMAND ""
INSTALL_COMMAND "${LUAROCKS_INSTALL_COMMAND}") INSTALL_COMMAND "${LUAROCKS_INSTALL_COMMAND}")
list(APPEND THIRD_PARTY_DEPS luarocks)
if(USE_BUNDLED_LUAJIT) if(USE_BUNDLED_LUAJIT)
add_dependencies(luarocks luajit) add_dependencies(luarocks luajit)
elseif(USE_BUNDLED_LUA) elseif(USE_BUNDLED_LUA)
@ -107,23 +105,20 @@ set(ROCKS_DIR ${DEPS_LIB_DIR}/luarocks/rocks-${LUA_VERSION})
add_custom_command(OUTPUT ${ROCKS_DIR}/mpack add_custom_command(OUTPUT ${ROCKS_DIR}/mpack
COMMAND ${LUAROCKS_BINARY} build mpack 1.0.8-0 ${LUAROCKS_BUILDARGS} COMMAND ${LUAROCKS_BINARY} build mpack 1.0.8-0 ${LUAROCKS_BUILDARGS}
DEPENDS luarocks) DEPENDS luarocks)
add_custom_target(mpack DEPENDS ${ROCKS_DIR}/mpack) add_custom_target(mpack ALL DEPENDS ${ROCKS_DIR}/mpack)
list(APPEND THIRD_PARTY_DEPS mpack)
# lpeg # lpeg
add_custom_command(OUTPUT ${ROCKS_DIR}/lpeg add_custom_command(OUTPUT ${ROCKS_DIR}/lpeg
COMMAND ${LUAROCKS_BINARY} build lpeg 1.0.2-1 ${LUAROCKS_BUILDARGS} COMMAND ${LUAROCKS_BINARY} build lpeg 1.0.2-1 ${LUAROCKS_BUILDARGS}
DEPENDS mpack) DEPENDS mpack)
add_custom_target(lpeg DEPENDS ${ROCKS_DIR}/lpeg) add_custom_target(lpeg ALL DEPENDS ${ROCKS_DIR}/lpeg)
list(APPEND THIRD_PARTY_DEPS lpeg)
if((NOT USE_BUNDLED_LUAJIT) AND USE_BUNDLED_LUA) if((NOT USE_BUNDLED_LUAJIT) AND USE_BUNDLED_LUA)
# luabitop # luabitop
add_custom_command(OUTPUT ${ROCKS_DIR}/luabitop add_custom_command(OUTPUT ${ROCKS_DIR}/luabitop
COMMAND ${LUAROCKS_BINARY} build luabitop 1.0.2-3 ${LUAROCKS_BUILDARGS} COMMAND ${LUAROCKS_BINARY} build luabitop 1.0.2-3 ${LUAROCKS_BUILDARGS}
DEPENDS lpeg) DEPENDS lpeg)
add_custom_target(luabitop DEPENDS ${ROCKS_DIR}/luabitop) add_custom_target(luabitop ALL DEPENDS ${ROCKS_DIR}/luabitop)
list(APPEND THIRD_PARTY_DEPS luabitop)
endif() endif()
if(USE_BUNDLED_BUSTED) if(USE_BUNDLED_BUSTED)
@ -137,7 +132,7 @@ if(USE_BUNDLED_BUSTED)
add_custom_command(OUTPUT ${ROCKS_DIR}/penlight add_custom_command(OUTPUT ${ROCKS_DIR}/penlight
COMMAND ${LUAROCKS_BINARY} build penlight 1.5.4-1 ${LUAROCKS_BUILDARGS} COMMAND ${LUAROCKS_BINARY} build penlight 1.5.4-1 ${LUAROCKS_BUILDARGS}
DEPENDS ${PENLIGHT_DEPENDS}) DEPENDS ${PENLIGHT_DEPENDS})
add_custom_target(penlight DEPENDS ${ROCKS_DIR}/penlight) add_custom_target(penlight ALL DEPENDS ${ROCKS_DIR}/penlight)
# busted # busted
if(WIN32) if(WIN32)
@ -150,22 +145,19 @@ if(USE_BUNDLED_BUSTED)
add_custom_command(OUTPUT ${BUSTED_EXE} add_custom_command(OUTPUT ${BUSTED_EXE}
COMMAND ${LUAROCKS_BINARY} build busted 2.1.1 ${LUAROCKS_BUILDARGS} COMMAND ${LUAROCKS_BINARY} build busted 2.1.1 ${LUAROCKS_BUILDARGS}
DEPENDS penlight) DEPENDS penlight)
add_custom_target(busted DEPENDS ${BUSTED_EXE}) add_custom_target(busted ALL DEPENDS ${BUSTED_EXE})
# luacheck # luacheck
add_custom_command(OUTPUT ${LUACHECK_EXE} add_custom_command(OUTPUT ${LUACHECK_EXE}
COMMAND ${LUAROCKS_BINARY} build luacheck 0.23.0-1 ${LUAROCKS_BUILDARGS} COMMAND ${LUAROCKS_BINARY} build luacheck 0.23.0-1 ${LUAROCKS_BUILDARGS}
DEPENDS busted) DEPENDS busted)
add_custom_target(luacheck DEPENDS ${LUACHECK_EXE}) add_custom_target(luacheck ALL DEPENDS ${LUACHECK_EXE})
if (NOT USE_BUNDLED_LUAJIT) if (NOT USE_BUNDLED_LUAJIT)
# coxpcall # coxpcall
add_custom_command(OUTPUT ${ROCKS_DIR}/coxpcall add_custom_command(OUTPUT ${ROCKS_DIR}/coxpcall
COMMAND ${LUAROCKS_BINARY} build coxpcall 1.16.0-1 ${LUAROCKS_BUILDARGS} COMMAND ${LUAROCKS_BINARY} build coxpcall 1.16.0-1 ${LUAROCKS_BUILDARGS}
DEPENDS luarocks) DEPENDS luarocks)
add_custom_target(coxpcall DEPENDS ${ROCKS_DIR}/coxpcall) add_custom_target(coxpcall ALL DEPENDS ${ROCKS_DIR}/coxpcall)
list(APPEND THIRD_PARTY_DEPS coxpcall)
endif() endif()
list(APPEND THIRD_PARTY_DEPS busted luacheck)
endif() endif()

View File

@ -60,7 +60,6 @@ ExternalProject_Add(luv-static
CMAKE_ARGS ${DEPS_CMAKE_ARGS} ${LUV_CMAKE_ARGS} CMAKE_ARGS ${DEPS_CMAKE_ARGS} ${LUV_CMAKE_ARGS}
CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}) CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
list(APPEND THIRD_PARTY_DEPS luv-static)
if(USE_BUNDLED_LUAJIT) if(USE_BUNDLED_LUAJIT)
add_dependencies(luv-static luajit) add_dependencies(luv-static luajit)
elseif(USE_BUNDLED_LUA) elseif(USE_BUNDLED_LUA)

View File

@ -11,4 +11,10 @@ ExternalProject_Add(msgpack
-D MSGPACK_BUILD_EXAMPLES=OFF -D MSGPACK_BUILD_EXAMPLES=OFF
CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}) CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
list(APPEND THIRD_PARTY_DEPS msgpack) if (NOT MSVC)
add_custom_target(clean_shared_libraries_msgpack ALL
COMMAND ${CMAKE_COMMAND}
-D REMOVE_FILE_GLOB=${DEPS_INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}*${CMAKE_SHARED_LIBRARY_SUFFIX}*
-P ${PROJECT_SOURCE_DIR}/cmake/RemoveFiles.cmake)
add_dependencies(clean_shared_libraries_msgpack msgpack)
endif()

View File

@ -12,5 +12,3 @@ ExternalProject_Add(tree-sitter
${DEPS_BUILD_DIR}/src/tree-sitter/CMakeLists.txt ${DEPS_BUILD_DIR}/src/tree-sitter/CMakeLists.txt
CMAKE_ARGS ${DEPS_CMAKE_ARGS} CMAKE_ARGS ${DEPS_CMAKE_ARGS}
CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}) CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
list(APPEND THIRD_PARTY_DEPS tree-sitter)

View File

@ -8,5 +8,3 @@ ExternalProject_Add(unibilium
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/unibilium DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/unibilium
CMAKE_ARGS ${DEPS_CMAKE_ARGS} CMAKE_ARGS ${DEPS_CMAKE_ARGS}
CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}) CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
list(APPEND THIRD_PARTY_DEPS unibilium)

View File

@ -35,5 +35,4 @@ function(GetBinaryDep)
BUILD_COMMAND "" BUILD_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/bin INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/bin
COMMAND "${_gettool_INSTALL_COMMAND}") COMMAND "${_gettool_INSTALL_COMMAND}")
list(APPEND THIRD_PARTY_DEPS ${__gettool_TARGET})
endfunction() endfunction()