1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- # ---[ Protobuf
- # We will try to use the config mode first, and then manual find.
- find_package(Protobuf CONFIG QUIET)
- if(NOT Protobuf_FOUND)
- find_package(Protobuf MODULE QUIET)
- endif()
- if((TARGET protobuf::libprotobuf OR TARGET protobuf::libprotobuf-lite) AND TARGET protobuf::protoc)
- # Hooray. This is the most ideal situation, meaning that you either have a
- # Protobuf config file installed (like on Windows), or you are using a
- # modern CMake that ships with a FindProtobuf.cmake file that produces
- # modern targets.
- message(STATUS "Caffe2: Found protobuf with new-style protobuf targets.")
- elseif(Protobuf_FOUND OR PROTOBUF_FOUND)
- # If the modern targets are not present, we will generate them for you for
- # backward compatibility. This is backported from CMake's new FindProtobuf.cmake
- # content.
- if((NOT PROTOBUF_LIBRARY) AND (NOT PROTOBUF_LITE_LIBRARY))
- message(FATAL_ERROR
- "Caffe2: Found protobuf with old style targets, but could not find targets."
- " PROTOBUF_LIBRARY: " ${PROTOBUF_LIBRARY}
- " PROTOBUF_LITE_LIBRARY: " ${PROTOBUF_LITE_LIBRARY}
- " Protobuf_LIBRARY: " ${Protobuf_LIBRARY}
- " Protobuf_LITE_LIBRARY: " ${Protobuf_LITE_LIBRARY})
- endif()
- message(STATUS "Caffe2: Found protobuf with old-style protobuf targets.")
- if(PROTOBUF_LIBRARY)
- if(NOT TARGET protobuf::libprotobuf)
- add_library(protobuf::libprotobuf UNKNOWN IMPORTED)
- set_target_properties(protobuf::libprotobuf PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${PROTOBUF_INCLUDE_DIRS}")
- endif()
- if(EXISTS "${PROTOBUF_LIBRARY}")
- set_target_properties(protobuf::libprotobuf PROPERTIES
- IMPORTED_LOCATION "${PROTOBUF_LIBRARY}")
- endif()
- if(EXISTS "${PROTOBUF_LIBRARY_RELEASE}")
- set_property(TARGET protobuf::libprotobuf APPEND PROPERTY
- IMPORTED_CONFIGURATIONS RELEASE)
- set_target_properties(protobuf::libprotobuf PROPERTIES
- IMPORTED_LOCATION_RELEASE "${PROTOBUF_LIBRARY_RELEASE}")
- endif()
- if(EXISTS "${PROTOBUF_LIBRARY_DEBUG}")
- set_property(TARGET protobuf::libprotobuf APPEND PROPERTY
- IMPORTED_CONFIGURATIONS DEBUG)
- set_target_properties(protobuf::libprotobuf PROPERTIES
- IMPORTED_LOCATION_DEBUG "${PROTOBUF_LIBRARY_DEBUG}")
- endif()
- endif()
- if(PROTOBUF_LITE_LIBRARY)
- if(NOT TARGET protobuf::libprotobuf-lite)
- add_library(protobuf::libprotobuf-lite UNKNOWN IMPORTED)
- set_target_properties(protobuf::libprotobuf-lite PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${PROTOBUF_INCLUDE_DIRS}")
- endif()
- if(EXISTS "${PROTOBUF_LITE_LIBRARY}")
- set_target_properties(protobuf::libprotobuf-lite PROPERTIES
- IMPORTED_LOCATION "${PROTOBUF_LITE_LIBRARY}")
- endif()
- if(EXISTS "${PROTOBUF_LITE_LIBRARY_RELEASE}")
- set_property(TARGET protobuf::libprotobuf-lite APPEND PROPERTY
- IMPORTED_CONFIGURATIONS RELEASE)
- set_target_properties(protobuf::libprotobuf-lite PROPERTIES
- IMPORTED_LOCATION_RELEASE "${PROTOBUF_LITE_LIBRARY_RELEASE}")
- endif()
- if(EXISTS "${PROTOBUF_LITE_LIBRARY_DEBUG}")
- set_property(TARGET protobuf::libprotobuf-lite APPEND PROPERTY
- IMPORTED_CONFIGURATIONS DEBUG)
- set_target_properties(protobuf::libprotobuf-lite PROPERTIES
- IMPORTED_LOCATION_DEBUG "${PROTOBUF_LITE_LIBRARY_DEBUG}")
- endif()
- endif()
- if(PROTOBUF_PROTOC_EXECUTABLE)
- if(NOT TARGET protobuf::protoc)
- add_executable(protobuf::protoc IMPORTED)
- endif()
- set_property(TARGET protobuf::protoc PROPERTY
- IMPORTED_LOCATION ${PROTOBUF_PROTOC_EXECUTABLE})
- endif()
- endif()
- # After above, we should have the protobuf related target now.
- if((NOT TARGET protobuf::libprotobuf) AND (NOT TARGET protobuf::libprotobuf-lite))
- message(WARNING
- "Protobuf cannot be found. Depending on whether you are building Caffe2 "
- "or a Caffe2 dependent library, the next warning / error will give you "
- "more info.")
- endif()
|