kumquat-buildroot/package/cmake/Config.in.host

69 lines
1.9 KiB
Plaintext
Raw Normal View History

config BR2_PACKAGE_HOST_CMAKE
bool "host cmake"
help
CMake is an open-source, cross-platform family of tools
designed to build, test and package software. CMake is used
to control the software compilation process using simple
platform and compiler independent configuration files, and
generate native makefiles and workspaces that can be used in
the compiler environment of your choice.
http://www.cmake.org/
support/dependencies: introduce BR2_HOST_CMAKE_AT_LEAST Some packages (e.g. libjxl) requires a quite recent cmake version, that is not yet available in most distributions, especially those LTS versions. Currently, when we bump the minimum cmake version we require, it gets bumped for all packages, regardless of their own minimum required version, which means that a given configuration will trigger the build of our host-cmake even if the packages that require it are not enabled and those that are would be content with the system-provided cmake. Since host-cmake can take quite some time to build, this can get a bit annoying to pay the price of a host-cmake build that would otherwise not be needed. Some packages even use an alternative build system when available since they requires a more recent version of cmake than the our minimum cmake version (wpewebkit use Ninja: 78d499409f71d8a22b0632c8ebc06f67ee6ae6dd). We introduce config options that packages can select to indicate what minimal cmake version they require, and use that version as the required minimal version required by the current configuration [0]. We would like to ensure that the currently selected minimum cmake version is indeed lower (or equal) to the cmake version we package, but that is not possible: dependencies.mk is parsed before we parse packages, so we do not yet know the cmake version we have, and we can't invert the parsing order as we need to know the required dependencies before we parse packages (so that we can build their dependency rules in Makefile). So we can only add comments in both places, that refer to the other location. [0] note that this is yet not optimal, as in such a case, host-cmake would be in the dependency chain of all cmake-based packages, even for those packages that do not require it. The optimum would be for each package to gain such a dependency on an as-needed basis, but this is by far more complex to achieve, and would only speed up cases where a single package is built from scratch (e.g. with: make clean; make foo), which is not worth optimising (yet?) Signed-off-by: Romain Naour <romain.naour@gmail.com> Cc: Julien Olivain <ju.o@free.fr> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2023-06-05 11:56:06 +02:00
# The minimum system cmake version we expect if 3.18 as provided by
# Debian bullseye, that we use in our reference build docker image.
config BR2_HOST_CMAKE_AT_LEAST_3_19
bool
config BR2_HOST_CMAKE_AT_LEAST_3_20
bool
select BR2_HOST_CMAKE_AT_LEAST_3_19
config BR2_HOST_CMAKE_AT_LEAST_3_21
bool
select BR2_HOST_CMAKE_AT_LEAST_3_20
config BR2_HOST_CMAKE_AT_LEAST_3_22
bool
select BR2_HOST_CMAKE_AT_LEAST_3_21
config BR2_HOST_CMAKE_AT_LEAST_3_23
bool
select BR2_HOST_CMAKE_AT_LEAST_3_22
config BR2_HOST_CMAKE_AT_LEAST_3_24
bool
select BR2_HOST_CMAKE_AT_LEAST_3_23
config BR2_HOST_CMAKE_AT_LEAST_3_25
bool
select BR2_HOST_CMAKE_AT_LEAST_3_24
config BR2_HOST_CMAKE_AT_LEAST_3_26
bool
select BR2_HOST_CMAKE_AT_LEAST_3_25
config BR2_HOST_CMAKE_AT_LEAST_3_27
bool
select BR2_HOST_CMAKE_AT_LEAST_3_26
config BR2_HOST_CMAKE_AT_LEAST_3_28
bool
select BR2_HOST_CMAKE_AT_LEAST_3_27
support/dependencies: introduce BR2_HOST_CMAKE_AT_LEAST Some packages (e.g. libjxl) requires a quite recent cmake version, that is not yet available in most distributions, especially those LTS versions. Currently, when we bump the minimum cmake version we require, it gets bumped for all packages, regardless of their own minimum required version, which means that a given configuration will trigger the build of our host-cmake even if the packages that require it are not enabled and those that are would be content with the system-provided cmake. Since host-cmake can take quite some time to build, this can get a bit annoying to pay the price of a host-cmake build that would otherwise not be needed. Some packages even use an alternative build system when available since they requires a more recent version of cmake than the our minimum cmake version (wpewebkit use Ninja: 78d499409f71d8a22b0632c8ebc06f67ee6ae6dd). We introduce config options that packages can select to indicate what minimal cmake version they require, and use that version as the required minimal version required by the current configuration [0]. We would like to ensure that the currently selected minimum cmake version is indeed lower (or equal) to the cmake version we package, but that is not possible: dependencies.mk is parsed before we parse packages, so we do not yet know the cmake version we have, and we can't invert the parsing order as we need to know the required dependencies before we parse packages (so that we can build their dependency rules in Makefile). So we can only add comments in both places, that refer to the other location. [0] note that this is yet not optimal, as in such a case, host-cmake would be in the dependency chain of all cmake-based packages, even for those packages that do not require it. The optimum would be for each package to gain such a dependency on an as-needed basis, but this is by far more complex to achieve, and would only speed up cases where a single package is built from scratch (e.g. with: make clean; make foo), which is not worth optimising (yet?) Signed-off-by: Romain Naour <romain.naour@gmail.com> Cc: Julien Olivain <ju.o@free.fr> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2023-06-05 11:56:06 +02:00
# This order guarantees that the highest version is set, as kconfig
# stops affecting a value on the first matching default.
config BR2_HOST_CMAKE_AT_LEAST
string
default "3.28" if BR2_HOST_CMAKE_AT_LEAST_3_28
default "3.27" if BR2_HOST_CMAKE_AT_LEAST_3_27
default "3.26" if BR2_HOST_CMAKE_AT_LEAST_3_26
default "3.25" if BR2_HOST_CMAKE_AT_LEAST_3_25
default "3.24" if BR2_HOST_CMAKE_AT_LEAST_3_24
default "3.23" if BR2_HOST_CMAKE_AT_LEAST_3_23
support/dependencies: introduce BR2_HOST_CMAKE_AT_LEAST Some packages (e.g. libjxl) requires a quite recent cmake version, that is not yet available in most distributions, especially those LTS versions. Currently, when we bump the minimum cmake version we require, it gets bumped for all packages, regardless of their own minimum required version, which means that a given configuration will trigger the build of our host-cmake even if the packages that require it are not enabled and those that are would be content with the system-provided cmake. Since host-cmake can take quite some time to build, this can get a bit annoying to pay the price of a host-cmake build that would otherwise not be needed. Some packages even use an alternative build system when available since they requires a more recent version of cmake than the our minimum cmake version (wpewebkit use Ninja: 78d499409f71d8a22b0632c8ebc06f67ee6ae6dd). We introduce config options that packages can select to indicate what minimal cmake version they require, and use that version as the required minimal version required by the current configuration [0]. We would like to ensure that the currently selected minimum cmake version is indeed lower (or equal) to the cmake version we package, but that is not possible: dependencies.mk is parsed before we parse packages, so we do not yet know the cmake version we have, and we can't invert the parsing order as we need to know the required dependencies before we parse packages (so that we can build their dependency rules in Makefile). So we can only add comments in both places, that refer to the other location. [0] note that this is yet not optimal, as in such a case, host-cmake would be in the dependency chain of all cmake-based packages, even for those packages that do not require it. The optimum would be for each package to gain such a dependency on an as-needed basis, but this is by far more complex to achieve, and would only speed up cases where a single package is built from scratch (e.g. with: make clean; make foo), which is not worth optimising (yet?) Signed-off-by: Romain Naour <romain.naour@gmail.com> Cc: Julien Olivain <ju.o@free.fr> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2023-06-05 11:56:06 +02:00
default "3.22" if BR2_HOST_CMAKE_AT_LEAST_3_22
default "3.21" if BR2_HOST_CMAKE_AT_LEAST_3_21
default "3.20" if BR2_HOST_CMAKE_AT_LEAST_3_20
default "3.19" if BR2_HOST_CMAKE_AT_LEAST_3_19
default "3.18"