From 6c8c96aad1af6b60ecbf714b8df70bea2330d383 Mon Sep 17 00:00:00 2001 From: Jozef Izso Date: Thu, 31 May 2018 19:38:42 +0200 Subject: Patch protobuf to fix the compilation error C4146 in wire_format_lite.h (#3353) Fixes #3352 --- ports/protobuf/CONTROL | 2 +- ports/protobuf/portfile.cmake | 1 + .../wire_format_lite_h_fix_error_C4146.patch | 35 ++++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 ports/protobuf/wire_format_lite_h_fix_error_C4146.patch diff --git a/ports/protobuf/CONTROL b/ports/protobuf/CONTROL index 8b149b051..5df6f1f69 100644 --- a/ports/protobuf/CONTROL +++ b/ports/protobuf/CONTROL @@ -1,5 +1,5 @@ Source: protobuf -Version: 3.5.1-4 +Version: 3.5.1-5 Description: Protocol Buffers - Google's data interchange format Feature: zlib diff --git a/ports/protobuf/portfile.cmake b/ports/protobuf/portfile.cmake index f96b5240b..87576dea1 100644 --- a/ports/protobuf/portfile.cmake +++ b/ports/protobuf/portfile.cmake @@ -20,6 +20,7 @@ vcpkg_apply_patches( "${CMAKE_CURRENT_LIST_DIR}/export-ParseGeneratorParameter.patch" "${CMAKE_CURRENT_LIST_DIR}/js-embed.patch" "${CMAKE_CURRENT_LIST_DIR}/fix-uwp.patch" + "${CMAKE_CURRENT_LIST_DIR}/wire_format_lite_h_fix_error_C4146.patch" ) if(CMAKE_HOST_WIN32) diff --git a/ports/protobuf/wire_format_lite_h_fix_error_C4146.patch b/ports/protobuf/wire_format_lite_h_fix_error_C4146.patch new file mode 100644 index 000000000..b56892a22 --- /dev/null +++ b/ports/protobuf/wire_format_lite_h_fix_error_C4146.patch @@ -0,0 +1,35 @@ +From 24493eef9395e5b832360e12efabf9c363c9cb15 Mon Sep 17 00:00:00 2001 +From: Rodrigo Hernandez +Date: Mon, 4 Dec 2017 19:04:42 -0600 +Subject: [PATCH] Using binary one's complement to negate an unsigned int + +This removes a Visual Studio warning: + +warning C4146: unary minus operator applied to unsigned type, result +still unsigned. +--- + src/google/protobuf/wire_format_lite.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/google/protobuf/wire_format_lite.h b/src/google/protobuf/wire_format_lite.h +index cf614c02a4..361920b8ec 100644 +--- a/src/google/protobuf/wire_format_lite.h ++++ b/src/google/protobuf/wire_format_lite.h +@@ -860,7 +860,7 @@ inline uint32 WireFormatLite::ZigZagEncode32(int32 n) { + + inline int32 WireFormatLite::ZigZagDecode32(uint32 n) { + // Note: Using unsigned types prevent undefined behavior +- return static_cast((n >> 1) ^ -(n & 1)); ++ return static_cast((n >> 1) ^ (~(n & 1) + 1)); + } + + inline uint64 WireFormatLite::ZigZagEncode64(int64 n) { +@@ -871,7 +871,7 @@ inline uint64 WireFormatLite::ZigZagEncode64(int64 n) { + + inline int64 WireFormatLite::ZigZagDecode64(uint64 n) { + // Note: Using unsigned types prevent undefined behavior +- return static_cast((n >> 1) ^ -(n & 1)); ++ return static_cast((n >> 1) ^ (~(n & 1) + 1)); + } + + // String is for UTF-8 text only, but, even so, ReadString() can simply -- cgit v1.2.3 From 1fa2673ab6f1d62dd0797497d2bf968bf8cd61aa Mon Sep 17 00:00:00 2001 From: Eric Hripko Date: Thu, 31 May 2018 18:43:22 +0100 Subject: New package: bde (#3413) * Add initial implementation for BDE port * Implement compatibility with *nix platforms * Pin down BDE version to 3.2.0.0 * Change the folder structure to reflect version * .pc files in dbg build point to correct incl. dirs * Remove the default header listing all variables --- ports/bde/CONTROL | 3 + ports/bde/portfile.cmake | 141 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+) create mode 100644 ports/bde/CONTROL create mode 100644 ports/bde/portfile.cmake diff --git a/ports/bde/CONTROL b/ports/bde/CONTROL new file mode 100644 index 000000000..129bf8349 --- /dev/null +++ b/ports/bde/CONTROL @@ -0,0 +1,3 @@ +Source: bde +Version: 3.2.0.0 +Description: Basic Development Environment - a set of foundational C++ libraries used at Bloomberg. diff --git a/ports/bde/portfile.cmake b/ports/bde/portfile.cmake new file mode 100644 index 000000000..5c72156e1 --- /dev/null +++ b/ports/bde/portfile.cmake @@ -0,0 +1,141 @@ +include(vcpkg_common_functions) +set(BDE_VERSION 3.2.0.0) +set(BDE_TOOLS_VERSION 1.x) + +# Paths used in build +set(SOURCE_PATH_DEBUG ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/bde-${BDE_VERSION}) +set(SOURCE_PATH_RELEASE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/bde-${BDE_VERSION}) + +# Acquire Python 2 and add it to PATH +vcpkg_find_acquire_program(PYTHON2) +get_filename_component(PYTHON2_EXE_PATH ${PYTHON2} DIRECTORY) + +# Acquire BDE Tools and add them to PATH +vcpkg_from_github( + OUT_SOURCE_PATH TOOLS_PATH + REPO "bloomberg/bde-tools" + REF d4b1a7670829228f4ec81ecdccc598ce03ae8e80 + SHA512 80af734c080adb225d5369157301ae0af18e02b1912351e34d23f5f2ba4e19f9ae2b5a367923f036330c9f9afd11a90cdf12680eb3e59b4297a312a1b713f17f + HEAD_REF master +) +message(STATUS "Configure bde-tools-v${BDE_TOOLS_VERSION}") +if(VCPKG_CMAKE_SYSTEM_NAME) + set(ENV{PATH} "$ENV{PATH}:${PYTHON2_EXE_PATH}") + set(ENV{PATH} "$ENV{PATH}:${TOOLS_PATH}/bin") +else() + set(ENV{PATH} "$ENV{PATH};${PYTHON2_EXE_PATH}") + set(ENV{PATH} "$ENV{PATH};${TOOLS_PATH}/bin") +endif() + +# Acquire BDE sources +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO "bloomberg/bde" + REF 3720d132d0879f19b9084cca62ebc75f1f24e1a3 + SHA512 234ebb71997f5b7d3951584235ead10f977689cef323ae1c198629a6b1995b1481d8a1515d827c46df10209bdc66e1f3cc7780dafee9ca0ff4172be47c460d78 + HEAD_REF master +) + +# Clean up previous builds +file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel + ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg) + +# Identify waf executable and calculate configure args +if(VCPKG_CMAKE_SYSTEM_NAME) + set(WAF_COMMAND waf) +else() + set(WAF_COMMAND waf.bat) +endif() +set(CONFIGURE_COMMON_ARGS --use-flat-include-dir) +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(CONFIGURE_COMMON_ARGS ${CONFIGURE_COMMON_ARGS} --abi-bits=32) +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(CONFIGURE_COMMON_ARGS ${CONFIGURE_COMMON_ARGS} --abi-bits=64) +else() + message(FATAL_ERROR "Unsupported target architecture: ${VCPKG_TARGET_ARCHITECTURE}") +endif() +if(VCPKG_LIBRARY_LINKAGE STREQUAL static) + set(CONFIGURE_COMMON_ARGS ${CONFIGURE_COMMON_ARGS} --library-type=static) +else() + message(FATAL_ERROR "Unsupported library linkage: ${VCPKG_LIBRARY_LINKAGE}") +endif() +if(NOT VCPKG_CMAKE_SYSTEM_NAME) + if(VCPKG_CRT_LINKAGE STREQUAL static) + set(CONFIGURE_COMMON_ARGS ${CONFIGURE_COMMON_ARGS} --msvc-runtime-type=static) + else() + set(CONFIGURE_COMMON_ARGS ${CONFIGURE_COMMON_ARGS} --msvc-runtime-type=dynamic) + endif() +endif() + +# Configure debug +message(STATUS "Configuring ${TARGET_TRIPLET}-dbg") +vcpkg_execute_required_process( + COMMAND ${WAF_COMMAND} configure ${CONFIGURE_COMMON_ARGS} + --prefix=${CURRENT_PACKAGES_DIR}/debug --out=${SOURCE_PATH_DEBUG} + --build-type=debug + WORKING_DIRECTORY ${SOURCE_PATH} + LOGNAME configure-${TARGET_TRIPLET}--dbg +) +message(STATUS "Configuring ${TARGET_TRIPLET}-dbg done") + +# Build debug +message(STATUS "Building ${TARGET_TRIPLET}-dbg") +vcpkg_execute_required_process( + COMMAND ${WAF_COMMAND} build + WORKING_DIRECTORY ${SOURCE_PATH} + LOGNAME build-${TARGET_TRIPLET}--dbg +) +message(STATUS "Building ${TARGET_TRIPLET}-dbg done") + +# Install debug +message(STATUS "Installing ${TARGET_TRIPLET}-dbg") +vcpkg_execute_required_process( + COMMAND ${WAF_COMMAND} install + WORKING_DIRECTORY ${SOURCE_PATH} + LOGNAME install-${TARGET_TRIPLET}--dbg +) +# Include files should not be duplicated +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +# pkg-config files should point to correct include directory +file(GLOB PC_FILES "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/*.pc") +foreach(PC_FILE_NAME ${PC_FILES}) + file(READ "${PC_FILE_NAME}" _contents) + string(REPLACE "includedir=\${prefix}/include" "includedir=\${prefix}/../include" _contents "${_contents}") + file(WRITE "${PC_FILE_NAME}" "${_contents}") +endforeach() +message(STATUS "Installing ${TARGET_TRIPLET}-dbg done") + +# Configure release +message(STATUS "Configuring ${TARGET_TRIPLET}-rel") +vcpkg_execute_required_process( + COMMAND ${WAF_COMMAND} configure ${CONFIGURE_COMMON_ARGS} + --prefix=${CURRENT_PACKAGES_DIR} --out=${SOURCE_PATH_RELEASE} + --build-type=release + WORKING_DIRECTORY ${SOURCE_PATH} + LOGNAME configure-${TARGET_TRIPLET}--rel +) +message(STATUS "Configuring ${TARGET_TRIPLET}-rel done") + +# Build release +message(STATUS "Building ${TARGET_TRIPLET}-rel") +vcpkg_execute_required_process( + COMMAND ${WAF_COMMAND} build + WORKING_DIRECTORY ${SOURCE_PATH} + LOGNAME build-${TARGET_TRIPLET}--rel +) +message(STATUS "Building ${TARGET_TRIPLET}-rel done") + +# Install release +message(STATUS "Installing ${TARGET_TRIPLET}-rel") +vcpkg_execute_required_process( + COMMAND ${WAF_COMMAND} install + WORKING_DIRECTORY ${SOURCE_PATH} + LOGNAME install-${TARGET_TRIPLET}--rel +) +message(STATUS "Installing ${TARGET_TRIPLET}-rel done") + +# Handle copyright +file(INSTALL ${SOURCE_PATH}/LICENSE + DESTINATION ${CURRENT_PACKAGES_DIR}/share/bde + RENAME copyright +) -- cgit v1.2.3