qtbase/cmake/configure-cmake-mapping.md
Alexandru Croitor 57caaff5fc CMake: Change SBOM generation to be enabled by default (mostly)
Previously SBOM generation was opt-in.

This patch changes the generation of the plain-text tag:value SBOM
to be enabled by default, except for:
- developer builds
- no-prefix builds
- standalone tests or examples
- cmake build tests

The JSON SBOM generation and the verification steps have also been
changed to be enabled by default, but only if the Python dependencies
can be found. If the dependencies are not found, the build will
skip the generation and verification steps.

Four new configure options have been added to control these aspects:
-(no-)sbom-json: Allows explicitly enabling or disabling JSON SBOM
  generation

-(no-)sbom-json-required: Fails the build if JSON SBOM generation
  Python dependencies are not found

-(no-)sbom-verify: Allows explicitly enabling or disabling SBOM
  verification

-(no-)sbom-verify-required: Fails the build if SBOM verification
  Python dependencies are not found

There are corresponding CMake variables for each of the configure
options, see the cmake mapping document.

[ChangeLog][Build Systems] SBOM generation is now enabled by default,
when building Qt, except for developer builds and no-prefix builds.
JSON SBOM generation is enabled by default if the required Python
dependencies are available.

Task-number: QTBUG-122899
Change-Id: I6dbe1869f8342154a89ff2ab84ac53c9ef1b2eb7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
(cherry picked from commit 96c5e55c111d957bd7b5294d2c2eb1d919cce871)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2024-10-21 08:37:20 +00:00

28 KiB

The following table describes the mapping of configure options to CMake arguments.

