aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormyd7349 <myd7349@gmail.com>2019-03-05 15:07:10 +0800
committerPhil Christensen <philc@microsoft.com>2019-03-04 23:07:10 -0800
commitb4e1885c7050dffaf41dba763d7982b8dc7bb03e (patch)
tree4be347794209dcf783c8d21cfbf2ebf0bf19a78d
parentc5fc595443723a8ece6c0aa166eb0842982cd371 (diff)
downloadvcpkg-b4e1885c7050dffaf41dba763d7982b8dc7bb03e.tar.gz
vcpkg-b4e1885c7050dffaf41dba763d7982b8dc7bb03e.zip
[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
-rw-r--r--ports/nanopb/CONTROL3
-rw-r--r--ports/nanopb/portfile.cmake47
-rw-r--r--ports/nanopb/shared-lib.patch22
3 files changed, 72 insertions, 0 deletions
diff --git a/ports/nanopb/CONTROL b/ports/nanopb/CONTROL
new file mode 100644
index 000000000..0916582fe
--- /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 000000000..278b3c7bb
--- /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 000000000..0d5960e72
--- /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
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+ )