File: protoc.cmake

package info (click to toggle)
tiny-dnn 1.0.0a3%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 4,760 kB
  • sloc: cpp: 16,471; ansic: 11,829; lisp: 3,682; python: 3,422; makefile: 206
file content (50 lines) | stat: -rw-r--r-- 2,459 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Try to prepare caffe.pb.cc and caffe.pb.h
#
# - If we can't find Protobuf, do nothing.
# - If we have Protobuf and already have caffe.pb.cc/h under io/caffe,
#   we just set PROTO_CPP_AVAILABLE variable.
# - If we have Protobuf and Protoc but haven't caffe.pb.cc/h,
#   we'll add additional target to generate these files (generated_proto),
#   and set PROTO_CPP_AVAILABLE AND PROTO_CPP_GENERATE variables.
#
#   Since protoc will be invoked at the compile time (not the configuration time),
#   we must add add_dependencies(xxx generated_proto) line to ensure
#   our target needs generated proto files to build.

find_package(Protobuf QUIET)

if(PROTOBUF_FOUND)
    set(proto_file "${CMAKE_SOURCE_DIR}/tiny_dnn/io/caffe/caffe.pb.cc")
    if(EXISTS ${proto_file})
        message(STATUS "Found proto-file: ${proto_file}")
        set (PROTO_CPP_AVAILABLE "YES")
# As of Ubuntu 14.04 protoc is no longer a part of libprotobuf-dev package
# and should be installed separately as in: sudo apt-get install protobuf-compiler
    elseif(EXISTS ${PROTOBUF_PROTOC_EXECUTABLE})
        message(STATUS "Found PROTOBUF Compiler: ${PROTOBUF_PROTOC_EXECUTABLE}")
        if(EXISTS ${CMAKE_SOURCE_DIR}/tiny_dnn/io/caffe/caffe.proto)
            # Note that this line doesn't invoke protoc at configure time
            PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS
                ${CMAKE_SOURCE_DIR}/tiny_dnn/io/caffe/caffe.proto)

            add_custom_target(generated_proto DEPENDS ${PROTO_SRCS} ${PROTO_HDRS})

            # We need to invoke the copy after protoc compile finished
            add_custom_command(TARGET generated_proto PRE_BUILD
                               COMMAND ${CMAKE_COMMAND} -E copy
                               ${PROTO_SRCS} ${CMAKE_SOURCE_DIR}/tiny_dnn/io/caffe)
            add_custom_command(TARGET generated_proto PRE_BUILD
                               COMMAND ${CMAKE_COMMAND} -E copy
                               ${PROTO_HDRS} ${CMAKE_SOURCE_DIR}/tiny_dnn/io/caffe)

            set (PROTO_CPP_AVAILABLE "YES")                
            set (PROTO_CPP_GENERATE "YES")
        else()
            message(STATUS "Cannot generate C++ proto files, please provide Protobuf file.")
        endif()
    else()
        message(STATUS "Proto is not linked correctly, please make sure file exists.")
    endif()
else(PROTOBUF_FOUND)
    message(STATUS "Cannot generate Caffe Importer. Please install Protobuf.")
endif(PROTOBUF_FOUND)