diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2016-12-06 00:58:38 -0800 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2016-12-06 00:58:38 -0800 |
| commit | 76896df8defa8d96d42bec6adfb5ea6d639b96ac (patch) | |
| tree | e1b010231ae439dfd1388dff04b90454a5f9ecf4 | |
| parent | d40d1adc961abebf40d348f1c3af6d7330e73368 (diff) | |
| parent | 55605c73e04a08dd22b49b3e664441d579e0f2d5 (diff) | |
| download | vcpkg-76896df8defa8d96d42bec6adfb5ea6d639b96ac.tar.gz vcpkg-76896df8defa8d96d42bec6adfb5ea6d639b96ac.zip | |
Merge pull request #364 from mmassing/add_gdal_port
GDAL 1.11.3 port
5 files changed, 283 insertions, 0 deletions
diff --git a/ports/gdal/0001-Add-support-for-MSVC1900-backported-from-GDAL2.patch b/ports/gdal/0001-Add-support-for-MSVC1900-backported-from-GDAL2.patch new file mode 100644 index 000000000..e29cc5b8e --- /dev/null +++ b/ports/gdal/0001-Add-support-for-MSVC1900-backported-from-GDAL2.patch @@ -0,0 +1,70 @@ +From 823171a129401d226ac4821fb997ce585045170c Mon Sep 17 00:00:00 2001 +From: Manuel Massing <m.massing@warped-space.de> +Date: Wed, 23 Nov 2016 23:50:12 +0100 +Subject: [PATCH] Add support for MSVC1900 (backported from GDAL2) + +--- + nmake.opt | 6 ++++++ + port/cpl_config.h.vc | 8 +++++--- + 2 files changed, 11 insertions(+), 3 deletions(-) + +diff --git a/nmake.opt b/nmake.opt +index 8900135..4d1c4fa 100644 +--- a/nmake.opt ++++ b/nmake.opt +@@ -31,6 +31,7 @@ + # Check version of Visual C++ compiler: + # nmake -f makefile.vc MSVC_VER=xxxx + # where xxxx is one of following: ++# 1900 = 14.0(2015) + # 1800 = 12.0(2013) + # 1700 = 11.0(2012) + # 1600 = 10.0(2010) +@@ -627,8 +628,13 @@ GDALLIB = $(GDAL_ROOT)/gdal.lib + !ENDIF + + !IFDEF ODBC_SUPPORTED ++!IF $(MSVC_VER) >= 1900 ++# legacy_stdio_definitions.lib : https://connect.microsoft.com/VisualStudio/feedback/details/1134693/vs-2015-ctp-5-c-vsnwprintf-s-and-other-functions-are-not-exported-in-appcrt140-dll-breaking-linkage-of-static-libraries ++ODBCLIB = legacy_stdio_definitions.lib odbc32.lib odbccp32.lib user32.lib ++!ELSE + ODBCLIB = odbc32.lib odbccp32.lib user32.lib + !ENDIF ++!ENDIF + + !IF DEFINED(MRSID_DIR) || DEFINED(MRSID_RASTER_DIR) || DEFINED(MRSID_LIDAR_DIR) + !IF "$(MRSID_PLUGIN)" != "YES" +diff --git a/port/cpl_config.h.vc b/port/cpl_config.h.vc +index bfff8f6..fe7b82a 100644 +--- a/port/cpl_config.h.vc ++++ b/port/cpl_config.h.vc +@@ -1,5 +1,5 @@ + +-/* We define this here in general so that a VC++ build will publically ++/* We define this here in general so that a VC++ build will publicly + declare STDCALL interfaces even if an application is built against it + using MinGW */ + +@@ -17,7 +17,9 @@ + #if defined(_MSC_VER) && (_MSC_VER < 1500) + # define vsnprintf _vsnprintf + #endif +-#define snprintf _snprintf ++#if defined(_MSC_VER) && (_MSC_VER < 1900) ++# define snprintf _snprintf ++#endif + + #define HAVE_GETCWD 1 + /* gmt_notunix.h from GMT project also redefines getcwd. See #3138 */ +@@ -86,7 +88,7 @@ + /* Set the native cpu bit order */ + #define HOST_FILLORDER FILLORDER_LSB2MSB + +-/* Define as 0 or 1 according to the floating point format suported by the ++/* Define as 0 or 1 according to the floating point format supported by the + machine */ + #define HAVE_IEEEFP 1 + +-- +2.10.1.windows.1 + diff --git a/ports/gdal/0002-Add-variable-CXX_CRT_FLAGS-to-allow-for-selection-of.patch b/ports/gdal/0002-Add-variable-CXX_CRT_FLAGS-to-allow-for-selection-of.patch new file mode 100644 index 000000000..0ffcac5fb --- /dev/null +++ b/ports/gdal/0002-Add-variable-CXX_CRT_FLAGS-to-allow-for-selection-of.patch @@ -0,0 +1,50 @@ +From b25c3dc49ca1bcf9a789cf64c9fa8694e35127f0 Mon Sep 17 00:00:00 2001 +From: Manuel Massing <m.massing@warped-space.de> +Date: Sun, 27 Nov 2016 09:57:04 +0100 +Subject: [PATCH 2/2] Add variable CXX_CRT_FLAGS to allow for selection of C + runtime linkage in nmake build. + +--- + nmake.opt | 18 ++++++++++++++---- + 1 file changed, 14 insertions(+), 4 deletions(-) + +diff --git a/nmake.opt b/nmake.opt +index 4d1c4fa..47c2df8 100644 +--- a/nmake.opt ++++ b/nmake.opt +@@ -125,18 +125,28 @@ CXX_PDB_FLAGS=/Zi /Fd$(GDAL_ROOT)\gdal$(VERSION).pdb + CXX_PDB_FLAGS= + !ENDIF + ++# Flags to choose CRT variant to link against (e.g. static: /MT, /MTd, dynamic: /MD, /MDd) ++# Ensure MRSID_CONFIG in mrsid/nmake.opt is set appropriately as well ++!IFNDEF CXX_CRT_FLAGS ++!IFNDEF DEBUG ++CXX_CRT_FLAGS=/MD ++!ELSE ++CXX_CRT_FLAGS=/MDd ++!ENDIF ++!ENDIF ++ + !IFNDEF OPTFLAGS + !IF $(MSVC_VER) >= 1400 + !IFNDEF DEBUG +-OPTFLAGS= $(CXX_ANALYZE_FLAGS) $(CXX_PDB_FLAGS) /nologo /MD /EHsc /Ox /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DNDEBUG ++OPTFLAGS= $(CXX_ANALYZE_FLAGS) $(CXX_PDB_FLAGS) /nologo $(CXX_CRT_FLAGS) /EHsc /Ox /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DNDEBUG + !ELSE +-OPTFLAGS= $(CXX_ANALYZE_FLAGS) $(CXX_PDB_FLAGS) /nologo /MD /EHsc /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DDEBUG ++OPTFLAGS= $(CXX_ANALYZE_FLAGS) $(CXX_PDB_FLAGS) /nologo $(CXX_CRT_FLAGS) /EHsc /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DDEBUG + !ENDIF + !ELSE + !IFNDEF DEBUG +-OPTFLAGS= $(CXX_PDB_FLAGS) /nologo /MD /EHsc /GR /Ox /DNDEBUG ++OPTFLAGS= $(CXX_PDB_FLAGS) /nologo $(CXX_CRT_FLAGS) /EHsc /GR /Ox /DNDEBUG + !ELSE +-OPTFLAGS= $(CXX_PDB_FLAGS) /nologo /MD /EHsc /GR /DDEBUG ++OPTFLAGS= $(CXX_PDB_FLAGS) /nologo $(CXX_CRT_FLAGS) /EHsc /GR /DDEBUG + !ENDIF + !ENDIF #MSVC_VER + !ENDIF # OPTFLAGS +-- +2.10.1.windows.1 + diff --git a/ports/gdal/0003-Ensures-inclusion-of-PDB-in-release-dll-if-so-reques.patch b/ports/gdal/0003-Ensures-inclusion-of-PDB-in-release-dll-if-so-reques.patch new file mode 100644 index 000000000..1065a2982 --- /dev/null +++ b/ports/gdal/0003-Ensures-inclusion-of-PDB-in-release-dll-if-so-reques.patch @@ -0,0 +1,26 @@ +From 9da0cb6eed442ebf3eea232cd85e26c155c963ef Mon Sep 17 00:00:00 2001 +From: Manuel Massing <m.massing@warped-space.de> +Date: Tue, 29 Nov 2016 12:43:58 +0100 +Subject: [PATCH 3/4] - Ensures inclusion of PDB in release dll if so requested + +--- + gdal/nmake.opt | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/nmake.opt b/nmake.opt +index 47c2df8..4844d22 100644 +--- a/nmake.opt ++++ b/nmake.opt +@@ -174,6 +174,9 @@ SOFTWARNFLAGS= /wd4244 /wd4702 /wd4701 /wd4013 /wd4706 /wd4057 /wd4210 /wd4305 + # Linker debug options + !IFDEF DEBUG + LDEBUG= /debug ++!ELSEIFDEF WITH_PDB ++# Ensures that PDB is included in release DLL if so requested ++LDEBUG= /debug /opt:ref /opt:icf + !ENDIF + + # Uncomment the following if you are building for 64-bit windows +-- +2.10.1.windows.1 + diff --git a/ports/gdal/CONTROL b/ports/gdal/CONTROL new file mode 100644 index 000000000..38eccc46d --- /dev/null +++ b/ports/gdal/CONTROL @@ -0,0 +1,4 @@ +Source: gdal +Version: 1.11.3 +Description: The Geographic Data Abstraction Library for reading and writing geospatial raster and vector data. +Build-Depends: proj diff --git a/ports/gdal/portfile.cmake b/ports/gdal/portfile.cmake new file mode 100644 index 000000000..f198f4f0c --- /dev/null +++ b/ports/gdal/portfile.cmake @@ -0,0 +1,133 @@ +if (TRIPLET_SYSTEM_ARCH MATCHES "arm") + message(FATAL_ERROR " ARM is currently not supported.") +endif() + +include(vcpkg_common_functions) + +vcpkg_download_distfile(ARCHIVE + URLS "http://download.osgeo.org/gdal/1.11.3/gdal1113.zip" + FILENAME "gdal1113.zip" + SHA512 42feb98a54019d3b6ac54f598f299a57e117db500c662d39faa9d5f5090f03c1b8d7680242e1abd8035738edc4fc3197ae118a0ce50733691a76a5cf377bcd46 +) + +# Extract source into archictecture 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-1.11.3) +set(SOURCE_PATH_RELEASE ${CURRENT_BUILDTREES_DIR}/src-${TARGET_TRIPLET}-release/gdal-1.11.3) + +foreach(BUILD_TYPE debug release) + 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-1.11.3 + PATCHES + ${CMAKE_CURRENT_LIST_DIR}/0001-Add-support-for-MSVC1900-backported-from-GDAL2.patch + ${CMAKE_CURRENT_LIST_DIR}/0002-Add-variable-CXX_CRT_FLAGS-to-allow-for-selection-of.patch + ${CMAKE_CURRENT_LIST_DIR}/0003-Ensures-inclusion-of-PDB-in-release-dll-if-so-reques.patch + ) +endforeach() + +find_program(NMAKE nmake REQUIRED) + +file(TO_NATIVE_PATH "${CURRENT_PACKAGES_DIR}" NATIVE_PACKAGES_DIR) +file(TO_NATIVE_PATH "${CURRENT_PACKAGES_DIR}/share/gdal" NATIVE_DATA_DIR) +file(TO_NATIVE_PATH "${CURRENT_PACKAGES_DIR}/share/gdal/html" NATIVE_HTML_DIR) + +file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/include" PROJ_INCLUDE_DIR) +file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/lib/proj.lib" PROJ_LIBRARY_REL) +file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}/debug/lib/projd.lib" PROJ_LIBRARY_DBG) + +set(NMAKE_OPTIONS + GDAL_HOME=${NATIVE_PACKAGES_DIR} + DATADIR=${NATIVE_DATA_DIR} + HTMLDIR=${NATIVE_HTML_DIR} + PROJ_INCLUDE=-I${PROJ_INCLUDE_DIR} + MSVC_VER=1900 +) + +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + list(APPEND NMAKE_OPTIONS WIN64=YES) +endif() + +if (VCPKG_LIBRARY_LINKAGE STREQUAL static) + list(APPEND NMAKE_OPTIONS PROJ_FLAGS=-DPROJ_STATIC) +else() + # Enables PDBs for release and debug builds + list(APPEND NMAKE_OPTIONS WITH_PDB=1) +endif() + +if (VCPKG_CRT_LINKAGE STREQUAL static) + set(LINKAGE_FLAGS "/MT") +else() + set(LINKAGE_FLAGS "/MD") +endif() + +set(NMAKE_OPTIONS_REL + "${NMAKE_OPTIONS}" + CXX_CRT_FLAGS=${LINKAGE_FLAGS} + PROJ_LIBRARY=${PROJ_LIBRARY_REL} +) + +set(NMAKE_OPTIONS_DBG + "${NMAKE_OPTIONS}" + CXX_CRT_FLAGS="${LINKAGE_FLAGS}d" + PROJ_LIBRARY=${PROJ_LIBRARY_DBG} + DEBUG=1 +) +################ +# Release build +################ +message(STATUS "Building ${TARGET_TRIPLET}-rel") +vcpkg_execute_required_process( + COMMAND ${NMAKE} -f makefile.vc + "${NMAKE_OPTIONS_REL}" + WORKING_DIRECTORY ${SOURCE_PATH_RELEASE} + LOGNAME nmake-build-${TARGET_TRIPLET}-release +) +message(STATUS "Building ${TARGET_TRIPLET}-rel done") + +################ +# Debug build +################ +message(STATUS "Building ${TARGET_TRIPLET}-dbg") +vcpkg_execute_required_process( + COMMAND ${NMAKE} /G -f makefile.vc + "${NMAKE_OPTIONS_DBG}" + WORKING_DIRECTORY ${SOURCE_PATH_DEBUG} + LOGNAME nmake-build-${TARGET_TRIPLET}-debug +) +message(STATUS "Building ${TARGET_TRIPLET}-dbg done") + +message(STATUS "Packaging ${TARGET_TRIPLET}") +file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share/gdal/html) + +vcpkg_execute_required_process( + COMMAND ${NMAKE} -f makefile.vc + "${NMAKE_OPTIONS_REL}" + "install" + "devinstall" + WORKING_DIRECTORY ${SOURCE_PATH_RELEASE} + LOGNAME nmake-install-${TARGET_TRIPLET} +) + +if (VCPKG_LIBRARY_LINKAGE STREQUAL static) + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin) + file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/gdal_i.lib) + file(COPY ${SOURCE_PATH_DEBUG}/gdal.lib DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib) + file(COPY ${SOURCE_PATH_RELEASE}/gdal.lib DESTINATION ${CURRENT_PACKAGES_DIR}/lib) + file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gdal.lib ${CURRENT_PACKAGES_DIR}/debug/lib/gdald.lib) +else() + file(GLOB EXE_FILES ${CURRENT_PACKAGES_DIR}/bin/*.exe) + file(REMOVE ${EXE_FILES} ${CURRENT_PACKAGES_DIR}/lib/gdal.lib) + file(COPY ${SOURCE_PATH_DEBUG}/gdal111.dll DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin) + file(COPY ${SOURCE_PATH_DEBUG}/gdal_i.lib DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib) + file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gdal_i.lib ${CURRENT_PACKAGES_DIR}/lib/gdal.lib) + file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gdal_i.lib ${CURRENT_PACKAGES_DIR}/debug/lib/gdald.lib) +endif() + +# Copy over PDBs +vcpkg_copy_pdbs() + +# Handle copyright +file(RENAME ${CURRENT_PACKAGES_DIR}/share/gdal/LICENSE.txt ${CURRENT_PACKAGES_DIR}/share/gdal/copyright) + +message(STATUS "Packaging ${TARGET_TRIPLET} done") |
