aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/gobject-introspection/portfile.cmake
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/gobject-introspection/portfile.cmake
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/gobject-introspection/portfile.cmake')
-rw-r--r--vcpkg/ports/gobject-introspection/portfile.cmake108
1 files changed, 108 insertions, 0 deletions
diff --git a/vcpkg/ports/gobject-introspection/portfile.cmake b/vcpkg/ports/gobject-introspection/portfile.cmake
new file mode 100644
index 0000000..2bb82e9
--- /dev/null
+++ b/vcpkg/ports/gobject-introspection/portfile.cmake
@@ -0,0 +1,108 @@
+string(REGEX REPLACE "^([0-9]+[.][0-9]+).*\$" "\\1" GI_MAJOR_MINOR "${VERSION}")
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://download.gnome.org/sources/gobject-introspection/${GI_MAJOR_MINOR}/gobject-introspection-${VERSION}.tar.xz"
+ FILENAME "gobject-introspection-${VERSION}.tar.xz"
+ SHA512 e139fadb4174c72b648914f3774d89fc0e5eaee45bba0c13edf05de883664dad8276dbc34006217bb09871ed4bad23adab51ff232a17b9eb131329b2926cafb7
+)
+
+vcpkg_extract_source_archive(
+ SOURCE_PATH
+ ARCHIVE "${ARCHIVE}"
+ PATCHES
+ 0001-g-ir-tool-template.in.patch
+ 0004-fastcall.patch # https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/498
+)
+
+include("${CURRENT_PORT_DIR}/vcpkg-port-config.cmake")
+vcpkg_get_gobject_introspection_programs(PYTHON3)
+
+set(additional_binaries "")
+set(options "")
+set(options_release "")
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ message(STATUS "Static triplet. Not building introspection data.")
+ list(APPEND options_release -Dbuild_introspection_data=false)
+ vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
+endif()
+
+vcpkg_find_acquire_program(PKGCONFIG)
+vcpkg_find_acquire_program(FLEX)
+vcpkg_find_acquire_program(BISON)
+list(APPEND additional_binaries
+ "flex='${FLEX}'"
+ "bison='${BISON}'"
+)
+
+if("cairo" IN_LIST FEATURES)
+ list(APPEND options_release -Dcairo=enabled)
+else()
+ list(APPEND options_release -Dcairo=disabled)
+endif()
+
+vcpkg_configure_meson(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -Ddoctool=disabled
+ -Dgtk_doc=false
+ ${options}
+ OPTIONS_DEBUG
+ -Dbuild_introspection_data=false
+ -Dcairo=disabled
+ OPTIONS_RELEASE
+ ${options_release}
+ ADDITIONAL_BINARIES
+ "python='${PYTHON3}'"
+ ${additional_binaries}
+)
+
+set(ENV{PKG_CONFIG} "${PKGCONFIG}")
+vcpkg_host_path_list(PREPEND ENV{PKG_CONFIG_PATH} "${CURRENT_INSTALLED_DIR}/lib/pkgconfig")
+# VCPKG_GI_... variables are used by, and scoped to, giscanner
+set(ENV{VCPKG_GI_LIBDIR} "${CURRENT_INSTALLED_DIR}/lib")
+set(ENV{VCPKG_GI_DATADIR} "${CURRENT_PACKAGES_DIR}/share")
+file(MAKE_DIRECTORY "$ENV{VCPKG_GI_DATADIR}/gir-1.0")
+if(VCPKG_TARGET_IS_WINDOWS)
+ set(ENV{VCPKG_GI_LIBDIR_VAR} "LIB")
+elseif(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS)
+ set(ENV{VCPKG_GI_LIBDIR_VAR} "DYLD_LIBRARY_PATH")
+else()
+ set(ENV{VCPKG_GI_LIBDIR_VAR} "LD_LIBRARY_PATH")
+endif()
+vcpkg_install_meson(ADD_BIN_TO_PATH)
+vcpkg_copy_pdbs()
+vcpkg_fixup_pkgconfig()
+
+# Cf. https://gitlab.gnome.org/GNOME/gobject-introspection/-/issues/517
+if(EXISTS "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gir")
+ foreach(lib IN ITEMS GLib-2.0 GObject-2.0 GModule-2.0 Gio-2.0)
+ file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gir/${lib}.gir" DESTINATION "${CURRENT_PACKAGES_DIR}/share/gir-1.0")
+ file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/gir/${lib}.typelib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib/girepository-1.0")
+ endforeach()
+endif()
+
+file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}")
+foreach(script IN ITEMS g-ir-annotation-tool g-ir-scanner)
+ file(RENAME "${CURRENT_PACKAGES_DIR}/bin/${script}" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/${script}")
+ file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/bin/${script}")
+endforeach()
+vcpkg_copy_tools(TOOL_NAMES g-ir-compiler g-ir-generate g-ir-inspect AUTO_CLEAN)
+
+file(GLOB pcfiles "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/*.pc")
+foreach(file IN LISTS pcfiles)
+ vcpkg_replace_string("${file}" [[=${bindir}/g-ir-]] [[=${prefix}/tools/gobject-introspection/g-ir-]])
+endforeach()
+# No fixup for debug: Let it fail early as long as we lack debug builds for (windows) python.
+
+if(VCPKG_TARGET_IS_WINDOWS)
+ file(GLOB _pyd_lib_files "${CURRENT_PACKAGES_DIR}/lib/gobject-introspection/giscanner/_giscanner.*.lib" "${CURRENT_PACKAGES_DIR}/debug/lib/gobject-introspection/giscanner/_giscanner.*.lib")
+ file(REMOVE ${_pyd_lib_files})
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/man")
+
+file(COPY "${CURRENT_PORT_DIR}/vcpkg-port-config.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")