14427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley/*
24427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley * Copyright (C) 2015, The Android Open Source Project
34427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley *
44427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley * Licensed under the Apache License, Version 2.0 (the "License");
54427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley * you may not use this file except in compliance with the License.
64427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley * You may obtain a copy of the License at
74427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley *
84427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley *     http://www.apache.org/licenses/LICENSE-2.0
94427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley *
104427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley * Unless required by applicable law or agreed to in writing, software
114427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley * distributed under the License is distributed on an "AS IS" BASIS,
124427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley * See the License for the specific language governing permissions and
144427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley * limitations under the License.
154427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley */
164427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley
174427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley#include <iostream>
184427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley#include <memory>
194427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley
2089e3586afa180230fa999d4287df90df9d066cefChristopher Wiley#include "aidl.h"
214a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley#include "io_delegate.h"
22b8b59f6b19e791b6e3f381726d84baadeac4f5ceChristopher Wiley#include "logging.h"
2389e3586afa180230fa999d4287df90df9d066cefChristopher Wiley#include "options.h"
2489e3586afa180230fa999d4287df90df9d066cefChristopher Wiley
2589eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wileyusing android::aidl::JavaOptions;
2689e3586afa180230fa999d4287df90df9d066cefChristopher Wiley
27b8b59f6b19e791b6e3f381726d84baadeac4f5ceChristopher Wileyint main(int argc, char** argv) {
28b8b59f6b19e791b6e3f381726d84baadeac4f5ceChristopher Wiley  android::base::InitLogging(argv);
29b8b59f6b19e791b6e3f381726d84baadeac4f5ceChristopher Wiley  LOG(DEBUG) << "aidl starting";
3089eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley  std::unique_ptr<JavaOptions> options = JavaOptions::Parse(argc, argv);
314427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley  if (!options) {
3289e3586afa180230fa999d4287df90df9d066cefChristopher Wiley    return 1;
334427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley  }
344427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley
354a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley  android::aidl::IoDelegate io_delegate;
364427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley  switch (options->task) {
3789eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley    case JavaOptions::COMPILE_AIDL_TO_JAVA:
384a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley      return android::aidl::compile_aidl_to_java(*options, io_delegate);
3989eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley    case JavaOptions::PREPROCESS_AIDL:
40c1f39b4ea30e7313eeb7f3d3fd5ec66ba00f2bb5Casey Dahlin      if (android::aidl::preprocess_aidl(*options, io_delegate))
41c1f39b4ea30e7313eeb7f3d3fd5ec66ba00f2bb5Casey Dahlin        return 0;
42c1f39b4ea30e7313eeb7f3d3fd5ec66ba00f2bb5Casey Dahlin      return 1;
434427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley  }
444427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley  std::cerr << "aidl: internal error" << std::endl;
454427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley  return 1;
4689e3586afa180230fa999d4287df90df9d066cefChristopher Wiley}
47