This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  d76f31550c9051558da636b859283dad64919bf1 (commit)
       via  2ec97b13028b51904c6bf1cb402cadee126dadfa (commit)
      from  a7d96ecc983b16aa135d3f3a36d6b4d9d605ca85 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d76f31550c9051558da636b859283dad64919bf1
commit d76f31550c9051558da636b859283dad64919bf1
Merge: a7d96ec 2ec97b1
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Tue Sep 15 08:28:16 2015 -0400
Commit:     CMake Topic Stage <kwro...@kitware.com>
CommitDate: Tue Sep 15 08:28:16 2015 -0400

    Merge topic 'FindProtobuf-python-extension' into next
    
    2ec97b13 FindProtobuf: Add protobuf_generate_python function


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2ec97b13028b51904c6bf1cb402cadee126dadfa
commit 2ec97b13028b51904c6bf1cb402cadee126dadfa
Author:     Andreas Bergmeier <a.bergme...@dsfishlabs.com>
AuthorDate: Mon Sep 14 09:41:38 2015 +0200
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Tue Sep 15 08:27:55 2015 -0400

    FindProtobuf: Add protobuf_generate_python function

diff --git a/Help/release/dev/FindProtobuf-python-extension.rst 
b/Help/release/dev/FindProtobuf-python-extension.rst
new file mode 100644
index 0000000..95463bf
--- /dev/null
+++ b/Help/release/dev/FindProtobuf-python-extension.rst
@@ -0,0 +1,6 @@
+FindProtobuf-python-extension
+-----------------------------
+
+* The :module:`FindProtobuf` module gained a new
+  :command:`protobuf_generate_python` function to generate python
+  sources from ``.proto`` files.
diff --git a/Modules/FindProtobuf.cmake b/Modules/FindProtobuf.cmake
index 335c408..4a68cd1 100644
--- a/Modules/FindProtobuf.cmake
+++ b/Modules/FindProtobuf.cmake
@@ -57,17 +57,18 @@
 #   include_directories(${PROTOBUF_INCLUDE_DIRS})
 #   include_directories(${CMAKE_CURRENT_BINARY_DIR})
 #   protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS foo.proto)
+#   protobuf_generate_python(PROTO_PY foo.proto)
 #   add_executable(bar bar.cc ${PROTO_SRCS} ${PROTO_HDRS})
 #   target_link_libraries(bar ${PROTOBUF_LIBRARIES})
 #
 # .. note::
-#   The PROTOBUF_GENERATE_CPP macro and add_executable() or
-#   add_library() calls only work properly within the same
-#   directory.
+#   The ``protobuf_generate_cpp`` and ``protobuf_generate_python``
+#   functions and :command:`add_executable` or :command:`add_library`
+#   calls only work properly within the same directory.
 #
 # .. command:: protobuf_generate_cpp
 #
-#   Add custom commands to process ``.proto`` files::
+#   Add custom commands to process ``.proto`` files to C++::
 #
 #     protobuf_generate_cpp (<SRCS> <HDRS> [<ARGN>...])
 #
@@ -77,6 +78,17 @@
 #     Variable to define with autogenerated header files
 #   ``ARGN``
 #     ``.proto`` files
+#
+# .. command:: protobuf_generate_python
+#
+#   Add custom commands to process ``.proto`` files to Python::
+#
+#     protobuf_generate_python (<PY> [<ARGN>...])
+#
+#   ``PY``
+#     Variable to define with autogenerated Python files
+#   ``ARGN``
+#     ``.proto`` filess
 
 #=============================================================================
 # Copyright 2009 Kitware, Inc.
@@ -147,6 +159,53 @@ function(PROTOBUF_GENERATE_CPP SRCS HDRS)
   set(${HDRS} ${${HDRS}} PARENT_SCOPE)
 endfunction()
 
+function(PROTOBUF_GENERATE_PYTHON SRCS)
+  if(NOT ARGN)
+    message(SEND_ERROR "Error: PROTOBUF_GENERATE_PYTHON() called without any 
proto files")
+    return()
+  endif()
+
+  if(PROTOBUF_GENERATE_CPP_APPEND_PATH)
+    # Create an include path for each file specified
+    foreach(FIL ${ARGN})
+      get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
+      get_filename_component(ABS_PATH ${ABS_FIL} PATH)
+      list(FIND _protobuf_include_path ${ABS_PATH} _contains_already)
+      if(${_contains_already} EQUAL -1)
+          list(APPEND _protobuf_include_path -I ${ABS_PATH})
+      endif()
+    endforeach()
+  else()
+    set(_protobuf_include_path -I ${CMAKE_CURRENT_SOURCE_DIR})
+  endif()
+
+  if(DEFINED PROTOBUF_IMPORT_DIRS)
+    foreach(DIR ${PROTOBUF_IMPORT_DIRS})
+      get_filename_component(ABS_PATH ${DIR} ABSOLUTE)
+      list(FIND _protobuf_include_path ${ABS_PATH} _contains_already)
+      if(${_contains_already} EQUAL -1)
+          list(APPEND _protobuf_include_path -I ${ABS_PATH})
+      endif()
+    endforeach()
+  endif()
+
+  set(${SRCS})
+  foreach(FIL ${ARGN})
+    get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
+    get_filename_component(FIL_WE ${FIL} NAME_WE)
+
+    list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}_pb2.py")
+    add_custom_command(
+      OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}_pb2.py"
+      COMMAND  ${PROTOBUF_PROTOC_EXECUTABLE} --python_out 
${CMAKE_CURRENT_BINARY_DIR} ${_protobuf_include_path} ${ABS_FIL}
+      DEPENDS ${ABS_FIL} ${PROTOBUF_PROTOC_EXECUTABLE}
+      COMMENT "Running Python protocol buffer compiler on ${FIL}"
+      VERBATIM )
+  endforeach()
+
+  set(${SRCS} ${${SRCS}} PARENT_SCOPE)
+endfunction()
+
 if(CMAKE_SIZEOF_VOID_P EQUAL 8)
   set(_PROTOBUF_ARCH_DIR x64/)
 endif()

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/mailman/listinfo/cmake-commits

Reply via email to