summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/QtProcessConfigureArgs.cmake8
-rw-r--r--cmake/QtSetup.cmake13
-rw-r--r--cmake/configure-cmake-mapping.md2
-rw-r--r--config_help.txt4
-rw-r--r--configure.cmake10
-rw-r--r--qt_cmdline.cmake2
6 files changed, 37 insertions, 2 deletions
diff --git a/cmake/QtProcessConfigureArgs.cmake b/cmake/QtProcessConfigureArgs.cmake
index 3396731356..7799daa1d2 100644
--- a/cmake/QtProcessConfigureArgs.cmake
+++ b/cmake/QtProcessConfigureArgs.cmake
@@ -600,6 +600,10 @@ while(1)
if(arg MATCHES "^--?enable-(.*)")
set(opt "${CMAKE_MATCH_1}")
set(val "yes")
+ # Handle -no-prefix so it's not interpreted as the negation of -prefix
+ elseif(arg MATCHES "-(no-prefix)")
+ set(opt "${CMAKE_MATCH_1}")
+ set(val "")
elseif(arg MATCHES "^--?(disable|no)-(.*)")
set(opt "${CMAKE_MATCH_2}")
set(val "no")
@@ -902,6 +906,10 @@ foreach(input ${config_inputs})
push("-DINPUT_${cmake_input}=${INPUT_${input}}")
endforeach()
+if(DEFINED INPUT_no-prefix AND DEFINED INPUT_prefix)
+ qtConfAddError("Can't specify both -prefix and -no-prefix options at the same time.")
+endif()
+
if(NOT generator AND auto_detect_generator)
find_program(ninja ninja)
if(ninja)
diff --git a/cmake/QtSetup.cmake b/cmake/QtSetup.cmake
index 87d3ad9cf8..58f723e4de 100644
--- a/cmake/QtSetup.cmake
+++ b/cmake/QtSetup.cmake
@@ -11,6 +11,13 @@ if(NOT FEATURE_developer_build AND INPUT_developer_build
set(FEATURE_developer_build ON)
endif()
+# Pre-calculate the no_prefix feature if it's set by configure via INPUT_no_prefix.
+# This needs to be done before qtbase/configure.cmake is processed.
+if(NOT FEATURE_no_prefix AND INPUT_no_prefix
+ AND NOT "${INPUT_no_prefix}" STREQUAL "undefined")
+ set(FEATURE_no_prefix ON)
+endif()
+
set(_default_build_type "Release")
if(FEATURE_developer_build)
set(_default_build_type "Debug")
@@ -95,7 +102,11 @@ set(CMAKE_LINK_DEPENDS_NO_SHARED ON)
# QtBuildInternalsExtra.cmake file.
if (PROJECT_NAME STREQUAL "QtBase" AND NOT QT_BUILD_STANDALONE_TESTS)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
- if(FEATURE_developer_build)
+ # Handle both FEATURE_ and QT_FEATURE_ cases when they are specified on the command line
+ # explicitly. It's possible for one to be set, but not the other, because
+ # qtbase/configure.cmake is not processed by this point.
+ if(FEATURE_developer_build OR QT_FEATURE_developer_build
+ OR FEATURE_no_prefix OR QT_FEATURE_no_prefix)
# Handle non-prefix builds by setting the CMake install prefix to point to qtbase's
# build dir. While building another repo (like qtsvg) the CMAKE_PREFIX_PATH should be
# set on the command line to point to the qtbase build dir.
diff --git a/cmake/configure-cmake-mapping.md b/cmake/configure-cmake-mapping.md
index 01f7d5f164..6874b909b3 100644
--- a/cmake/configure-cmake-mapping.md
+++ b/cmake/configure-cmake-mapping.md
@@ -3,6 +3,8 @@ The following table describes the mapping of configure options to CMake argument
| 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 <dir> | -DINSTALL_BINDIR=<dir> | similar for -headerdir -libdir and so on |
| -hostdatadir <dir> | -DINSTALL_MKSPECSDIR=<dir> | |
diff --git a/config_help.txt b/config_help.txt
index 1f849b938e..b63552a4c3 100644
--- a/config_help.txt
+++ b/config_help.txt
@@ -7,6 +7,10 @@ Top-level installation directories:
-prefix <dir> ...... The deployment directory, as seen on the target device.
[/usr/local/Qt-$QT_VERSION; qtbase build directory if
-developer-build]
+ -no-prefix ......... The deployment directory is set to the qtbase build
+ directory. Can be used instead of -developer-build
+ to not have to install, as well as avoid
+ -developer-build's default of -warnings-are-errors.
-extprefix <dir> ... The installation directory, as seen on the host machine.
[SYSROOT/PREFIX]
diff --git a/configure.cmake b/configure.cmake
index 673eb00faf..a24277806b 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -467,10 +467,18 @@ qt_feature("pkg-config" PUBLIC
)
qt_feature_config("pkg-config" QMAKE_PUBLIC_QT_CONFIG
NEGATE)
-qt_feature("developer-build"
+qt_feature("developer-build" PRIVATE
LABEL "Developer build"
AUTODETECT OFF
)
+qt_feature("no-prefix" PRIVATE
+ LABEL "No prefix build"
+ # The var expansion on the right hand side is on purpose
+ # because the custom condition evaluator only expands the lhs
+ CONDITION (CMAKE_INSTALL_PREFIX STREQUAL "${QtBase_BINARY_DIR}")
+ OR CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
+ AUTODETECT QT_FEATURE_developer_build
+)
qt_feature("private_tests" PRIVATE
LABEL "Developer build: private_tests"
CONDITION QT_FEATURE_developer_build
diff --git a/qt_cmdline.cmake b/qt_cmdline.cmake
index 737cd9710b..d5774bb14c 100644
--- a/qt_cmdline.cmake
+++ b/qt_cmdline.cmake
@@ -8,6 +8,8 @@ qt_commandline_subconfig(src/printsupport)
qt_commandline_subconfig(src/plugins/sqldrivers)
qt_commandline_subconfig(src/testlib)
qt_commandline_subconfig(src/tools)
+# no-prefix needs to be placed before prefix
+qt_commandline_option(no-prefix TYPE void)
qt_commandline_option(prefix TYPE string)
qt_commandline_option(extprefix TYPE string)
qt_commandline_option(archdatadir TYPE string)