OLD | NEW |
| (Empty) |
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 styl
e | |
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 | |
OLD | NEW |