#include <stdexcept>
#include <iostream>
+#include <fstream>
using nncc::foundation::make_unique;
using namespace enco;
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)
// 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));
}
### 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)
# 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})
--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)