diff --git a/ports/gflags/0001-Fix-some-compilation-warnings-with-MSVC-2015.patch b/ports/gflags/0001-Fix-some-compilation-warnings-with-MSVC-2015.patch new file mode 100644 index 00000000000..d099ea61673 --- /dev/null +++ b/ports/gflags/0001-Fix-some-compilation-warnings-with-MSVC-2015.patch @@ -0,0 +1,51 @@ +From 5af642bdfe023a7c857d1d26593af586516bf696 Mon Sep 17 00:00:00 2001 +From: Sergey Sharybin +Date: Thu, 31 Dec 2015 17:16:26 +0500 +Subject: [PATCH] Fix some compilation warnings with MSVC 2015 + +MSVC 2015 already defines vsnprintf() and va_copy(). +--- + src/windows_port.cc | 2 ++ + src/windows_port.h | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/src/windows_port.cc b/src/windows_port.cc +index 1f40458..b5b7194 100644 +--- a/src/windows_port.cc ++++ b/src/windows_port.cc +@@ -44,6 +44,7 @@ + + // These call the windows _vsnprintf, but always NUL-terminate. + #if !defined(__MINGW32__) && !defined(__MINGW64__) /* mingw already defines */ ++#if !(defined(_MSC_VER) && _MSC_VER >= 1900) /* msvc 2015 already defines */ + + #ifdef _MSC_VER + # pragma warning(push) +@@ -68,4 +69,5 @@ int snprintf(char *str, size_t size, const char *format, ...) { + return r; + } + ++#endif /* if !(defined(_MSC_VER) && _MSC_VER >= 1900) */ + #endif /* #if !defined(__MINGW32__) && !defined(__MINGW64__) */ +diff --git a/src/windows_port.h b/src/windows_port.h +index c8ff24f..554b9c9 100644 +--- a/src/windows_port.h ++++ b/src/windows_port.h +@@ -63,12 +63,14 @@ + * name vsnprintf, since windows defines that (but not snprintf (!)). + */ + #if !defined(__MINGW32__) && !defined(__MINGW64__) /* mingw already defines */ ++#if !(defined(_MSC_VER) && _MSC_VER >= 1900) /* msvc 2015 already defines */ + extern GFLAGS_DLL_DECL int snprintf(char *str, size_t size, + const char *format, ...); + extern int GFLAGS_DLL_DECL safe_vsnprintf(char *str, size_t size, + const char *format, va_list ap); + #define vsnprintf(str, size, format, ap) safe_vsnprintf(str, size, format, ap) + #define va_copy(dst, src) (dst) = (src) ++#endif + #endif /* #if !defined(__MINGW32__) && !defined(__MINGW64__) */ + + #ifdef _MSC_VER +-- +2.10.0.windows.1 + diff --git a/ports/gflags/CONTROL b/ports/gflags/CONTROL new file mode 100644 index 00000000000..03977243f38 --- /dev/null +++ b/ports/gflags/CONTROL @@ -0,0 +1,3 @@ +Source: gflags +Version: 2.1.2 +Description: A C++ library that implements commandline flags processing diff --git a/ports/gflags/portfile.cmake b/ports/gflags/portfile.cmake new file mode 100644 index 00000000000..ad407a0fdb4 --- /dev/null +++ b/ports/gflags/portfile.cmake @@ -0,0 +1,54 @@ +include(vcpkg_common_functions) +find_program(GIT git) + +set(GIT_URL "https://github.com/gflags/gflags.git") +set(GIT_TAG "v2.1.2") + +if(NOT EXISTS "${DOWNLOADS}/gflags.git") + message(STATUS "Cloning") + vcpkg_execute_required_process( + COMMAND ${GIT} clone --bare ${GIT_URL} ${DOWNLOADS}/gflags.git + WORKING_DIRECTORY ${DOWNLOADS} + LOGNAME clone + ) +endif() +message(STATUS "Cloning done") + +if(NOT EXISTS "${CURRENT_BUILDTREES_DIR}/src/.git") + message(STATUS "Adding worktree and patching") + file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}) + vcpkg_execute_required_process( + COMMAND ${GIT} worktree add -f --detach ${CURRENT_BUILDTREES_DIR}/src ${GIT_TAG} + WORKING_DIRECTORY ${DOWNLOADS}/gflags.git + LOGNAME worktree + ) + message(STATUS "Patching") + vcpkg_execute_required_process( + COMMAND ${GIT} apply ${CMAKE_CURRENT_LIST_DIR}/0001-Fix-some-compilation-warnings-with-MSVC-2015.patch --ignore-whitespace --whitespace=fix + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/src + LOGNAME patch + ) +endif() +message(STATUS "Adding worktree and patching done") + +vcpkg_configure_cmake( + SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src + OPTIONS + -DBUILD_SHARED_LIBS=ON +) + +vcpkg_build_cmake() +vcpkg_install_cmake() + +file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin) +file(RENAME ${CURRENT_PACKAGES_DIR}/cmake ${CURRENT_PACKAGES_DIR}/share/gflags) +file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gflags.dll ${CURRENT_PACKAGES_DIR}/bin/gflags.dll) +file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gflags_nothreads.dll ${CURRENT_PACKAGES_DIR}/bin/gflags_nothreads.dll) +file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gflags.dll ${CURRENT_PACKAGES_DIR}/debug/bin/gflags.dll) +file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gflags_nothreads.dll ${CURRENT_PACKAGES_DIR}/debug/bin/gflags_nothreads.dll) + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug) + +file(INSTALL ${CURRENT_BUILDTREES_DIR}/src/COPYING.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/gflags RENAME copyright) + +vcpkg_copy_pdbs()