1#!/bin/bash
2
3# This shell script automatically extracts RenderScript stub functions .
4# To regenerate files RSStubsWhiteList.{cpp,h} run the following command
5# sh generate-whitelist.sh RSStubsWhiteList $ANDROID_BUILD_TOP/frameworks/rs/driver/rsdRuntimeStubs.cpp $ANDROID_BUILD_TOP/frameworks/rs/cpu_ref/rsCpuRuntimeStubs.cpp $ANDROID_BUILD_TOP/frameworks/rs/cpu_ref/rsCpuRuntimeMath.cpp
6
7OUT_PATH_PREFIX=$1
8OUT_PREFIX=`basename $OUT_PATH_PREFIX`
9STUB_FILES=${@:2}
10
11whitelist=`grep "{ \"_Z" $STUB_FILES | awk '{print $3}' | sort | uniq`
12
13OUT_HEADER=$OUT_PATH_PREFIX\.h
14OUT_CPP=$OUT_PATH_PREFIX\.cpp
15
16read -d '' COPYRIGHT << EOF
17/*
18 * Copyright 2014, The Android Open Source Project
19 *
20 * Licensed under the Apache License, Version 2.0 (the "License");
21 * you may not use this file except in compliance with the License.
22 * You may obtain a copy of the License at
23 *
24 *     http://www.apache.org/licenses/LICENSE-2.0
25 *
26 * Unless required by applicable law or agreed to in writing, software
27 * distributed under the License is distributed on an "AS IS" BASIS,
28 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29 * See the License for the specific language governing permissions and
30 * limitations under the License.
31 */
32EOF
33
34
35cat > $OUT_HEADER << EOF
36$COPYRIGHT
37
38#ifndef ${OUT_PREFIX}_H
39#define ${OUT_PREFIX}_H
40
41#include <cstdlib>
42#include <vector>
43#include <string>
44
45extern std::vector<std::string> stubList;
46
47#endif // ${OUT_PREFIX}_H
48EOF
49
50cat > $OUT_CPP  << EOF
51$COPYRIGHT
52
53#include "$OUT_PREFIX.h"
54
55std::vector<std::string> stubList = {
56$whitelist
57};
58EOF
59
60echo Wrote to $OUT_HEADER $OUT_CPP
61