Views Omnibox: tolerate minor click-to-select-all dragging.
[chromium-blink-merge.git] / build / linux / sysroot_ld_path.sh
blob74553c93638729265423a74e023956608afcca69
1 #!/bin/sh
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
6 # Reads etc/ld.so.conf and/or etc/ld.so.conf.d/*.conf and returns the
7 # appropriate linker flags.
9 # sysroot_ld_path.sh /abspath/to/sysroot
12 log_error_and_exit() {
13 echo $0: $@
14 exit 1
17 process_entry() {
18 if [ -z "$1" ] || [ -z "$2" ]; then
19 log_error_and_exit "bad arguments to process_entry()"
21 local root="$1"
22 local localpath="$2"
24 echo $localpath | grep -qs '^/'
25 if [ $? -ne 0 ]; then
26 log_error_and_exit $localpath does not start with /
28 local entry="$root$localpath"
29 echo -L$entry
30 echo -Wl,-rpath-link=$entry
33 process_ld_so_conf() {
34 if [ -z "$1" ] || [ -z "$2" ]; then
35 log_error_and_exit "bad arguments to process_ld_so_conf()"
37 local root="$1"
38 local ld_so_conf="$2"
40 # ld.so.conf may include relative include paths. pushd is a bashism.
41 local saved_pwd=$(pwd)
42 cd $(dirname "$ld_so_conf")
44 cat "$ld_so_conf" | \
45 while read ENTRY; do
46 echo "$ENTRY" | grep -qs ^include
47 if [ $? -eq 0 ]; then
48 local included_files=$(echo "$ENTRY" | sed 's/^include //')
49 if ls $included_files >/dev/null 2>&1 ; then
50 for inc_file in $included_files; do
51 echo $inc_file | grep -qs ^/
52 if [ $? -eq 0 ]; then
53 process_ld_so_conf "$root" "$root$inc_file"
54 else
55 process_ld_so_conf "$root" "$(pwd)/$inc_file"
57 done
59 continue
62 echo "$ENTRY" | grep -qs ^/
63 if [ $? -eq 0 ]; then
64 process_entry "$root" "$ENTRY"
66 done
68 # popd is a bashism
69 cd "$saved_pwd"
72 # Main
74 if [ $# -ne 1 ]; then
75 echo Usage $0 /abspath/to/sysroot
76 exit 1
79 echo $1 | grep -qs ' '
80 if [ $? -eq 0 ]; then
81 log_error_and_exit $1 contains whitespace.
84 LD_SO_CONF="$1/etc/ld.so.conf"
85 LD_SO_CONF_D="$1/etc/ld.so.conf.d"
87 if [ -e "$LD_SO_CONF" ]; then
88 process_ld_so_conf "$1" "$LD_SO_CONF" | xargs echo
89 elif [ -e "$LD_SO_CONF_D" ]; then
90 find "$LD_SO_CONF_D" -maxdepth 1 -name '*.conf' -print -quit > /dev/null
91 if [ $? -eq 0 ]; then
92 for entry in $LD_SO_CONF_D/*.conf; do
93 process_ld_so_conf "$1" "$entry"
94 done | xargs echo