Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pkgconf] enable search for system libs on linux #23010

Merged
merged 11 commits into from
Feb 24, 2022
1 change: 1 addition & 0 deletions ports/colmap/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
DISABLE_PARALLEL_CONFIGURE
OPTIONS
--trace-expand
-DCUDA_ENABLED=${CUDA_ENABLED}
-DCUDA_ARCHS=${CUDA_ARCHS}
-DTESTS_ENABLED=${TESTS_ENABLED}
Expand Down
29 changes: 29 additions & 0 deletions ports/pkgconf/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
cmake_minimum_required(VERSION 3.21)

set(CMAKE_INSTALL_PREFIX "/usr")

project(vcpgk_lib_paths LANGUAGES C CXX)


include(GNUInstallDirs)

set(export_vars CMAKE_C_LIBRARY_ARCHITECTURE
CMAKE_CXX_LIBRARY_ARCHITECTURE
CMAKE_LIBRARY_ARCHITECTURE
CMAKE_LIBRARY_ARCHITECTURE_REGEX
CMAKE_INSTALL_LIBDIR
CMAKE_INSTALL_INCLUDEDIR
CMAKE_INSTALL_DATAROOTDIR
CMAKE_INSTALL_FULL_LIBDIR
CMAKE_INSTALL_FULL_INCLUDEDIR
CMAKE_INSTALL_FULL_DATAROOTDIR

)
set(output "")
foreach(var IN LISTS export_vars)
string(APPEND output "set(VCPKG_DETECTED_${var} \"${${var}}\")\n")
endforeach()

if(DEFINED OUTPUT_FILE)
file(WRITE "${OUTPUT_FILE}" "${output}")
endif()
67 changes: 67 additions & 0 deletions ports/pkgconf/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,78 @@ vcpkg_from_github(
HEAD_REF master
)

if(VCPKG_BUILD_TYPE)
set(BACKUP_BUILD_TYPE ${VCPKG_BUILD_TYPE})
endif()
set(VCPKG_BUILD_TYPE release)
vcpkg_configure_cmake( SOURCE_PATH "${CURRENT_PORT_DIR}"
OPTIONS "-DOUTPUT_FILE:PATH=${CURRENT_BUILDTREES_DIR}/libpaths-${TARGET_TRIPLET}.cmake"
)
if(DEFINED BACKUP_BUILD_TYPE)
set(VCPKG_BUILD_TYPE ${BACKUP_BUILD_TYPE})
else()
unset(VCPKG_BUILD_TYPE)
endif()

vcpkg_configure_meson(
SOURCE_PATH "${SOURCE_PATH}"
NO_PKG_CONFIG
OPTIONS -Dtests=false
)

include("${CURRENT_BUILDTREES_DIR}/libpaths-${TARGET_TRIPLET}.cmake")

set(systemsuffix "")
set(architectureprefix "")

set(SYSTEM_LIBDIR "")
set(PKG_DEFAULT_PATH "")
set(SYSTEM_INCLUDEDIR "")
set(PERSONALITY_PATH "personality.d")


if(NOT VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_CROSSCOMPILING AND VCPKG_TARGET_ARCHITECTURE MATCHES "x64")
# These defaults are obtained from pkgconf/pkg-config on Ubuntu
set(SYSTEM_INCLUDEDIR "/usr/include")
# System lib dirs will be stripped from -L from the pkg-config output
set(SYSTEM_LIBDIR "/lib:/lib/i386-linux-gnu:/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnux32:/lib32:/libx32:/usr/lib:/usr/lib/i386-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnux32:/usr/lib32:/usr/libx32")
set(PKG_DEFAULT_PATH "/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig")
set(PERSONALITY_PATH "/usr/share/pkgconfig/personality.d:/etc/pkgconfig/personality.d")
endif()

