CMake: Fix configure -redo for top-level builds
When re-doing in a top-level build, we did not read the config.opt file from the top-level directory. Also, the config.opt file should not contain the -top-level argument. This is an internal option, and on Windows, it was already missing. The information whether we're doing a top-level build is now passed in the CMake variable TOP_LEVEL. Change-Id: Iaecd7306a4b6d9ad494684c201cf12f8e74d684b Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
parent
8d4eb292b2
commit
25cc901f04
@ -6,6 +6,7 @@
|
|||||||
# with one option per line.
|
# with one option per line.
|
||||||
# MODULE_ROOT: The source directory of the module to be built.
|
# MODULE_ROOT: The source directory of the module to be built.
|
||||||
# If empty, qtbase/top-level is assumed.
|
# If empty, qtbase/top-level is assumed.
|
||||||
|
# TOP_LEVEL: TRUE, if this is a top-level build.
|
||||||
|
|
||||||
include(${CMAKE_CURRENT_LIST_DIR}/QtFeatureCommon.cmake)
|
include(${CMAKE_CURRENT_LIST_DIR}/QtFeatureCommon.cmake)
|
||||||
|
|
||||||
@ -31,7 +32,15 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
set(configure_filename "configure.cmake")
|
set(configure_filename "configure.cmake")
|
||||||
set(commandline_filename "qt_cmdline.cmake")
|
set(commandline_filename "qt_cmdline.cmake")
|
||||||
set(commandline_files "${MODULE_ROOT}/${commandline_filename}")
|
if(TOP_LEVEL)
|
||||||
|
get_filename_component(MODULE_ROOT "../.." ABSOLUTE BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
||||||
|
file(GLOB commandline_files "${MODULE_ROOT}/*/${commandline_filename}")
|
||||||
|
if(EXISTS "${MODULE_ROOT}/${commandline_filename}")
|
||||||
|
list(PREPEND commandline_files "${MODULE_ROOT}/${commandline_filename}")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set(commandline_files "${MODULE_ROOT}/${commandline_filename}")
|
||||||
|
endif()
|
||||||
file(STRINGS "${OPTFILE}" configure_args)
|
file(STRINGS "${OPTFILE}" configure_args)
|
||||||
list(FILTER configure_args EXCLUDE REGEX "^[ \t]*$")
|
list(FILTER configure_args EXCLUDE REGEX "^[ \t]*$")
|
||||||
list(TRANSFORM configure_args STRIP)
|
list(TRANSFORM configure_args STRIP)
|
||||||
@ -47,12 +56,6 @@ while(configure_args)
|
|||||||
list(POP_FRONT configure_args generator)
|
list(POP_FRONT configure_args generator)
|
||||||
elseif(arg STREQUAL "-cmake-use-default-generator")
|
elseif(arg STREQUAL "-cmake-use-default-generator")
|
||||||
set(auto_detect_generator FALSE)
|
set(auto_detect_generator FALSE)
|
||||||
elseif(arg STREQUAL "-top-level")
|
|
||||||
get_filename_component(MODULE_ROOT "../.." ABSOLUTE BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
|
||||||
file(GLOB commandline_files "${MODULE_ROOT}/*/${commandline_filename}")
|
|
||||||
if(EXISTS "${MODULE_ROOT}/${commandline_filename}")
|
|
||||||
list(PREPEND commandline_files "${MODULE_ROOT}/${commandline_filename}")
|
|
||||||
endif()
|
|
||||||
elseif(arg STREQUAL "-skip")
|
elseif(arg STREQUAL "-skip")
|
||||||
list(POP_FRONT configure_args qtrepo)
|
list(POP_FRONT configure_args qtrepo)
|
||||||
push("-DBUILD_${qtrepo}=OFF")
|
push("-DBUILD_${qtrepo}=OFF")
|
||||||
|
14
configure
vendored
14
configure
vendored
@ -559,8 +559,8 @@ while [ "$#" -gt 0 ]; do
|
|||||||
BUILD_WITH_CMAKE=yes
|
BUILD_WITH_CMAKE=yes
|
||||||
;;
|
;;
|
||||||
redo)
|
redo)
|
||||||
if [ -f config.opt ]; then
|
if [ -f ${outpathPrefix}config.opt ]; then
|
||||||
if grep -e ^-cmake <config.opt; then
|
if grep -e ^-cmake <${outpathPrefix}config.opt >/dev/null 2>&1; then
|
||||||
BUILD_WITH_CMAKE=yes
|
BUILD_WITH_CMAKE=yes
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -917,31 +917,35 @@ else
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkTopLevelBuild "$@"
|
||||||
parseCommandline "$@"
|
parseCommandline "$@"
|
||||||
handleHelp
|
handleHelp
|
||||||
if [ "$BUILD_WITH_CMAKE" = "yes" ]; then
|
if [ "$BUILD_WITH_CMAKE" = "yes" ]; then
|
||||||
checkTopLevelBuild "$@"
|
|
||||||
getOptAndQMakeCmdLines "$@"
|
getOptAndQMakeCmdLines "$@"
|
||||||
optfilename=config.opt
|
optfilename=config.opt
|
||||||
if [ -z "$optfile" ]; then # only write optfile if not currently redoing
|
if [ -z "$optfile" ]; then # only write optfile if not currently redoing
|
||||||
optfilepath=${outpathPrefix}${optfilename}
|
optfilepath=${outpathPrefix}${optfilename}
|
||||||
if [ -f "$optfilepath" ]; then rm "$optfilepath"; fi
|
if [ -f "$optfilepath" ]; then rm "$optfilepath"; fi
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
|
if [ "$arg" = "-top-level" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
echo $arg >> "$optfilepath"
|
echo $arg >> "$optfilepath"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
top_level_arg=
|
||||||
if [ -n "$CFG_TOPLEVEL" ]; then
|
if [ -n "$CFG_TOPLEVEL" ]; then
|
||||||
|
top_level_arg=-DTOP_LEVEL=TRUE
|
||||||
cd ..
|
cd ..
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cmake "-DOPTFILE=$optfilename" -P "$relpath/cmake/QtProcessConfigureArgs.cmake"
|
cmake "-DOPTFILE=$optfilename" $top_level_arg -P "$relpath/cmake/QtProcessConfigureArgs.cmake"
|
||||||
else
|
else
|
||||||
findPerl
|
findPerl
|
||||||
findAwk
|
findAwk
|
||||||
findMake
|
findMake
|
||||||
checkQMakeEnv
|
checkQMakeEnv
|
||||||
checkTopLevelBuild "$@"
|
|
||||||
getOptAndQMakeCmdLines "$@"
|
getOptAndQMakeCmdLines "$@"
|
||||||
detectOperatingSystem
|
detectOperatingSystem
|
||||||
maybeVerifyXcode
|
maybeVerifyXcode
|
||||||
|
@ -316,4 +316,6 @@ if "%rargs%" == "" (
|
|||||||
|
|
||||||
rem Launch CMake-based configure
|
rem Launch CMake-based configure
|
||||||
cd "%TOPQTDIR%"
|
cd "%TOPQTDIR%"
|
||||||
cmake -DOPTFILE=config.opt -P "%QTSRC%\cmake\QtProcessConfigureArgs.cmake"
|
set TOP_LEVEL_ARG=
|
||||||
|
if %TOPLEVEL% == true set TOP_LEVEL_ARG=-DTOP_LEVEL=TRUE
|
||||||
|
cmake -DOPTFILE=config.opt %TOP_LEVEL_ARG% -P "%QTSRC%\cmake\QtProcessConfigureArgs.cmake"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user