From 38c741f390e151ba44cac9726ffca95194440bcf Mon Sep 17 00:00:00 2001 From: hlysunnaram Date: Sat, 13 Oct 2018 00:12:15 +0200 Subject: [gdal] update port to 2.3.2 and mysql support as port feature (#4413) * [gdal] update port from 2.3.0 to 2.3.2 * [libmariadb] fix build failure when VCPKG_BUILD_TYPE is set * [gdal] remove libmysql dependency from port core to allow x86 build * create new port features: mysql-libmysql and mysql-libmariadb * add mysql-libmysql as default feature: to build on x86, install gdal[core] or gdal[core,mysql-libmariadb] if mysql support is needed --- ports/gdal/0001-Fix-debug-crt-flags.patch | 2 +- ports/gdal/CONTROL | 13 ++++++- ports/gdal/no-my-bool.patch | 12 ------ ports/gdal/portfile.cmake | 55 +++++++++++++++++--------- ports/libmariadb/portfile.cmake | 64 ++++++++++++++++++++----------- 5 files changed, 89 insertions(+), 57 deletions(-) delete mode 100644 ports/gdal/no-my-bool.patch diff --git a/ports/gdal/0001-Fix-debug-crt-flags.patch b/ports/gdal/0001-Fix-debug-crt-flags.patch index 753d53131..aab3d40ca 100644 --- a/ports/gdal/0001-Fix-debug-crt-flags.patch +++ b/ports/gdal/0001-Fix-debug-crt-flags.patch @@ -1,7 +1,7 @@ diff -Nuar a/nmake.opt b/nmake.opt --- a/nmake.opt 2018-05-04 09:05:46.000000000 +0200 +++ b/nmake.opt 2018-05-11 22:58:39.387603800 +0200 -@@ -120,11 +120,21 @@ +@@ -124,11 +124,21 @@ CXX_PDB_FLAGS= !ENDIF diff --git a/ports/gdal/CONTROL b/ports/gdal/CONTROL index 7db6156aa..7686d13ab 100644 --- a/ports/gdal/CONTROL +++ b/ports/gdal/CONTROL @@ -1,4 +1,13 @@ Source: gdal -Version: 2.3.0-2 +Version: 2.3.2 Description: The Geographic Data Abstraction Library for reading and writing geospatial raster and vector data. -Build-Depends: proj, libpng, geos, sqlite3, curl, expat, libpq, libmysql, openjpeg, libwebp, libxml2, liblzma +Build-Depends: proj, libpng, geos, sqlite3, curl, expat, libpq, openjpeg, libwebp, libxml2, liblzma +Default-Features: mysql-libmysql + +Feature: mysql-libmysql +Build-Depends: libmysql +Description: Add mysql support using libmysql + +Feature: mysql-libmariadb +Build-Depends: libmariadb +Description: Add mysql support using libmariadb diff --git a/ports/gdal/no-my-bool.patch b/ports/gdal/no-my-bool.patch deleted file mode 100644 index 2589ff044..000000000 --- a/ports/gdal/no-my-bool.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Nuar a/ogr/ogrsf_frmts/mysql/ogrmysqldatasource.cpp b/ogr/ogrsf_frmts/mysql/ogrmysqldatasource.cpp ---- a/ogr/ogrsf_frmts/mysql/ogrmysqldatasource.cpp 2018-05-04 09:09:26.000000000 +0200 -+++ b/ogr/ogrsf_frmts/mysql/ogrmysqldatasource.cpp 2018-05-11 23:07:44.284558300 +0200 -@@ -235,7 +235,7 @@ - // Enable automatic reconnection - // Must be called after mysql_real_connect() on MySQL < 5.0.19 - // and at any point on more recent versions. -- my_bool reconnect = 1; -+ bool reconnect = 1; - mysql_options(hConn, MYSQL_OPT_RECONNECT, &reconnect); - } - diff --git a/ports/gdal/portfile.cmake b/ports/gdal/portfile.cmake index ddeccfc37..1f3ca96e3 100644 --- a/ports/gdal/portfile.cmake +++ b/ports/gdal/portfile.cmake @@ -1,10 +1,10 @@ # vcpkg portfile.cmake for GDAL # # NOTE: update the version and checksum for new GDAL release -set(GDAL_VERSION_STR "2.3.0") -set(GDAL_VERSION_PKG "230") +set(GDAL_VERSION_STR "2.3.2") +set(GDAL_VERSION_PKG "232") set(GDAL_VERSION_LIB "203") -set(GDAL_PACKAGE_SUM "f3f790b7ecb28916d6d0628b15ddc6b396a25a8f1f374589ea5e95b5a50addc99e05e363113f907b6c96faa69870b5dc9fdf3d771f9c8937b4aa8819bd78b190") +set(GDAL_PACKAGE_SUM "9eb26be57657b1f1eaada4794859584d53bd58e0d504eb12ab97e9c60353d0a565dc894a89829ee50fc549cb7d069a75b7895c0dd4cea887e010671f63e945b8") if (TRIPLET_SYSTEM_ARCH MATCHES "arm") message(FATAL_ERROR "ARM is currently not supported.") @@ -22,21 +22,27 @@ vcpkg_download_distfile(ARCHIVE URLS "http://download.osgeo.org/gdal/${GDAL_VERSION_STR}/gdal${GDAL_VERSION_PKG}.zip" FILENAME "gdal${GDAL_VERSION_PKG}.zip" SHA512 ${GDAL_PACKAGE_SUM} - ) +) # Extract source into architecture specific directory, because GDALs' nmake based build currently does not # support out of source builds. set(SOURCE_PATH_DEBUG ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-debug/gdal-${GDAL_VERSION_STR}) set(SOURCE_PATH_RELEASE ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-release/gdal-${GDAL_VERSION_STR}) -foreach(BUILD_TYPE debug release) +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + list(APPEND BUILD_TYPES "release") +endif() +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + list(APPEND BUILD_TYPES "debug") +endif() + +foreach(BUILD_TYPE IN LISTS BUILD_TYPES) file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-${BUILD_TYPE}) vcpkg_extract_source_archive(${ARCHIVE} ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-${BUILD_TYPE}) vcpkg_apply_patches( SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-${BUILD_TYPE}/gdal-${GDAL_VERSION_STR} PATCHES ${CMAKE_CURRENT_LIST_DIR}/0001-Fix-debug-crt-flags.patch - ${CMAKE_CURRENT_LIST_DIR}/no-my-bool.patch ) endforeach() @@ -76,11 +82,6 @@ file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/include" SQLITE_INCLUDE_DIR) file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/lib/sqlite3.lib" SQLITE_LIBRARY_REL) file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/debug/lib/sqlite3.lib" SQLITE_LIBRARY_DBG) -# Setup MySQL libraries + include path -file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/include/mysql" MYSQL_INCLUDE_DIR) -file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/lib/libmysql.lib" MYSQL_LIBRARY_REL) -file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/debug/lib/libmysql.lib" MYSQL_LIBRARY_DBG) - # Setup PostgreSQL libraries + include path file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/include" PGSQL_INCLUDE_DIR) file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/lib/libpq.lib" PGSQL_LIBRARY_REL) @@ -106,7 +107,26 @@ file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/include" LZMA_INCLUDE_DIR) file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/lib/lzma.lib" LZMA_LIBRARY_REL) file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/debug/lib/lzma.lib" LZMA_LIBRARY_DBG) -set(NMAKE_OPTIONS +if("mysql-libmysql" IN_LIST FEATURES OR "mysql-libmariadb" IN_LIST FEATURES) + # Setup MySQL libraries + include path + if("mysql-libmysql" IN_LIST FEATURES) + file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/include/mysql" MYSQL_INCLUDE_DIR) + file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/lib/libmysql.lib" MYSQL_LIBRARY_REL) + file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/debug/lib/libmysql.lib" MYSQL_LIBRARY_DBG) + endif() + + if("mysql-libmariadb" IN_LIST FEATURES) + file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/include/mysql" MYSQL_INCLUDE_DIR) + file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/lib/libmariadb.lib" MYSQL_LIBRARY_REL) + file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/debug/lib/libmariadb.lib" MYSQL_LIBRARY_DBG) + endif() + + list(APPEND NMAKE_OPTIONS MYSQL_INC_DIR=${MYSQL_INCLUDE_DIR}) + list(APPEND NMAKE_OPTIONS_REL MYSQL_LIB=${MYSQL_LIBRARY_REL}) + list(APPEND NMAKE_OPTIONS_DBG MYSQL_LIB=${MYSQL_LIBRARY_DBG}) +endif() + +list(APPEND NMAKE_OPTIONS GDAL_HOME=${NATIVE_PACKAGES_DIR} DATADIR=${NATIVE_DATA_DIR} HTMLDIR=${NATIVE_HTML_DIR} @@ -117,7 +137,6 @@ set(NMAKE_OPTIONS EXPAT_INCLUDE=-I${EXPAT_INCLUDE_DIR} CURL_INC=-I${CURL_INCLUDE_DIR} SQLITE_INC=-I${SQLITE_INCLUDE_DIR} - MYSQL_INC_DIR=${MYSQL_INCLUDE_DIR} PG_INC_DIR=${PGSQL_INCLUDE_DIR} OPENJPEG_ENABLED=YES OPENJPEG_CFLAGS=-I${OPENJPEG_INCLUDE_DIR} @@ -147,8 +166,8 @@ else() set(LINKAGE_FLAGS "/MD") endif() -set(NMAKE_OPTIONS_REL - "${NMAKE_OPTIONS}" +list(APPEND NMAKE_OPTIONS_REL + ${NMAKE_OPTIONS} CXX_CRT_FLAGS=${LINKAGE_FLAGS} PROJ_LIBRARY=${PROJ_LIBRARY_REL} PNG_LIB=${PNG_LIBRARY_REL} @@ -156,15 +175,14 @@ set(NMAKE_OPTIONS_REL EXPAT_LIB=${EXPAT_LIBRARY_REL} "CURL_LIB=${CURL_LIBRARY_REL} wsock32.lib wldap32.lib winmm.lib" SQLITE_LIB=${SQLITE_LIBRARY_REL} - MYSQL_LIB=${MYSQL_LIBRARY_REL} PG_LIB=${PGSQL_LIBRARY_REL} OPENJPEG_LIB=${OPENJPEG_LIBRARY_REL} WEBP_LIBS=${WEBP_LIBRARY_REL} LIBXML2_LIB=${XML2_LIBRARY_REL} ) -set(NMAKE_OPTIONS_DBG - "${NMAKE_OPTIONS}" +list(APPEND NMAKE_OPTIONS_DBG + ${NMAKE_OPTIONS} CXX_CRT_FLAGS="${LINKAGE_FLAGS}d" PROJ_LIBRARY=${PROJ_LIBRARY_DBG} PNG_LIB=${PNG_LIBRARY_DBG} @@ -172,7 +190,6 @@ set(NMAKE_OPTIONS_DBG EXPAT_LIB=${EXPAT_LIBRARY_DBG} "CURL_LIB=${CURL_LIBRARY_DBG} wsock32.lib wldap32.lib winmm.lib" SQLITE_LIB=${SQLITE_LIBRARY_DBG} - MYSQL_LIB=${MYSQL_LIBRARY_DBG} PG_LIB=${PGSQL_LIBRARY_DBG} OPENJPEG_LIB=${OPENJPEG_LIBRARY_DBG} WEBP_LIBS=${WEBP_LIBRARY_DBG} diff --git a/ports/libmariadb/portfile.cmake b/ports/libmariadb/portfile.cmake index 4486564f6..e37afb22f 100644 --- a/ports/libmariadb/portfile.cmake +++ b/ports/libmariadb/portfile.cmake @@ -23,33 +23,51 @@ vcpkg_configure_cmake( vcpkg_install_cmake() -# remove debug header -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + # remove debug header + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +endif() + +if(VCPKG_BUILD_TYPE STREQUAL "debug") + # move headers + file(RENAME + ${CURRENT_PACKAGES_DIR}/debug/include + ${CURRENT_PACKAGES_DIR}/include) +endif() # fix libmariadb lib & dll directory. if (VCPKG_LIBRARY_LINKAGE STREQUAL static) - file(RENAME - ${CURRENT_PACKAGES_DIR}/lib/mariadb/mariadbclient.lib - ${CURRENT_PACKAGES_DIR}/lib/mariadbclient.lib) - file(RENAME - ${CURRENT_PACKAGES_DIR}/debug/lib/mariadb/mariadbclient.lib - ${CURRENT_PACKAGES_DIR}/debug/lib/mariadbclient.lib) + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + file(RENAME + ${CURRENT_PACKAGES_DIR}/lib/mariadb/mariadbclient.lib + ${CURRENT_PACKAGES_DIR}/lib/mariadbclient.lib) + endif() + + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + file(RENAME + ${CURRENT_PACKAGES_DIR}/debug/lib/mariadb/mariadbclient.lib + ${CURRENT_PACKAGES_DIR}/debug/lib/mariadbclient.lib) + endif() else() - file(MAKE_DIRECTORY - ${CURRENT_PACKAGES_DIR}/bin - ${CURRENT_PACKAGES_DIR}/debug/bin) - file(RENAME - ${CURRENT_PACKAGES_DIR}/lib/mariadb/libmariadb.dll - ${CURRENT_PACKAGES_DIR}/bin/libmariadb.dll) - file(RENAME - ${CURRENT_PACKAGES_DIR}/debug/lib/mariadb/libmariadb.dll - ${CURRENT_PACKAGES_DIR}/debug/bin/libmariadb.dll) - file(RENAME - ${CURRENT_PACKAGES_DIR}/lib/mariadb/libmariadb.lib - ${CURRENT_PACKAGES_DIR}/lib/libmariadb.lib) - file(RENAME - ${CURRENT_PACKAGES_DIR}/debug/lib/mariadb/libmariadb.lib - ${CURRENT_PACKAGES_DIR}/debug/lib/libmariadb.lib) + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/bin) + file(RENAME + ${CURRENT_PACKAGES_DIR}/lib/mariadb/libmariadb.dll + ${CURRENT_PACKAGES_DIR}/bin/libmariadb.dll) + file(RENAME + ${CURRENT_PACKAGES_DIR}/lib/mariadb/libmariadb.lib + ${CURRENT_PACKAGES_DIR}/lib/libmariadb.lib) + endif() + + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/bin) + file(RENAME + ${CURRENT_PACKAGES_DIR}/debug/lib/mariadb/libmariadb.dll + ${CURRENT_PACKAGES_DIR}/debug/bin/libmariadb.dll) + file(RENAME + ${CURRENT_PACKAGES_DIR}/debug/lib/mariadb/libmariadb.lib + ${CURRENT_PACKAGES_DIR}/debug/lib/libmariadb.lib) + endif() endif() # remove plugin folder -- cgit v1.2.3