Move sources of Caffe, Caffe2, TensorFlow Lite, ONNX importers from `nnc` to top-level `compiler` directory.
Signed-off-by: Sergei Barannikov <s.barannikov@samsung.com>
--- /dev/null
+nncc_find_package(CaffeProto QUIET)
+
+if (NOT CaffeProto_FOUND)
+ return()
+endif ()
+
+set(MIR_CAFFE_IMPORTER_SOURCES
+ caffe_importer.cpp
+ caffe_importer.h
+ caffe_op_creator.cpp
+ caffe_op_creator.h
+ caffe_op_types.h)
+
+add_library(mir_caffe_importer STATIC ${MIR_CAFFE_IMPORTER_SOURCES})
+set_target_properties(mir_caffe_importer PROPERTIES POSITION_INDEPENDENT_CODE ON)
+target_include_directories(mir_caffe_importer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+target_link_libraries(mir_caffe_importer PUBLIC mir caffeproto)
--- /dev/null
+require("mir")
--- /dev/null
+nncc_find_package(PytorchSource QUIET)
+nncc_find_package(Protobuf QUIET)
+
+if (NOT PytorchSource_FOUND OR NOT Protobuf_FOUND)
+ return()
+endif()
+
+Protobuf_Generate(CAFFE2_PROTO "${CMAKE_CURRENT_BINARY_DIR}/generated/caffe2"
+ "${PytorchSource_DIR}" "caffe2/proto/caffe2.proto")
+
+add_library(caffe2proto STATIC ${CAFFE2_PROTO_SOURCES})
+set_target_properties(caffe2proto PROPERTIES POSITION_INDEPENDENT_CODE ON)
+target_include_directories(caffe2proto PUBLIC ${CAFFE2_PROTO_INCLUDE_DIRS})
+target_link_libraries(caffe2proto PUBLIC libprotobuf)
+
+
+set(MIR_CAFFE2_IMPORTER_SOURCES
+ caffe2_importer.cpp
+ caffe2_importer.h
+ caffe2_op_creator.cpp
+ caffe2_op_creator.h
+ caffe2_op_types.h
+ caffe2_proto_helper.cpp
+ caffe2_proto_helper.h)
+
+add_library(mir_caffe2_importer STATIC ${MIR_CAFFE2_IMPORTER_SOURCES})
+set_target_properties(mir_caffe2_importer PROPERTIES POSITION_INDEPENDENT_CODE ON)
+target_include_directories(mir_caffe2_importer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+target_link_libraries(mir_caffe2_importer PUBLIC mir caffe2proto)
--- /dev/null
+require("mir")
--- /dev/null
+nncc_find_package(ONNXProto QUIET)
+
+if (NOT ONNXProto_FOUND)
+ return()
+endif ()
+
+set(MIR_ONNX_IMPORTER_SOURCES
+ ONNXImporterImpl.cpp
+ ONNXImporterImpl.h
+ ONNXOpCreator.cpp
+ ONNXOpCreator.h
+ ONNXOpType.h
+ ONNXPerfectHash.h)
+
+add_library(mir_onnx_importer STATIC ${MIR_ONNX_IMPORTER_SOURCES})
+set_target_properties(mir_onnx_importer PROPERTIES POSITION_INDEPENDENT_CODE ON)
+target_compile_definitions(mir_onnx_importer PUBLIC ONNX_NAMESPACE=onnx)
+target_include_directories(mir_onnx_importer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+target_link_libraries(mir_onnx_importer PUBLIC onnxproto mir)
--- /dev/null
+require("mir")
--- /dev/null
+nncc_find_package(FlatBuffers REQUIRED)
+
+if (NOT FlatBuffers_FOUND)
+ return()
+endif ()
+
+FlatBuffers_Target(mir_tflite_schema
+ OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated/schema"
+ SCHEMA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/schema"
+ SCHEMA_FILES schema.fbs)
+
+
+set(MIR_TFLITE_IMPORTER_SOURCES
+ tflite_importer.cpp
+ tflite_importer.h
+ tflite_op_creator.cpp
+ tflite_op_creator.h)
+
+add_library(mir_tflite_importer STATIC ${MIR_TFLITE_IMPORTER_SOURCES})
+set_target_properties(mir_tflite_importer PROPERTIES POSITION_INDEPENDENT_CODE ON)
+target_include_directories(mir_tflite_importer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+target_link_libraries(mir_tflite_importer PUBLIC mir mir_tflite_schema)
--- /dev/null
+require("mir")
set(NNC_HDF5_SUPPORTED OFF)
endif()
-# We need protobuf and pytorch sources to generate caffe2.pb.h and caffe2.pb.cc
-nncc_find_package(PytorchSource QUIET)
-nncc_find_package(Protobuf QUIET)
-if(Protobuf_FOUND AND PytorchSource_FOUND)
+if(TARGET mir_caffe2_importer)
set(NNC_FRONTEND_CAFFE2_ENABLED ON)
else()
- if(NOT Protobuf_FOUND)
- message(WARNING "Protobuf not found, nnc caffe2 frontend will not be available")
- endif()
- if(NOT PytorchSource_FOUND)
- message(WARNING "PyTorch not found, nnc caffe2 frontend will not be available")
- endif()
set(NNC_FRONTEND_CAFFE2_ENABLED OFF)
endif()
-# Try to get compiled caffe proto and return if not successful
-# Note: this creates a target called "caffeproto" that contains compiled caffe.proto sources,
-# and after linking with it caffe.pb.h will be available as "caffe/proto/caffe.pb.h"
-nncc_find_package(CaffeProto QUIET)
-if (CaffeProto_FOUND)
+if(TARGET mir_caffe_importer)
set(NNC_FRONTEND_CAFFE_ENABLED ON)
else()
- message(WARNING "Caffeproto library was not found, nnc caffe frontend will not be available")
set(NNC_FRONTEND_CAFFE_ENABLED OFF)
endif()
-# Try to get the compiled onnx proto and return if not successful.
-# Note: this creates a target called "onnxproto" and after linking with it
-# onnx.pb.h will be available as "onnx/onnx.pb.h"
-set(NNC_FRONTEND_ONNX_ENABLED OFF)
-nncc_find_package(ONNXProto QUIET)
-if (ONNXProto_FOUND)
- nncc_find_package(ONNXSource EXACT 1.3.0)
- if (${ONNXSource_FOUND})
- set(NNC_FRONTEND_ONNX_ENABLED ON)
- endif()
-endif()
-if(NOT NNC_FRONTEND_ONNX_ENABLED)
- message(WARNING "nnc onnx frontend will not be available")
+if(TARGET mir_onnx_importer)
+ set(NNC_FRONTEND_ONNX_ENABLED ON)
+else()
+ set(NNC_FRONTEND_ONNX_ENABLED OFF)
endif()
-# We need flatbuffer for tflite frontend
-nncc_find_package(FlatBuffers QUIET)
-if (FlatBuffers_FOUND)
+if(TARGET mir_tflite_importer)
set(NNC_FRONTEND_TFLITE_ENABLED ON)
else()
- message(WARNING "FlatBuffers not found, nnc tflite frontend will not be available")
set(NNC_FRONTEND_TFLITE_ENABLED OFF)
endif()
-###################
-# Caffe2 proto #
-###################
-
-# Compile caffe2.proto from pytroch sources
-# Produces CAFFE2_PROTO_SOURCES and CAFFE2_PROTO_INCLUDE_DIRS variables.
-Protobuf_Generate(CAFFE2_PROTO "${CMAKE_CURRENT_BINARY_DIR}/generated/caffe2"
- "${PytorchSource_DIR}" "caffe2/proto/caffe2.proto")
-
-add_library(caffe2proto STATIC ${CAFFE2_PROTO_SOURCES})
-set_target_properties(caffe2proto PROPERTIES POSITION_INDEPENDENT_CODE ON)
-target_include_directories(caffe2proto PUBLIC ${CAFFE2_PROTO_INCLUDE_DIRS})
-target_link_libraries(caffe2proto PUBLIC libprotobuf)
-
-
-set(MIR_CAFFE2_IMPORTER_SOURCES
- caffe2_importer.cpp
- caffe2_importer.h
- caffe2_op_creator.cpp
- caffe2_op_creator.h
- caffe2_op_types.h
- caffe2_proto_helper.cpp
- caffe2_proto_helper.h)
-
-add_library(mir_caffe2_importer STATIC ${MIR_CAFFE2_IMPORTER_SOURCES})
-set_target_properties(mir_caffe2_importer PROPERTIES POSITION_INDEPENDENT_CODE ON)
-target_include_directories(mir_caffe2_importer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
-target_link_libraries(mir_caffe2_importer PUBLIC mir caffe2proto)
-
-
set(NNC_CAFFE2_IMPORTER_PASS_SOURCES
caffe2_importer_pass.cpp
caffe2_importer_pass.h)
-set(MIR_CAFFE_IMPORTER_SOURCES
- caffe_importer.cpp
- caffe_importer.h
- caffe_op_creator.cpp
- caffe_op_creator.h
- caffe_op_types.h)
-
-add_library(mir_caffe_importer STATIC ${MIR_CAFFE_IMPORTER_SOURCES})
-set_target_properties(mir_caffe_importer PROPERTIES POSITION_INDEPENDENT_CODE ON)
-target_include_directories(mir_caffe_importer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
-target_link_libraries(mir_caffe_importer PUBLIC mir caffeproto)
-
-
set(NNC_CAFFE_IMPORTER_PASS_SOURCES
caffe_importer_pass.cpp
caffe_importer_pass.h)
-set(MIR_ONNX_IMPORTER_SOURCES
- ONNXImporterImpl.cpp
- ONNXImporterImpl.h
- ONNXOpCreator.cpp
- ONNXOpCreator.h
- ONNXOpType.h
- ONNXPerfectHash.h)
-
-add_library(mir_onnx_importer STATIC ${MIR_ONNX_IMPORTER_SOURCES})
-set_target_properties(mir_onnx_importer PROPERTIES POSITION_INDEPENDENT_CODE ON)
-target_compile_definitions(mir_onnx_importer PUBLIC ONNX_NAMESPACE=onnx)
-target_include_directories(mir_onnx_importer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
-target_link_libraries(mir_onnx_importer PUBLIC onnxproto mir)
-
-
set(NNC_ONNX_IMPORTER_PASS_SOURCES
ONNXImporterPass.cpp
ONNXImporterPass.h)
-FlatBuffers_Target(tflite_schema
- OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated/schema"
- SCHEMA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/schema"
- SCHEMA_FILES schema.fbs)
-
-
-set(MIR_TFLITE_IMPORTER_SOURCES
- tflite_importer.cpp
- tflite_importer.h
- tflite_op_creator.cpp
- tflite_op_creator.h)
-
-add_library(mir_tflite_importer STATIC ${MIR_TFLITE_IMPORTER_SOURCES})
-set_target_properties(mir_tflite_importer PROPERTIES POSITION_INDEPENDENT_CODE ON)
-target_include_directories(mir_tflite_importer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
-target_link_libraries(mir_tflite_importer PUBLIC mir tflite_schema)
-
-
set(NNC_TFLITE_IMPORTER_PASS_SOURCES
tflite_importer_pass.cpp
tflite_importer_pass.h)
require("adtidas")
+require("mir-caffe2-importer")
+require("mir-caffe-importer")
+require("mir-onnx-importer")
+require("mir-tflite-importer")