qt5base-lts/cmake/configure-cmake-mapping.md
Joerg Bornemann 96bdcdacbc CMake: Implement configure -ltcg
This configure switch sets the CMake variable
CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG> per release config to ON.

The feature 'ltcg' is enabled if any of the variables
CMAKE_INTERPROCEDURAL_OPTIMIZATION,
CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG> are ON.

In order to implement the check, configurejson2cmake had to be extended
to be able to write extra CMake code before and after the feature
definition. This extra code can be added to a feature mapping below the
keys "cmakePrelude" and "cmakeEpilogue".

Task-number: QTBUG-85373
Change-Id: Ia2eb907edcf087f137977a9b090705397f83eb05
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2020-09-11 11:30:56 +02:00

165 lines
25 KiB
Markdown

The following table describes the mapping of configure options to CMake arguments.
Note that not everything is implemented in configure/configure.bat yet.
The effort of this is tracked in QTBUG-85373 and QTBUG-85349.
| configure | cmake | Notes |
|---------------------------------------|---------------------------------------------------|-----------------------------------------------------------------|
| -prefix /opt/qt6 | -DCMAKE_INSTALL_PREFIX=/opt/qta6 | |
| -extprefix /opt/qt6 | -DCMAKE_STAGING_PREFIX=/opt/qt6 | |
| -hostprefix /where/ever | n/a | When cross-building Qt, we do not build for host system anymore |
| -external-hostbindir /path/to/host/qt | -DQT_HOST_PATH=/path/to/host/qt | |
| -bindir <dir> | -DINSTALL_BINDIR=<dir> | similar for -headerdir -libdir and so on |
| -host*dir <dir> | n/a | |
| -help | n/a | Handled by configure[.bat]. |
| -verbose | | |
| -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. |
| -list-libraries | | |
| -opensource | | |
| -commercial | | |
| -confirm-license | | |
| -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 <target> | -DQT_QMAKE_TARGET_MKSPEC=<mkspec> | |
| -xplatform <target> | -DQT_QMAKE_TARGET_MKSPEC=<mkspec> | Only used for generating qmake-compatibility files. |
| -device <name> | equivalent to -xplatform devices/<name> | |
| -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 | |
| -qtnamespace <name> | -DQT_NAMESPACE=<name> | |
| -qtlibinfix <infix> | | |
| -testcocoon | | |
| -gcov | | |
| -trace [backend] | -DINPUT_trace=yes or -DINPUT_trace=<backend> | |
| | or -DFEATURE_<backend> | |
| -sanitize <arg> | -DFEATURE_sanitize_<arg> | |
| -coverage <arg> | | |
| -c++std c++2a | -DFEATURE_cxx2a=ON | |
| -sse2/-sse3/-ssse3/-sse4.1 | -DFEATURE_sse4=ON | |
| -mips_dsp/-mips_dspr2 | -DFEATURE_mips_dsp=ON | |
| -qreal <type> | -DQT_COORD_TYPE=<type> | |
| -R <string> | -DQT_EXTRA_RPATHS=path1;path2 | |
| -rpath | negative CMAKE_SKIP_BUILD_RPATH | |
| | negative CMAKE_SKIP_INSTALL_RPATH | |
| -reduce-exports | | |
| -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_<CONFIG>=ON | |
| -linker [bfd,gold,lld] | -DINPUT_linker=<name> or | |
| | -DFEATURE_use_<name>_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 | |
| -make-tool <tool> | n/a | |
| -mp | n/a | |
| -warnings-are-errors | -DWARNINGS_ARE_ERRORS=ON or | |
| | -DFEATURE_warnings_are_errors=ON | |
| -silent | n/a | |
| -sysroot <dir> | -DCMAKE_SYSROOT=<dir> | Should be provided by a toolchain file that's |
| | | passed via -DCMAKE_TOOLCHAIN_FILE=<filename> |
| -no-gcc-sysroot | n/a | The corresponding CMake variables are CMAKE_SYSROOT_LINK |
| | | and CMAKE_SYSROOT_COMPILE. |
| | | They are usually set in a toolchain file. |
| -no-pkg-config | -DFEATURE_pkg_config=OFF | |
| -D <string> | -DQT_EXTRA_DEFINES=<string1>;<string2> | |
| -I <string> | -DQT_EXTRA_INCLUDEPATHS=<string1>;<string2> | |
| -L <string> | -DQT_EXTRA_LIBDIRS=<string1>;<string2> | |
| -F <string> | -DQT_EXTRA_FRAMEWORKPATHS=<string1>;<string2> | |
| -sdk <sdk> | | |
| -android-sdk path | | |
| -android-ndk path | | |
| -android-ndk-platform | | |
| -android-ndk-host | | |
| -android-abis | | |
| -android-style-assets | | |
| -skip <repo> | -DBUILD_<repo>=OFF | |
| -make <part> | -DBUILD_TESTING=ON | A way to turn on tools explicitly is missing. |
| | -DBUILD_EXAMPLES=ON | |
| -nomake <part> | -DBUILD_TESTING=OFF | A way to turn off tools explicitly is missing. |
| | -DBUILD_EXAMPLES=OFF | |
| -no-gui | | |
| -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 | |
| -eventfd | -DFEATURE_eventfd=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 | | |
| -opengl <api> | | |
| -opengles3 | | |
| -egl | | |
| -qpa <name> | -DQT_QPA_DEFAULT_PLATFORM=<name> | |
| -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_libpng=ON | |
| -libjpeg | -DFEATURE_libjpeg=ON | |
| -sql-<driver> | -DFEATURE_sql_<driver>=ON | |
| -sqlite [qt/system] | -DFEATURE_system_sqlite=OFF/ON | |