[enco] Write generated code into a file (#1686)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Mon, 1 Oct 2018 02:21:04 +0000 (11:21 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Mon, 1 Oct 2018 02:21:04 +0000 (11:21 +0900)
With this commit, enco will write generated code into a file specified
by command-line argument.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/enco/core/src/Backend.cpp
contrib/enco/test/basic/000/CMakeLists.txt
contrib/enco/test/caffe/CMakeLists.txt

index 6c3162c..e675040 100644 (file)
@@ -31,6 +31,7 @@
 
 #include <stdexcept>
 #include <iostream>
+#include <fstream>
 
 using nncc::foundation::make_unique;
 using namespace enco;
@@ -57,10 +58,16 @@ bool has_inout_bag(const coco::Module *m)
 class BackendImpl final : public enco::Backend
 {
 public:
-  BackendImpl() = default;
+  BackendImpl(const std::string &prefix) : _prefix{prefix}
+  {
+    // DO NOTHING
+  }
 
 public:
   void compile(coco::Module *m, coco::Data *d) override;
+
+private:
+  std::string _prefix;
 };
 
 void BackendImpl::compile(coco::Module *m, coco::Data *d)
@@ -104,14 +111,15 @@ void BackendImpl::compile(coco::Module *m, coco::Data *d)
 
   // TODO Run various transforms over enco::Code
 
-  std::cout << CppCode{&code} << std::endl;
+  std::ofstream ofs{_prefix + ".cpp"};
+  ofs << CppCode{&code} << std::endl;
 }
 
 } // namespace enco
 
 #include <iostream>
 
-std::unique_ptr<enco::Backend> make_backend(const cmdline::View &)
+std::unique_ptr<enco::Backend> make_backend(const cmdline::View &cmdline)
 {
-  return make_unique<::BackendImpl>();
+  return make_unique<::BackendImpl>(cmdline.at(0));
 }
index d2fe539..be1b68e 100644 (file)
@@ -2,7 +2,7 @@
 ### This test first generates C++ code from an empty model, and check whether is has compile error
 ###
 set(PREFIX enco-basic-test-000)
-set(GENERATED_CPP ${PREFIX}.generated.cpp)
+set(GENERATED_CPP ${PREFIX}.cpp)
 set(SOURCE_TARGET ${PREFIX}-src)
 set(LIB_TARGET ${PREFIX}-lib)
 
@@ -12,7 +12,9 @@ target_link_libraries(${PREFIX}-frontend enco_intf_frontend)
 
 # NOTE BYPRODUCTS are not specified in order to enforce source code generation
 add_custom_target(${SOURCE_TARGET}
-                  ALL $<TARGET_FILE:enco-cli> --frontend $<TARGET_FILE:${PREFIX}-frontend> > ${GENERATED_CPP}
+                  ALL $<TARGET_FILE:enco-cli>
+                        --frontend $<TARGET_FILE:${PREFIX}-frontend>
+                        --backend-arg ${PREFIX}
                   DEPENDS enco-cli ${PREFIX}-frontend)
 set_source_files_properties(${GENERATED_CPP} PROPERTIES GENERATED TRUE)
 add_library(${LIB_TARGET} SHARED ${GENERATED_CPP})
index 991dbb9..78cee0a 100644 (file)
@@ -50,7 +50,7 @@ foreach(MODEL IN ITEMS ${MODELS})
                           --frontend $<TARGET_FILE:enco_caffe_frontend>
                           --frontend-arg ${PROTOTXT_FILE}
                           --frontend-arg ${CAFFEMODEL_FILE}
-                        > ${SOURCE_FILE}
+                          --backend-arg ${PREFIX}
                     DEPENDS enco-cli enco_caffe_frontend ${CAFFEMODEL_TARGET}
                     COMMENT "Generating ${SOURCE_FILE}")
   set_source_files_properties(${SOURCE_FILE} PROPERTIES GENERATED TRUE)