configure cmake Notes
-prefix /opt/qt6 -DCMAKE_INSTALL_PREFIX=/opt/qta6
-no-prefix (only available in Qt6) -DCMAKE_INSTALL_PREFIX=$PWD (with bash) In Qt5 this was done by specifying -prefix $PWD
or -DFEATURE_no_prefix=ON
-extprefix /opt/qt6 -DCMAKE_STAGING_PREFIX=/opt/qt6
-bindir -DINSTALL_BINDIR= similar for -headerdir -libdir and so on
-hostdatadir -DINSTALL_MKSPECSDIR=
-qt-host-path -DQT_HOST_PATH=
-help n/a Handled by configure[.bat].
-verbose --log-level=STATUS Sets the CMake log level to STATUS. The default one is NOTICE.
-continue
-redo n/a Handled by configure[.bat].
-recheck [test,...]
-feature-foo -DFEATURE_foo=ON
-no-feature-foo -DFEATURE_foo=OFF
-list-features At the moment: configure with cmake once,
then use ccmake or cmake-gui to inspect the features.
-opensource n/a
-commercial n/a
-confirm-license n/a
-release -DCMAKE_BUILD_TYPE=Release
-debug -DCMAKE_BUILD_TYPE=Debug
-debug-and-release -G "Ninja Multi-Config"
-DCMAKE_CONFIGURATION_TYPES=Release;Debug
-optimize-debug -DFEATURE_optimize_debug=ON
-optimize-size -DFEATURE_optimize_size=ON
-optimized-tools n/a This affects only host tools.
-force-debug-info Use the RelWithDebInfo build config.
-separate-debug-info -DFEATURE_separate_debug_info=ON
-gdb-index -DFEATURE_enable_gdb_index=ON
-strip cmake --install . --strip This affects the install targets generated by qmake.
-gc-binaries -DFEATURE_gc_binaries=ON
-force-asserts -DFEATURE_force_asserts=ON
-developer-build -DFEATURE_developer_build=ON
-shared -DBUILD_SHARED_LIBS=ON
-static -DBUILD_SHARED_LIBS=OFF
-framework -DFEATURE_framework=ON
-platform -DQT_QMAKE_TARGET_MKSPEC=
-xplatform -DQT_QMAKE_TARGET_MKSPEC= Used for generating qmake-compatibility files.
If passed 'macx-ios-clang', will configure an iOS build.
-device equivalent to -xplatform devices/
-device-option <key=value> -DQT_QMAKE_DEVICE_OPTIONS=key1=value1;key2=value2 Only used for generation qmake-compatibility files.
The device options are written into mkspecs/qdevice.pri.
-appstore-compliant -DFEATURE_appstore_compliant=ON
-sbom -DQT_GENERATE_SBOM=ON Enables generation and installation of a SPDX SBOM documents
-sbom-json -DQT_SBOM_GENERATE_JSON=ON Enables generation of SPDX SBOM in JSON format
-sbom-json-required -DQT_SBOM_REQUIRE_GENERATE_JSON=ON Fails the build if Python deps are not found
-sbom-verify -DQT_SBOM_VERIFY=ON Enables verification of generated SBOMs
-sbom-verify-required -DQT_SBOM_REQUIRE_VERIFY=ON Fails the build if Python deps are not found
-qtinlinenamespace -DQT_INLINE_NAMESPACE=ON Make the namespace specified by -qtnamespace an inline one.
-qtnamespace -DQT_NAMESPACE=
-qtlibinfix -DQT_LIBINFIX=
-coverage -DINPUT_coverage= Enables code coverage using the specified tool.
-gcov -DINPUT_coverage=gcov Enables code coverage using the gcov tool.
-trace [backend] -DINPUT_trace=yes or -DINPUT_trace=
or -DFEATURE_
-sanitize address -sanitize undefined -DFEATURE_sanitize_address=ON Directly setting -DECM_ENABLE_SANITIZERS=foo is not supported
-DFEATURE_sanitize_undefined=ON
-c++std c++20 -DFEATURE_cxx20=ON
-sse2/-sse3/-ssse3/-sse4.1 -DFEATURE_sse4=ON
-mips_dsp/-mips_dspr2 -DFEATURE_mips_dsp=ON
-qreal -DQT_COORD_TYPE=
-R -DQT_EXTRA_RPATHS=path1;path2
-rpath negative CMAKE_SKIP_BUILD_RPATH
negative CMAKE_SKIP_INSTALL_RPATH
negative CMAKE_MACOSX_RPATH
-reduce-exports -DFEATURE_reduce_exports=ON
-reduce-relocations -DFEATURE_reduce_relocations=ON
-plugin-manifests
-static-runtime -DFEATURE_static_runtime=ON
-pch -DBUILD_WITH_PCH=ON
-ltcg -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON or
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION_=ON
-linker [bfd,gold,lld,mold] -DINPUT_linker= or
-DFEATURE_use__linker=ON
-incredibuild-xge n/a This option enables remote distribution of Visual Studio
custom build steps for moc, uic, and rcc.
This lacks support in CMake.
-ccache -DQT_USE_CCACHE=ON
-unity-build -DQT_UNITY_BUILD=ON
-unity-build-batch-size -DQT_UNITY_BUILD_BATCH_SIZE=
-warnings-are-errors -DWARNINGS_ARE_ERRORS=ON
-no-pkg-config -DFEATURE_pkg_config=OFF
-vcpkg -DQT_USE_VCPKG=ON
-D -DQT_EXTRA_DEFINES=;
-I -DQT_EXTRA_INCLUDEPATHS=;
-L -DQT_EXTRA_LIBDIRS=;
-F -DQT_EXTRA_FRAMEWORKPATHS=;
-sdk -DQT_APPLE_SDK= Should be provided a value like 'iphoneos' or 'iphonesimulator'
If no value is provided, a simulator_and_device build is
assumed.
-android-sdk -DANDROID_SDK_ROOT=
-android-ndk -DCMAKE_TOOLCHAIN_FILE=
-android-ndk-platform android-28 -DANDROID_PLATFORM=android-28
-android-abis <abi_1>,...,<abi_n> -DANDROID_ABI=<abi_1> only one ABI can be specified
-android-style-assets -DFEATURE_android_style_assets=ON
-android-javac-source -DQT_ANDROID_JAVAC_SOURCE=7 Set the javac build source version.
-android-javac-target -DQT_ANDROID_JAVAC_TARGET=7 Set the javac build target version.
-skip ,...,<repo_n> -DBUILD_=OFF
-skip-tests ,...,<repo_n> -DQT_BUILD_TESTS_PROJECT_=OFF
-skip-examples ,...,<repo_n> -DQT_BUILD_EXAMPLES_PROJECT_=OFF
-submodules ,...,<repo_n> -DQT_BUILD_SUBMODULES=;...;
-make -DQT_BUILD_TESTS=ON A way to turn on tools explicitly is missing. If tests/examples
-DQT_BUILD_EXAMPLES=ON are enabled, you can disable their building as part of the
'all' target by also passing -DQT_BUILD_TESTS_BY_DEFAULT=OFF or
-DQT_BUILD_EXAMPLES_BY_DEFAULT=OFF. Note that if you entirely
disable tests/examples at configure time (by using
-DQT_BUILD_TESTS=OFF or -DQT_BUILD_EXAMPLES=OFF) you can't then
build them separately, after configuration.
-nomake -DQT_BUILD_TESTS=OFF A way to turn off tools explicitly is missing.
-DQT_BUILD_EXAMPLES=OFF
-install-examples-sources -DQT_INSTALL_EXAMPLES_SOURCES=ON
-no-gui -DFEATURE_gui=OFF
-no-widgets -DFEATURE_widgets=OFF
-no-dbus -DFEATURE_dbus=OFF
-dbus [linked/runtime] -DINPUT_dbus=[linked/runtime]
-dbus-linked -DINPUT_dbus=linked
-dbus-runtime -DINPUT_dbus=runtime
-accessibility -DFEATURE_accessibility=ON
-doubleconversion -DFEATURE_doubleconversion=ON
-DFEATURE_system_doubleconversion=ON/OFF
-glib -DFEATURE_glib=ON
-inotify -DFEATURE_inotify=ON
-icu -DFEATURE_icu=ON
-pcre -DFEATURE_pcre2=ON
-pcre [system/qt] -DFEATURE_system_pcre2=ON/OFF
-pps n/a QNX feature. Not available for 6.0.
-zlib [system/qt] -DFEATURE_system_zlib=ON/OFF
-ssl -DFEATURE_ssl=ON
-openssl [no/yes/linked/runtime] -DINPUT_openssl=no/yes/linked/runtime
-openssl-linked -DINPUT_openssl=linked
-openssl-runtime -DINPUT_openssl=runtime
-schannel -DFEATURE_schannel=ON
-securetransport -DFEATURE_securetransport=ON
-sctp -DFEATURE_sctp=ON
-libproxy -DFEATURE_libproxy=ON
-system-proxies -DFEATURE_system_proxies=ON
-cups -DFEATURE_cups=ON
-fontconfig -DFEATURE_fontconfig=ON
-freetype [no/qt/system] -DFEATURE_freetype=ON/OFF
-DFEATURE_system_freetype=ON/OFF
-harfbuzz [no/qt/system] -DFEATURE_harfbuzz=ON
-DFEATURE_system_harfbuzz=ON/OFF
-gtk -DFEATURE_gtk3=ON
-lgmon n/a QNX-specific
-no-opengl -DINPUT_opengl=no
-opengl -DINPUT_opengl=
-opengles3 -DFEATURE_opengles3=ON
-egl -DFEATURE_egl=ON
-qpa ;...;<name_n> -DQT_QPA_PLATFORMS=;...;<name_n>
-default-qpa -DQT_QPA_DEFAULT_PLATFORM=
-xcb-xlib -DFEATURE_xcb_xlib=ON
-direct2d -DFEATURE_direct2d=ON
-directfb -DFEATURE_directfb=ON
-eglfs -DFEATURE_eglfs=ON
-gbm -DFEATURE_gbm=ON
-kms -DFEATURE_kms=ON
-linuxfb -DFEATURE_linuxfb=ON
-xcb -DFEATURE_xcb=ON
-libudev -DFEATURE_libudev=ON
-evdev -DFEATURE_evdev=ON
-imf n/a QNX-specific
-libinput -DFEATURE_libinput=ON
-mtdev -DFEATURE_mtdev=ON
-tslib -DFEATURE_tslib=ON
-bundled-xcb-xinput -DFEATURE_system_xcb_xinput=OFF
-xkbcommon -DFEATURE_xkbcommon=ON
-gif -DFEATURE_gif=ON
-ico -DFEATURE_ico=ON
-libpng -DFEATURE_png=ON
-libjpeg -DFEATURE_jpeg=ON
-sql- -DFEATURE_sql_=ON
-sqlite [qt/system] -DFEATURE_system_sqlite=OFF/ON
-disable-deprecated-up-to <hex_version> -DQT_DISABLE_DEPRECATED_UP_TO=<hex_version>
-mimetype-database-compression -DINPUT_mimetype_database_compression= Sets the compression type for mime type database. Supported
types: gzip, zstd, none.