Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions ports/gdal/pkgconfig.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
diff --git a/cmake/helpers/GdalGenerateConfig.cmake b/cmake/helpers/GdalGenerateConfig.cmake
index debddd7062..1ee07abf13 100644
--- a/cmake/helpers/GdalGenerateConfig.cmake
+++ b/cmake/helpers/GdalGenerateConfig.cmake
@@ -204,14 +204,15 @@ function(gdal_split_library_to_lflags _lib_flag _path_flag _input)
string(FIND "${_name_we}" "${_prefix}" _pos)
else()
set(_pos 0)
+ set(_name_we "${_lib_name}")
endif()
if(_pos STREQUAL "0")
# Match
string(LENGTH "${_prefix}" _pos)
string(SUBSTRING "${_name_we}" "${_pos}" "-1" _lib_name)
- set(${_lib_flag} "${CMAKE_LINK_LIBRARY_FLAG}${_lib_name}" PARENT_SCOPE)
+ set(${_lib_flag} "-l${_lib_name}" PARENT_SCOPE)
if(_lib_dir AND NOT _lib_dir IN_LIST CMAKE_C_IMPLICIT_LINK_DIRECTORIES)
- set(${_path_flag} "${CMAKE_LIBRARY_PATH_FLAG}${_lib_dir}" PARENT_SCOPE)
+ set(${_path_flag} "-L${_lib_dir}" PARENT_SCOPE)
else()
set(${_path_flag} "" PARENT_SCOPE)
endif()
@@ -235,6 +236,7 @@ function(gdal_get_lflags _result)
gdal_flatten_link_libraries(_libs_in "${is_debug_build}" ${ARGN})

set(_libs_out "")
+ string(REPLACE "-framework;" "-framework " _libs_in "${_libs_in}")
foreach(_lib IN LISTS _libs_in)
if(TARGET "${_lib}")
get_property(_type TARGET ${_lib} PROPERTY TYPE)
@@ -260,12 +262,15 @@ function(gdal_get_lflags _result)
# use _lib
elseif(CMAKE_LINK_LIBRARY_FLAG STREQUAL "-l" AND _lib MATCHES "^-l")
# use _lib
+ elseif(_lib MATCHES "^-framework +([^ ]+)\$")
+ list(APPEND _libs_out "-framework" "${CMAKE_MATCH_1}")
+ continue()
elseif(EXISTS "${_lib}")
if(GDAL_SPLIT_EXPORTED_LIBS)
gdal_split_library_to_lflags(_lib _other "${_lib}")
endif()
else()
- set(_lib "${CMAKE_LINK_LIBRARY_FLAG}${_lib}")
+ set(_lib "-l${_lib}")
endif()
if(_other AND NOT _other IN_LIST _libs_out)
list(APPEND _libs_out "${_other}")
@@ -303,7 +308,11 @@ function(gdal_generate_config)
gdal_join_and_quote(CONFIG_CFLAGS)

