build: introduce default build variables (#21991)

There are a number of cmake variables and cache variables that need to
be passed to all dependencies. This is not only cumbersome, but also
fragile as it's easy to miss adding or removing a flag from a dependency
by accident. Introducing a global variable that controls all builds
makes it much easier to handle our dependencies.

Also fixes the currently broken release workflow as we need to pass the
CMAKE_OSX_ARCHITECTURES variable to all dependencies built with cmake.
This commit is contained in:
dundargoc 2023-01-25 14:36:17 +01:00 committed by GitHub
parent 06d1e86ff8
commit b8288df99b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 38 additions and 67 deletions

View File

@ -12,11 +12,19 @@ list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" "${PROJECT_SOURCE_DI
include(CheckCCompilerFlag) include(CheckCCompilerFlag)
include(Util) include(Util)
set(DEPS_CMAKE_ARGS
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
-DCMAKE_POSITION_INDEPENDENT_CODE=ON)
set(DEPS_CMAKE_CACHE_ARGS -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES})
set_default_buildtype() set_default_buildtype()
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(NOT isMultiConfig) if(NOT isMultiConfig)
set(BUILD_TYPE_STRING -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}) list(APPEND DEPS_CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
endif() endif()
set(DEFAULT_MAKE_CFLAGS CFLAGS+=-g) set(DEFAULT_MAKE_CFLAGS CFLAGS+=-g)
@ -37,6 +45,8 @@ else()
set(DEPS_INSTALL_DIR "${CMAKE_BINARY_DIR}/usr" CACHE PATH "Dependencies install directory.") set(DEPS_INSTALL_DIR "${CMAKE_BINARY_DIR}/usr" CACHE PATH "Dependencies install directory.")
endif() endif()
list(APPEND DEPS_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR})
set(DEPS_BIN_DIR "${DEPS_INSTALL_DIR}/bin" CACHE PATH "Dependencies binary install directory.") set(DEPS_BIN_DIR "${DEPS_INSTALL_DIR}/bin" CACHE PATH "Dependencies binary install directory.")
set(DEPS_LIB_DIR "${DEPS_INSTALL_DIR}/lib" CACHE PATH "Dependencies library install directory.") set(DEPS_LIB_DIR "${DEPS_INSTALL_DIR}/lib" CACHE PATH "Dependencies library install directory.")
set(DEPS_BUILD_DIR "${CMAKE_BINARY_DIR}/build" CACHE PATH "Dependencies build directory.") set(DEPS_BUILD_DIR "${CMAKE_BINARY_DIR}/build" CACHE PATH "Dependencies build directory.")

View File

@ -10,13 +10,10 @@ if(MSVC)
PATCH_COMMAND ${CMAKE_COMMAND} -E copy PATCH_COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/cmake/GettextCMakeLists.txt ${CMAKE_CURRENT_SOURCE_DIR}/cmake/GettextCMakeLists.txt
${DEPS_BUILD_DIR}/src/gettext/CMakeLists.txt ${DEPS_BUILD_DIR}/src/gettext/CMakeLists.txt
CMAKE_ARGS CMAKE_ARGS ${DEPS_CMAKE_ARGS}
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
${BUILD_TYPE_STRING}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
-DLIBICONV_INCLUDE_DIRS=${DEPS_INSTALL_DIR}/include -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}) -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}
CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
else() 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()

View File

@ -10,11 +10,8 @@ if(MSVC)
PATCH_COMMAND ${CMAKE_COMMAND} -E copy PATCH_COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/cmake/LibiconvCMakeLists.txt ${CMAKE_CURRENT_SOURCE_DIR}/cmake/LibiconvCMakeLists.txt
${DEPS_BUILD_DIR}/src/libiconv/CMakeLists.txt ${DEPS_BUILD_DIR}/src/libiconv/CMakeLists.txt
CMAKE_ARGS CMAKE_ARGS ${DEPS_CMAKE_ARGS}
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
${BUILD_TYPE_STRING}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM})
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()

View File

