summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@qt.io>2021-05-11 10:18:18 +0200
committerMichal Klocek <michal.klocek@qt.io>2021-05-28 14:57:48 +0000
commit3bc47f0f407e57dccb9013dabaf1a56d8e6c6575 (patch)
treea31a36d0996f3eebb970c653de87b8682641d3dd
parentb4ff1333677dc1c037b5ff5e5101016bd6a53469 (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>
-rw-r--r--CMakeLists.txt2
-rw-r--r--cmake/FindGn.cmake25
-rw-r--r--configure.cmake2
-rw-r--r--src/core/CMakeLists.txt2
-rw-r--r--src/gn/CMakeLists.txt14
5 files changed, 35 insertions, 10 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1281ef59b..fb1050109 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -77,7 +77,7 @@ if(NOT Ninja_FOUND)
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
-DCMAKE_PREFIX_PATH:PATH=<INSTALL_DIR>
-)
+ )
endif()
### GN
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)
diff --git a/configure.cmake b/configure.cmake
index fa8e6b9b0..539cdb907 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -3,7 +3,7 @@
#### Libraries
find_package(Ninja 1.7.2)
-find_package(Gn)
+find_package(Gn ${QT_REPO_MODULE_VERSION} EXACT)
find_package(Python2 2.7.5)
find_package(GPerf)
find_package(BISON)
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 5017a552b..2a545f5b2 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -16,7 +16,7 @@ assertRunAsTopLevelBuild(TRUE)
add_subdirectory(api)
find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS BuildInternals Core)
-find_package(Gn REQUIRED)
+find_package(Gn ${QT_REPO_MODULE_VERSION} EXACT REQUIRED)
find_package(Ninja 1.7.2 REQUIRED)
find_package(Python2 2.7.5 REQUIRED)
find_package(Nodejs 12.0)
diff --git a/src/gn/CMakeLists.txt b/src/gn/CMakeLists.txt
index 9a11184c3..4d25debb9 100644
--- a/src/gn/CMakeLists.txt
+++ b/src/gn/CMakeLists.txt
@@ -7,9 +7,15 @@ project(Gn
LANGUAGES CXX C
)
-set(GN_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/gn)
+if(NOT DEFINED WEBENGINE_ROOT_SOURCE_DIR)
+ get_filename_component(WEBENGINE_ROOT_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/../.." REALPATH)
+endif()
+
+include(${WEBENGINE_ROOT_SOURCE_DIR}/.cmake.conf)
+
+set(GN_SOURCE_DIR ${WEBENGINE_ROOT_SOURCE_DIR}/src/3rdparty/gn)
set(GN_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${WEBENGINE_ROOT_SOURCE_DIR}/cmake")
find_package(Python2 REQUIRED)
find_package(Ninja 1.7.2 REQUIRED)
@@ -30,6 +36,7 @@ add_custom_command(
--cc ${CMAKE_C_COMPILER}
--cxx ${CMAKE_CXX_COMPILER}
--ld ${CMAKE_CXX_COMPILER}
+ --qt-version "${QT_REPO_MODULE_VERSION}.qtwebengine.qt.io"
$<$<PLATFORM_ID:Darwin>:--isysroot>
$<$<PLATFORM_ID:Darwin>:${CMAKE_OSX_SYSROOT}>
COMMAND Ninja::ninja -C ${GN_BINARY_DIR}/$<CONFIG> ${GN_EXECUTABLE}
@@ -38,7 +45,6 @@ add_custom_command(
COMMAND_EXPAND_LISTS
)
add_custom_target(Gn ALL DEPENDS ${GN_EXECUTABLE})
-install(FILES ${GN_BINARY_DIR}/$<CONFIG>/${GN_EXECUTABLE}
- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
+install(PROGRAMS ${GN_BINARY_DIR}/$<CONFIG>/${GN_EXECUTABLE}
DESTINATION bin
)