if(DEFINED VCPKG_pkgconf_SYSTEM_LIBDIR)
set(SYSTEM_LIBDIR "${VCPKG_pkgconf_SYSTEM_LIBDIR}")
endif()
if(DEFINED VCPKG_pkgconf_PKG_DEFAULT_PATH)
set(PKG_DEFAULT_PATH "${VCPKG_pkgconf_PKG_DEFAULT_PATH}")
endif()
if(DEFINED VCPKG_pkgconf_SYSTEM_INCLUDEDIR)
set(SYSTEM_INCLUDEDIR "${VCPKG_pkgconf_SYSTEM_INCLUDEDIR}")
endif()
if(DEFINED VCPKG_pkgconf_PERSONALITY_PATH)
set(PERSONALITY_PATH "${VCPKG_pkgconf_PERSONALITY_PATH}")
endif()


set(pkgconfig_file "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/libpkgconf/config.h")
if(EXISTS "${pkgconfig_file}")
file(READ "${pkgconfig_file}" contents)
string(REGEX REPLACE "#define PKG_DEFAULT_PATH [^\n]+" "#define PKG_DEFAULT_PATH \"${PKG_DEFAULT_PATH}\"" contents "${contents}")
string(REGEX REPLACE "#define SYSTEM_INCLUDEDIR [^\n]+" "#define SYSTEM_INCLUDEDIR \"${SYSTEM_INCLUDEDIR}\"" contents "${contents}")
string(REGEX REPLACE "#define SYSTEM_LIBDIR [^\n]+" "#define SYSTEM_LIBDIR \"${SYSTEM_LIBDIR}\"" contents "${contents}")
string(REGEX REPLACE "#define PERSONALITY_PATH [^\n]+" "#define PERSONALITY_PATH \"${PERSONALITY_PATH}\"" contents "${contents}")
file(WRITE "${pkgconfig_file}" "${contents}")
endif()
set(pkgconfig_file "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/libpkgconf/config.h")
if(EXISTS "${pkgconfig_file}")
file(READ "${pkgconfig_file}" contents)
string(REGEX REPLACE "#define PKG_DEFAULT_PATH [^\n]+" "#define PKG_DEFAULT_PATH \"${PKG_DEFAULT_PATH}\"" contents "${contents}")
string(REGEX REPLACE "#define SYSTEM_INCLUDEDIR [^\n]+" "#define SYSTEM_INCLUDEDIR \"${SYSTEM_INCLUDEDIR}\"" contents "${contents}")
string(REGEX REPLACE "#define SYSTEM_LIBDIR [^\n]+" "#define SYSTEM_LIBDIR \"${SYSTEM_LIBDIR}\"" contents "${contents}")
string(REGEX REPLACE "#define PERSONALITY_PATH [^\n]+" "#define PERSONALITY_PATH \"${PERSONALITY_PATH}\"" contents "${contents}")
file(WRITE "${pkgconfig_file}" "${contents}")
endif()

vcpkg_install_meson()
vcpkg_fixup_pkgconfig(SKIP_CHECK)

Expand Down
2 changes: 1 addition & 1 deletion ports/pkgconf/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "pkgconf",
"version": "1.8.0",
"port-version": 1,
"port-version": 2,
"description": "pkgconf is a program which helps to configure compiler and linker flags for development libraries. It is similar to pkg-config from freedesktop.org.",
"homepage": "https://github.com/pkgconf/pkgconf",
"supports": "!uwp",
Expand Down
2 changes: 1 addition & 1 deletion versions/baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -5326,7 +5326,7 @@
},
"pkgconf": {
"baseline": "1.8.0",
"port-version": 1
"port-version": 2
},
"platform-folders": {
"baseline": "4.1.0",
Expand Down
5 changes: 5 additions & 0 deletions versions/p-/pkgconf.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "849c6b13074045c18f89394e7c7350efe8a630df",
"version": "1.8.0",
"port-version": 2
},
{
"git-tree": "cbcb5f984f7713a636caa075f06b755d37493dbd",
"version": "1.8.0",
Expand Down