aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Massing <m.massing@warped-space.de>2016-11-23 18:30:50 +0100
committerManuel Massing <m.massing@warped-space.de>2016-11-28 22:01:06 +0100
commit167f82b804052239244bcbb7122253c13c4dca7e (patch)
tree8f15f0dc23096513fae9995242399f3fe84c0474
parentde3189dbe6c5107495bf65b066712b54d4ff9e51 (diff)
downloadvcpkg-167f82b804052239244bcbb7122253c13c4dca7e.tar.gz
vcpkg-167f82b804052239244bcbb7122253c13c4dca7e.zip
[ports] Initial commit of GDAL 1.11.3 port
-rw-r--r--ports/gdal/0001-Add-support-for-MSVC1900-backported-from-GDAL2.patch70
-rw-r--r--ports/gdal/0002-Add-variable-CXX_CRT_FLAGS-to-allow-for-selection-of.patch50
-rw-r--r--ports/gdal/CONTROL4
-rw-r--r--ports/gdal/portfile.cmake126
4 files changed, 250 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/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..ca548ae83
--- /dev/null
+++ b/ports/gdal/portfile.cmake
@@ -0,0 +1,126 @@
+if (TRIPLET_SYSTEM_ARCH MATCHES "arm")
+ message(FATAL_ERROR " ARM is currently not supported.")
+endif()
+
+include(vcpkg_common_functions)
+
+# Remove part pertaining to linkage
+string(REPLACE "-static" "" ARCH ${TARGET_TRIPLET})
+
+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-${ARCH}-debug/gdal-1.11.3)
+set(SOURCE_PATH_RELEASE ${CURRENT_BUILDTREES_DIR}/src-${ARCH}-release/gdal-1.11.3)
+
+foreach(BUILD_TYPE debug release)
+ vcpkg_extract_source_archive(${ARCHIVE} ${CURRENT_BUILDTREES_DIR}/src-${ARCH}-${BUILD_TYPE})
+ vcpkg_apply_patches(
+ SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src-${ARCH}-${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
+ )
+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 "${VCPKG_ROOT_DIR}/installed/${TARGET_TRIPLET}/include" PROJ_INCLUDE_DIR)
+file(TO_NATIVE_PATH "${VCPKG_ROOT_DIR}/installed/${TARGET_TRIPLET}/lib/proj.lib" PROJ_LIBRARY_REL)
+file(TO_NATIVE_PATH "${VCPKG_ROOT_DIR}/installed/${TARGET_TRIPLET}/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(TARGET_TRIPLET MATCHES "x64")
+ list(APPEND NMAKE_OPTIONS WIN64=YES)
+endif()
+
+if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ list(APPEND NMAKE_OPTIONS
+ PROJ_FLAGS=-DPROJ_STATIC
+ )
+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)
+else()
+ 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(GLOB EXE_FILES ${CURRENT_PACKAGES_DIR}/bin/*.exe)
+ file(REMOVE ${EXE_FILES} ${CURRENT_PACKAGES_DIR}/lib/gdal.lib)
+endif()
+# Handle copyright
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/gdal/LICENSE.txt ${CURRENT_PACKAGES_DIR}/share/gdal/copyright)
+
+message(STATUS "Packaging ${TARGET_TRIPLET} done")