summaryrefslogtreecommitdiffstats
path: root/cmake/FindGn.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/FindGn.cmake')
-rw-r--r--cmake/FindGn.cmake50
1 files changed, 50 insertions, 0 deletions
diff --git a/cmake/FindGn.cmake b/cmake/FindGn.cmake
new file mode 100644
index 000000000..fd03b7346
--- /dev/null
+++ b/cmake/FindGn.cmake
@@ -0,0 +1,50 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+if(NOT DEFINED WEBENGINE_ROOT_BUILD_DIR)
+ set(WEBENGINE_ROOT_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
+endif()
+find_program(Gn_EXECUTABLE NAMES gn PATHS "${WEBENGINE_ROOT_BUILD_DIR}/install/bin" NO_DEFAULT_PATH)
+if(NOT QT_HOST_PATH STREQUAL "")
+ find_program(Gn_EXECUTABLE NAMES gn PATHS ${QT_HOST_PATH}/${INSTALL_LIBEXECDIR} NO_DEFAULT_PATH)
+ # note: mingw installs with INSTALL_LIBEXECDIR = bin,
+ # however android on windows has INSTALL_LIBEXECDIR = libexec,
+ # so cover this case also
+ find_program(Gn_EXECUTABLE NAMES gn PATHS ${QT_HOST_PATH}/${INSTALL_BINDIR} NO_DEFAULT_PATH)
+endif()
+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
+ FOUND_VAR
+ Gn_FOUND
+ VERSION_VAR
+ Gn_VERSION
+ REQUIRED_VARS
+ Gn_EXECUTABLE
+)
+
+if(Gn_FOUND AND NOT TARGET Gn::gn AND NOT CMAKE_SCRIPT_MODE_FILE)
+ add_executable(Gn::gn IMPORTED)
+ set_property(TARGET Gn::gn PROPERTY IMPORTED_LOCATION ${Gn_EXECUTABLE})
+endif()
+
+include(FeatureSummary)
+set_package_properties(Gn PROPERTIES
+ URL "https://gn.googlesource.com/gn/"
+ DESCRIPTION "Meta-build system"
+)