aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2016-10-14 16:52:38 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2016-10-14 16:52:38 -0700
commitf52268db1add49377ff10c7bdf8a21878372fc3c (patch)
tree26b74c30c89d2bda05fe07e544b64d5077645871
parenteb1cea1f4396677317eda5c8163203aff3054776 (diff)
parent9517eeadbba6e0f491a2961cd359c4c4892ef93f (diff)
downloadvcpkg-f52268db1add49377ff10c7bdf8a21878372fc3c.tar.gz
vcpkg-f52268db1add49377ff10c7bdf8a21878372fc3c.zip
Merge branch 'master' of https://github.com/Microsoft/vcpkg
-rw-r--r--ports/boost/portfile.cmake1
-rw-r--r--ports/cppwinrt/CONTROL3
-rw-r--r--ports/cppwinrt/portfile.cmake36
-rw-r--r--ports/double-conversion/CONTROL3
-rw-r--r--ports/double-conversion/mscv_vers.patch46
-rw-r--r--ports/double-conversion/portfile.cmake49
-rw-r--r--ports/harfbuzz/0001-Add-an-extra-path-input-for-Freetype.patch40
-rw-r--r--ports/harfbuzz/0001-Set-d-suffix-for-debug-freetype-lib.patch28
-rw-r--r--ports/harfbuzz/CONTROL1
-rw-r--r--ports/harfbuzz/portfile.cmake18
-rw-r--r--ports/libbson/0001_cmake.patch35
-rw-r--r--ports/libbson/CONTROL3
-rw-r--r--ports/libbson/portfile.cmake26
-rw-r--r--ports/libiconv/0001-Add-export-definitions.patch34
-rw-r--r--ports/libiconv/0002-Config-for-MSVC.patch68
-rw-r--r--ports/libiconv/CMakeLists.txt88
-rw-r--r--ports/libiconv/LibiconvConfig.cmake.in12
-rw-r--r--ports/libiconv/new_config.h.in933
-rw-r--r--ports/libiconv/portfile.cmake14
-rw-r--r--ports/log4cplus/CONTROL3
-rw-r--r--ports/log4cplus/portfile.cmake22
-rw-r--r--ports/mongo-c-driver/0001_cmake.patch43
-rw-r--r--ports/mongo-c-driver/CONTROL4
-rw-r--r--ports/mongo-c-driver/portfile.cmake28
-rw-r--r--ports/mongo-cxx-driver/0001_cmake.patch64
-rw-r--r--ports/mongo-cxx-driver/CONTROL4
-rw-r--r--ports/mongo-cxx-driver/portfile.cmake32
-rw-r--r--ports/nanodbc/0001_cmake.patch23
-rw-r--r--ports/nanodbc/0002_msvc14_codecvt.patch34
-rw-r--r--ports/nanodbc/0003_export_def.patch417
-rw-r--r--ports/nanodbc/0004_unicode.patch33
-rw-r--r--ports/nanodbc/CONTROL3
-rw-r--r--ports/nanodbc/portfile.cmake34
-rw-r--r--ports/spdlog/CONTROL3
-rw-r--r--ports/spdlog/portfile.cmake28
35 files changed, 1192 insertions, 1021 deletions
diff --git a/ports/boost/portfile.cmake b/ports/boost/portfile.cmake
index 276bbcbcc..03404b531 100644
--- a/ports/boost/portfile.cmake
+++ b/ports/boost/portfile.cmake
@@ -46,6 +46,7 @@ vcpkg_execute_required_process(
--build-dir=${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
${B2_OPTIONS}
variant=release
+ debug-symbols=on
WORKING_DIRECTORY ${SOURCE_PATH}
LOGNAME build-${TARGET_TRIPLET}-rel
)
diff --git a/ports/cppwinrt/CONTROL b/ports/cppwinrt/CONTROL
new file mode 100644
index 000000000..7833d33ee
--- /dev/null
+++ b/ports/cppwinrt/CONTROL
@@ -0,0 +1,3 @@
+Source: cppwinrt
+Version: 1.010.0.14393.0
+Description: C++/WinRT is a standard C++ language projection for the Windows Runtime.
diff --git a/ports/cppwinrt/portfile.cmake b/ports/cppwinrt/portfile.cmake
new file mode 100644
index 000000000..927a17afb
--- /dev/null
+++ b/ports/cppwinrt/portfile.cmake
@@ -0,0 +1,36 @@
+include(vcpkg_common_functions)
+find_program(GIT git)
+
+set(GIT_URL "https://github.com/Microsoft/cppwinrt")
+set(GIT_REF "9e01842")
+
+if(NOT EXISTS "${DOWNLOADS}/cppwinrt.git")
+ message(STATUS "Cloning")
+ vcpkg_execute_required_process(
+ COMMAND ${GIT} clone --bare ${GIT_URL} ${DOWNLOADS}/cppwinrt.git
+ WORKING_DIRECTORY ${DOWNLOADS}
+ LOGNAME clone
+ )
+endif()
+message(STATUS "Cloning done")
+
+if(NOT EXISTS "${CURRENT_BUILDTREES_DIR}/src/.git")
+ message(STATUS "Adding worktree")
+ file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR})
+ vcpkg_execute_required_process(
+ COMMAND ${GIT} worktree add -f --detach ${CURRENT_BUILDTREES_DIR}/src ${GIT_REF}
+ WORKING_DIRECTORY ${DOWNLOADS}/cppwinrt.git
+ LOGNAME worktree
+ )
+endif()
+message(STATUS "Adding worktree done")
+
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/)
+
+# Put the licence file where vcpkg expects it
+file(COPY ${SOURCE_PATH}/license.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/cppwinrt/license.txt)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/cppwinrt/license.txt ${CURRENT_PACKAGES_DIR}/share/cppwinrt/copyright)
+
+# Copy the cppwinrt header files
+file(GLOB HEADER_FILES ${SOURCE_PATH}/10.0.14393.0/winrt/*)
+file(COPY ${HEADER_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/include/winrt)
diff --git a/ports/double-conversion/CONTROL b/ports/double-conversion/CONTROL
new file mode 100644
index 000000000..b997336e7
--- /dev/null
+++ b/ports/double-conversion/CONTROL
@@ -0,0 +1,3 @@
+Source: double-conversion
+Version: 2.0.1
+Description: Efficient binary-decimal and decimal-binary conversion routines for IEEE doubles.
diff --git a/ports/double-conversion/mscv_vers.patch b/ports/double-conversion/mscv_vers.patch
new file mode 100644
index 000000000..911ccee84
--- /dev/null
+++ b/ports/double-conversion/mscv_vers.patch
@@ -0,0 +1,46 @@
+--- a/msvc/double-conversion.vcxproj
++++ b/msvc/double-conversion.vcxproj
+@@ -1,5 +1,5 @@
+ <?xml version="1.0" encoding="utf-8"?>
+-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
++<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+@@ -22,31 +22,32 @@
+ <ProjectGuid>{6863544A-0CE8-4CA9-A132-74116FD9D9BB}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace>doubleconversion</RootNamespace>
++ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+- <PlatformToolset>v120</PlatformToolset>
++ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+- <PlatformToolset>v120</PlatformToolset>
++ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+- <PlatformToolset>v120</PlatformToolset>
++ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+- <PlatformToolset>v120</PlatformToolset>
++ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
diff --git a/ports/double-conversion/portfile.cmake b/ports/double-conversion/portfile.cmake
new file mode 100644
index 000000000..312946fea
--- /dev/null
+++ b/ports/double-conversion/portfile.cmake
@@ -0,0 +1,49 @@
+# Common Ambient Variables:
+# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
+# TARGET_TRIPLET is the current triplet (x86-windows, etc)
+# PORT is the current port name (zlib, etc)
+# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
+# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
+#
+
+include(${CMAKE_TRIPLET_FILE})
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/double-conversion-d4d68e4e788bec89d55a6a3e33af674087837c82)
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://github.com/google/double-conversion/archive/d4d68e4e788bec89d55a6a3e33af674087837c82.zip"
+ FILENAME "d4d68e4e788bec89d55a6a3e33af674087837c82.zip"
+ SHA512 1406dc22b4ea71e1a2490f96cfed3230e122b97607c83ba106df4e90c7e4bfdcfc136c88741e7f1127237b38b4944d462ec5a4627a71f5ea3fe14afbcc64cd44
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/mscv_vers.patch
+)
+
+vcpkg_build_msbuild(
+ PROJECT_PATH ${SOURCE_PATH}/msvc/double-conversion.vcxproj
+)
+
+message(STATUS "Installing")
+file(INSTALL
+ ${SOURCE_PATH}/msvc/Debug/Win32/double-conversion.lib
+ DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib
+)
+file(INSTALL
+ ${SOURCE_PATH}/msvc/Release/Win32/double-conversion.lib
+ DESTINATION ${CURRENT_PACKAGES_DIR}/lib
+)
+
+file(COPY ${SOURCE_PATH}/double-conversion DESTINATION ${CURRENT_PACKAGES_DIR}/include)
+
+vcpkg_copy_pdbs()
+
+message(STATUS "Installing done")
+
+# Include files should not be duplicated into the /debug/include directory.
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+# Handle copyright
+file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/double-conversion)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/double-conversion/LICENSE ${CURRENT_PACKAGES_DIR}/share/double-conversion/copyright)
diff --git a/ports/harfbuzz/0001-Add-an-extra-path-input-for-Freetype.patch b/ports/harfbuzz/0001-Add-an-extra-path-input-for-Freetype.patch
new file mode 100644
index 000000000..75b81c28f
--- /dev/null
+++ b/ports/harfbuzz/0001-Add-an-extra-path-input-for-Freetype.patch
@@ -0,0 +1,40 @@
+From be3c446b1dd798b835052188813ee4e7cf135a81 Mon Sep 17 00:00:00 2001
+From: Vincent Lejeune <vljn.ovi@gmail.com>
+Date: Wed, 12 Oct 2016 00:27:35 +0200
+Subject: [PATCH] Add an extra path input for Freetype.
+
+---
+ win32/config-msvc.mak | 3 +++
+ win32/detectenv-msvc.mak | 2 +-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/win32/config-msvc.mak b/win32/config-msvc.mak
+index e0c6468..1ad0913 100644
+--- a/win32/config-msvc.mak
++++ b/win32/config-msvc.mak
+@@ -124,6 +124,9 @@ HB_DEFINES = $(HB_DEFINES) /DHAVE_CAIRO=1
+
+ # Enable freetype if desired
+ !if "$(FREETYPE)" == "1"
++HB_CFLAGS = \
++ $(HB_CFLAGS) \
++ /I$(FREETYPE_DIR)
+ HB_DEFINES = $(HB_DEFINES) /DHAVE_FREETYPE=1
+ HB_SOURCES = $(HB_SOURCES) $(HB_FT_sources)
+ HB_HEADERS = $(HB_HEADERS) $(HB_FT_headers)
+diff --git a/win32/detectenv-msvc.mak b/win32/detectenv-msvc.mak
+index 83d8786..ad67493 100644
+--- a/win32/detectenv-msvc.mak
++++ b/win32/detectenv-msvc.mak
+@@ -129,7 +129,7 @@ LDFLAGS_ARCH = /machine:x86
+ !if "$(VALID_CFGSET)" == "TRUE"
+ CFLAGS = $(CFLAGS_ADD) /W3 /Zi /I.. /I..\src /I. /I$(PREFIX)\include
+
+-LDFLAGS_BASE = $(LDFLAGS_ARCH) /libpath:$(PREFIX)\lib /DEBUG
++LDFLAGS_BASE = $(LDFLAGS_ARCH) /libpath:$(PREFIX)\lib /libpath:$(VCPKG_LIB_DIR) /DEBUG
+
+ !if "$(CFG)" == "debug"
+ LDFLAGS = $(LDFLAGS_BASE)
+--
+2.10.0.windows.1
+
diff --git a/ports/harfbuzz/0001-Set-d-suffix-for-debug-freetype-lib.patch b/ports/harfbuzz/0001-Set-d-suffix-for-debug-freetype-lib.patch
new file mode 100644
index 000000000..fce3ba562
--- /dev/null
+++ b/ports/harfbuzz/0001-Set-d-suffix-for-debug-freetype-lib.patch
@@ -0,0 +1,28 @@
+From 2be3a687a3079c3988d718293e4ee5d8fc9797b7 Mon Sep 17 00:00:00 2001
+From: vlj <vljn.ovi@gmail.com>
+Date: Sat, 8 Oct 2016 21:14:57 +0200
+Subject: [PATCH] Set d suffix for debug freetype lib.
+
+---
+ win32/config-msvc.mak | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/win32/config-msvc.mak b/win32/config-msvc.mak
+index 9cc6608..236aef7 100644
+--- a/win32/config-msvc.mak
++++ b/win32/config-msvc.mak
+@@ -12,7 +12,11 @@ HB_GLIB_LIBS = glib-2.0.lib
+ HB_GOBJECT_DEP_LIBS = gobject-2.0.lib $(HB_GLIB_LIBS)
+
+ # Freetype is needed for building FreeType support and hb-view
++!if "$(CFG)" == "debug"
++FREETYPE_LIB = freetyped.lib
++!else
+ FREETYPE_LIB = freetype.lib
++!endif
+
+ # Cairo is needed for building hb-view
+ CAIRO_LIB = cairo.lib
+--
+2.10.0.windows.1
+
diff --git a/ports/harfbuzz/CONTROL b/ports/harfbuzz/CONTROL
index 3419731e8..dd5207077 100644
--- a/ports/harfbuzz/CONTROL
+++ b/ports/harfbuzz/CONTROL
@@ -1,3 +1,4 @@
Source: harfbuzz
Version: 1.3.2
Description: HarfBuzz OpenType text shaping engine
+Build-Depends: freetype
diff --git a/ports/harfbuzz/portfile.cmake b/ports/harfbuzz/portfile.cmake
index fcdbf11e5..6a46dda10 100644
--- a/ports/harfbuzz/portfile.cmake
+++ b/ports/harfbuzz/portfile.cmake
@@ -18,14 +18,24 @@ vcpkg_download_distfile(ARCHIVE
)
vcpkg_extract_source_archive(${ARCHIVE})
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES "${CMAKE_CURRENT_LIST_DIR}/0001-Add-an-extra-path-input-for-Freetype.patch"
+ PATCHES "${CMAKE_CURRENT_LIST_DIR}/0001-Set-d-suffix-for-debug-freetype-lib.patch"
+)
+
+file(TO_NATIVE_PATH "${VCPKG_ROOT_DIR}/installed/${TARGET_TRIPLET}/include" FREETYPE_INCLUDE_DIR)
+file(TO_NATIVE_PATH "${VCPKG_ROOT_DIR}/installed/${TARGET_TRIPLET}/debug/lib" FREETYPE_LIB_DIR_DBG)
+file(TO_NATIVE_PATH "${VCPKG_ROOT_DIR}/installed/${TARGET_TRIPLET}/lib" FREETYPE_LIB_DIR_REL)
+
vcpkg_execute_required_process(
- COMMAND ${NMAKE} -f Makefile.vc CFG=debug
+ COMMAND ${NMAKE} -f Makefile.vc CFG=debug FREETYPE=1 FREETYPE_DIR=${FREETYPE_INCLUDE_DIR} VCPKG_LIB_DIR=${FREETYPE_LIB_DIR_DBG}
WORKING_DIRECTORY ${SOURCE_PATH}/win32/
LOGNAME nmake-build-${TARGET_TRIPLET}-debug
)
vcpkg_execute_required_process(
- COMMAND ${NMAKE} -f Makefile.vc CFG=release
+ COMMAND ${NMAKE} -f Makefile.vc CFG=release FREETYPE=1 FREETYPE_DIR=${FREETYPE_INCLUDE_DIR} VCPKG_LIB_DIR=${FREETYPE_LIB_DIR_REL}
WORKING_DIRECTORY ${SOURCE_PATH}/win32/
LOGNAME nmake-build-${TARGET_TRIPLET}-release
)
@@ -33,7 +43,7 @@ vcpkg_execute_required_process(
file(TO_NATIVE_PATH "${CURRENT_PACKAGES_DIR}/debug" NATIVE_PACKAGES_DIR_DBG)
vcpkg_execute_required_process(
- COMMAND ${NMAKE} -f Makefile.vc CFG=debug PREFIX=${NATIVE_PACKAGES_DIR_DBG} install
+ COMMAND ${NMAKE} -f Makefile.vc CFG=debug FREETYPE=1 PREFIX=${NATIVE_PACKAGES_DIR_DBG} install
WORKING_DIRECTORY ${SOURCE_PATH}/win32/
LOGNAME nmake-install-${TARGET_TRIPLET}-debug
)
@@ -42,7 +52,7 @@ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(TO_NATIVE_PATH "${CURRENT_PACKAGES_DIR}" NATIVE_PACKAGES_DIR_REL)
vcpkg_execute_required_process(
- COMMAND ${NMAKE} -f Makefile.vc CFG=release PREFIX=${NATIVE_PACKAGES_DIR_REL} install
+ COMMAND ${NMAKE} -f Makefile.vc CFG=release FREETYPE=1 PREFIX=${NATIVE_PACKAGES_DIR_REL} install
WORKING_DIRECTORY ${SOURCE_PATH}/win32/
LOGNAME nmake-install-${TARGET_TRIPLET}-release
)
diff --git a/ports/libbson/0001_cmake.patch b/ports/libbson/0001_cmake.patch
new file mode 100644
index 000000000..af1f1a598
--- /dev/null
+++ b/ports/libbson/0001_cmake.patch
@@ -0,0 +1,35 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d09a298..e64a6cd 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -12,7 +12,6 @@ include(CheckIncludeFile)
+ include(CheckStructHasMember)
+ include(CheckSymbolExists)
+ include(TestBigEndian)
+-include(InstallRequiredSystemLibraries)
+
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/build/cmake)
+
+@@ -47,13 +46,6 @@ TEST_BIG_ENDIAN(BSON_BIG_ENDIAN)
+ set (BSON_PTHREAD_ONCE_INIT_NEEDS_BRACES 0)
+ set (BSON_HAVE_DECIMAL128 0)
+
+-#librt needed on linux for clock_gettime
+-find_library(RT_LIBRARY rt)
+-if (RT_LIBRARY)
+- #set required libraries for CHECK_FUNCTION_EXISTS
+- set(CMAKE_REQUIRED_LIBRARIES ${RT_LIBRARY})
+-endif()
+-
+ # See https://public.kitware.com/Bug/view.php?id=15659
+ CHECK_SYMBOL_EXISTS(snprintf stdio.h BSON_HAVE_SNPRINTF)
+ if (NOT BSON_HAVE_SNPRINTF)
+@@ -314,7 +306,7 @@ install(
+ )
+ install(
+ FILES ${HEADERS}
+- DESTINATION "include/libbson-${BSON_API_VERSION}"
++ DESTINATION "include"
+ )
+
+ set(VERSION "${BSON_VERSION}")
diff --git a/ports/libbson/CONTROL b/ports/libbson/CONTROL
new file mode 100644
index 000000000..71f48c354
--- /dev/null
+++ b/ports/libbson/CONTROL
@@ -0,0 +1,3 @@
+Source: libbson
+Version: 1.4.2
+Description: libbson is a library providing useful routines related to building, parsing, and iterating BSON documents. \ No newline at end of file
diff --git a/ports/libbson/portfile.cmake b/ports/libbson/portfile.cmake
new file mode 100644
index 000000000..efa147068
--- /dev/null
+++ b/ports/libbson/portfile.cmake
@@ -0,0 +1,26 @@
+include(${CMAKE_TRIPLET_FILE})
+include(vcpkg_common_functions)
+find_program(POWERSHELL powershell)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/libbson-1.4.2)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://github.com/mongodb/libbson/releases/download/1.4.2/libbson-1.4.2.tar.gz"
+ FILENAME "libbson-1.4.2.tar.gz"
+ SHA512 4cc8f833978483af3dcbc30bede33f2a9b448930fabf7be2d5581c8368e875dc1707d31eae209c747e69be1f82fa525c7362c5ac9c4e0b6b3f3346dd5147860e
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/0001_cmake.patch
+)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+)
+
+vcpkg_install_cmake()
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/libbson)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/libbson/COPYING ${CURRENT_PACKAGES_DIR}/share/libbson/copyright) \ No newline at end of file
diff --git a/ports/libiconv/0001-Add-export-definitions.patch b/ports/libiconv/0001-Add-export-definitions.patch
new file mode 100644
index 000000000..c59d15d9e
--- /dev/null
+++ b/ports/libiconv/0001-Add-export-definitions.patch
@@ -0,0 +1,34 @@
+diff --git "a/include/iconv.h.build.in" "b/include/iconv.h.build.in"
+index 0feb068..74e5613 100644
+--- "a/include/iconv.h.build.in"
++++ "b/include/iconv.h.build.in"
+@@ -27,6 +27,12 @@
+ #define LIBICONV_DLL_EXPORTED __attribute__((__visibility__("default")))
++#elif defined(_WIN32) && @LIBICONV_DYNAMIC@
++ #if defined(libiconv_EXPORTS)
++ #define LIBICONV_DLL_EXPORTED __declspec(dllexport)
++ #else
++ #define LIBICONV_DLL_EXPORTED __declspec(dllimport)
++ #endif
+ #else
+ #define LIBICONV_DLL_EXPORTED
+ #endif
+ extern LIBICONV_DLL_EXPORTED @DLL_VARIABLE@ int _libiconv_version; /* Likewise */
+
+diff --git "a/libcharset/include/localcharset.h.build.in" "b/libcharset/include/localcharset.h.build.in"
+index c691359..2a23585 100644
+--- "a/libcharset/include/localcharset.h.build.in"
++++ "b/libcharset/include/localcharset.h.build.in"
+@@ -24,6 +24,12 @@
+ #define LIBCHARSET_DLL_EXPORTED __attribute__((__visibility__("default")))
++#elif defined(_WIN32) && @LIBICONV_DYNAMIC@
++ #if defined(libcharset_EXPORTS)
++ #define LIBCHARSET_DLL_EXPORTED __declspec(dllexport)
++ #else
++ #define LIBCHARSET_DLL_EXPORTED __declspec(dllimport)
++ #endif
+ #else
+ #define LIBCHARSET_DLL_EXPORTED
+ #endif
+
+
diff --git a/ports/libiconv/0002-Config-for-MSVC.patch b/ports/libiconv/0002-Config-for-MSVC.patch
new file mode 100644
index 000000000..8ce2f683f
--- /dev/null
+++ b/ports/libiconv/0002-Config-for-MSVC.patch
@@ -0,0 +1,68 @@
+diff --git "a/config.h.in" "b/config.h.in"
+index 207e487..56501ed 100644
+--- "a/config.h.in"
++++ "b/config.h.in"
+@@ -27,7 +27,7 @@
+ #undef DOUBLE_SLASH_IS_DISTINCT_ROOT
+
+ /* Define as good substitute value for EILSEQ. */
+-#undef EILSEQ
++//#undef EILSEQ
+
+ /* Define to 1 to enable a few rarely used encodings. */
+ #undef ENABLE_EXTRA
+@@ -207,10 +207,10 @@
+ #undef HAVE_MACH_O_DYLD_H
+
+ /* Define to 1 if you have the `mbrtowc' function. */
+-#undef HAVE_MBRTOWC
++#define HAVE_MBRTOWC 1
+
+ /* Define to 1 if you have the `mbsinit' function. */
+-#undef HAVE_MBSINIT
++#define HAVE_MBSINIT 1
+
+ /* Define to 1 if <wchar.h> declares mbstate_t. */
+ #undef HAVE_MBSTATE_T
+@@ -665,7 +665,7 @@
+ #undef HAVE_WCHAR_T
+
+ /* Define to 1 if you have the `wcrtomb' function. */
+-#undef HAVE_WCRTOMB
++#define HAVE_WCRTOMB 1
+
+ /* Define to 1 if you have the <winsock2.h> header file. */
+ #undef HAVE_WINSOCK2_H
+@@ -683,7 +683,7 @@
+ #undef HAVE__NSGETEXECUTABLEPATH
+
+ /* Define as const if the declaration of iconv() needs const. */
+-#undef ICONV_CONST
++#define ICONV_CONST const
+
+ /* Define to the value of ${prefix}, as a string. */
+ #undef INSTALLPREFIX
+@@ -787,7 +787,7 @@
+ #undef WINT_T_SUFFIX
+
+ /* Define if the machine's byte ordering is little endian. */
+-#undef WORDS_LITTLEENDIAN
++#define WORDS_LITTLEENDIAN 1
+
+ /* Define to 1 if on MINIX. */
+ #undef _MINIX
+
+diff --git "a/lib/loop_wchar.h" "b/lib/loop_wchar.h"
+index 6dc011b..158ccdd 100644
+--- "a/lib/loop_wchar.h"
++++ "b/lib/loop_wchar.h"
+@@ -37,7 +37,7 @@
+ # include <wchar.h>
+ # define BUF_SIZE 64 /* assume MB_LEN_MAX <= 64 */
+ /* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
+- extern size_t mbrtowc ();
++// extern size_t mbrtowc ();
+ # ifdef mbstate_t
+ # define mbrtowc(pwc, s, n, ps) (mbrtowc)(pwc, s, n, 0)
+ # define mbsinit(ps) 1
+ \ No newline at end of file
diff --git a/ports/libiconv/CMakeLists.txt b/ports/libiconv/CMakeLists.txt
index 2afe89d1d..46575ca27 100644
--- a/ports/libiconv/CMakeLists.txt
+++ b/ports/libiconv/CMakeLists.txt
@@ -9,59 +9,39 @@ project(Libiconv)
#
# Options
#
-set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries, Always ON since this code is LGPL" FORCE)
# Config file
configure_file(
- ${Libiconv_SOURCE_DIR}/new_config.h.in
+ ${Libiconv_SOURCE_DIR}/config.h.in
${Libiconv_BINARY_DIR}/config.h
)
+
+if(BUILD_SHARED_LIBS)
+ set(LIBICONV_DYNAMIC "1 /*LIBICONV_DYNAMIC*/")
+else()
+ set(LIBICONV_DYNAMIC "0 /*LIBICONV_DYNAMIC*/")
+endif()
+set(HAVE_WCHAR_T "1 /*HAVE_WCHAR_T*/")
+set(USE_MBSTATE_T "0 /*USE_MBSTATE_T*/")
+set(BROKEN_WCHAR_H "0 /*BROKEN_WCHAR_H*/")
+set(HAVE_VISIBILITY "0 /*HAVE_VISIBILITY*/")
+
include_directories(${Libiconv_SOURCE_DIR} ${Libiconv_BINARY_DIR})
-macro(header_injection_hack)
- include(CMakeParseArguments)
- set(options)
- set(oneValueArgs LIBRARY_NAME INPUT OUTPUT)
- set(multiValueArgs)
- cmake_parse_arguments(hack
- "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}
- )
- string(TOUPPER ${hack_LIBRARY_NAME} hack_library_name_upper)
- set(HAVE_VISIBILITY
- "WIN32
- #if defined(${hack_LIBRARY_NAME}_EXPORTS)
- #define ${hack_library_name_upper}_DLL_EXPORTED __declspec(dllexport)
- #else
- #define ${hack_library_name_upper}_DLL_EXPORTED __declspec(dllimport)
- #endif
- #elif true"
- )
- configure_file(
- ${hack_INPUT}
- ${hack_OUTPUT}
- )
-endmacro()
#
# Build libcharset
#
set(libname libcharset)
set(libcharset_source_dir ${Libiconv_SOURCE_DIR}/libcharset)
-if(WIN32)
- add_definitions(-DLIBDIR)
-endif()
-
-# Hack: to be able to configure the localcharset.h.build.in correctly, we
-# inject code in the variable have visibility
-header_injection_hack(
- LIBRARY_NAME ${libname}
- INPUT ${Libiconv_SOURCE_DIR}/libcharset/include/localcharset.h.build.in
- OUTPUT ${Libiconv_BINARY_DIR}/localcharset.h
- )
+add_definitions(-DLIBDIR)
+
+configure_file(
+ ${Libiconv_SOURCE_DIR}/libcharset/include/localcharset.h.build.in
+ ${Libiconv_BINARY_DIR}/localcharset.h
+)
set(${libname}_sources
- ${libcharset_source_dir}/lib/relocatable.c
- ${libcharset_source_dir}/lib/relocatable.h
${libcharset_source_dir}/lib/localcharset.c
${Libiconv_BINARY_DIR}/localcharset.h
)
@@ -75,27 +55,10 @@ list(APPEND Libiconv_headers ${Libiconv_BINARY_DIR}/localcharset.h)
#
set(libname libiconv)
-# Hack: same hack than for libcharset
-set(HAVE_WCHAR_T "HAVE_WCHAR_T")
-set(USE_MBSTATE_T "USE_MBSTATE_T")
-set(BROKEN_WCHAR_H "BROKEN_WCHAR_H")
-
-header_injection_hack(
- LIBRARY_NAME ${libname}
- INPUT ${Libiconv_SOURCE_DIR}/include/iconv.h.build.in
- OUTPUT ${Libiconv_BINARY_DIR}/iconv.h
- )
-
-list(APPEND simple_header_config
- uniwidth
- unitypes
+configure_file(
+ ${Libiconv_SOURCE_DIR}/include/iconv.h.build.in
+ ${Libiconv_BINARY_DIR}/iconv.h
)
-foreach(header ${simple_header_config})
- configure_file(
- ${Libiconv_SOURCE_DIR}/srclib/${header}.in.h
- ${Libiconv_BINARY_DIR}/${header}.h
- )
-endforeach()
set(${libname}_sources
${Libiconv_SOURCE_DIR}/lib/iconv.c
@@ -117,12 +80,3 @@ install(TARGETS ${Libiconv_TARGETS}
)
install(FILES ${Libiconv_headers} DESTINATION include)
-
-set(Libiconv_TARGETS_FILE ${Libiconv_BINARY_DIR}/LibiconvTargets.cmake)
-export(TARGETS ${Libiconv_TARGETS} FILE ${Libiconv_TARGETS_FILE})
-
-configure_file(
- ${Libiconv_SOURCE_DIR}/LibiconvConfig.cmake.in
- ${Libiconv_BINARY_DIR}/LibiconvConfig.cmake
- @ONLY
-)
diff --git a/ports/libiconv/LibiconvConfig.cmake.in b/ports/libiconv/LibiconvConfig.cmake.in
deleted file mode 100644
index ec0df8f70..000000000
--- a/ports/libiconv/LibiconvConfig.cmake.in
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# Use file for libiconv. Auto-generated, any change here might be overwritten
-# without any warning.
-#
-
-set(Libiconv_SOURCE_DIR "@Libiconv_SOURCE_DIR@")
-set(Libiconv_BINARY_DIR "@Libiconv_BINARY_DIR@")
-set(Libiconv_LIBRARIES "@Libiconv_TARGETS@")
-
-if(EXISTS "@Libiconv_TARGETS_FILE@" AND NOT TARGET libcharset)
- include("@Libiconv_TARGETS_FILE@")
-endif() \ No newline at end of file
diff --git a/ports/libiconv/new_config.h.in b/ports/libiconv/new_config.h.in
deleted file mode 100644
index 01db0075d..000000000
--- a/ports/libiconv/new_config.h.in
+++ /dev/null
@@ -1,933 +0,0 @@
-/* config.h.in. Generated from configure.ac by autoheader. */
-
-/* Define to the number of bits in type 'ptrdiff_t'. */
-#undef BITSIZEOF_PTRDIFF_T
-
-/* Define to the number of bits in type 'sig_atomic_t'. */
-#undef BITSIZEOF_SIG_ATOMIC_T
-
-/* Define to the number of bits in type 'size_t'. */
-#undef BITSIZEOF_SIZE_T
-
-/* Define to the number of bits in type 'wchar_t'. */
-#undef BITSIZEOF_WCHAR_T
-
-/* Define to the number of bits in type 'wint_t'. */
-#undef BITSIZEOF_WINT_T
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
- systems. This function is required for `alloca.c' support on those systems.
- */
-#undef CRAY_STACKSEG_END
-
-/* Define to 1 if using `alloca.c'. */
-#undef C_ALLOCA
-
-/* Define to 1 if // is a file system root distinct from /. */
-#undef DOUBLE_SLASH_IS_DISTINCT_ROOT
-
-/* Define as good substitute value for EILSEQ. */
-//not undefined on Windows 32/64
-#ifndef _WIN32
-#undef EILSEQ
-#endif
-
-/* Define to 1 to enable a few rarely used encodings. */
-#undef ENABLE_EXTRA
-
-/* Define to 1 if translation of program messages to the user's native
- language is requested. */
-#undef ENABLE_NLS
-
-/* Define to 1 if the package shall run at any location in the file system. */
-#undef ENABLE_RELOCATABLE
-
-/* Define to 1 if realpath() can malloc memory, always gives an absolute path,
- and handles trailing slash correctly. */
-#undef FUNC_REALPATH_WORKS
-
-/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
- whether the gnulib module canonicalize-lgpl shall be considered present. */
-#undef GNULIB_CANONICALIZE_LGPL
-
-/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
- whether the gnulib module sigpipe shall be considered present. */
-#undef GNULIB_SIGPIPE
-
-/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
- whether the gnulib module strerror shall be considered present. */
-#undef GNULIB_STRERROR
-
-/* Define to 1 when the gnulib module canonicalize_file_name should be tested.
- */
-#undef GNULIB_TEST_CANONICALIZE_FILE_NAME
-
-/* Define to 1 when the gnulib module environ should be tested. */
-#undef GNULIB_TEST_ENVIRON
-
-/* Define to 1 when the gnulib module lstat should be tested. */
-#undef GNULIB_TEST_LSTAT
-
-/* Define to 1 when the gnulib module read should be tested. */
-#undef GNULIB_TEST_READ
-
-/* Define to 1 when the gnulib module readlink should be tested. */
-#undef GNULIB_TEST_READLINK
-
-/* Define to 1 when the gnulib module realpath should be tested. */
-#undef GNULIB_TEST_REALPATH
-
-/* Define to 1 when the gnulib module sigprocmask should be tested. */
-#undef GNULIB_TEST_SIGPROCMASK
-
-/* Define to 1 when the gnulib module stat should be tested. */
-#undef GNULIB_TEST_STAT
-
-/* Define to 1 when the gnulib module strerror should be tested. */
-#undef GNULIB_TEST_STRERROR
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#undef HAVE_ALLOCA
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
- */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the `canonicalize_file_name' function. */
-#undef HAVE_CANONICALIZE_FILE_NAME
-
-/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
- CoreFoundation framework. */
-#undef HAVE_CFLOCALECOPYCURRENT
-
-/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
- the CoreFoundation framework. */
-#undef HAVE_CFPREFERENCESCOPYAPPVALUE
-
-/* Define if the GNU dcgettext() function is already present or preinstalled.
- */
-#undef HAVE_DCGETTEXT
-
-/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if
- you don't. */
-#undef HAVE_DECL_CLEARERR_UNLOCKED
-
-/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
- don't. */
-#undef HAVE_DECL_FEOF_UNLOCKED
-
-/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if
- you don't. */
-#undef HAVE_DECL_FERROR_UNLOCKED
-
-/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if
- you don't. */
-#undef HAVE_DECL_FFLUSH_UNLOCKED
-
-/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
- you don't. */
-#undef HAVE_DECL_FGETS_UNLOCKED
-
-/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if
- you don't. */
-#undef HAVE_DECL_FPUTC_UNLOCKED
-
-/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if
- you don't. */
-#undef HAVE_DECL_FPUTS_UNLOCKED
-
-/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if
- you don't. */
-#undef HAVE_DECL_FREAD_UNLOCKED
-
-/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if
- you don't. */
-#undef HAVE_DECL_FWRITE_UNLOCKED
-
-/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if
- you don't. */
-#undef HAVE_DECL_GETCHAR_UNLOCKED
-
-/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
- don't. */
-#undef HAVE_DECL_GETC_UNLOCKED
-
-/* Define to 1 if you have the declaration of `program_invocation_name', and
- to 0 if you don't. */
-#undef HAVE_DECL_PROGRAM_INVOCATION_NAME
-
-/* Define to 1 if you have the declaration of `program_invocation_short_name',
- and to 0 if you don't. */
-#undef HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
-
-/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if
- you don't. */
-#undef HAVE_DECL_PUTCHAR_UNLOCKED
-
-/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you
- don't. */
-#undef HAVE_DECL_PUTC_UNLOCKED
-
-/* Define to 1 if you have the declaration of `setenv', and to 0 if you don't.
- */
-#undef HAVE_DECL_SETENV
-
-/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
- don't. */
-#undef HAVE_DECL_STRERROR_R
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define if you have the declaration of environ. */
-#undef HAVE_ENVIRON_DECL
-
-/* Define to 1 if you have the `getcwd' function. */
-#undef HAVE_GETCWD
-
-/* Define to 1 if you have the `getc_unlocked' function. */
-#undef HAVE_GETC_UNLOCKED
-
-/* Define if the GNU gettext() function is already present or preinstalled. */
-#undef HAVE_GETTEXT
-
-/* Define if you have the iconv() function and it works. */
-#undef HAVE_ICONV
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-#undef HAVE_LANGINFO_CODESET
-
-/* Define to 1 if the system has the type `long long int'. */
-#undef HAVE_LONG_LONG_INT
-
-/* Define to 1 if you have the `lstat' function. */
-#undef HAVE_LSTAT
-
-/* Define to 1 if you have the <mach-o/dyld.h> header file. */
-#undef HAVE_MACH_O_DYLD_H
-
-/* Define to 1 if you have the `mbrtowc' function. */
-#undef HAVE_MBRTOWC
-
-/* Define to 1 if you have the `mbsinit' function. */
-#undef HAVE_MBSINIT
-
-/* Define to 1 if <wchar.h> declares mbstate_t. */
-#undef HAVE_MBSTATE_T
-
-/* Define to 1 if you have the `memmove' function. */
-#undef HAVE_MEMMOVE
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if atoll is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_ATOLL
-
-/* Define to 1 if canonicalize_file_name is declared even after undefining
- macros. */
-#undef HAVE_RAW_DECL_CANONICALIZE_FILE_NAME
-
-/* Define to 1 if chown is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_CHOWN
-
-/* Define to 1 if dprintf is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_DPRINTF
-
-/* Define to 1 if dup2 is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_DUP2
-
-/* Define to 1 if dup3 is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_DUP3
-
-/* Define to 1 if endusershell is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_ENDUSERSHELL
-
-/* Define to 1 if environ is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_ENVIRON
-
-/* Define to 1 if euidaccess is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_EUIDACCESS
-
-/* Define to 1 if faccessat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FACCESSAT
-
-/* Define to 1 if fchdir is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FCHDIR
-
-/* Define to 1 if fchmodat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FCHMODAT
-
-/* Define to 1 if fchownat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FCHOWNAT
-
-/* Define to 1 if fcntl is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FCNTL
-
-/* Define to 1 if ffsl is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FFSL
-
-/* Define to 1 if ffsll is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FFSLL
-
-/* Define to 1 if fpurge is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FPURGE
-
-/* Define to 1 if fseeko is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FSEEKO
-
-/* Define to 1 if fstatat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FSTATAT
-
-/* Define to 1 if fsync is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FSYNC
-
-/* Define to 1 if ftello is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FTELLO
-
-/* Define to 1 if ftruncate is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FTRUNCATE
-
-/* Define to 1 if futimens is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_FUTIMENS
-
-/* Define to 1 if getcwd is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GETCWD
-
-/* Define to 1 if getdelim is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GETDELIM
-
-/* Define to 1 if getdomainname is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GETDOMAINNAME
-
-/* Define to 1 if getdtablesize is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GETDTABLESIZE
-
-/* Define to 1 if getgroups is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GETGROUPS
-
-/* Define to 1 if gethostname is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GETHOSTNAME
-
-/* Define to 1 if getline is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GETLINE
-
-/* Define to 1 if getloadavg is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GETLOADAVG
-
-/* Define to 1 if getlogin is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GETLOGIN
-
-/* Define to 1 if getlogin_r is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GETLOGIN_R
-
-/* Define to 1 if getpagesize is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GETPAGESIZE
-
-/* Define to 1 if getsubopt is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GETSUBOPT
-
-/* Define to 1 if getusershell is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GETUSERSHELL
-
-/* Define to 1 if grantpt is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GRANTPT
-
-/* Define to 1 if group_member is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_GROUP_MEMBER
-
-/* Define to 1 if initstat_r is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_INITSTAT_R
-
-/* Define to 1 if lchmod is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_LCHMOD
-
-/* Define to 1 if lchown is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_LCHOWN
-
-/* Define to 1 if link is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_LINK
-
-/* Define to 1 if linkat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_LINKAT
-
-/* Define to 1 if lseek is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_LSEEK
-
-/* Define to 1 if lstat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_LSTAT
-
-/* Define to 1 if memmem is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MEMMEM
-
-/* Define to 1 if mempcpy is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MEMPCPY
-
-/* Define to 1 if memrchr is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MEMRCHR
-
-/* Define to 1 if mkdirat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MKDIRAT
-
-/* Define to 1 if mkdtemp is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MKDTEMP
-
-/* Define to 1 if mkfifo is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MKFIFO
-
-/* Define to 1 if mkfifoat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MKFIFOAT
-
-/* Define to 1 if mknod is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MKNOD
-
-/* Define to 1 if mknodat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MKNODAT
-
-/* Define to 1 if mkostemp is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MKOSTEMP
-
-/* Define to 1 if mkostemps is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MKOSTEMPS
-
-/* Define to 1 if mkstemp is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MKSTEMP
-
-/* Define to 1 if mkstemps is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_MKSTEMPS
-
-/* Define to 1 if openat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_OPENAT
-
-/* Define to 1 if pipe is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_PIPE
-
-/* Define to 1 if pipe2 is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_PIPE2
-
-/* Define to 1 if popen is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_POPEN
-
-/* Define to 1 if pread is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_PREAD
-
-/* Define to 1 if pthread_sigmask is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_PTHREAD_SIGMASK
-
-/* Define to 1 if ptsname is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_PTSNAME
-
-/* Define to 1 if pwrite is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_PWRITE
-
-/* Define to 1 if random_r is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_RANDOM_R
-
-/* Define to 1 if rawmemchr is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_RAWMEMCHR
-
-/* Define to 1 if readlink is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_READLINK
-
-/* Define to 1 if readlinkat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_READLINKAT
-
-/* Define to 1 if realpath is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_REALPATH
-
-/* Define to 1 if renameat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_RENAMEAT
-
-/* Define to 1 if rmdir is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_RMDIR
-
-/* Define to 1 if rpmatch is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_RPMATCH
-
-/* Define to 1 if setenv is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SETENV
-
-/* Define to 1 if setstate_r is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SETSTATE_R
-
-/* Define to 1 if setusershell is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SETUSERSHELL
-
-/* Define to 1 if sigaction is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SIGACTION
-
-/* Define to 1 if sigaddset is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SIGADDSET
-
-/* Define to 1 if sigdelset is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SIGDELSET
-
-/* Define to 1 if sigemptyset is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SIGEMPTYSET
-
-/* Define to 1 if sigfillset is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SIGFILLSET
-
-/* Define to 1 if sigismember is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SIGISMEMBER
-
-/* Define to 1 if sigpending is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SIGPENDING
-
-/* Define to 1 if sigprocmask is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SIGPROCMASK
-
-/* Define to 1 if sleep is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SLEEP
-
-/* Define to 1 if snprintf is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SNPRINTF
-
-/* Define to 1 if srandom_r is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SRANDOM_R
-
-/* Define to 1 if stat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STAT
-
-/* Define to 1 if stpcpy is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STPCPY
-
-/* Define to 1 if stpncpy is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STPNCPY
-
-/* Define to 1 if strcasestr is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRCASESTR
-
-/* Define to 1 if strchrnul is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRCHRNUL
-
-/* Define to 1 if strdup is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRDUP
-
-/* Define to 1 if strerror_r is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRERROR_R
-
-/* Define to 1 if strncat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRNCAT
-
-/* Define to 1 if strndup is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRNDUP
-
-/* Define to 1 if strnlen is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRNLEN
-
-/* Define to 1 if strpbrk is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRPBRK
-
-/* Define to 1 if strsep is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRSEP
-
-/* Define to 1 if strsignal is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRSIGNAL
-
-/* Define to 1 if strtod is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRTOD
-
-/* Define to 1 if strtok_r is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRTOK_R
-
-/* Define to 1 if strtoll is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRTOLL
-
-/* Define to 1 if strtoull is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRTOULL
-
-/* Define to 1 if strverscmp is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_STRVERSCMP
-
-/* Define to 1 if symlink is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SYMLINK
-
-/* Define to 1 if symlinkat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_SYMLINKAT
-
-/* Define to 1 if tmpfile is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_TMPFILE
-
-/* Define to 1 if ttyname_r is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_TTYNAME_R
-
-/* Define to 1 if unlink is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_UNLINK
-
-/* Define to 1 if unlinkat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_UNLINKAT
-
-/* Define to 1 if unlockpt is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_UNLOCKPT
-
-/* Define to 1 if unsetenv is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_UNSETENV
-
-/* Define to 1 if usleep is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_USLEEP
-
-/* Define to 1 if utimensat is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_UTIMENSAT
-
-/* Define to 1 if vdprintf is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_VDPRINTF
-
-/* Define to 1 if vsnprintf is declared even after undefining macros. */
-#undef HAVE_RAW_DECL_VSNPRINTF
-
-/* Define to 1 if _Exit is declared even after undefining macros. */
-#undef HAVE_RAW_DECL__EXIT
-
-/* Define to 1 if you have the `readlink' function. */
-#undef HAVE_READLINK
-
-/* Define to 1 if you have the `readlinkat' function. */
-#undef HAVE_READLINKAT
-
-/* Define to 1 if you have the `realpath' function. */
-#undef HAVE_REALPATH
-
-/* Define to 1 if you have the <search.h> header file. */
-#undef HAVE_SEARCH_H
-
-/* Define to 1 if you have the `setenv' function. */
-#undef HAVE_SETENV
-
-/* Define to 1 if you have the `setlocale' function. */
-#undef HAVE_SETLOCALE
-
-/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
-#undef HAVE_SIGNED_SIG_ATOMIC_T
-
-/* Define to 1 if 'wchar_t' is a signed integer type. */
-#undef HAVE_SIGNED_WCHAR_T
-
-/* Define to 1 if 'wint_t' is a signed integer type. */
-#undef HAVE_SIGNED_WINT_T
-
-/* Define to 1 if the system has the type `sigset_t'. */
-#undef HAVE_SIGSET_T
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `strerror_r' function. */
-#undef HAVE_STRERROR_R
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/bitypes.h> header file. */
-#undef HAVE_SYS_BITYPES_H
-
-/* Define to 1 if you have the <sys/inttypes.h> header file. */
-#undef HAVE_SYS_INTTYPES_H
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the `tsearch' function. */
-#undef HAVE_TSEARCH
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if the system has the type `unsigned long long int'. */
-#undef HAVE_UNSIGNED_LONG_LONG_INT
-
-/* Define to 1 or 0, depending whether the compiler supports simple visibility
- declarations. */
-#undef HAVE_VISIBILITY
-
-/* Define to 1 if you have the <wchar.h> header file. */
-#undef HAVE_WCHAR_H
-
-/* Define if you have the 'wchar_t' type. */
-#undef HAVE_WCHAR_T
-
-/* Define to 1 if you have the `wcrtomb' function. */
-#undef HAVE_WCRTOMB
-
-/* Define to 1 if you have the <winsock2.h> header file. */
-#undef HAVE_WINSOCK2_H
-
-/* Define to 1 if O_NOATIME works. */
-#undef HAVE_WORKING_O_NOATIME
-
-/* Define to 1 if O_NOFOLLOW works. */
-#undef HAVE_WORKING_O_NOFOLLOW
-
-/* Define to 1 if the system has the type `_Bool'. */
-#undef HAVE__BOOL
-
-/* Define to 1 if you have the `_NSGetExecutablePath' function. */
-#undef HAVE__NSGETEXECUTABLEPATH
-
-/* Define as const if the declaration of iconv() needs const. */
-#ifdef _WIN32
-#define ICONV_CONST const
-#else
-#undef ICONV_CONST
-#endif
-
-/* Define to the value of ${prefix}, as a string. */
-#undef INSTALLPREFIX
-
-/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
- slash. */
-#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#undef LT_OBJDIR
-
-/* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */
-#undef MALLOC_0_IS_NONNULL
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
- 'ptrdiff_t'. */
-#undef PTRDIFF_T_SUFFIX
-
-/* Define to 1 if readlink fails to recognize a trailing slash. */
-#undef READLINK_TRAILING_SLASH_BUG
-
-/* Define to 1 if stat needs help when passed a directory name with a trailing
- slash */
-#undef REPLACE_FUNC_STAT_DIR
-
-/* Define to 1 if stat needs help when passed a file name with a trailing
- slash */
-#undef REPLACE_FUNC_STAT_FILE
-
-/* Define to 1 if strerror(0) does not return a message implying success. */
-#undef REPLACE_STRERROR_0
-
-/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
- 'sig_atomic_t'. */
-#undef SIG_ATOMIC_T_SUFFIX
-
-/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
- 'size_t'. */
-#undef SIZE_T_SUFFIX
-
-/* If using the C implementation of alloca, define if you know the
- direction of stack growth for your system; otherwise it will be
- automatically deduced at runtime.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
-/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
-#undef STAT_MACROS_BROKEN
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define to 1 if strerror_r returns char *. */
-#undef STRERROR_R_CHAR_P
-
-/* Define to the prefix of C symbols at the assembler and linker level, either
- an underscore or empty. */
-#undef USER_LABEL_PREFIX
-
-/* Define to 1 if you want getc etc. to use unlocked I/O if available.
- Unlocked I/O can improve performance in unithreaded apps, but it is not
- safe for multithreaded apps. */
-#undef USE_UNLOCKED_IO
-
-/* Version number of package */
-#undef VERSION
-
-/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
- 'wchar_t'. */
-#undef WCHAR_T_SUFFIX
-
-/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
- 'wint_t'. */
-#undef WINT_T_SUFFIX
-
-/* Define if the machine's byte ordering is little endian. */
-#undef WORDS_LITTLEENDIAN
-
-/* Define to 1 if on MINIX. */
-#undef _MINIX
-
-/* The _Noreturn keyword of draft C1X. */
-#ifndef _Noreturn
-# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
- || 0x5110 <= __SUNPRO_C)
-# define _Noreturn __attribute__ ((__noreturn__))
-# elif 1200 <= _MSC_VER
-# define _Noreturn __declspec (noreturn)
-# else
-# define _Noreturn
-# endif
-#endif
-
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
- this defined. */
-#undef _POSIX_1_SOURCE
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-#undef _POSIX_SOURCE
-
-/* Define to 500 only on HP-UX. */
-#undef _XOPEN_SOURCE
-
-/* Enable extensions on AIX 3, Interix. */
-#ifndef _ALL_SOURCE
-# undef _ALL_SOURCE
-#endif
-/* Enable general extensions on MacOS X. */
-#ifndef _DARWIN_C_SOURCE
-# undef _DARWIN_C_SOURCE
-#endif
-/* Enable GNU extensions on systems that have them. */
-#ifndef _GNU_SOURCE
-# undef _GNU_SOURCE
-#endif
-/* Enable threading extensions on Solaris. */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
-#endif
-/* Enable extensions on HP NonStop. */
-#ifndef _TANDEM_SOURCE
-# undef _TANDEM_SOURCE
-#endif
-/* Enable general extensions on Solaris. */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
-#endif
-
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef gid_t
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-#undef inline
-#endif
-
-/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
- the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
- earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
- __APPLE__ && __MACH__ test for MacOS X.
- __APPLE_CC__ tests for the Apple compiler and its version.
- __STDC_VERSION__ tests for the C99 mode. */
-#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
-# define __GNUC_STDC_INLINE__ 1
-#endif
-
-/* Define to a type if <wchar.h> does not define. */
-#undef mbstate_t
-
-/* Define to the type of st_nlink in struct stat, or a supertype. */
-#undef nlink_t
-
-/* Define to the equivalent of the C99 'restrict' keyword, or to
- nothing if this is not supported. Do not define if restrict is
- supported directly. */
-#undef restrict
-/* Work around a bug in Sun C++: it does not support _Restrict or
- __restrict__, even though the corresponding Sun C compiler ends up with
- "#define restrict _Restrict" or "#define restrict __restrict__" in the
- previous line. Perhaps some future version of Sun C++ will work with
- restrict; if so, hopefully it defines __RESTRICT like Sun C does. */
-#if defined __SUNPRO_CC && !defined __RESTRICT
-# define _Restrict
-# define __restrict__
-#endif
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
-
-/* Define as a signed type of the same size as size_t. */
-#undef ssize_t
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef uid_t
-
-/* Define as a marker that can be attached to declarations that might not
- be used. This helps to reduce warnings, such as from
- GCC -Wunused-parameter. */
-#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
-# define _GL_UNUSED __attribute__ ((__unused__))
-#else
-# define _GL_UNUSED
-#endif
-/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
- is a misnomer outside of parameter lists. */
-#define _UNUSED_PARAMETER_ _GL_UNUSED
-
-/* The __pure__ attribute was added in gcc 2.96. */
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE /* empty */
-#endif
-
-/* The __const__ attribute was added in gcc 2.95. */
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
-# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
-#else
-# define _GL_ATTRIBUTE_CONST /* empty */
-#endif
-
-
-
-/* On Windows, variables that may be in a DLL must be marked specially. */
-#if defined _MSC_VER && defined _DLL
-# define DLL_VARIABLE __declspec (dllimport)
-#else
-# define DLL_VARIABLE
-#endif
-
diff --git a/ports/libiconv/portfile.cmake b/ports/libiconv/portfile.cmake
index 4a18e79ce..dc1e1a3a3 100644
--- a/ports/libiconv/portfile.cmake
+++ b/ports/libiconv/portfile.cmake
@@ -1,3 +1,4 @@
+include(${CMAKE_TRIPLET_FILE})
include(vcpkg_common_functions)
vcpkg_download_distfile(ARCHIVE
URLS "https://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz"
@@ -8,19 +9,22 @@ vcpkg_extract_source_archive(${ARCHIVE})
#Since libiconv uses automake, make and configure, we use a custom CMake file
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${CURRENT_BUILDTREES_DIR}/src/libiconv-1.14/)
-file(COPY ${CMAKE_CURRENT_LIST_DIR}/LibiconvConfig.cmake.in DESTINATION ${CURRENT_BUILDTREES_DIR}/src/libiconv-1.14/)
-file(COPY ${CMAKE_CURRENT_LIST_DIR}/new_config.h.in DESTINATION ${CURRENT_BUILDTREES_DIR}/src/libiconv-1.14/)
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/libiconv-1.14/
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/0001-Add-export-definitions.patch
+ ${CMAKE_CURRENT_LIST_DIR}/0002-Config-for-MSVC.patch
+)
vcpkg_configure_cmake(
SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/libiconv-1.14
-
)
vcpkg_install_cmake()
# Handle copyright
-file(COPY ${CURRENT_BUILDTREES_DIR}/src/libiconv-1.14/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/libiconv)
-file(RENAME ${CURRENT_PACKAGES_DIR}/share/libiconv/COPYING ${CURRENT_PACKAGES_DIR}/share/libiconv/copyright)
+file(COPY ${CURRENT_BUILDTREES_DIR}/src/libiconv-1.14/COPYING.LIB DESTINATION ${CURRENT_PACKAGES_DIR}/share/libiconv)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/libiconv/COPYING.LIB ${CURRENT_PACKAGES_DIR}/share/libiconv/copyright)
# clean out the debug include
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) \ No newline at end of file
diff --git a/ports/log4cplus/CONTROL b/ports/log4cplus/CONTROL
new file mode 100644
index 000000000..2d367a31a
--- /dev/null
+++ b/ports/log4cplus/CONTROL
@@ -0,0 +1,3 @@
+Source: log4cplus
+Version: 1.1.3-RC7
+Description: A simple to use C++ logging API providing thread--safe, flexible, and arbitrarily granular control over log management and configuration
diff --git a/ports/log4cplus/portfile.cmake b/ports/log4cplus/portfile.cmake
new file mode 100644
index 000000000..78620597a
--- /dev/null
+++ b/ports/log4cplus/portfile.cmake
@@ -0,0 +1,22 @@
+include(${CMAKE_TRIPLET_FILE})
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/log4cplus-REL_1_1_3-RC7)
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://github.com/log4cplus/log4cplus/archive/REL_1_1_3-RC7.zip"
+ FILENAME "REL_1_1_3-RC7.zip"
+ SHA512 06320cb2ab6e18e91c6d79a943c9fdcd82b984e8e908e232f0e0e8eca69496f1f3845913107218bc2be356473315f8dfb822a5993bab8efcadfc4819532da823
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS -DLOG4CPLUS_BUILD_TESTING=OFF -DLOG4CPLUS_BUILD_LOGGINGSERVER=OFF -DWITH_UNIT_TESTS=OFF
+)
+
+vcpkg_install_cmake()
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+# Handle copyright
+file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/log4cplus)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/log4cplus/LICENSE ${CURRENT_PACKAGES_DIR}/share/log4cplus/copyright)
diff --git a/ports/mongo-c-driver/0001_cmake.patch b/ports/mongo-c-driver/0001_cmake.patch
new file mode 100644
index 000000000..a2f9087e7
--- /dev/null
+++ b/ports/mongo-c-driver/0001_cmake.patch
@@ -0,0 +1,43 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b3fc5b9..5a106ca 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -20,7 +20,6 @@ option(ENABLE_EXPERIMENTAL_FEATURES
+
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/build/cmake)
+
+-include(InstallRequiredSystemLibraries)
+ include(FindBSON REQUIRED)
+
+ if (NOT (ENABLE_SSL STREQUAL DARWIN
+@@ -563,7 +562,7 @@ install(
+ )
+ install(
+ FILES ${HEADERS}
+- DESTINATION "include/libmongoc-${MONGOC_API_VERSION}"
++ DESTINATION "include"
+ )
+
+ # Define pkg-config files
+diff --git a/build/cmake/FindBSON.cmake b/build/cmake/FindBSON.cmake
+index 4ac39ea..bf6ecab 100644
+--- a/build/cmake/FindBSON.cmake
++++ b/build/cmake/FindBSON.cmake
+@@ -11,7 +11,7 @@ endif ()
+
+ find_path(BSON_INCLUDE_DIR
+ NAMES
+- libbson-1.0/bson.h
++ bson.h
+ HINTS
+ ${BSON_ROOT_DIR}
+ ${_BSON_INCLUDEDIR}
+@@ -19,8 +19,6 @@ find_path(BSON_INCLUDE_DIR
+ include
+ )
+
+-set(BSON_INCLUDE_DIR "${BSON_INCLUDE_DIR}/libbson-1.0")
+-
+ if(WIN32 AND NOT CYGWIN)
+ if(MSVC)
+ find_library(BSON
diff --git a/ports/mongo-c-driver/CONTROL b/ports/mongo-c-driver/CONTROL
new file mode 100644
index 000000000..b0cec868c
--- /dev/null
+++ b/ports/mongo-c-driver/CONTROL
@@ -0,0 +1,4 @@
+Source: mongo-c-driver
+Version: 1.4.2
+Build-Depends: libbson
+Description: Client library written in C for MongoDB. \ No newline at end of file
diff --git a/ports/mongo-c-driver/portfile.cmake b/ports/mongo-c-driver/portfile.cmake
new file mode 100644
index 000000000..81f0d10a7
--- /dev/null
+++ b/ports/mongo-c-driver/portfile.cmake
@@ -0,0 +1,28 @@
+include(${CMAKE_TRIPLET_FILE})
+include(vcpkg_common_functions)
+find_program(POWERSHELL powershell)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/mongo-c-driver-1.4.2)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://github.com/mongodb/mongo-c-driver/releases/download/1.4.2/mongo-c-driver-1.4.2.tar.gz"
+ FILENAME "mongo-c-driver-1.4.2.tar.gz"
+ SHA512 402b9d0f2ae957a07336c9a6d971440472acef8e17a3ba5e89635ca454a13d4b7cf5f9b71151ed6182c012efb5fac6684acfc00443c6bca07cdd04b9f7eddaeb
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/0001_cmake.patch
+)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS
+ -DBSON_ROOT_DIR=${CURRENT_PACKAGES_DIR}/../libbson_${TARGET_TRIPLET}
+)
+
+vcpkg_install_cmake()
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver/COPYING ${CURRENT_PACKAGES_DIR}/share/mongo-c-driver/copyright) \ No newline at end of file
diff --git a/ports/mongo-cxx-driver/0001_cmake.patch b/ports/mongo-cxx-driver/0001_cmake.patch
new file mode 100644
index 000000000..6e93e4755
--- /dev/null
+++ b/ports/mongo-cxx-driver/0001_cmake.patch
@@ -0,0 +1,64 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 695f64c..87807d6 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -59,7 +59,6 @@ set(CMAKE_CXX_EXTENSIONS OFF)
+
+ # Include the required modules
+ include(GenerateExportHeader)
+-include(InstallRequiredSystemLibraries)
+
+ # If the user did not customize the install prefix,
+ # set it to live under build so we don't inadverently pollute /usr/local
+diff --git a/cmake/FindLibBSON.cmake b/cmake/FindLibBSON.cmake
+index 52f5de0..7a0be52 100644
+--- a/cmake/FindLibBSON.cmake
++++ b/cmake/FindLibBSON.cmake
+@@ -26,7 +26,7 @@ if(LIBBSON_DIR)
+ # Trust the user's override path by default
+ set(LIBBSON_LIBRARIES bson-1.0 CACHE INTERNAL "")
+ set(LIBBSON_LIBRARY_DIRS ${LIBBSON_DIR}/lib CACHE INTERNAL "")
+- set(LIBBSON_INCLUDE_DIRS ${LIBBSON_DIR}/include/libbson-1.0 CACHE INTERNAL "")
++ set(LIBBSON_INCLUDE_DIRS ${LIBBSON_DIR}/include CACHE INTERNAL "")
+ find_package_handle_standard_args(LIBBSON DEFAULT_MSG LIBBSON_LIBRARIES LIBBSON_LIBRARY_DIRS LIBBSON_INCLUDE_DIRS)
+ elseif (PKG_CONFIG_FOUND)
+ # The best we can do until libbson starts installing a libbson-config.cmake file
+diff --git a/cmake/FindLibMongoC.cmake b/cmake/FindLibMongoC.cmake
+index 830de11..7e0bc76 100644
+--- a/cmake/FindLibMongoC.cmake
++++ b/cmake/FindLibMongoC.cmake
+@@ -26,7 +26,7 @@ if(LIBMONGOC_DIR)
+ # Trust the user's override path by default
+ set(LIBMONGOC_LIBRARIES mongoc-1.0 CACHE INTERNAL "")
+ set(LIBMONGOC_LIBRARY_DIRS ${LIBMONGOC_DIR}/lib CACHE INTERNAL "")
+- set(LIBMONGOC_INCLUDE_DIRS ${LIBMONGOC_DIR}/include/libmongoc-1.0 CACHE INTERNAL "")
++ set(LIBMONGOC_INCLUDE_DIRS ${LIBMONGOC_DIR}/include CACHE INTERNAL "")
+ find_package_handle_standard_args(LIBMONGOC DEFAULT_MSG LIBMONGOC_LIBRARIES LIBMONGOC_LIBRARY_DIRS LIBMONGOC_INCLUDE_DIRS)
+ elseif (PKG_CONFIG_FOUND)
+ # The best we can do until libMONGOC starts installing a libmongoc-config.cmake file
+diff --git a/src/bsoncxx/CMakeLists.txt b/src/bsoncxx/CMakeLists.txt
+index cea1bc9..481529c 100644
+--- a/src/bsoncxx/CMakeLists.txt
++++ b/src/bsoncxx/CMakeLists.txt
+@@ -60,7 +60,7 @@ endif()
+
+ set(BSONCXX_VERSION ${BSONCXX_VERSION_MAJOR}.${BSONCXX_VERSION_MINOR}.${BSONCXX_VERSION_PATCH}${BSONCXX_VERSION_EXTRA})
+ set(BSONCXX_INLINE_NAMESPACE "v${BSONCXX_ABI_VERSION}")
+-set(BSONCXX_HEADER_INSTALL_DIR "include/bsoncxx/${BSONCXX_INLINE_NAMESPACE}" CACHE INTERNAL "")
++set(BSONCXX_HEADER_INSTALL_DIR "include" CACHE INTERNAL "")
+
+ set(LIBBSON_REQUIRED_VERSION 1.3.4)
+ set(LIBBSON_REQUIRED_ABI_VERSION 1.0)
+diff --git a/src/mongocxx/CMakeLists.txt b/src/mongocxx/CMakeLists.txt
+index fdbe61a..7d5c2c9 100644
+--- a/src/mongocxx/CMakeLists.txt
++++ b/src/mongocxx/CMakeLists.txt
+@@ -32,7 +32,7 @@ set(MONGOCXX_ABI_VERSION _noabi)
+
+ set(MONGOCXX_VERSION ${MONGOCXX_VERSION_MAJOR}.${MONGOCXX_VERSION_MINOR}.${MONGOCXX_VERSION_PATCH}${MONGOCXX_VERSION_EXTRA})
+ set(MONGOCXX_INLINE_NAMESPACE "v${MONGOCXX_ABI_VERSION}")
+-set(MONGOCXX_HEADER_INSTALL_DIR "include/mongocxx/${MONGOCXX_INLINE_NAMESPACE}" CACHE INTERNAL "")
++set(MONGOCXX_HEADER_INSTALL_DIR "include" CACHE INTERNAL "")
+
+ add_subdirectory(config)
+
diff --git a/ports/mongo-cxx-driver/CONTROL b/ports/mongo-cxx-driver/CONTROL
new file mode 100644
index 000000000..1e0248f02
--- /dev/null
+++ b/ports/mongo-cxx-driver/CONTROL
@@ -0,0 +1,4 @@
+Source: mongo-cxx-driver
+Version: 3.0.2
+Build-Depends: boost,mongo-c-driver
+Description: MongoDB C++ Driver. \ No newline at end of file
diff --git a/ports/mongo-cxx-driver/portfile.cmake b/ports/mongo-cxx-driver/portfile.cmake
new file mode 100644
index 000000000..edfdb3fb7
--- /dev/null
+++ b/ports/mongo-cxx-driver/portfile.cmake
@@ -0,0 +1,32 @@
+include(${CMAKE_TRIPLET_FILE})
+include(vcpkg_common_functions)
+find_program(POWERSHELL powershell)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/mongo-cxx-driver-r3.0.2)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://codeload.github.com/mongodb/mongo-cxx-driver/zip/r3.0.2"
+ FILENAME "mongo-cxx-driver-r3.0.2.zip"
+ SHA512 f3f1902df22ad58090ec2d4f22c9746d32b12552934d0eaf686b7e3b2e65ac9eeff9e28944cde75c5f5834735e8b76f879e1ca0e7095195f22e3ce6dd92b4524
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/0001_cmake.patch
+)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS
+ -DLIBBSON_DIR=${CURRENT_PACKAGES_DIR}/../libbson_${TARGET_TRIPLET}
+ -DLIBMONGOC_DIR=${CURRENT_PACKAGES_DIR}/../mongo-c-driver_${TARGET_TRIPLET}
+)
+
+vcpkg_install_cmake()
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/cmake)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/cmake)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/mongo-cxx-driver)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/mongo-cxx-driver/LICENSE ${CURRENT_PACKAGES_DIR}/share/mongo-cxx-driver/copyright) \ No newline at end of file
diff --git a/ports/nanodbc/0001_cmake.patch b/ports/nanodbc/0001_cmake.patch
new file mode 100644
index 000000000..36d57be0e
--- /dev/null
+++ b/ports/nanodbc/0001_cmake.patch
@@ -0,0 +1,23 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9f4aa71..94edd95 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -201,9 +201,16 @@ endif()
+ if(NANODBC_INSTALL)
+ install(FILES src/nanodbc.h DESTINATION include)
+ if(NANODBC_STATIC)
+- install(TARGETS nanodbc ARCHIVE DESTINATION lib)
++ install(
++ TARGETS nanodbc
++ ARCHIVE DESTINATION lib
++ LIBRARY DESTINATION lib)
+ else()
+- install(TARGETS nanodbc LIBRARY DESTINATION lib)
++ install(
++ TARGETS nanodbc
++ ARCHIVE DESTINATION lib
++ LIBRARY DESTINATION lib
++ RUNTIME DESTINATION bin)
+ endif()
+ message(STATUS "Target install: Turned on")
+ else()
diff --git a/ports/nanodbc/0002_msvc14_codecvt.patch b/ports/nanodbc/0002_msvc14_codecvt.patch
new file mode 100644
index 000000000..ae499bcf9
--- /dev/null
+++ b/ports/nanodbc/0002_msvc14_codecvt.patch
@@ -0,0 +1,34 @@
+diff --git a/src/nanodbc.cpp b/src/nanodbc.cpp
+index 8e02d4a..2e42b91 100644
+--- a/src/nanodbc.cpp
++++ b/src/nanodbc.cpp
+@@ -209,10 +209,11 @@ namespace
+ out = utf_to_utf<char>(in.c_str(), in.c_str() + in.size());
+ #else
+ #if defined(_MSC_VER) && (_MSC_VER == 1900)
+- // Workaround for confirmed bug in VS2015.
+- // See: https://social.msdn.microsoft.com/Forums/en-US/8f40dcd8-c67f-4eba-9134-a19b9178e481/vs-2015-rc-linker-stdcodecvt-error
+- auto p = reinterpret_cast<wide_char_t const*>(in.data());
+- out = std::wstring_convert<NANODBC_CODECVT_TYPE<wide_char_t>, wide_char_t>().to_bytes(p, p + in.size());
++ // Workaround for confirmed bug in VS2015. See:
++ // https://connect.microsoft.com/VisualStudio/Feedback/Details/1403302
++ // https://social.msdn.microsoft.com/Forums/en-US/8f40dcd8-c67f-4eba-9134-a19b9178e481/vs-2015-rc-linker-stdcodecvt-error
++ auto p = reinterpret_cast<unsigned short const*>(in.data());
++ out = std::wstring_convert<NANODBC_CODECVT_TYPE<unsigned short>, unsigned short>().to_bytes(p, p + in.size());
+ #else
+ out = std::wstring_convert<NANODBC_CODECVT_TYPE<wide_char_t>, wide_char_t>().to_bytes(in);
+ #endif
+@@ -226,9 +227,10 @@ namespace
+ using boost::locale::conv::utf_to_utf;
+ out = utf_to_utf<wide_char_t>(in.c_str(), in.c_str() + in.size());
+ #elif defined(_MSC_VER) && (_MSC_VER == 1900)
+- // Workaround for confirmed bug in VS2015.
+- // See: https://social.msdn.microsoft.com/Forums/en-US/8f40dcd8-c67f-4eba-9134-a19b9178e481/vs-2015-rc-linker-stdcodecvt-error
+- auto s = std::wstring_convert<NANODBC_CODECVT_TYPE<wide_char_t>, wide_char_t>().from_bytes(in);
++ // Workaround for confirmed bug in VS2015. See:
++ // https://connect.microsoft.com/VisualStudio/Feedback/Details/1403302
++ // https://social.msdn.microsoft.com/Forums/en-US/8f40dcd8-c67f-4eba-9134-a19b9178e481/vs-2015-rc-linker-stdcodecvt-error
++ auto s = std::wstring_convert<NANODBC_CODECVT_TYPE<unsigned short>, unsigned short>().from_bytes(in);
+ auto p = reinterpret_cast<wide_char_t const*>(s.data());
+ out.assign(p, p + s.size());
+ #else
diff --git a/ports/nanodbc/0003_export_def.patch b/ports/nanodbc/0003_export_def.patch
new file mode 100644
index 000000000..3dd3649ae
--- /dev/null
+++ b/ports/nanodbc/0003_export_def.patch
@@ -0,0 +1,417 @@
+diff --git a/src/nanodbc.cpp b/src/nanodbc.cpp
+index 8e02d4a..0483660 100644
+--- a/src/nanodbc.cpp
++++ b/src/nanodbc.cpp
+@@ -3253,10 +3253,10 @@ unsigned long statement::parameter_size(short param) const
+
+ // We need to instantiate each form of bind() for each of our supported data types.
+ #define NANODBC_INSTANTIATE_BINDS(type) \
+- template void statement::bind(short, const type*, param_direction); /* 1-ary */ \
+- template void statement::bind(short, const type*, std::size_t, param_direction); /* n-ary */ \
+- template void statement::bind(short, const type*, std::size_t, const type*, param_direction); /* n-ary, sentry */ \
+- template void statement::bind(short, const type*, std::size_t, const bool*, param_direction) /* n-ary, flags */ \
++ template NANODBC_API void statement::bind(short, const type*, param_direction); /* 1-ary */ \
++ template NANODBC_API void statement::bind(short, const type*, std::size_t, param_direction); /* n-ary */ \
++ template NANODBC_API void statement::bind(short, const type*, std::size_t, const type*, param_direction); /* n-ary, sentry */ \
++ template NANODBC_API void statement::bind(short, const type*, std::size_t, const bool*, param_direction) /* n-ary, flags */ \
+ /**/
+
+ // The following are the only supported instantiations of statement::bind().
+@@ -3875,112 +3875,112 @@ result::operator bool() const
+ }
+
+ // The following are the only supported instantiations of result::get_ref().
+-template void result::get_ref(short, string_type::value_type&) const;
+-template void result::get_ref(short, short&) const;
+-template void result::get_ref(short, unsigned short&) const;
+-template void result::get_ref(short, int32_t&) const;
+-template void result::get_ref(short, uint32_t&) const;
+-template void result::get_ref(short, int64_t&) const;
+-template void result::get_ref(short, uint64_t&) const;
+-template void result::get_ref(short, float&) const;
+-template void result::get_ref(short, double&) const;
+-template void result::get_ref(short, string_type&) const;
+-template void result::get_ref(short, date&) const;
+-template void result::get_ref(short, timestamp&) const;
+-
+-template void result::get_ref(const string_type&, string_type::value_type&) const;
+-template void result::get_ref(const string_type&, short&) const;
+-template void result::get_ref(const string_type&, unsigned short&) const;
+-template void result::get_ref(const string_type&, int32_t&) const;
+-template void result::get_ref(const string_type&, uint32_t&) const;
+-template void result::get_ref(const string_type&, int64_t&) const;
+-template void result::get_ref(const string_type&, uint64_t&) const;
+-template void result::get_ref(const string_type&, float&) const;
+-template void result::get_ref(const string_type&, double&) const;
+-template void result::get_ref(const string_type&, string_type&) const;
+-template void result::get_ref(const string_type&, date&) const;
+-template void result::get_ref(const string_type&, timestamp&) const;
++template NANODBC_API void result::get_ref(short, string_type::value_type&) const;
++template NANODBC_API void result::get_ref(short, short&) const;
++template NANODBC_API void result::get_ref(short, unsigned short&) const;
++template NANODBC_API void result::get_ref(short, int32_t&) const;
++template NANODBC_API void result::get_ref(short, uint32_t&) const;
++template NANODBC_API void result::get_ref(short, int64_t&) const;
++template NANODBC_API void result::get_ref(short, uint64_t&) const;
++template NANODBC_API void result::get_ref(short, float&) const;
++template NANODBC_API void result::get_ref(short, double&) const;
++template NANODBC_API void result::get_ref(short, string_type&) const;
++template NANODBC_API void result::get_ref(short, date&) const;
++template NANODBC_API void result::get_ref(short, timestamp&) const;
++
++template NANODBC_API void result::get_ref(const string_type&, string_type::value_type&) const;
++template NANODBC_API void result::get_ref(const string_type&, short&) const;
++template NANODBC_API void result::get_ref(const string_type&, unsigned short&) const;
++template NANODBC_API void result::get_ref(const string_type&, int32_t&) const;
++template NANODBC_API void result::get_ref(const string_type&, uint32_t&) const;
++template NANODBC_API void result::get_ref(const string_type&, int64_t&) const;
++template NANODBC_API void result::get_ref(const string_type&, uint64_t&) const;
++template NANODBC_API void result::get_ref(const string_type&, float&) const;
++template NANODBC_API void result::get_ref(const string_type&, double&) const;
++template NANODBC_API void result::get_ref(const string_type&, string_type&) const;
++template NANODBC_API void result::get_ref(const string_type&, date&) const;
++template NANODBC_API void result::get_ref(const string_type&, timestamp&) const;
+
+ // The following are the only supported instantiations of result::get_ref() with fallback.
+-template void result::get_ref(short, const string_type::value_type&, string_type::value_type&) const;
+-template void result::get_ref(short, const short&, short&) const;
+-template void result::get_ref(short, const unsigned short&, unsigned short&) const;
+-template void result::get_ref(short, const int32_t&, int32_t&) const;
+-template void result::get_ref(short, const uint32_t&, uint32_t&) const;
+-template void result::get_ref(short, const int64_t&, int64_t&) const;
+-template void result::get_ref(short, const uint64_t&, uint64_t&) const;
+-template void result::get_ref(short, const float&, float&) const;
+-template void result::get_ref(short, const double&, double&) const;
+-template void result::get_ref(short, const string_type&, string_type&) const;
+-template void result::get_ref(short, const date&, date&) const;
+-template void result::get_ref(short, const timestamp&, timestamp&) const;
+-
+-template void result::get_ref(const string_type&, const string_type::value_type&, string_type::value_type&) const;
+-template void result::get_ref(const string_type&, const short&, short&) const;
+-template void result::get_ref(const string_type&, const unsigned short&, unsigned short&) const;
+-template void result::get_ref(const string_type&, const int32_t&, int32_t&) const;
+-template void result::get_ref(const string_type&, const uint32_t&, uint32_t&) const;
+-template void result::get_ref(const string_type&, const int64_t&, int64_t&) const;
+-template void result::get_ref(const string_type&, const uint64_t&, uint64_t&) const;
+-template void result::get_ref(const string_type&, const float&, float&) const;
+-template void result::get_ref(const string_type&, const double&, double&) const;
+-template void result::get_ref(const string_type&, const string_type&, string_type&) const;
+-template void result::get_ref(const string_type&, const date&, date&) const;
+-template void result::get_ref(const string_type&, const timestamp&, timestamp&) const;
++template NANODBC_API void result::get_ref(short, const string_type::value_type&, string_type::value_type&) const;
++template NANODBC_API void result::get_ref(short, const short&, short&) const;
++template NANODBC_API void result::get_ref(short, const unsigned short&, unsigned short&) const;
++template NANODBC_API void result::get_ref(short, const int32_t&, int32_t&) const;
++template NANODBC_API void result::get_ref(short, const uint32_t&, uint32_t&) const;
++template NANODBC_API void result::get_ref(short, const int64_t&, int64_t&) const;
++template NANODBC_API void result::get_ref(short, const uint64_t&, uint64_t&) const;
++template NANODBC_API void result::get_ref(short, const float&, float&) const;
++template NANODBC_API void result::get_ref(short, const double&, double&) const;
++template NANODBC_API void result::get_ref(short, const string_type&, string_type&) const;
++template NANODBC_API void result::get_ref(short, const date&, date&) const;
++template NANODBC_API void result::get_ref(short, const timestamp&, timestamp&) const;
++
++template NANODBC_API void result::get_ref(const string_type&, const string_type::value_type&, string_type::value_type&) const;
++template NANODBC_API void result::get_ref(const string_type&, const short&, short&) const;
++template NANODBC_API void result::get_ref(const string_type&, const unsigned short&, unsigned short&) const;
++template NANODBC_API void result::get_ref(const string_type&, const int32_t&, int32_t&) const;
++template NANODBC_API void result::get_ref(const string_type&, const uint32_t&, uint32_t&) const;
++template NANODBC_API void result::get_ref(const string_type&, const int64_t&, int64_t&) const;
++template NANODBC_API void result::get_ref(const string_type&, const uint64_t&, uint64_t&) const;
++template NANODBC_API void result::get_ref(const string_type&, const float&, float&) const;
++template NANODBC_API void result::get_ref(const string_type&, const double&, double&) const;
++template NANODBC_API void result::get_ref(const string_type&, const string_type&, string_type&) const;
++template NANODBC_API void result::get_ref(const string_type&, const date&, date&) const;
++template NANODBC_API void result::get_ref(const string_type&, const timestamp&, timestamp&) const;
+
+ // The following are the only supported instantiations of result::get().
+-template string_type::value_type result::get(short) const;
+-template short result::get(short) const;
+-template unsigned short result::get(short) const;
+-template int32_t result::get(short) const;
+-template uint32_t result::get(short) const;
+-template int64_t result::get(short) const;
+-template uint64_t result::get(short) const;
+-template float result::get(short) const;
+-template double result::get(short) const;
+-template string_type result::get(short) const;
+-template date result::get(short) const;
+-template timestamp result::get(short) const;
+-
+-template string_type::value_type result::get(const string_type&) const;
+-template short result::get(const string_type&) const;
+-template unsigned short result::get(const string_type&) const;
+-template int32_t result::get(const string_type&) const;
+-template uint32_t result::get(const string_type&) const;
+-template int64_t result::get(const string_type&) const;
+-template uint64_t result::get(const string_type&) const;
+-template float result::get(const string_type&) const;
+-template double result::get(const string_type&) const;
+-template string_type result::get(const string_type&) const;
+-template date result::get(const string_type&) const;
+-template timestamp result::get(const string_type&) const;
++template NANODBC_API string_type::value_type result::get(short) const;
++template NANODBC_API short result::get(short) const;
++template NANODBC_API unsigned short result::get(short) const;
++template NANODBC_API int32_t result::get(short) const;
++template NANODBC_API uint32_t result::get(short) const;
++template NANODBC_API int64_t result::get(short) const;
++template NANODBC_API uint64_t result::get(short) const;
++template NANODBC_API float result::get(short) const;
++template NANODBC_API double result::get(short) const;
++template NANODBC_API string_type result::get(short) const;
++template NANODBC_API date result::get(short) const;
++template NANODBC_API timestamp result::get(short) const;
++
++template NANODBC_API string_type::value_type result::get(const string_type&) const;
++template NANODBC_API short result::get(const string_type&) const;
++template NANODBC_API unsigned short result::get(const string_type&) const;
++template NANODBC_API int32_t result::get(const string_type&) const;
++template NANODBC_API uint32_t result::get(const string_type&) const;
++template NANODBC_API int64_t result::get(const string_type&) const;
++template NANODBC_API uint64_t result::get(const string_type&) const;
++template NANODBC_API float result::get(const string_type&) const;
++template NANODBC_API double result::get(const string_type&) const;
++template NANODBC_API string_type result::get(const string_type&) const;
++template NANODBC_API date result::get(const string_type&) const;
++template NANODBC_API timestamp result::get(const string_type&) const;
+
+ // The following are the only supported instantiations of result::get() with fallback.
+-template string_type::value_type result::get(short, const string_type::value_type&) const;
+-template short result::get(short, const short&) const;
+-template unsigned short result::get(short, const unsigned short&) const;
+-template int32_t result::get(short, const int32_t&) const;
+-template uint32_t result::get(short, const uint32_t&) const;
+-template int64_t result::get(short, const int64_t&) const;
+-template uint64_t result::get(short, const uint64_t&) const;
+-template float result::get(short, const float&) const;
+-template double result::get(short, const double&) const;
+-template string_type result::get(short, const string_type&) const;
+-template date result::get(short, const date&) const;
+-template timestamp result::get(short, const timestamp&) const;
+-
+-template string_type::value_type result::get(const string_type&, const string_type::value_type&) const;
+-template short result::get(const string_type&, const short&) const;
+-template unsigned short result::get(const string_type&, const unsigned short&) const;
+-template int32_t result::get(const string_type&, const int32_t&) const;
+-template uint32_t result::get(const string_type&, const uint32_t&) const;
+-template int64_t result::get(const string_type&, const int64_t&) const;
+-template uint64_t result::get(const string_type&, const uint64_t&) const;
+-template float result::get(const string_type&, const float&) const;
+-template double result::get(const string_type&, const double&) const;
+-template string_type result::get(const string_type&, const string_type&) const;
+-template date result::get(const string_type&, const date&) const;
+-template timestamp result::get(const string_type&, const timestamp&) const;
++template NANODBC_API string_type::value_type result::get(short, const string_type::value_type&) const;
++template NANODBC_API short result::get(short, const short&) const;
++template NANODBC_API unsigned short result::get(short, const unsigned short&) const;
++template NANODBC_API int32_t result::get(short, const int32_t&) const;
++template NANODBC_API uint32_t result::get(short, const uint32_t&) const;
++template NANODBC_API int64_t result::get(short, const int64_t&) const;
++template NANODBC_API uint64_t result::get(short, const uint64_t&) const;
++template NANODBC_API float result::get(short, const float&) const;
++template NANODBC_API double result::get(short, const double&) const;
++template NANODBC_API string_type result::get(short, const string_type&) const;
++template NANODBC_API date result::get(short, const date&) const;
++template NANODBC_API timestamp result::get(short, const timestamp&) const;
++
++template NANODBC_API string_type::value_type result::get(const string_type&, const string_type::value_type&) const;
++template NANODBC_API short result::get(const string_type&, const short&) const;
++template NANODBC_API unsigned short result::get(const string_type&, const unsigned short&) const;
++template NANODBC_API int32_t result::get(const string_type&, const int32_t&) const;
++template NANODBC_API uint32_t result::get(const string_type&, const uint32_t&) const;
++template NANODBC_API int64_t result::get(const string_type&, const int64_t&) const;
++template NANODBC_API uint64_t result::get(const string_type&, const uint64_t&) const;
++template NANODBC_API float result::get(const string_type&, const float&) const;
++template NANODBC_API double result::get(const string_type&, const double&) const;
++template NANODBC_API string_type result::get(const string_type&, const string_type&) const;
++template NANODBC_API date result::get(const string_type&, const date&) const;
++template NANODBC_API timestamp result::get(const string_type&, const timestamp&) const;
+
+ } // namespace nanodbc
+
+diff --git a/src/nanodbc.h b/src/nanodbc.h
+index f4e7b3d..2bfc6a8 100644
+--- a/src/nanodbc.h
++++ b/src/nanodbc.h
+@@ -164,6 +164,16 @@ namespace nanodbc
+ #define NANODBC_NOEXCEPT noexcept
+ #endif
+
++#pragma warning(disable: 4275)
++#pragma warning(disable: 4251)
++#ifdef nanodbc_EXPORTS
++ /* We are building this library */
++ #define NANODBC_API __declspec(dllexport)
++#else
++ /* We are using this library */
++ #define NANODBC_API __declspec(dllimport)
++#endif
++
+ // 8888888888 888 888 888 888 d8b
+ // 888 888 888 888 888 Y8P
+ // 888 888 888 888 888
+@@ -188,16 +198,17 @@ namespace nanodbc
+
+ //! \brief Type incompatible.
+ //! \see exceptions
+-class type_incompatible_error : public std::runtime_error
++class NANODBC_API type_incompatible_error : public std::runtime_error
+ {
+ public:
+ type_incompatible_error();
+ const char* what() const NANODBC_NOEXCEPT;
+ };
+
++
+ //! \brief Accessed null data.
+ //! \see exceptions
+-class null_access_error : public std::runtime_error
++class NANODBC_API null_access_error : public std::runtime_error
+ {
+ public:
+ null_access_error();
+@@ -206,7 +217,7 @@ public:
+
+ //! \brief Index out of range.
+ //! \see exceptions
+-class index_range_error : public std::runtime_error
++class NANODBC_API index_range_error : public std::runtime_error
+ {
+ public:
+ index_range_error();
+@@ -215,7 +226,7 @@ public:
+
+ //! \brief Programming logic error.
+ //! \see exceptions
+-class programming_error : public std::runtime_error
++class NANODBC_API programming_error : public std::runtime_error
+ {
+ public:
+ explicit programming_error(const std::string& info);
+@@ -224,7 +235,7 @@ public:
+
+ //! \brief General database error.
+ //! \see exceptions
+-class database_error : public std::runtime_error
++class NANODBC_API database_error : public std::runtime_error
+ {
+ public:
+ //! \brief Creates a runtime_error with a message describing the last ODBC error generated for the given handle and handle_type.
+@@ -298,7 +309,7 @@ struct timestamp
+ //! \brief A resource for managing transaction commits and rollbacks.
+ //!
+ //! \attention You will want to use transactions if you are doing batch operations because it will prevent auto commits from occurring after each individual operation is executed.
+-class transaction
++class NANODBC_API transaction
+ {
+ public:
+ //! \brief Begin a transaction on the given connection object.
+@@ -361,7 +372,7 @@ private:
+ // MARK: Statement -
+
+ //! \brief Represents a statement on the database.
+-class statement
++class NANODBC_API statement
+ {
+ public:
+ //! \brief Provides support for retrieving output/return parameters.
+@@ -734,7 +745,7 @@ private:
+ // MARK: Connection -
+
+ //! \brief Manages and encapsulates ODBC resources such as the connection and environment handles.
+-class connection
++class NANODBC_API connection
+ {
+ public:
+ //! \brief Create new connection object, initially not connected.
+@@ -903,7 +914,7 @@ class catalog;
+ //!
+ //! \see statement::execute(), statement::execute_direct()
+ //! \note result objects may be copied, however all copies will refer to the same underlying ODBC result set.
+-class result
++class NANODBC_API result
+ {
+ public:
+ //! Empty result set.
+@@ -1023,7 +1034,7 @@ public:
+ //! \param column position.
+ //! \throws database_error, index_range_error, type_incompatible_error, null_access_error
+ template<class T>
+- T get(short column) const;
++ T get(short column) const;
+
+ //! \brief Gets data from the given column of the current rowset.
+ //! If the data is null, fallback is returned instead.
+@@ -1139,7 +1150,7 @@ private:
+ // "Y88P"
+ // MARK: Catalog -
+
+-class catalog
++class NANODBC_API catalog
+ {
+ public:
+
+@@ -1319,7 +1330,7 @@ private:
+ //! \return A result set object.
+ //! \attention You will want to use transactions if you are doing batch operations because it will prevent auto commits from occurring after each individual operation is executed.
+ //! \see open(), prepare(), execute(), result, transaction
+-result execute(
++result NANODBC_API execute(
+ connection& conn
+ , const string_type& query
+ , long batch_operations = 1
+@@ -1333,7 +1344,7 @@ result execute(
+ //! \return A result set object.
+ //! \attention You will want to use transactions if you are doing batch operations because it will prevent auto commits from occurring after each individual operation is executed.
+ //! \see open(), prepare(), execute(), result, transaction
+-void just_execute(
++void NANODBC_API just_execute(
+ connection& conn
+ , const string_type& query
+ , long batch_operations = 1
+@@ -1346,7 +1357,7 @@ void just_execute(
+ //! \return A result set object.
+ //! \attention You will want to use transactions if you are doing batch operations because it will prevent auto commits from occurring after each individual operation is executed.
+ //! \see open(), prepare(), execute(), result
+-result execute(statement& stmt, long batch_operations = 1);
++result NANODBC_API execute(statement& stmt, long batch_operations = 1);
+
+ //! \brief Execute the previously prepared query now and without creating result object.
+ //! \param stmt The prepared statement that will be executed.
+@@ -1355,7 +1366,7 @@ result execute(statement& stmt, long batch_operations = 1);
+ //! \return A result set object.
+ //! \attention You will want to use transactions if you are doing batch operations because it will prevent auto commits from occurring after each individual operation is executed.
+ //! \see open(), prepare(), execute(), result
+-void just_execute(statement& stmt, long batch_operations = 1);
++void NANODBC_API just_execute(statement& stmt, long batch_operations = 1);
+
+ //! \brief Execute the previously prepared query now.
+ //! Executes within the context of a transaction object and commits the transaction directly after execution.
+@@ -1364,7 +1375,7 @@ void just_execute(statement& stmt, long batch_operations = 1);
+ //! \throws database_error
+ //! \return A result set object.
+ //! \see open(), prepare(), execute(), result, transaction
+-result transact(statement& stmt, long batch_operations);
++result NANODBC_API transact(statement& stmt, long batch_operations);
+
+ //! \brief Execute the previously prepared query now and without creating result object.
+ //! Executes within the context of a transaction object and commits the transaction directly after execution.
+@@ -1373,7 +1384,7 @@ result transact(statement& stmt, long batch_operations);
+ //! \throws database_error
+ //! \return A result set object.
+ //! \see open(), prepare(), execute(), result, transaction
+-void just_transact(statement& stmt, long batch_operations);
++void NANODBC_API just_transact(statement& stmt, long batch_operations);
+
+ //! \brief Prepares the given statement to execute on it associated connection.
+ //! If the statement is not open throws programming_error.
+@@ -1382,7 +1393,7 @@ void just_transact(statement& stmt, long batch_operations);
+ //! \param timeout The number in seconds before query timeout. Default is 0 indicating no timeout.
+ //! \see open()
+ //! \throws database_error, programming_error
+-void prepare(statement& stmt, const string_type& query, long timeout = 0);
++void NANODBC_API prepare(statement& stmt, const string_type& query, long timeout = 0);
+
+ //! @}
+
diff --git a/ports/nanodbc/0004_unicode.patch b/ports/nanodbc/0004_unicode.patch
new file mode 100644
index 000000000..a4def235c
--- /dev/null
+++ b/ports/nanodbc/0004_unicode.patch
@@ -0,0 +1,33 @@
+diff --git a/src/nanodbc.cpp b/src/nanodbc.cpp
+index 8e02d4a..c408af7 100644
+--- a/src/nanodbc.cpp
++++ b/src/nanodbc.cpp
+@@ -90,7 +90,7 @@
+ typedef std::u32string wide_string_type;
+ #define NANODBC_CODECVT_TYPE std::codecvt_utf8
+ #else
+- typedef std::u16string wide_string_type;
++ typedef std::wstring wide_string_type;
+ #define NANODBC_CODECVT_TYPE std::codecvt_utf8_utf16
+ #endif
+ typedef wide_string_type::value_type wide_char_t;
+diff --git a/src/nanodbc.h b/src/nanodbc.h
+index f4e7b3d..bb7bacd 100644
+--- a/src/nanodbc.h
++++ b/src/nanodbc.h
+@@ -127,13 +127,13 @@ namespace nanodbc
+
+ //! @}
+
+-// You must explicitly request Unicode support by defining NANODBC_USE_UNICODE at compile time.
++#define NANODBC_USE_UNICODE 1
+ #ifndef DOXYGEN
+ #ifdef NANODBC_USE_UNICODE
+ #ifdef NANODBC_USE_IODBC_WIDE_STRINGS
+ typedef std::u32string string_type;
+ #else
+- typedef std::u16string string_type;
++ typedef std::wstring string_type;
+ #endif
+ #else
+ typedef std::string string_type;
diff --git a/ports/nanodbc/CONTROL b/ports/nanodbc/CONTROL
new file mode 100644
index 000000000..2611bac80
--- /dev/null
+++ b/ports/nanodbc/CONTROL
@@ -0,0 +1,3 @@
+Source: nanodbc
+Version: 2.12.4
+Description: A small C++ wrapper for the native C ODBC API. \ No newline at end of file
diff --git a/ports/nanodbc/portfile.cmake b/ports/nanodbc/portfile.cmake
new file mode 100644
index 000000000..997042e18
--- /dev/null
+++ b/ports/nanodbc/portfile.cmake
@@ -0,0 +1,34 @@
+include(${CMAKE_TRIPLET_FILE})
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/nanodbc-2.12.4)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://github.com/lexicalunit/nanodbc/archive/v2.12.4.tar.gz"
+ FILENAME "nanodbc-2.12.4.tar.gz"
+ SHA512 b9a924516b2a777e5f1497774997672320548722ed53413b0a7ad5d503e2f8ca1099f5059a912b7aae410928f4c4edcdfd02e4cfbf415976cd222697b354b4e6
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES
+ ${CMAKE_CURRENT_LIST_DIR}/0001_cmake.patch
+ ${CMAKE_CURRENT_LIST_DIR}/0002_msvc14_codecvt.patch
+ ${CMAKE_CURRENT_LIST_DIR}/0003_export_def.patch
+ ${CMAKE_CURRENT_LIST_DIR}/0004_unicode.patch
+)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS
+ -DNANODBC_EXAMPLES=OFF
+ -DNANODBC_TEST=OFF
+ -DNANODBC_USE_UNICODE=ON
+)
+
+vcpkg_install_cmake()
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/nanodbc)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/nanodbc/LICENSE ${CURRENT_PACKAGES_DIR}/share/nanodbc/copyright) \ No newline at end of file
diff --git a/ports/spdlog/CONTROL b/ports/spdlog/CONTROL
new file mode 100644
index 000000000..dea187f2e
--- /dev/null
+++ b/ports/spdlog/CONTROL
@@ -0,0 +1,3 @@
+Source: spdlog
+Version: 0.11.0
+Description: Very fast, header only, C++ logging library
diff --git a/ports/spdlog/portfile.cmake b/ports/spdlog/portfile.cmake
new file mode 100644
index 000000000..849bd8feb
--- /dev/null
+++ b/ports/spdlog/portfile.cmake
@@ -0,0 +1,28 @@
+include(${CMAKE_TRIPLET_FILE})
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/spdlog-0.11.0)
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://github.com/gabime/spdlog/archive/v0.11.0.zip"
+ FILENAME "v0.11.0.zip"
+ SHA512 4e759b8a18d0e3f256d974920260ebb6c6792885651290637a8a7210731e1d24a6f662d7dc7d3ae165a78c6e738229bd4b6922f36df26581bf43c8bca7c90314
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+)
+
+vcpkg_install_cmake()
+
+file(MAKE_DIRECTORY
+ ${CURRENT_PACKAGES_DIR}/share
+)
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+file(RENAME ${CURRENT_PACKAGES_DIR}/lib/cmake/spdlog/ ${CURRENT_PACKAGES_DIR}/share/spdlog/)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/cmake)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/cmake)
+
+# Handle copyright
+file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/spdlog)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/spdlog/LICENSE ${CURRENT_PACKAGES_DIR}/share/spdlog/copyright)