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 27d7f900170dac3d3df60f6f7cbac14bcd4173b139Andreas Gampe// aidl is leaky. Turn off LeakSanitizer by default. b/37749857 28d7f900170dac3d3df60f6f7cbac14bcd4173b139Andreas Gampeextern "C" const char *__asan_default_options() { 29d7f900170dac3d3df60f6f7cbac14bcd4173b139Andreas Gampe return "detect_leaks=0"; 30d7f900170dac3d3df60f6f7cbac14bcd4173b139Andreas Gampe} 31d7f900170dac3d3df60f6f7cbac14bcd4173b139Andreas Gampe 32b8b59f6b19e791b6e3f381726d84baadeac4f5ceChristopher Wileyint main(int argc, char** argv) { 33b8b59f6b19e791b6e3f381726d84baadeac4f5ceChristopher Wiley android::base::InitLogging(argv); 34b8b59f6b19e791b6e3f381726d84baadeac4f5ceChristopher Wiley LOG(DEBUG) << "aidl starting"; 3589eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley std::unique_ptr<JavaOptions> options = JavaOptions::Parse(argc, argv); 364427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley if (!options) { 3789e3586afa180230fa999d4287df90df9d066cefChristopher Wiley return 1; 384427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley } 394427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley 404a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley android::aidl::IoDelegate io_delegate; 414427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley switch (options->task) { 4289eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley case JavaOptions::COMPILE_AIDL_TO_JAVA: 434a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley return android::aidl::compile_aidl_to_java(*options, io_delegate); 4489eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley case JavaOptions::PREPROCESS_AIDL: 45c1f39b4ea30e7313eeb7f3d3fd5ec66ba00f2bb5Casey Dahlin if (android::aidl::preprocess_aidl(*options, io_delegate)) 46c1f39b4ea30e7313eeb7f3d3fd5ec66ba00f2bb5Casey Dahlin return 0; 47c1f39b4ea30e7313eeb7f3d3fd5ec66ba00f2bb5Casey Dahlin return 1; 484427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley } 494427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley std::cerr << "aidl: internal error" << std::endl; 504427d8654985209c1ebf2fb4705bb3e1a4262be2Christopher Wiley return 1; 5189e3586afa180230fa999d4287df90df9d066cefChristopher Wiley} 52