Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / libvpx / lint_config.sh
1 #!/bin/bash -e
2 #
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file.
6
7 # This script is used to compare vpx_config.h and vpx_config.asm to
8 # verify the two files match.
9 #
10 # Arguments:
11 #
12 # -h - C Header file.
13 # -a - ASM file.
14 # -p - Print the options if correct.
15 # -o - Output file.
16 #
17 # Usage:
18 #
19 # # Compare the two configuration files and output the final results.
20 # ./lint_config.sh -h vpx_config.h -a vpx_config.asm -o libvpx.config -p
21
22 export LC_ALL=C
23 print_final="no"
24
25 while getopts "h:a:o:p" flag
26 do
27   if [ "$flag" = "h" ]; then
28     header_file=$OPTARG
29   elif [ "$flag" = "a" ]; then
30     asm_file=$OPTARG
31   elif [ "$flag" = "o" ]; then
32     out_file=$OPTARG
33   elif [ "$flag" = "p" ]; then
34     print_final="yes"
35   fi
36 done
37
38 if [ -z "$header_file" ]; then
39   echo "Header file not specified."
40   false
41   exit
42 fi
43
44 if [ -z "$asm_file" ]; then
45   echo "ASM file not specified."
46   false
47   exit
48 fi
49
50 # Concat header file and assembly file and select those ended with 0 or 1.
51 combined_config="$(cat $header_file $asm_file | grep -E ' +[01] *$')"
52
53 # Extra filtering for known exceptions.
54 combined_config="$(echo "$combined_config" | grep -v DO1STROUNDING)"
55
56 # Remove all spaces.
57 combined_config="$(echo "$combined_config" | sed 's/[ \t]//g')"
58
59 # Remove #define in the header file.
60 combined_config="$(echo "$combined_config" | sed 's/.*define//')"
61
62 # Remove equ in the ASM file.
63 combined_config="$(echo "$combined_config" | sed 's/\.equ//')" # gas style
64 combined_config="$(echo "$combined_config" | sed 's/equ//')" # rvds style
65
66 # Remove %define in YASM ASM files.
67 combined_config="$(echo "$combined_config" | sed 's/%define\s *//')" # yasm style
68
69 # Remove useless comma in gas style assembly file.
70 combined_config="$(echo "$combined_config" | sed 's/,//')"
71
72 # Substitute 0 with =no.
73 combined_config="$(echo "$combined_config" | sed 's/0$/=no/')"
74
75 # Substitute 1 with =yes.
76 combined_config="$(echo "$combined_config" | sed 's/1$/=yes/')"
77
78 # Find the mismatch variables.
79 odd_config="$(echo "$combined_config" | sort | uniq -u)"
80 odd_vars="$(echo "$odd_config" | sed 's/=.*//' | uniq)"
81
82 for var in $odd_vars; do
83   echo "Error: Configuration mismatch for $var."
84   echo "Header file: $header_file"
85   echo "$(cat -n $header_file | grep "$var[ \t]")"
86   echo "Assembly file: $asm_file"
87   echo "$(cat -n $asm_file | grep "$var[ \t]")"
88   echo ""
89 done
90
91 if [ -n "$odd_vars" ]; then
92   false
93   exit
94 fi
95
96 if [ "$print_final" = "no" ]; then
97   exit
98 fi
99
100 # Do some additional filter to make libvpx happy.
101 combined_config="$(echo "$combined_config" | grep -v ARCH_X86=no)"
102 combined_config="$(echo "$combined_config" | grep -v ARCH_X86_64=no)"
103
104 # Print out the unique configurations.
105 if [ -n "$out_file" ]; then
106   echo "$combined_config" | sort | uniq > $out_file
107 else
108   echo "$combined_config" | sort | uniq
109 fi