get_property(target_lib_name TARGET "${arg_TARGET}" PROPERTY OUTPUT_NAME)
- set(CONFIG_LIBS "${CMAKE_LINK_LIBRARY_FLAG}${target_lib_name}")
+ # Keep in sync with /gdal.cmake
+ if(MSVC AND arg_TARGET STREQUAL "GDAL" AND CMAKE_BUILD_TYPE MATCHES "[Dd][Ee][Bb][Uu][Gg]")
+ string(APPEND target_lib_name "${GDAL_DEBUG_POSTFIX}")
+ endif()
+ set(CONFIG_LIBS "-l${target_lib_name}")
if(NOT CONFIG_PREFIX IN_LIST CMAKE_C_IMPLICIT_LINK_LIBRARIES)
list(INSERT CONFIG_LIBS 0 "${CMAKE_LIBRARY_PATH_FLAG}${CMAKE_INSTALL_FULL_LIBDIR}")
endif()
2 changes: 2 additions & 0 deletions ports/gdal/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ vcpkg_from_github(
libkml.patch
sqlite3.diff
target-is-valid.patch
pkgconfig.diff
)
# `vcpkg clean` stumbles over one subdir
file(REMOVE_RECURSE "${SOURCE_PATH}/autotest")
Expand Down Expand Up @@ -88,6 +89,7 @@ vcpkg_cmake_configure(
-DCMAKE_DISABLE_FIND_PACKAGE_Java=ON
-DCMAKE_DISABLE_FIND_PACKAGE_JNI=ON
-DCMAKE_DISABLE_FIND_PACKAGE_SWIG=ON
-DGDAL_SPLIT_EXPORTED_LIBS=ON
-DGDAL_USE_INTERNAL_LIBS=OFF
-DGDAL_USE_EXTERNAL_LIBS=OFF
-DGDAL_BUILD_OPTIONAL_DRIVERS=ON
Expand Down
7 changes: 7 additions & 0 deletions ports/gdal/vcpkg.json
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,13 @@
"libspatialite": {
"description": "Create or update SpatiaLite databases using libspatialite",
"dependencies": [
{
"name": "gdal",
"default-features": false,
"features": [
"sqlite3"
]
},
{
"name": "libspatialite",
"default-features": false
Expand Down
11 changes: 11 additions & 0 deletions scripts/test_ports/vcpkg-ci-gdal/portfile.cmake
Original file line number Diff line number Diff line change
@@ -1 +1,12 @@
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)

file(COPY_FILE "${CURRENT_INSTALLED_DIR}/lib/pkgconfig/gdal.pc" "${CURRENT_BUILDTREES_DIR}/gdal.pc.log")

vcpkg_find_acquire_program(PKGCONFIG)

vcpkg_cmake_configure(
SOURCE_PATH "${CURRENT_PORT_DIR}/project"
OPTIONS
"-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}"
)
vcpkg_cmake_build()
25 changes: 25 additions & 0 deletions scripts/test_ports/vcpkg-ci-gdal/project/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
cmake_minimum_required(VERSION 3.30)
project(gdal-test C CXX)

set(CMAKE_CXX_STANDARD 11)

block(SCOPE_FOR VARIABLES)
find_package(GDAL CONFIG REQUIRED)

add_executable(main-cmake main.cpp)
target_link_libraries(main-cmake PRIVATE GDAL::GDAL)
endblock()

block(SCOPE_FOR VARIABLES)
find_package(PkgConfig REQUIRED)
pkg_check_modules(PC_GDAL gdal REQUIRED IMPORTED_TARGET)

add_executable(main-pkgconfig main.cpp)
if(APPLE OR (WIN32 AND NOT MINGW))
target_link_libraries(main-pkgconfig PRIVATE PkgConfig::PC_GDAL)
else()
# Use raw flags, avoid find_library
target_compile_options(main-pkgconfig PRIVATE ${PC_GDAL_CFLAGS})
target_link_libraries(main-pkgconfig PRIVATE ${PC_GDAL_LDFLAGS})
endif()
endblock()
8 changes: 8 additions & 0 deletions scripts/test_ports/vcpkg-ci-gdal/project/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#include <gdal_priv.h>

int main()
{
GDALAllRegister();
auto poDataset = GDALDatasetUniquePtr(GDALDataset::FromHandle(GDALOpen("test.gtif", GA_ReadOnly)));
return 0;
}
6 changes: 5 additions & 1 deletion scripts/test_ports/vcpkg-ci-gdal/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "vcpkg-ci-gdal",
"version-date": "2023-12-28",
"version-string": "ci",
"description": "Port to force features of certain ports within CI",
"homepage": "https://github.com/microsoft/vcpkg",
"license": "MIT",
Expand Down Expand Up @@ -59,6 +59,10 @@
"webp",
"zstd"
]
},
{
"name": "vcpkg-cmake",
"host": true
}
]
}
Loading