[vcpkg baseline][qt5-base] Fix glib link issues on linux (#16954)

* [qt5-base] fix glib link issues on linux

* add version

* remove unused vars

* update version

* write port info file.

* version stuff

* remove paraview from baseline. It was added due to the same spurious glib failures.

* trying out a different approach

* more changes

* change the if to actually use the buildtype instead

* remove x_vcpkg_get_port_info

* add option QT_OPENSSL_LINK back in

* use INCLUDE_DIRS_(DEBUG|RELEASE) instead of just INCLUDE_DIRS

* regen docs

* remove function call I forgot to remove

* [vcpkg-pkgconfig-get-modules] Move to port

* revert changes to ports.cmake

* include the file in qt5-base

* fix path

* remove unnecessary include

* Apply suggestions from code review

Co-authored-by: nicole mazzuca <mazzucan@outlook.com>

* Apply suggestions from code review

* update version

* ws removal

* version stuff

Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
This commit is contained in:
Alexander Neumann 2021-04-06 19:53:41 +02:00 committed by GitHub
parent 030cfaa24d
commit 1bb0fe61df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 321 additions and 57 deletions

View File

@ -73,3 +73,7 @@
### [vcpkg-cmake-config](ports/vcpkg-cmake-config.md)
- [vcpkg\_cmake\_config\_fixup](ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.md)
### [vcpkg-pkgconfig-get-modules](ports/vcpkg-pkgconfig-get-modules.md)
- [x\_vcpkg\_pkgconfig\_get\_modules](ports/vcpkg-pkgconfig-get-modules/x_vcpkg_pkgconfig_get_modules.md)

View File

@ -0,0 +1,6 @@
# vcpkg-pkgconfig-get-modules
**Experimental: will change or be removed at any time**
`vcpkg-pkgconfig-get-modules` provides `x_vcpkg_pkgconfig_get_modules()`, a function which simplifies calling
`pkg-config` in portfiles in order to gather dependencies for exotic buildsystems.

View File

@ -0,0 +1,44 @@
# x_vcpkg_pkgconfig_get_modules
The latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/maintainers/ports/vcpkg-pkgconfig-get-modules/x_vcpkg_pkgconfig_get_modules.md).
Experimental
Retrieve required module information from pkgconfig modules
## Usage
```cmake
x_vcpkg_pkgconfig_get_modules(
PREFIX <prefix>
MODULES <pkgconfig_modules>...
[LIBS]
[LIBRARIES]
[LIBRARIES_DIRS]
[INCLUDE_DIRS]
)
```
## Parameters
### PREFIX
Used variable prefix to use
### MODULES
List of pkgconfig modules to retrieve information for.
### LIBS
Returns `"${PKGCONFIG}" --libs` in <prefix>_LIBS_(DEBUG|RELEASE)
### LIBRARIES
Returns `"${PKGCONFIG}" --libs-only-l` in <prefix>_LIBRARIES_(DEBUG|RELEASE)
### LIBRARIES_DIRS
Returns `"${PKGCONFIG}" --libs-only-L` in <prefix>_LIBRARIES_DIRS_(DEBUG|RELEASE)
### INCLUDE_DIRS
Returns `"${PKGCONFIG}" --cflags-only-I` in <prefix>_INCLUDE_DIRS_(DEBUG|RELEASE)
## Examples
* [qt5-base](https://github.com/microsoft/vcpkg/blob/master/ports/qt5-base/portfile.cmake)
## Source
[ports/vcpkg-pkgconfig-get-modules/x\_vcpkg\_pkgconfig\_get\_modules.cmake](https://github.com/Microsoft/vcpkg/blob/master/ports/vcpkg-pkgconfig-get-modules/x_vcpkg_pkgconfig_get_modules.cmake)

View File

@ -26,6 +26,7 @@ class CMakeDocumentation {
[String[]]$cmakeScriptsPorts = @(
'vcpkg-cmake'
'vcpkg-cmake-config'
'vcpkg-pkgconfig-get-modules'
)
[CMakeDocumentation[]]$tableOfContents = @()

View File

@ -6,19 +6,20 @@ function(qt_build_submodule SOURCE_PATH)
vcpkg_find_acquire_program(PYTHON2)
get_filename_component(PYTHON2_EXE_PATH ${PYTHON2} DIRECTORY)
vcpkg_add_to_path("${PYTHON2_EXE_PATH}")
vcpkg_configure_qmake(SOURCE_PATH ${SOURCE_PATH} ${ARGV})
vcpkg_build_qmake(SKIP_MAKEFILES)
#Fix the installation location within the makefiles
qt_fix_makefile_install("${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/")
qt_fix_makefile_install("${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/")
#Install the module files
vcpkg_build_qmake(TARGETS install SKIP_MAKEFILES BUILD_LOGNAME install)
qt_fix_cmake(${CURRENT_PACKAGES_DIR} ${PORT})
vcpkg_fixup_pkgconfig() # Needs further investigation if this is enough!
#Replace with VCPKG variables if PR #7733 is merged
unset(BUILDTYPES)
@ -26,13 +27,13 @@ function(qt_build_submodule SOURCE_PATH)
set(_buildname "DEBUG")
list(APPEND BUILDTYPES ${_buildname})
set(_short_name_${_buildname} "dbg")
set(_path_suffix_${_buildname} "/debug")
set(_path_suffix_${_buildname} "/debug")
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
set(_buildname "RELEASE")
list(APPEND BUILDTYPES ${_buildname})
set(_short_name_${_buildname} "rel")
set(_path_suffix_${_buildname} "")
set(_path_suffix_${_buildname} "")
endif()
unset(_buildname)
@ -42,14 +43,14 @@ function(qt_build_submodule SOURCE_PATH)
file(GLOB_RECURSE PRL_FILES "${CURRENT_BUILD_PACKAGE_DIR}/lib/*.prl" "${CURRENT_PACKAGES_DIR}/tools/qt5${_path_suffix_${_buildname}}/lib/*.prl"
"${CURRENT_PACKAGES_DIR}/tools/qt5${_path_suffix_${_buildname}}/mkspecs/*.pri")
qt_fix_prl("${CURRENT_BUILD_PACKAGE_DIR}" "${PRL_FILES}")
# This makes it impossible to use the build tools in any meaningful way. qt5 assumes they are all in one folder!
# So does the Qt VS Plugin which even assumes all of the in a bin folder
#Move tools to the correct directory
#if(EXISTS ${CURRENT_BUILD_PACKAGE_DIR}/tools/qt5)
# file(RENAME ${CURRENT_BUILD_PACKAGE_DIR}/tools/qt5 ${CURRENT_PACKAGES_DIR}/tools/${PORT})
#endif()
# Move executables in bin to tools
# This is ok since those are not build tools.
file(GLOB PACKAGE_EXE ${CURRENT_BUILD_PACKAGE_DIR}/bin/*.exe)
@ -64,13 +65,13 @@ function(qt_build_submodule SOURCE_PATH)
endif()
endforeach()
endif()
#cleanup empty folders
file(GLOB PACKAGE_LIBS "${CURRENT_BUILD_PACKAGE_DIR}/lib/*")
if(NOT PACKAGE_LIBS)
file(REMOVE_RECURSE "${CURRENT_BUILD_PACKAGE_DIR}/lib")
endif()
file(GLOB PACKAGE_BINS "${CURRENT_BUILD_PACKAGE_DIR}/bin/*")
if(NOT PACKAGE_BINS)
file(REMOVE_RECURSE "${CURRENT_BUILD_PACKAGE_DIR}/bin")
@ -78,12 +79,12 @@ function(qt_build_submodule SOURCE_PATH)
endforeach()
if(EXISTS "${CURRENT_PACKAGES_DIR}/tools/qt5/bin")
file(COPY "${CURRENT_PACKAGES_DIR}/tools/qt5/bin" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}")
set(CURRENT_INSTALLED_DIR_BACKUP "${CURRENT_INSTALLED_DIR}")
set(CURRENT_INSTALLED_DIR "./../../.." ) # Making the qt.conf relative and not absolute
configure_file(${CURRENT_INSTALLED_DIR_BACKUP}/tools/qt5/qt_release.conf ${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/qt.conf) # This makes the tools at least useable for release
set(CURRENT_INSTALLED_DIR "${CURRENT_INSTALLED_DIR_BACKUP}")
vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin")
if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file(GLOB_RECURSE DLL_DEPS_AVAIL "${CURRENT_INSTALLED_DIR}/tools/qt5/bin/*.dll")
@ -99,14 +100,14 @@ function(qt_build_submodule SOURCE_PATH)
endforeach()
endif()
endif()
#This should be removed if somehow possible
if(EXISTS "${CURRENT_PACKAGES_DIR}/tools/qt5/debug/bin")
set(CURRENT_INSTALLED_DIR_BACKUP "${CURRENT_INSTALLED_DIR}")
set(CURRENT_INSTALLED_DIR "./../../../.." ) # Making the qt.conf relative and not absolute
configure_file(${CURRENT_INSTALLED_DIR_BACKUP}/tools/qt5/qt_debug.conf ${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/bin/qt.conf) # This makes the tools at least useable for release
set(CURRENT_INSTALLED_DIR "${CURRENT_INSTALLED_DIR_BACKUP}")
vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/bin")
if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file(GLOB_RECURSE DLL_DEPS_AVAIL "${CURRENT_INSTALLED_DIR}/tools/qt5/debug/bin/*.dll")
@ -122,5 +123,5 @@ function(qt_build_submodule SOURCE_PATH)
endforeach()
endif()
endif()
endfunction()

View File

@ -1,19 +1,11 @@
vcpkg_buildpath_length_warning(37)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
option(QT_OPENSSL_LINK "Link against OpenSSL at compile-time." ON)
set(QT_OPENSSL_LINK_DEFAULT ON)
else()
option(QT_OPENSSL_LINK "Link against OpenSSL at compile-time." OFF)
set(QT_OPENSSL_LINK_DEFAULT OFF)
endif()
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
option(QT_MYSQL_PLUGIN "Create MySQL plugin" OFF)
else()
if ("mysqlplugin" IN_LIST FEATURES)
option(QT_MYSQL_PLUGIN "Create MySQL plugin" ON)
endif()
endif()
option(QT_OPENSSL_LINK "Link against OpenSSL at compile-time." ${QT_OPENSSL_LINK_DEFAULT})
if (VCPKG_TARGET_IS_LINUX)
message(WARNING "qt5-base currently requires some packages from the system package manager, see https://doc.qt.io/qt-5/linux-requirements.html")
@ -45,9 +37,17 @@ else()
)
endif()
set(WITH_PGSQL OFF)
set(WITH_PGSQL_PLUGIN OFF)
if("postgresqlplugin" IN_LIST FEATURES)
set(WITH_PGSQL ON)
set(WITH_PGSQL_PLUGIN ON)
endif()
set(WITH_MYSQL_PLUGIN OFF)
if ("mysqlplugin" IN_LIST FEATURES)
set(WITH_MYSQL_PLUGIN ON)
endif()
if(WITH_MYSQL_PLUGIN AND NOT VCPKG_TARGET_IS_WINDOWS)
message(WARNING "${PORT} is currently not setup to support feature 'mysqlplugin' on platforms other than windows. Feel free to open up a PR to fix it!")
endif()
include(qt_port_functions)
@ -121,31 +121,33 @@ list(APPEND CORE_OPTIONS
-system-zlib
-system-libjpeg
-system-libpng
-system-freetype # static builds require to also link its dependent bzip!
-system-freetype
-system-pcre
-system-doubleconversion
-system-sqlite
-system-harfbuzz
-icu
-no-vulkan
-no-angle) # Qt does not need to build angle. VCPKG will build angle!
-no-angle # Qt does not need to build angle. VCPKG will build angle!
-no-glib
)
if(QT_OPENSSL_LINK)
list(APPEND CORE_OPTIONS -openssl-linked)
endif()
if(WITH_PGSQL)
if(WITH_PGSQL_PLUGIN)
list(APPEND CORE_OPTIONS -sql-psql)
else()
list(APPEND CORE_OPTIONS -no-sql-psql)
endif()
if(VCPKG_TARGET_IS_WINDOWS)
if(QT_MYSQL_PLUGIN)
list(APPEND CORE_OPTIONS -sql-mysql)
endif()
if(WITH_MYSQL_PLUGIN)
list(APPEND CORE_OPTIONS -sql-mysql)
else()
list(APPEND CORE_OPTIONS -no-sql-mysql)
endif()
find_library(ZLIB_RELEASE NAMES z zlib PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH)
find_library(ZLIB_DEBUG NAMES z zlib zd zlibd PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" NO_DEFAULT_PATH)
find_library(JPEG_RELEASE NAMES jpeg jpeg-static PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH)
@ -202,7 +204,6 @@ if(VCPKG_TARGET_IS_WINDOWS)
set(ICU_DEBUG "${ICU_DEBUG} Advapi32.lib" )
endif()
find_library(FONTCONFIG_RELEASE NAMES fontconfig PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH)
find_library(FONTCONFIG_DEBUG NAMES fontconfig PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" NO_DEFAULT_PATH)
find_library(EXPAT_RELEASE NAMES expat PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH)
@ -222,13 +223,7 @@ set(FREETYPE_RELEASE_ALL "${FREETYPE_RELEASE} ${BZ2_RELEASE} ${LIBPNG_RELEASE} $
set(FREETYPE_DEBUG_ALL "${FREETYPE_DEBUG} ${BZ2_DEBUG} ${LIBPNG_DEBUG} ${ZLIB_DEBUG} ${BROTLI_DEC_DEBUG} ${BROTLI_COMMON_DEBUG}")
# If HarfBuzz is built with GLib enabled, it must be statically link
set(GLIB_LIB_VERSION 2.0)
find_library(GLIB_RELEASE NAMES glib-${GLIB_LIB_VERSION} PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATH)
find_library(GLIB_DEBUG NAMES glib-${GLIB_LIB_VERSION} PATHS "${CURRENT_INSTALLED_DIR}/debug/lib" NO_DEFAULT_PATH)
if(GLIB_RELEASE MATCHES "-NOTFOUND" OR GLIB_DEBUG MATCHES "-NOTFOUND")
set(GLIB_RELEASE "")
set(GLIB_DEBUG "")
endif()
x_vcpkg_pkgconfig_get_modules(PREFIX harfbuzz MODULES harfbuzz LIBRARIES)
set(RELEASE_OPTIONS
"LIBJPEG_LIBS=${JPEG_RELEASE}"
@ -266,23 +261,23 @@ if(VCPKG_TARGET_IS_WINDOWS)
endif()
list(APPEND RELEASE_OPTIONS
"SQLITE_LIBS=${SQLITE_RELEASE}"
"HARFBUZZ_LIBS=${HARFBUZZ_RELEASE} ${FREETYPE_RELEASE_ALL}"
"HARFBUZZ_LIBS=${harfbuzz_LIBRARIES_RELEASE}"
"OPENSSL_LIBS=${SSL_RELEASE} ${EAY_RELEASE} ws2_32.lib secur32.lib advapi32.lib shell32.lib crypt32.lib user32.lib gdi32.lib"
)
list(APPEND DEBUG_OPTIONS
"SQLITE_LIBS=${SQLITE_DEBUG}"
"HARFBUZZ_LIBS=${HARFBUZZ_DEBUG} ${FREETYPE_DEBUG_ALL}"
"HARFBUZZ_LIBS=${harfbuzz_LIBRARIES_DEBUG}"
"OPENSSL_LIBS=${SSL_DEBUG} ${EAY_DEBUG} ws2_32.lib secur32.lib advapi32.lib shell32.lib crypt32.lib user32.lib gdi32.lib"
)
if(WITH_PGSQL)
if(WITH_PGSQL_PLUGIN)
list(APPEND RELEASE_OPTIONS "PSQL_LIBS=${PSQL_RELEASE} ${PSQL_PORT_RELEASE} ${PSQL_COMMON_RELEASE} ${SSL_RELEASE} ${EAY_RELEASE} ws2_32.lib secur32.lib advapi32.lib shell32.lib crypt32.lib user32.lib gdi32.lib")
list(APPEND DEBUG_OPTIONS "PSQL_LIBS=${PSQL_DEBUG} ${PSQL_PORT_DEBUG} ${PSQL_COMMON_DEBUG} ${SSL_DEBUG} ${EAY_DEBUG} ws2_32.lib secur32.lib advapi32.lib shell32.lib crypt32.lib user32.lib gdi32.lib")
endif()
if (QT_MYSQL_PLUGIN)
if (WITH_MYSQL_PLUGIN)
list(APPEND RELEASE_OPTIONS "MYSQL_LIBS=${MYSQL_RELEASE}")
list(APPEND DEBUG_OPTIONS "MYSQL_LIBS=${MYSQL_DEBUG}")
endif(QT_MYSQL_PLUGIN)
endif(WITH_MYSQL_PLUGIN)
elseif(VCPKG_TARGET_IS_LINUX)
list(APPEND CORE_OPTIONS -fontconfig -xcb-xlib -xcb -linuxfb)
@ -291,17 +286,17 @@ elseif(VCPKG_TARGET_IS_LINUX)
endif()
list(APPEND RELEASE_OPTIONS
"SQLITE_LIBS=${SQLITE_RELEASE} -ldl -lpthread"
"HARFBUZZ_LIBS=${HARFBUZZ_RELEASE} ${FREETYPE_RELEASE_ALL} ${GLIB_RELEASE} -lpthread"
"HARFBUZZ_LIBS=${harfbuzz_LIBRARIES_RELEASE}"
"OPENSSL_LIBS=${SSL_RELEASE} ${EAY_RELEASE} -ldl -lpthread"
"FONTCONFIG_LIBS=${FONTCONFIG_RELEASE} ${FREETYPE_RELEASE} ${EXPAT_RELEASE} -luuid"
)
list(APPEND DEBUG_OPTIONS
"SQLITE_LIBS=${SQLITE_DEBUG} -ldl -lpthread"
"HARFBUZZ_LIBS=${HARFBUZZ_DEBUG} ${FREETYPE_DEBUG_ALL} ${GLIB_DEBUG} -lpthread"
"HARFBUZZ_LIBS=${harfbuzz_LIBRARIES_DEBUG}"
"OPENSSL_LIBS=${SSL_DEBUG} ${EAY_DEBUG} -ldl -lpthread"
"FONTCONFIG_LIBS=${FONTCONFIG_DEBUG} ${FREETYPE_DEBUG} ${EXPAT_DEBUG} -luuid"
)
if(WITH_PGSQL)
if(WITH_PGSQL_PLUGIN)
list(APPEND RELEASE_OPTIONS "PSQL_LIBS=${PSQL_RELEASE} ${PSQL_PORT_RELEASE} ${PSQL_TYPES_RELEASE} ${PSQL_COMMON_RELEASE} ${SSL_RELEASE} ${EAY_RELEASE} -ldl -lpthread")
list(APPEND DEBUG_OPTIONS "PSQL_LIBS=${PSQL_DEBUG} ${PSQL_PORT_DEBUG} ${PSQL_TYPES_DEBUG} ${PSQL_COMMON_DEBUG} ${SSL_DEBUG} ${EAY_DEBUG} -ldl -lpthread")
endif()
@ -331,18 +326,18 @@ elseif(VCPKG_TARGET_IS_OSX)
#list(APPEND QT_PLATFORM_CONFIGURE_OPTIONS HOST_PLATFORM ${TARGET_MKSPEC})
list(APPEND RELEASE_OPTIONS
"SQLITE_LIBS=${SQLITE_RELEASE} -ldl -lpthread"
"HARFBUZZ_LIBS=${HARFBUZZ_RELEASE} ${FREETYPE_RELEASE_ALL} -framework ApplicationServices"
"HARFBUZZ_LIBS=${harfbuzz_LIBRARIES_RELEASE} -framework ApplicationServices"
"OPENSSL_LIBS=${SSL_RELEASE} ${EAY_RELEASE} -ldl -lpthread"
"FONTCONFIG_LIBS=${FONTCONFIG_RELEASE} ${FREETYPE_RELEASE} ${EXPAT_RELEASE} -liconv"
)
list(APPEND DEBUG_OPTIONS
"SQLITE_LIBS=${SQLITE_DEBUG} -ldl -lpthread"
"HARFBUZZ_LIBS=${HARFBUZZ_DEBUG} ${FREETYPE_DEBUG_ALL} -framework ApplicationServices"
"HARFBUZZ_LIBS=${harfbuzz_LIBRARIES_DEBUG} -framework ApplicationServices"
"OPENSSL_LIBS=${SSL_DEBUG} ${EAY_DEBUG} -ldl -lpthread"
"FONTCONFIG_LIBS=${FONTCONFIG_DEBUG} ${FREETYPE_DEBUG} ${EXPAT_DEBUG} -liconv"
)
if(WITH_PGSQL)
if(WITH_PGSQL_PLUGIN)
list(APPEND RELEASE_OPTIONS "PSQL_LIBS=${PSQL_RELEASE} ${PSQL_PORT_RELEASE} ${PSQL_TYPES_RELEASE} ${PSQL_COMMON_RELEASE} ${SSL_RELEASE} ${EAY_RELEASE} -ldl -lpthread")
list(APPEND DEBUG_OPTIONS "PSQL_LIBS=${PSQL_DEBUG} ${PSQL_PORT_DEBUG} ${PSQL_TYPES_DEBUG} ${PSQL_COMMON_DEBUG} ${SSL_DEBUG} ${EAY_DEBUG} -ldl -lpthread")
endif()

View File

@ -1,7 +1,7 @@
{
"name": "qt5-base",
"version-string": "5.15.2",
"port-version": 3,
"port-version": 4,
"description": "Qt5 Application Framework Base Module. Includes Core, GUI, Widgets, Networking, SQL, Concurrent and other essential qt components.",
"homepage": "https://www.qt.io/",
"dependencies": [
@ -26,6 +26,10 @@
"openssl",
"pcre2",
"sqlite3",
{
"name": "vcpkg-pkgconfig-get-modules",
"host": true
},
"zlib",
"zstd"
],

View File

@ -0,0 +1,6 @@
# vcpkg-pkgconfig-get-modules
**Experimental: will change or be removed at any time**
`vcpkg-pkgconfig-get-modules` provides `x_vcpkg_pkgconfig_get_modules()`, a function which simplifies calling
`pkg-config` in portfiles in order to gather dependencies for exotic buildsystems.

View File

@ -0,0 +1,23 @@
Copyright (c) Microsoft Corporation
All rights reserved.
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,12 @@
if(NOT TARGET_TRIPLET STREQUAL HOST_TRIPLET)
# make FATAL_ERROR in CI when issue #16773 fixed
message(WARNING "vcpkg-pkgconfig-get-modules is a host-only port; please mark it as a host port in your dependencies.")
endif()
file(COPY
"${CMAKE_CURRENT_LIST_DIR}/x_vcpkg_pkgconfig_get_modules.cmake"
"${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake"
"${CMAKE_CURRENT_LIST_DIR}/copyright"
DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)

View File

@ -0,0 +1 @@
include("${CMAKE_CURRENT_LIST_DIR}/x_vcpkg_pkgconfig_get_modules.cmake")

View File

@ -0,0 +1,4 @@
{
"name": "vcpkg-pkgconfig-get-modules",
"version-date": "2021-04-02"
}

View File

@ -0,0 +1,146 @@
#[===[.md:
# x_vcpkg_pkgconfig_get_modules
Experimental
Retrieve required module information from pkgconfig modules
## Usage
```cmake
x_vcpkg_pkgconfig_get_modules(
PREFIX <prefix>
MODULES <pkgconfig_modules>...
[LIBS]
[LIBRARIES]
[LIBRARIES_DIRS]
[INCLUDE_DIRS]
)
```
## Parameters
### PREFIX
Used variable prefix to use
### MODULES
List of pkgconfig modules to retrieve information for.
### LIBS
Returns `"${PKGCONFIG}" --libs` in <prefix>_LIBS_(DEBUG|RELEASE)
### LIBRARIES
Returns `"${PKGCONFIG}" --libs-only-l` in <prefix>_LIBRARIES_(DEBUG|RELEASE)
### LIBRARIES_DIRS
Returns `"${PKGCONFIG}" --libs-only-L` in <prefix>_LIBRARIES_DIRS_(DEBUG|RELEASE)
### INCLUDE_DIRS
Returns `"${PKGCONFIG}" --cflags-only-I` in <prefix>_INCLUDE_DIRS_(DEBUG|RELEASE)
## Examples
* [qt5-base](https://github.com/microsoft/vcpkg/blob/master/ports/qt5-base/portfile.cmake)
#]===]
if(Z_VCPKG_PKGCONFIG_GET_MODULES_GUARD)
return()
endif()
set(Z_VCPKG_PKGCONFIG_GET_MODULES_GUARD ON CACHE INTERNAL "guard variable")
function(x_vcpkg_pkgconfig_get_modules)
cmake_parse_arguments(PARSE_ARGV 0 "arg" "LIBS;LIBRARIES;LIBRARIES_DIR;INCLUDE_DIRS" "PREFIX" "MODULES")
if(NOT DEFINED arg_PREFIX OR arg_PREFIX STREQUAL "")
message(FATAL_ERROR "x_vcpkg_pkgconfig_get_modules requires parameter PREFIX!")
endif()
if(NOT DEFINED arg_MODULES OR arg_MODULES STREQUAL "")
message(FATAL_ERROR "x_vcpkg_pkgconfig_get_modules requires parameter MODULES!")
endif()
if(DEFINED arg_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "extra arguments passed to x_vcpkg_pkgconfig_get_modules: ${arg_UNPARSED_ARGUMENTS}")
endif()
vcpkg_find_acquire_program(PKGCONFIG)
set(backup_PKG_CONFIG_PATH "$ENV{PKG_CONFIG_PATH}")
set(var_suffixes)
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
z_vcpkg_set_pkgconfig_path("${CURRENT_INSTALLED_DIR}/lib/pkgconfig" "${backup_PKG_CONFIG_PATH}")
if(arg_LIBS)
execute_process(
COMMAND "${PKGCONFIG}" --libs ${arg_MODULES}
OUTPUT_VARIABLE ${arg_PREFIX}_LIBS_RELEASE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
list(APPEND var_suffixes LIBS_RELEASE)
endif()
if(arg_LIBRARIES)
execute_process(
COMMAND "${PKGCONFIG}" --libs-only-l ${arg_MODULES}
OUTPUT_VARIABLE ${arg_PREFIX}_LIBRARIES_RELEASE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
list(APPEND var_suffixes LIBRARIES_RELEASE)
endif()
if(arg_LIBRARIES_DIRS)
execute_process(
COMMAND "${PKGCONFIG}" --libs-only-L ${arg_MODULES}
OUTPUT_VARIABLE ${arg_PREFIX}_LIBRARIES_DIRS_RELEASE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
list(APPEND var_suffixes LIBRARIES_DIRS_RELEASE)
endif()
if(arg_INCLUDE_DIRS)
execute_process(
COMMAND "${PKGCONFIG}" --cflags-only-I ${arg_MODULES}
OUTPUT_VARIABLE ${arg_PREFIX}_INCLUDE_DIRS_RELEASE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
list(APPEND var_suffixes INCLUDE_DIRS_RELEASE)
endif()
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
z_vcpkg_set_pkgconfig_path("${CURRENT_INSTALLED_DIR}/debug/lib/pkgconfig" "${backup_PKG_CONFIG_PATH}")
if(arg_LIBS)
execute_process(
COMMAND "${PKGCONFIG}" --libs ${arg_MODULES}
OUTPUT_VARIABLE ${arg_PREFIX}_LIBS_DEBUG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
list(APPEND var_suffixes LIBS_DEBUG)
endif()
if(arg_LIBRARIES)
execute_process(
COMMAND "${PKGCONFIG}" --libs-only-l ${arg_MODULES}
OUTPUT_VARIABLE ${arg_PREFIX}_LIBRARIES_DEBUG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
list(APPEND var_suffixes LIBRARIES_DEBUG)
endif()
if(arg_LIBRARIES_DIRS)
execute_process(
COMMAND "${PKGCONFIG}" --libs-only-L ${arg_MODULES}
OUTPUT_VARIABLE ${arg_PREFIX}_LIBRARIES_DIRS_DEBUG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
list(APPEND var_suffixes LIBRARIES_DIRS_DEBUG)
endif()
if(arg_INCLUDE_DIRS)
execute_process(
COMMAND "${PKGCONFIG}" --cflags-only-I ${arg_MODULES}
OUTPUT_VARIABLE ${arg_PREFIX}_INCLUDE_DIRS_DEBUG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
list(APPEND var_suffixes INCLUDE_DIRS_DEBUG)
endif()
endif()
set(ENV{PKG_CONFIG_PATH} "${backup_PKG_CONFIG_PATH}")
foreach(_var IN LISTS var_suffixes)
set("${arg_PREFIX}_${_var}" "${${arg_PREFIX}_${_var}}" PARENT_SCOPE)
endforeach()
endfunction()
function(z_vcpkg_set_pkgconfig_path _path _backup)
if(NOT _backup STREQUAL "")
set(ENV{PKG_CONFIG_PATH} "${_path}${VCPKG_HOST_PATH_SEPARATOR}${_backup}")
else()
set(ENV{PKG_CONFIG_PATH} "${_path}")
endif()
endfunction()

View File

@ -1213,7 +1213,6 @@ paho-mqtt:arm-uwp=fail
paho-mqtt:x64-uwp=fail
pangomm:x64-osx=fail
pangomm:arm64-windows=fail
paraview:x64-linux=fail
parmetis:x64-linux=fail
parmetis:x64-osx=fail
pdal:x64-linux=fail

View File

@ -4962,7 +4962,7 @@
},
"qt5-base": {
"baseline": "5.15.2",
"port-version": 3
"port-version": 4
},
"qt5-canvas3d": {
"baseline": "0",
@ -6264,6 +6264,10 @@
"baseline": "3",
"port-version": 0
},
"vcpkg-pkgconfig-get-modules": {
"baseline": "2021-04-02",
"port-version": 0
},
"vectorclass": {
"baseline": "2.00.01",
"port-version": 0

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "6bd06b14752f1123c7d43df59ae19c584c24ea54",
"version-string": "5.15.2",
"port-version": 4
},
{
"git-tree": "da84dcfb306668b2cdb510efb6a130882da2055a",
"version-string": "5.15.2",

View File

@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "827541895526ebcd68711de9d05e98acd09bd323",
"version-date": "2021-04-02",
"port-version": 0
}
]
}