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 unpack a .a file into object files. | |
8 # | |
9 # Arguments: | |
10 # | |
11 # d - Output directory. | |
12 # a - List of possible locations of the archive. | |
13 # f - List of files to extract. | |
14 # | |
15 | |
16 export LC_ALL=C | |
17 | |
18 # Avoid things like -n messing up the grepping below. | |
19 unset GREP_OPTIONS | |
20 | |
21 while getopts "d:a:f:r:" flag | |
22 do | |
23 if [ "$flag" = "d" ]; then | |
24 out_dir=$OPTARG | |
25 elif [ "$flag" = "a" ]; then | |
26 lib_files="$OPTARG $lib_files" | |
27 elif [ "$flag" = "f" ]; then | |
28 obj_files="$OPTARG $obj_files" | |
29 elif [ "$flag" = "r" ]; then | |
30 ar=$OPTARG | |
31 fi | |
32 done | |
33 | |
34 for f in $lib_files; do | |
35 if [ -a $f ]; then | |
36 lib_file=$f | |
37 break | |
38 fi | |
39 done | |
40 | |
41 if [ -z "$lib_file" ]; then | |
42 echo "Failed to locate a static library." | |
43 false | |
44 exit | |
45 fi | |
46 | |
47 if [ ! -f "$ar" ]; then | |
48 # Find the appropriate ar to use. | |
49 ar="ar" | |
50 if [ -n "$AR_target" ]; then | |
51 ar=$AR_target | |
52 elif [ -n "$AR" ]; then | |
53 ar=$AR | |
54 fi | |
55 fi | |
56 | |
57 obj_list="$($ar t $lib_file | grep '\.o$')" | |
58 | |
59 function extract_object { | |
60 for f in $obj_list; do | |
61 filename="${f##*/}" | |
62 | |
63 if [ -z "$(echo $filename | grep $1)" ]; then | |
64 continue | |
65 fi | |
66 | |
67 # Only echo this if debugging. | |
68 # echo "Extract $filename from archive to $out_dir/$1." | |
69 $ar p $lib_file $filename > $out_dir/$1 | |
70 [ -s $out_dir/$1 ] || exit 1 | |
71 break | |
72 done | |
73 } | |
74 | |
75 for f in $obj_files; do | |
76 extract_object $f | |
77 done | |
OLD | NEW |