From b4e1885c7050dffaf41dba763d7982b8dc7bb03e Mon Sep 17 00:00:00 2001 From: myd7349 Date: Tue, 5 Mar 2019 15:07:10 +0800 Subject: [PATCH] [nanopb] Add new port (#5057) * [nanopb] Add new port * [nanopb] Always use static linkage * [nanopb] Update to 2019-02-12 and add shared lib building support * [nanopb] Add missing patch file * [nanopb] Copy pdb file * [nanopb] Add some warnings --- ports/nanopb/CONTROL | 3 +++ ports/nanopb/portfile.cmake | 47 +++++++++++++++++++++++++++++++++++ ports/nanopb/shared-lib.patch | 22 ++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 ports/nanopb/CONTROL create mode 100644 ports/nanopb/portfile.cmake create mode 100644 ports/nanopb/shared-lib.patch diff --git a/ports/nanopb/CONTROL b/ports/nanopb/CONTROL new file mode 100644 index 00000000000..0916582fed7 --- /dev/null +++ b/ports/nanopb/CONTROL @@ -0,0 +1,3 @@ +Source: nanopb +Version: 2019-02-12-1 +Description: A small code-size Protocol Buffers implementation in ANSI C. diff --git a/ports/nanopb/portfile.cmake b/ports/nanopb/portfile.cmake new file mode 100644 index 00000000000..278b3c7bbbd --- /dev/null +++ b/ports/nanopb/portfile.cmake @@ -0,0 +1,47 @@ +include(vcpkg_common_functions) + +if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) + message(WARNING "\ +The author of nanopb advises using this lib as a static library. \ +For more details, please visit: \ +https://github.com/nanopb/nanopb/pull/383#issuecomment-467852459" + ) +endif () + +message(WARNING "\ +The nanopb's code generator is not installed as part of the installation \ +currently. So you have to run the code generator manually." +) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO nanopb/nanopb + REF d1305ddef1c18b4cb33992254494ccd255701aaa + SHA512 70e588b0ff13846005658a9fafe57551dc2c126a32f351fe0b6c166c142c42b3bcc44567288f609f2f3a5adc1fe1bf1c585fec8c5fe90817b5b3ab47955aa1fc + HEAD_REF master + PATCHES + shared-lib.patch +) + +string(COMPARE EQUAL ${VCPKG_LIBRARY_LINKAGE} "static" BUILD_STATIC_LIBS) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -Dnanopb_BUILD_RUNTIME=ON + -Dnanopb_BUILD_GENERATOR=OFF + -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -Dnanopb_MSVC_STATIC_RUNTIME=OFF +) + +vcpkg_install_cmake() + +vcpkg_copy_pdbs() + +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/${PORT}) + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) + +# Handle copyright +configure_file(${SOURCE_PATH}/LICENSE.txt ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright COPYONLY) diff --git a/ports/nanopb/shared-lib.patch b/ports/nanopb/shared-lib.patch new file mode 100644 index 00000000000..0d5960e720a --- /dev/null +++ b/ports/nanopb/shared-lib.patch @@ -0,0 +1,22 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b818734..174b650 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -67,6 +67,7 @@ endif() + + if(nanopb_BUILD_RUNTIME) + if(BUILD_SHARED_LIBS) ++ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + add_library(protobuf-nanopb SHARED + pb.h + pb_common.h +@@ -79,7 +80,8 @@ if(nanopb_BUILD_RUNTIME) + SOVERSION ${nanopb_SOVERSION}) + install(TARGETS protobuf-nanopb EXPORT nanopb-targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + target_include_directories(protobuf-nanopb INTERFACE + $ + )