diff options
author | Michal Klocek <michal.klocek@qt.io> | 2021-05-11 10:18:18 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2021-05-28 14:57:48 +0000 |
commit | 3bc47f0f407e57dccb9013dabaf1a56d8e6c6575 (patch) | |
tree | a31a36d0996f3eebb970c653de87b8682641d3dd /cmake | |
parent | b4ff1333677dc1c037b5ff5e5101016bd6a53469 (diff) |
Add support for gn version
Check the version before using gn, since some systems
can have already gn installed. In case of cross builds
gn is installed into host qt and can simply end up in /usr/bin
path of x86_64 sysroot in case of yocto builds, meaning it will
be picked up by the host system path. Moreover, findGn.cmake
is also going to be installed and should not just look for non
existing builds paths.
One can also avoid pointless recompilations of gn for every
single clean build. Gn can be easily installed by simply building
the "gn" project:
cmake path/to/qtwebengine/src/gn
cmake --build . --parallel
cmake --install .
Note setting DCMAKE_INSTALL_PREFIX and/or DESTDIR
can install gn to desired location.
Change-Id: Ie8f989c838dad2e6e7e346a4f6a861e187ec037f
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/FindGn.cmake | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/cmake/FindGn.cmake b/cmake/FindGn.cmake index dfbe5b363..12a90778c 100644 --- a/cmake/FindGn.cmake +++ b/cmake/FindGn.cmake @@ -3,13 +3,32 @@ if (NOT DEFINED WEBENGINE_ROOT_BUILD_DIR) endif() set(CMAKE_PROGRAM_PATH ${WEBENGINE_ROOT_BUILD_DIR}/install/bin) + find_program(Gn_EXECUTABLE NAMES gn) +if(Gn_EXECUTABLE) + execute_process( + COMMAND ${Gn_EXECUTABLE} --version + OUTPUT_VARIABLE Gn_VERSION + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() + +string(REGEX MATCHALL "([1-9]\.[0-9]\.[0-9])\.qtwebengine\.qt\.io.*" Gn_QT_VERSION "${Gn_VERSION}") +if("${Gn_QT_VERSION}") + set(Gn_VERSION "${Gn_QT_VERSION}") +endif() + include(FindPackageHandleStandardArgs) -find_package_handle_standard_args( - Gn - REQUIRED_VARS Gn_EXECUTABLE) +find_package_handle_standard_args(Gn + FOUND_VAR + Gn_FOUND + VERSION_VAR + Gn_VERSION + REQUIRED_VARS + Gn_EXECUTABLE +) if(Gn_FOUND AND NOT TARGET Gn::gn) add_executable(Gn::gn IMPORTED) |