am c8e4af65: am 722bf5c7: Merge "aidl: Separate aidl logic into its own static library"

* commit 'c8e4af65af7990d45e5505ebedc832c0a8fe58aa':
  aidl: Separate aidl logic into its own static library
This commit is contained in:
Christopher Wiley
2015-09-01 19:00:53 +00:00
committed by Android Git Automerger
4 changed files with 82 additions and 13 deletions

View File

@@ -6,7 +6,10 @@
ifeq ($(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK)),)
LOCAL_PATH:= $(call my-dir)
# Logic shared between aidl and its unittests
include $(CLEAR_VARS)
LOCAL_MODULE := libaidl-common
LOCAL_CLANG_CFLAGS := -Wall -Werror
# Tragically, the code is riddled with unused parameters.
@@ -29,21 +32,37 @@ LOCAL_SRC_FILES := \
generate_java.cpp \
generate_java_binder.cpp \
generate_java_rpc.cpp \
main.cpp \
options.cpp \
search_path.cpp \
LOCAL_MODULE := aidl
LOCAL_MODULE_HOST_OS := darwin linux windows
include $(BUILD_HOST_STATIC_LIBRARY)
# aidl executable
include $(CLEAR_VARS)
LOCAL_MODULE := aidl
LOCAL_MODULE_HOST_OS := darwin linux windows
LOCAL_CFLAGS := -Wall -Werror
LOCAL_SRC_FILES := main.cpp
LOCAL_STATIC_LIBRARIES := libaidl-common
include $(BUILD_HOST_EXECUTABLE)
# Unit tests
include $(CLEAR_VARS)
LOCAL_MODULE := aidl_unittests
LOCAL_CFLAGS := -g -DUNIT_TEST
LOCAL_SRC_FILES := tests/test.cpp
LOCAL_STATIC_LIBRARIES := libgmock_host libgtest_host libBionicGtestMain
LOCAL_CFLAGS := -g -DUNIT_TEST -Wall -Werror
LOCAL_SRC_FILES := \
options_unittest.cpp \
tests/test.cpp \
LOCAL_STATIC_LIBRARIES := \
libaidl-common \
libgmock_host \
libgtest_host \
libBionicGtestMain
LOCAL_LDLIBS := -lrt
include $(BUILD_HOST_NATIVE_TEST)

View File

@@ -48,10 +48,6 @@ parse_options(int argc, const char* const* argv, Options *options)
return 0;
}
options->task = COMPILE_AIDL;
options->failOnParcelable = false;
options->autoDepFile = false;
// OPTIONS
while (i < argc) {
const char* s = argv[i];

View File

@@ -15,15 +15,15 @@ enum {
// This struct is the parsed version of the command line options
struct Options
{
int task;
bool failOnParcelable;
int task{COMPILE_AIDL};
bool failOnParcelable{false};
vector<string> importPaths;
vector<string> preprocessedFiles;
string inputFileName;
string outputFileName;
string outputBaseFolder;
string depFileName;
bool autoDepFile;
bool autoDepFile{false};
vector<string> filesToPreprocess;
};

View File

@@ -0,0 +1,54 @@
/*
* Copyright (C) 2015, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <string>
#include <vector>
#include <gtest/gtest.h>
#include "options.h"
using std::vector;
using std::string;
const char kPreprocessCommandOutputFile[] = "output_file_name";
const char kPreprocessCommandInput1[] = "input1";
const char kPreprocessCommandInput2[] = "input2";
const char kPreprocessCommandInput3[] = "input3";
const char* kPreprocessCommand[] = {
"aidl", "--preprocess",
kPreprocessCommandOutputFile,
kPreprocessCommandInput1,
kPreprocessCommandInput2,
kPreprocessCommandInput3,
};
TEST(OptionsTests, ParsesPreprocess) {
Options options;
const int argc = sizeof(kPreprocessCommand) / sizeof(*kPreprocessCommand);
EXPECT_EQ(parse_options(argc, kPreprocessCommand, &options), 0);
EXPECT_EQ(options.task, PREPROCESS_AIDL);
EXPECT_EQ(options.failOnParcelable, false);
EXPECT_EQ(options.importPaths.size(), 0u);
EXPECT_EQ(options.preprocessedFiles.size(), 0u);
EXPECT_EQ(options.inputFileName, string{""});
EXPECT_EQ(options.outputFileName, string{kPreprocessCommandOutputFile});
EXPECT_EQ(options.autoDepFile, false);
const vector<string> expected_input{kPreprocessCommandInput1,
kPreprocessCommandInput2,
kPreprocessCommandInput3};
EXPECT_EQ(options.filesToPreprocess, expected_input);
}