aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/gobject-introspection/vcpkg-port-config.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/gobject-introspection/vcpkg-port-config.cmake')
-rw-r--r--vcpkg/ports/gobject-introspection/vcpkg-port-config.cmake69
1 files changed, 69 insertions, 0 deletions
diff --git a/vcpkg/ports/gobject-introspection/vcpkg-port-config.cmake b/vcpkg/ports/gobject-introspection/vcpkg-port-config.cmake
new file mode 100644
index 0000000..57f8728
--- /dev/null
+++ b/vcpkg/ports/gobject-introspection/vcpkg-port-config.cmake
@@ -0,0 +1,69 @@
+include_guard(GLOBAL)
+
+function(z_vcpkg_get_gobject_introspection_python out_var)
+ if(VCPKG_CROSSCOMPILING)
+ message(STATUS
+ "Cross build with gobject-introspection. "
+ "Building and using ${PORT} will fail if the host cannot execute target binaries."
+ )
+ endif()
+
+ set(target_python "${CURRENT_INSTALLED_DIR}/tools/python3/python3${VCPKG_TARGET_EXECUTABLE_SUFFIX}")
+ if(VCPKG_TARGET_IS_WINDOWS)
+ set(target_python "${CURRENT_INSTALLED_DIR}/tools/python3/python.exe")
+ endif()
+
+ # Varation of x_vcpkg_get_python_packages, but
+ # - providing the interpreter for the target
+ # - using venv also for windows
+ message(STATUS "Setting up ${TARGET_TRIPLET} python venv which provides setuptools...")
+ set(venv_path "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-gir-venv")
+ file(REMOVE_RECURSE "${venv_path}")
+ file(MAKE_DIRECTORY "${venv_path}")
+
+ set(python_sub_path /bin)
+ set(python_venv_options --symlinks)
+ if(VCPKG_TARGET_IS_WINDOWS)
+ set(python_sub_path /Scripts)
+ set(python_venv_options --copies)
+ endif()
+
+ set(ENV{PYTHONNOUSERSITE} "1")
+ vcpkg_execute_required_process(
+ COMMAND "${target_python}" -I -m venv ${python_venv_options} "${venv_path}"
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
+ LOGNAME "venv-init-${TARGET_TRIPLET}"
+ )
+
+ set(gobject_introspection_python "${venv_path}${python_sub_path}/python${VCPKG_TARGET_EXECUTABLE_SUFFIX}")
+ set(ENV{VIRTUAL_ENV} "${venv_path}")
+ unset(ENV{PYTHONHOME})
+ unset(ENV{PYTHONPATH})
+ vcpkg_execute_required_process(
+ COMMAND "${gobject_introspection_python}" -I -m pip install setuptools
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
+ LOGNAME "venv-install-setuptools-${TARGET_TRIPLET}"
+ )
+
+ message(STATUS "Finished (with ${out_var} at ${gobject_introspection_python})")
+ set("${out_var}" "${gobject_introspection_python}" PARENT_SCOPE)
+endfunction()
+
+function(vcpkg_get_gobject_introspection_programs)
+ if("PYTHON3" IN_LIST ARGN)
+ z_vcpkg_get_gobject_introspection_python(PYTHON3)
+ set(PYTHON3 "${PYTHON3}" PARENT_SCOPE)
+ list(REMOVE_ITEM ARGN "PYTHON3")
+ endif()
+ if("GIR_COMPILER" IN_LIST ARGN)
+ set(GIR_COMPILER "${CURRENT_INSTALLED_DIR}/tools/gobject-introspection/g-ir-compiler${VCPKG_TARGET_EXECUTABLE_SUFFIX}" PARENT_SCOPE)
+ list(REMOVE_ITEM ARGN "GIR_COMPILER")
+ endif()
+ if("GIR_SCANNER" IN_LIST ARGN)
+ set(GIR_SCANNER "${CURRENT_INSTALLED_DIR}/tools/gobject-introspection/g-ir-scanner" PARENT_SCOPE)
+ list(REMOVE_ITEM ARGN "GIR_SCANNER")
+ endif()
+ if(NOT ARGN STREQUAL "")
+ message(FATAL_ERROR "Unsupported arguments: ${ARGN}")
+ endif()
+endfunction()