Added CMake project
authorKonstantin Podsvirov <konstantin@podsvirov.pro>
Tue, 26 Jul 2016 20:33:33 +0000 (23:33 +0300)
committerKonstantin Podsvirov <konstantin@podsvirov.pro>
Tue, 26 Jul 2016 20:33:33 +0000 (23:33 +0300)
CMakeLists.txt [new file with mode: 0644]
extra/nanopb-config-version.cmake.in [new file with mode: 0644]
extra/nanopb-config.cmake [new file with mode: 0644]
tools/set_version.sh

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644 (file)
index 0000000..7b19f28
--- /dev/null
@@ -0,0 +1,59 @@
+cmake_minimum_required(VERSION 2.8)
+
+project(nanopb C)
+
+set(nanopb_VERSION_STRING nanopb-0.3.7-dev)
+
+string(REPLACE "nanopb-" "" nanopb_VERSION ${nanopb_VERSION_STRING})
+
+option(nanopb_MSVC_STATIC_RUNTIME "Link static runtime libraries" ON)
+
+if(NOT DEFINED CMAKE_DEBUG_POSTFIX)
+    set(CMAKE_DEBUG_POSTFIX "d")
+endif()
+
+if(MSVC AND nanopb_MSVC_STATIC_RUNTIME)
+    foreach(flag_var
+            CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
+            CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
+        if(${flag_var} MATCHES "/MD")
+            string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
+        endif(${flag_var} MATCHES "/MD")
+    endforeach(flag_var)
+endif()
+
+add_library(libprotobuf-nanopb STATIC
+    pb.h
+    pb_common.h
+    pb_common.c
+    pb_encode.h
+    pb_encode.c
+    pb_decode.h
+    pb_decode.c)
+
+target_include_directories(libprotobuf-nanopb INTERFACE
+  $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+)
+
+include(GNUInstallDirs)
+
+if(NOT DEFINED CMAKE_INSTALL_CMAKEDIR)
+    set(CMAKE_INSTALL_CMAKEDIR "lib/cmake/nanopb")
+endif()
+
+install(TARGETS libprotobuf-nanopb EXPORT nanopb-targets
+    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
+install(EXPORT nanopb-targets
+    DESTINATION ${CMAKE_INSTALL_CMAKEDIR}
+    NAMESPACE nanopb::)
+
+configure_file(extra/nanopb-config-version.cmake.in
+    nanopb-config-version.cmake @ONLY)
+
+install(FILES extra/nanopb-config.cmake
+    ${CMAKE_CURRENT_BINARY_DIR}/nanopb-config-version.cmake
+    DESTINATION ${CMAKE_INSTALL_CMAKEDIR})
+
+install(FILES pb.h pb_common.h pb_encode.h pb_decode.h
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
diff --git a/extra/nanopb-config-version.cmake.in b/extra/nanopb-config-version.cmake.in
new file mode 100644 (file)
index 0000000..f9292a8
--- /dev/null
@@ -0,0 +1,11 @@
+set(PACKAGE_VERSION "@nanopb_VERSION@")\r
+\r
+# Check whether the requested PACKAGE_FIND_VERSION is compatible\r
+if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")\r
+    set(PACKAGE_VERSION_COMPATIBLE FALSE)\r
+else()\r
+    set(PACKAGE_VERSION_COMPATIBLE TRUE)\r
+    if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")\r
+        set(PACKAGE_VERSION_EXACT TRUE)\r
+    endif()\r
+endif()\r
diff --git a/extra/nanopb-config.cmake b/extra/nanopb-config.cmake
new file mode 100644 (file)
index 0000000..4f726a6
--- /dev/null
@@ -0,0 +1 @@
+include(${CMAKE_CURRENT_LIST_DIR}/nanopb-targets.cmake)\r
index e15a859..f989308 100755 (executable)
@@ -6,5 +6,6 @@
 
 sed -i -e 's/nanopb_version\s*=\s*"[^"]*"/nanopb_version = "'$1'"/' generator/nanopb_generator.py
 sed -i -e 's/#define\s*NANOPB_VERSION\s*.*/#define NANOPB_VERSION '$1'/' pb.h
+sed -i -e 's/set(\s*nanopb_VERSION_STRING\s*[^)]*)/set(nanopb_VERSION_STRING '$1')/' CMakeLists.txt