10578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato/*
20578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato * Copyright (C) 2016 The Android Open Source Project
30578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato *
40578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato * Licensed under the Apache License, Version 2.0 (the "License");
50578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato * you may not use this file except in compliance with the License.
60578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato * You may obtain a copy of the License at
70578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato *
80578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato *      http://www.apache.org/licenses/LICENSE-2.0
90578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato *
100578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato * Unless required by applicable law or agreed to in writing, software
110578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato * distributed under the License is distributed on an "AS IS" BASIS,
120578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato * See the License for the specific language governing permissions and
140578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato * limitations under the License.
150578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato */
160578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato
170578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato#ifndef MAKE_H
180578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato#define MAKE_H
190578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato
200578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato#include <map>
210578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato#include <string>
220578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato#include <vector>
230578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato
240578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onoratousing namespace std;
250578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato
260578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onoratostruct Module
270578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato{
280578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato    string name;
290578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato    vector<string> classes;
300578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato    vector<string> paths;
310578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato    vector<string> installed;
320578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato};
330578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato
340578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onoratostring get_build_var(const string& buildTop, const string& name, bool quiet);
350578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato
360578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato/**
370578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato * Poke around in the out directory and try to find a device name that matches
380578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato * our product. This is faster than running get_build_var and good enough for
390578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato * tab completion.
400578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato *
410578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato * Returns the empty string if we can't find one.
420578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato */
430578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onoratostring sniff_device_name(const string& buildOut, const string& product);
440578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato
450578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onoratovoid read_modules(const string& buildOut, const string& buildDevice,
460578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato        map<string,Module>* modules, bool quiet);
470578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato
480578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onoratoint build_goals(const vector<string>& goals);
490578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato
500578cbc6c527bc09a38a0fcd8b9642c25c8ea023Joe Onorato#endif // MAKE_H
51