Index: third_party/libvpx_new/lint_config.sh |
diff --git a/third_party/libvpx_new/lint_config.sh b/third_party/libvpx_new/lint_config.sh |
new file mode 100755 |
index 0000000000000000000000000000000000000000..d57e4518fde8c3213e6c7608918ddb69ad7a8680 |
--- /dev/null |
+++ b/third_party/libvpx_new/lint_config.sh |
@@ -0,0 +1,109 @@ |
+#!/bin/bash -e |
+# |
+# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+# This script is used to compare vpx_config.h and vpx_config.asm to |
+# verify the two files match. |
+# |
+# Arguments: |
+# |
+# -h - C Header file. |
+# -a - ASM file. |
+# -p - Print the options if correct. |
+# -o - Output file. |
+# |
+# Usage: |
+# |
+# # Compare the two configuration files and output the final results. |
+# ./lint_config.sh -h vpx_config.h -a vpx_config.asm -o libvpx.config -p |
+ |
+export LC_ALL=C |
+print_final="no" |
+ |
+while getopts "h:a:o:p" flag |
+do |
+ if [ "$flag" = "h" ]; then |
+ header_file=$OPTARG |
+ elif [ "$flag" = "a" ]; then |
+ asm_file=$OPTARG |
+ elif [ "$flag" = "o" ]; then |
+ out_file=$OPTARG |
+ elif [ "$flag" = "p" ]; then |
+ print_final="yes" |
+ fi |
+done |
+ |
+if [ -z "$header_file" ]; then |
+ echo "Header file not specified." |
+ false |
+ exit |
+fi |
+ |
+if [ -z "$asm_file" ]; then |
+ echo "ASM file not specified." |
+ false |
+ exit |
+fi |
+ |
+# Concat header file and assembly file and select those ended with 0 or 1. |
+combined_config="$(cat $header_file $asm_file | grep -E ' +[01] *$')" |
+ |
+# Extra filtering for known exceptions. |
+combined_config="$(echo "$combined_config" | grep -v DO1STROUNDING)" |
+ |
+# Remove all spaces. |
+combined_config="$(echo "$combined_config" | sed 's/[ \t]//g')" |
+ |
+# Remove #define in the header file. |
+combined_config="$(echo "$combined_config" | sed 's/.*define//')" |
+ |
+# Remove equ in the ASM file. |
+combined_config="$(echo "$combined_config" | sed 's/\.equ//')" # gas style |
+combined_config="$(echo "$combined_config" | sed 's/equ//')" # rvds style |
+ |
+# Remove %define in YASM ASM files. |
+combined_config="$(echo "$combined_config" | sed 's/%define\s *//')" # yasm style |
+ |
+# Remove useless comma in gas style assembly file. |
+combined_config="$(echo "$combined_config" | sed 's/,//')" |
+ |
+# Substitute 0 with =no. |
+combined_config="$(echo "$combined_config" | sed 's/0$/=no/')" |
+ |
+# Substitute 1 with =yes. |
+combined_config="$(echo "$combined_config" | sed 's/1$/=yes/')" |
+ |
+# Find the mismatch variables. |
+odd_config="$(echo "$combined_config" | sort | uniq -u)" |
+odd_vars="$(echo "$odd_config" | sed 's/=.*//' | uniq)" |
+ |
+for var in $odd_vars; do |
+ echo "Error: Configuration mismatch for $var." |
+ echo "Header file: $header_file" |
+ echo "$(cat -n $header_file | grep "$var[ \t]")" |
+ echo "Assembly file: $asm_file" |
+ echo "$(cat -n $asm_file | grep "$var[ \t]")" |
+ echo "" |
+done |
+ |
+if [ -n "$odd_vars" ]; then |
+ false |
+ exit |
+fi |
+ |
+if [ "$print_final" = "no" ]; then |
+ exit |
+fi |
+ |
+# Do some additional filter to make libvpx happy. |
+combined_config="$(echo "$combined_config" | grep -v ARCH_X86=no)" |
+combined_config="$(echo "$combined_config" | grep -v ARCH_X86_64=no)" |
+ |
+# Print out the unique configurations. |
+if [ -n "$out_file" ]; then |
+ echo "$combined_config" | sort | uniq > $out_file |
+else |
+ echo "$combined_config" | sort | uniq |
+fi |