@ -9,14 +9,10 @@ ExternalProject_Add(libtermkey
PATCH_COMMAND ${CMAKE_COMMAND} -E copy PATCH_COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/cmake/libtermkeyCMakeLists.txt ${CMAKE_CURRENT_SOURCE_DIR}/cmake/libtermkeyCMakeLists.txt
${DEPS_BUILD_DIR}/src/libtermkey/CMakeLists.txt ${DEPS_BUILD_DIR}/src/libtermkey/CMakeLists.txt
CMAKE_ARGS CMAKE_ARGS ${DEPS_CMAKE_ARGS}
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
-DCMAKE_SHARED_LIBRARY_LINK_C_FLAGS="" # Hack to avoid -rdynamic in Mingw -DCMAKE_SHARED_LIBRARY_LINK_C_FLAGS="" # Hack to avoid -rdynamic in Mingw
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DUNIBILIUM_INCLUDE_DIRS=${DEPS_INSTALL_DIR}/include -DUNIBILIUM_INCLUDE_DIRS=${DEPS_INSTALL_DIR}/include
-DUNIBILIUM_LIBRARIES=${DEPS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}unibilium${CMAKE_STATIC_LIBRARY_SUFFIX} -DUNIBILIUM_LIBRARIES=${DEPS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}unibilium${CMAKE_STATIC_LIBRARY_SUFFIX}
${BUILD_TYPE_STRING}) CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
list(APPEND THIRD_PARTY_DEPS libtermkey) list(APPEND THIRD_PARTY_DEPS libtermkey)

View File

@ -5,15 +5,11 @@ ExternalProject_Add(libuv
URL ${LIBUV_URL} URL ${LIBUV_URL}
URL_HASH SHA256=${LIBUV_SHA256} URL_HASH SHA256=${LIBUV_SHA256}
DOWNLOAD_NO_PROGRESS TRUE DOWNLOAD_NO_PROGRESS TRUE
CMAKE_ARGS DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libuv
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} CMAKE_ARGS ${DEPS_CMAKE_ARGS}
-DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_LIBDIR=lib
-DBUILD_TESTING=OFF -DBUILD_TESTING=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DLIBUV_BUILD_SHARED=OFF -DLIBUV_BUILD_SHARED=OFF
${BUILD_TYPE_STRING} CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
CMAKE_CACHE_ARGS
-DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/libuv)
list(APPEND THIRD_PARTY_DEPS libuv) list(APPEND THIRD_PARTY_DEPS libuv)

View File

@ -33,6 +33,8 @@ ExternalProject_Add(libvterm
BUILD_IN_SOURCE 1 BUILD_IN_SOURCE 1
CONFIGURE_COMMAND "${LIBVTERM_CONFIGURE_COMMAND}" CONFIGURE_COMMAND "${LIBVTERM_CONFIGURE_COMMAND}"
BUILD_COMMAND "${LIBVTERM_BUILD_COMMAND}" BUILD_COMMAND "${LIBVTERM_BUILD_COMMAND}"
INSTALL_COMMAND "${LIBVTERM_INSTALL_COMMAND}") INSTALL_COMMAND "${LIBVTERM_INSTALL_COMMAND}"
CMAKE_ARGS ${DEPS_CMAKE_ARGS}
CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
list(APPEND THIRD_PARTY_DEPS libvterm) list(APPEND THIRD_PARTY_DEPS libvterm)

View File

@ -2,18 +2,12 @@ set(LUV_INCLUDE_FLAGS
"-I${DEPS_INSTALL_DIR}/include -I${DEPS_INSTALL_DIR}/include/luajit-2.1") "-I${DEPS_INSTALL_DIR}/include -I${DEPS_INSTALL_DIR}/include/luajit-2.1")
set(LUV_CMAKE_ARGS set(LUV_CMAKE_ARGS
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
${BUILD_TYPE_STRING}
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
-DLUA_BUILD_TYPE=System -DLUA_BUILD_TYPE=System
-DLUA_COMPAT53_DIR=${DEPS_BUILD_DIR}/src/lua-compat-5.3 -DLUA_COMPAT53_DIR=${DEPS_BUILD_DIR}/src/lua-compat-5.3
-DWITH_SHARED_LIBUV=ON -DWITH_SHARED_LIBUV=ON
-DBUILD_SHARED_LIBS=OFF -DBUILD_SHARED_LIBS=OFF
-DBUILD_STATIC_LIBS=ON -DBUILD_STATIC_LIBS=ON
-DBUILD_MODULE=OFF -DBUILD_MODULE=OFF)
-DCMAKE_POSITION_INDEPENDENT_CODE=ON)
if(USE_BUNDLED_LUAJIT) if(USE_BUNDLED_LUAJIT)
list(APPEND LUV_CMAKE_ARGS -DWITH_LUA_ENGINE=LuaJit) list(APPEND LUV_CMAKE_ARGS -DWITH_LUA_ENGINE=LuaJit)
@ -63,9 +57,8 @@ ExternalProject_Add(luv-static
DOWNLOAD_NO_PROGRESS TRUE DOWNLOAD_NO_PROGRESS TRUE
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/luv DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/luv
SOURCE_DIR ${DEPS_BUILD_DIR}/src/luv SOURCE_DIR ${DEPS_BUILD_DIR}/src/luv
CMAKE_ARGS ${LUV_CMAKE_ARGS} CMAKE_ARGS ${DEPS_CMAKE_ARGS} ${LUV_CMAKE_ARGS}
CMAKE_CACHE_ARGS CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
-DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES})
list(APPEND THIRD_PARTY_DEPS luv-static) list(APPEND THIRD_PARTY_DEPS luv-static)
if(USE_BUNDLED_LUAJIT) if(USE_BUNDLED_LUAJIT)

