Description: Prefer packaged cppgir
Author: Nicholas Guriev <guriev-ns@ya.ru>
Forwarded: https://github.com/desktop-app/cmake_helpers/pull/305
Last-Update: Mon, 08 Jan 2024 11:16:02 +0300

--- a/cmake/external/glib/CMakeLists.txt
+++ b/cmake/external/glib/CMakeLists.txt
@@ -13,9 +13,11 @@ function(add_cppgir) # isolate scope
     set(BUILD_EXAMPLES OFF)
     add_subdirectory(cppgir EXCLUDE_FROM_ALL)
 endfunction()
-add_cppgir()
 
 include(generate_cppgir.cmake)
+if (NOT CppGir_FOUND)
+    add_cppgir()
+endif()
 generate_cppgir(external_glib Gio-2.0)
 
 find_package(PkgConfig REQUIRED)
--- a/cmake/external/glib/generate_cppgir.cmake
+++ b/cmake/external/glib/generate_cppgir.cmake
@@ -4,6 +4,8 @@
 # For license and copyright information please follow this link:
 # https://github.com/desktop-app/legal/blob/master/LEGAL
 
+find_package(CppGir 2.0)
+
 function(generate_cppgir target_name gir)
     set(cppgir_loc ${cmake_helpers_loc}/external/glib/cppgir)
 
@@ -17,6 +19,9 @@ function(generate_cppgir target_name gir
         ${cppgir_loc}/data/cppgir.ignore
         ${cppgir_loc}/data/cppgir_unix.ignore
     )
+    if (CppGir_FOUND)
+        set(ignore_files)  # rely on default ignore list
+    endif()
 
     set(gir_path)
     if (IS_ABSOLUTE "${gir}")
@@ -33,7 +38,7 @@ function(generate_cppgir target_name gir
         --class
         --class-full
         --expected
-        --ignore
+        "$<$<BOOL:${ignore_files}>:--ignore>"
         "$<JOIN:${ignore_files},:>"
         --output
         ${gen_dst}
