| 50 | } // namespace tensorflow |
| 51 | |
| 52 | int main(int argc, char* argv[]) { |
| 53 | tensorflow::string output_dir; |
| 54 | tensorflow::string base_package = "org.tensorflow.op"; |
| 55 | tensorflow::string api_dirs_str; |
| 56 | std::vector<tensorflow::Flag> flag_list = { |
| 57 | tensorflow::Flag("output_dir", &output_dir, |
| 58 | "Root directory into which output files are generated"), |
| 59 | tensorflow::Flag( |
| 60 | "base_package", &base_package, |
| 61 | "Package parent to the generated subpackage and classes"), |
| 62 | tensorflow::Flag( |
| 63 | "api_dirs", &api_dirs_str, |
| 64 | "List of directories that contains the ops api definitions")}; |
| 65 | tensorflow::string usage = tensorflow::java::kUsageHeader; |
| 66 | usage += tensorflow::Flags::Usage(argv[0], flag_list); |
| 67 | bool parsed_flags_ok = tensorflow::Flags::Parse(&argc, argv, flag_list); |
| 68 | tensorflow::port::InitMain(usage.c_str(), &argc, &argv); |
| 69 | QCHECK(parsed_flags_ok && !output_dir.empty()) << usage; |
| 70 | std::vector<tensorflow::string> api_dirs = tensorflow::str_util::Split( |
| 71 | api_dirs_str, ",", tensorflow::str_util::SkipEmpty()); |
| 72 | tensorflow::java::OpGenerator generator(api_dirs); |
| 73 | tensorflow::OpList ops; |
| 74 | tensorflow::OpRegistry::Global()->Export(false, &ops); |
| 75 | TF_CHECK_OK(generator.Run(ops, base_package, output_dir)); |
| 76 | |
| 77 | return 0; |
| 78 | } |