View File

@ -1,13 +1,3 @@
set(MSGPACK_CMAKE_ARGS
-DMSGPACK_BUILD_TESTS=OFF
-DMSGPACK_BUILD_EXAMPLES=OFF
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
${BUILD_TYPE_STRING})
if(USE_EXISTING_SRC_DIR) if(USE_EXISTING_SRC_DIR)
unset(MSGPACK_URL) unset(MSGPACK_URL)
endif() endif()
@ -16,8 +6,9 @@ ExternalProject_Add(msgpack
URL_HASH SHA256=${MSGPACK_SHA256} URL_HASH SHA256=${MSGPACK_SHA256}
DOWNLOAD_NO_PROGRESS TRUE DOWNLOAD_NO_PROGRESS TRUE
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/msgpack DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/msgpack
CMAKE_ARGS "${MSGPACK_CMAKE_ARGS}" CMAKE_ARGS ${DEPS_CMAKE_ARGS}
CMAKE_CACHE_ARGS -DMSGPACK_BUILD_TESTS=OFF
-DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}) -DMSGPACK_BUILD_EXAMPLES=OFF
CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
list(APPEND THIRD_PARTY_DEPS msgpack) list(APPEND THIRD_PARTY_DEPS msgpack)

View File

@ -10,12 +10,7 @@ ExternalProject_Add(tree-sitter
PATCH_COMMAND ${CMAKE_COMMAND} -E copy PATCH_COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/cmake/TreesitterCMakeLists.txt ${CMAKE_CURRENT_SOURCE_DIR}/cmake/TreesitterCMakeLists.txt
${DEPS_BUILD_DIR}/src/tree-sitter/CMakeLists.txt ${DEPS_BUILD_DIR}/src/tree-sitter/CMakeLists.txt
CMAKE_ARGS CMAKE_ARGS ${DEPS_CMAKE_ARGS}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
${BUILD_TYPE_STRING})
list(APPEND THIRD_PARTY_DEPS tree-sitter) list(APPEND THIRD_PARTY_DEPS tree-sitter)

View File

@ -8,14 +8,12 @@ function(BuildTSParser LANG TS_URL TS_SHA256 TS_CMAKE_FILE)
URL_HASH SHA256=${TS_SHA256} URL_HASH SHA256=${TS_SHA256}
DOWNLOAD_NO_PROGRESS TRUE DOWNLOAD_NO_PROGRESS TRUE
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/${NAME} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/${NAME}
CMAKE_CACHE_ARGS
-DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
PATCH_COMMAND ${CMAKE_COMMAND} -E copy PATCH_COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/cmake/${TS_CMAKE_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${TS_CMAKE_FILE}
${DEPS_BUILD_DIR}/src/${NAME}/CMakeLists.txt ${DEPS_BUILD_DIR}/src/${NAME}/CMakeLists.txt
CMAKE_ARGS CMAKE_ARGS ${DEPS_CMAKE_ARGS}
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR} -DPARSERLANG=${LANG}
-DPARSERLANG=${LANG}) CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
endfunction() endfunction()
BuildTSParser(c ${TREESITTER_C_URL} ${TREESITTER_C_SHA256} TreesitterParserCMakeLists.txt) BuildTSParser(c ${TREESITTER_C_URL} ${TREESITTER_C_SHA256} TreesitterParserCMakeLists.txt)

View File

@ -6,11 +6,7 @@ ExternalProject_Add(unibilium
URL_HASH SHA256=${UNIBILIUM_SHA256} URL_HASH SHA256=${UNIBILIUM_SHA256}
DOWNLOAD_NO_PROGRESS TRUE DOWNLOAD_NO_PROGRESS TRUE
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/unibilium DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/unibilium
CMAKE_ARGS CMAKE_ARGS ${DEPS_CMAKE_ARGS}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR} CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
${BUILD_TYPE_STRING})
list(APPEND THIRD_PARTY_DEPS unibilium) list(APPEND THIRD_PARTY_DEPS unibilium)