OpenMiInk/third_party/krita-deps-management/ext_boost/CMakeLists.txt
Hellings b8c8ff98e2 Hi
2026-10-16 09:05:56 -04:00

149 lines
6.4 KiB
CMake

cmake_minimum_required(VERSION 3.29)
# IMPORTANT NOTE
#
# We don't use boost::system in Krita, but we should pass at least
# something to ./b2 to make sure boost doesn't try to build anything
# non-header-only; (boost::system itself is a header-only library, so
# it will not result in any module either!)
project(ext_boost)
include(${CMAKE_SOURCE_DIR}/../cmake/base-dep-options.cmake)
if(WIN32)
if(MINGW)
string(REGEX REPLACE "([0-9])\\.([0-9])(\\.[0-9])?" "\\1"
KRITA_boost_COMPILER_VERSION ${CMAKE_CXX_COMPILER_VERSION})
# Detect architecture
if(CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64|aarch64|arm64")
set(BOOST_ARCH "arm")
set(BOOST_ADDR_MODEL "64")
set(BOOST_PLATFORM_TAG "a64") # ARM64 platform tag
else()
set(BOOST_ARCH "x86")
set(BOOST_ADDR_MODEL "64")
set(BOOST_PLATFORM_TAG "x64") # x86-64 platform tag
endif()
set (BUILD_ARGS -j${SUBMAKE_JOBS} linkflags="${SECURITY_SHARED_LINKER_FLAGS}"
--with-system --build-dir=build-dir toolset=gcc variant=release
link=shared threading=multi
architecture=${BOOST_ARCH} address-model=${BOOST_ADDR_MODEL})
ExternalProject_Add(
ext_boost
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL https://archives.boost.io/release/1.90.0/source/boost_1_90_0.tar.bz2
URL_HASH SHA256=49551aff3b22cbc5c5a9ed3dbc92f0e23ea50a0f7325b0d198b705e8ee3fc305
CONFIGURE_COMMAND <SOURCE_DIR>/bootstrap.bat gcc --prefix=${EXTPREFIX}
BUILD_COMMAND ${CMAKE_COMMAND} -DPREFIX=${EXTPREFIX} -P ${CMAKE_CURRENT_SOURCE_DIR}/run-b2-with-destdir.cmake -- ${BUILD_ARGS}
INSTALL_COMMAND ${CMAKE_COMMAND} -DPREFIX=${EXTPREFIX} -P ${CMAKE_CURRENT_SOURCE_DIR}/run-b2-with-destdir.cmake -- ${BUILD_ARGS} -d0 install
UPDATE_COMMAND ""
BUILD_IN_SOURCE 1
)
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
message(STATUS "Applying Clang override to Boost...")
set(_user_config "using gcc : : ${CMAKE_CXX_COMPILER} ;")
file(WRITE
${CMAKE_CURRENT_BINARY_DIR}/user-config.jam
"${_user_config}"
)
ExternalProject_Add_Step(
ext_boost
configure_clang_mingw
COMMAND ${CMAKE_COMMAND} -E rm <SOURCE_DIR>/project-config.jam
DEPENDEES configure
DEPENDERS build
)
ExternalProject_Add_Step(
ext_boost
patch_clang_mingw
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/user-config.jam <SOURCE_DIR>/tools/build/src/user-config.jam
DEPENDEES patch
DEPENDERS configure
)
endif()
else()
set (BUILD_ARGS -j${SUBMAKE_JOBS} --with-system --build-dir=build-dir toolset=msvc variant=release link=shared threading=multi architecture=x86 install)
# Boost.Build cannot append arbitrary flags to MSVC from the command line.
# It becomes unable to detect the target architecture or defaults to x86 only.
# On top of that, parameterizing the linkflags flag breaks the MinGW build.
ExternalProject_Add(
ext_boost
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL https://archives.boost.io/release/1.90.0/source/boost_1_90_0.tar.bz2
URL_HASH SHA256=49551aff3b22cbc5c5a9ed3dbc92f0e23ea50a0f7325b0d198b705e8ee3fc305
CONFIGURE_COMMAND <SOURCE_DIR>/bootstrap.bat msvc --prefix=${EXTPREFIX}
BUILD_COMMAND ${CMAKE_COMMAND} -DPREFIX=${EXTPREFIX} -P ${CMAKE_CURRENT_SOURCE_DIR}/run-b2-with-destdir.cmake -- ${BUILD_ARGS}
INSTALL_COMMAND ${CMAKE_COMMAND} -DPREFIX=${EXTPREFIX} -P ${CMAKE_CURRENT_SOURCE_DIR}/run-b2-with-destdir.cmake -- ${BUILD_ARGS} install
UPDATE_COMMAND ""
BUILD_IN_SOURCE 1
)
if (NOT DEFINED MSVC_TOOLSET_VERSION)
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" KRITA_boost_COMPILER ${CMAKE_CXX_COMPILER})
string(REGEX REPLACE "^([0-9]+)\\.([0-9]).+$" "\\1\\2"
KRITA_boost_COMPILER_VERSION ${KRITA_boost_COMPILER})
else()
set(KRITA_boost_COMPILER_VERSION ${MSVC_TOOLSET_VERSION})
endif()
endif()
elseif(ANDROID)
set (BUILD_ARGS --with-libraries=system --boost=1.90.0 --arch=${ANDROID_ABI} ${CMAKE_ANDROID_NDK})
ExternalProject_Add( ext_boost
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
DOWNLOAD_NAME boost-6dcf8c41657d2e5829253009137302a576a174cb.tar.gz
URL https://github.com/moritz-wundke/Boost-for-Android/archive/6dcf8c41657d2e5829253009137302a576a174cb.tar.gz
URL_HASH SHA256=ebdab9383a15e21c0e0829c6c483276f5d04c8f0612227021713c4f761594a95
PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/0001-Add-support-for-NDK-27.X-and-30.0.patch
CONFIGURE_COMMAND ""
# no prefix is passed, we will install it ourselves!
BUILD_COMMAND <SOURCE_DIR>/build-android.sh ${BUILD_ARGS}
INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Installing Boost..."
UPDATE_COMMAND ""
BUILD_IN_SOURCE 1
)
ExternalProject_Add_Step(
ext_boost
pre_install
COMMAND ${CMAKE_COMMAND} -DSRC=<SOURCE_DIR>/build/out/${ANDROID_ABI}/lib -DDST=${EXTPREFIX}/lib -P ${KRITA_CI_INSTALL_DIRECTORY}
COMMAND ${CMAKE_COMMAND} -DSRC=<SOURCE_DIR>/build/out/${ANDROID_ABI}/include -DDST=${EXTPREFIX}/include -P ${KRITA_CI_INSTALL_DIRECTORY}
DEPENDERS install
)
else()
if(APPLE)
set(MACOS_BOOST_ARGS "architecture=arm+x86" "cxxflags=${MACOS_ARCH_FLAGS}")
endif()
ExternalProject_Add( ext_boost
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL https://archives.boost.io/release/1.90.0/source/boost_1_90_0.tar.bz2
URL_HASH SHA256=49551aff3b22cbc5c5a9ed3dbc92f0e23ea50a0f7325b0d198b705e8ee3fc305
CONFIGURE_COMMAND <SOURCE_DIR>/bootstrap.sh --prefix=${EXTPREFIX} --with-libraries=system
BUILD_COMMAND ${CMAKE_COMMAND} -DPREFIX=${EXTPREFIX} -P ${CMAKE_CURRENT_SOURCE_DIR}/run-b2-with-destdir.cmake -- ${MACOS_BOOST_ARGS}
INSTALL_COMMAND ${CMAKE_COMMAND} -DPREFIX=${EXTPREFIX} -P ${CMAKE_CURRENT_SOURCE_DIR}/run-b2-with-destdir.cmake -- ${MACOS_BOOST_ARGS} -d0 install
UPDATE_COMMAND ""
BUILD_IN_SOURCE 1
)
endif()
krita_add_to_ci_targets(ext_boost)