xref: /aosp_15_r20/external/libvpx/build/make/gen_asm_deps.sh (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
1*fb1b10abSAndroid Build Coastguard Worker#!/bin/sh
2*fb1b10abSAndroid Build Coastguard Worker##
3*fb1b10abSAndroid Build Coastguard Worker##  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
4*fb1b10abSAndroid Build Coastguard Worker##
5*fb1b10abSAndroid Build Coastguard Worker##  Use of this source code is governed by a BSD-style license
6*fb1b10abSAndroid Build Coastguard Worker##  that can be found in the LICENSE file in the root of the source
7*fb1b10abSAndroid Build Coastguard Worker##  tree. An additional intellectual property rights grant can be found
8*fb1b10abSAndroid Build Coastguard Worker##  in the file PATENTS.  All contributing project authors may
9*fb1b10abSAndroid Build Coastguard Worker##  be found in the AUTHORS file in the root of the source tree.
10*fb1b10abSAndroid Build Coastguard Worker##
11*fb1b10abSAndroid Build Coastguard Worker
12*fb1b10abSAndroid Build Coastguard Worker
13*fb1b10abSAndroid Build Coastguard Workerself=$0
14*fb1b10abSAndroid Build Coastguard Workershow_help() {
15*fb1b10abSAndroid Build Coastguard Worker    echo "usage: $self [options] <srcfile>"
16*fb1b10abSAndroid Build Coastguard Worker    echo
17*fb1b10abSAndroid Build Coastguard Worker    echo "Generate Makefile dependency information from assembly code source"
18*fb1b10abSAndroid Build Coastguard Worker    echo
19*fb1b10abSAndroid Build Coastguard Worker    exit 1
20*fb1b10abSAndroid Build Coastguard Worker}
21*fb1b10abSAndroid Build Coastguard Workerdie_unknown(){
22*fb1b10abSAndroid Build Coastguard Worker    echo "Unknown option \"$1\"."
23*fb1b10abSAndroid Build Coastguard Worker    echo "See $0 --help for available options."
24*fb1b10abSAndroid Build Coastguard Worker    exit 1
25*fb1b10abSAndroid Build Coastguard Worker}
26*fb1b10abSAndroid Build Coastguard Workerfor opt do
27*fb1b10abSAndroid Build Coastguard Worker    optval="${opt#*=}"
28*fb1b10abSAndroid Build Coastguard Worker    case "$opt" in
29*fb1b10abSAndroid Build Coastguard Worker    --build-pfx=*) pfx="${optval}"
30*fb1b10abSAndroid Build Coastguard Worker    ;;
31*fb1b10abSAndroid Build Coastguard Worker    --depfile=*) out="${optval}"
32*fb1b10abSAndroid Build Coastguard Worker    ;;
33*fb1b10abSAndroid Build Coastguard Worker    -I*) raw_inc_paths="${raw_inc_paths} ${opt}"
34*fb1b10abSAndroid Build Coastguard Worker         inc_path="${inc_path} ${opt#-I}"
35*fb1b10abSAndroid Build Coastguard Worker    ;;
36*fb1b10abSAndroid Build Coastguard Worker    -h|--help) show_help
37*fb1b10abSAndroid Build Coastguard Worker    ;;
38*fb1b10abSAndroid Build Coastguard Worker    *) [ -f "$opt" ] && srcfile="$opt"
39*fb1b10abSAndroid Build Coastguard Worker    ;;
40*fb1b10abSAndroid Build Coastguard Worker    esac
41*fb1b10abSAndroid Build Coastguard Workerdone
42*fb1b10abSAndroid Build Coastguard Worker
43*fb1b10abSAndroid Build Coastguard Worker[ -n "$srcfile" ] || show_help
44*fb1b10abSAndroid Build Coastguard Workersfx=${sfx:-asm}
45*fb1b10abSAndroid Build Coastguard Workerincludes=$(LC_ALL=C grep -E -i "include +\"?[a-z0-9_/]+\.${sfx}" $srcfile |
46*fb1b10abSAndroid Build Coastguard Worker           perl -p -e "s;.*?([a-z0-9_/]+.${sfx}).*;\1;")
47*fb1b10abSAndroid Build Coastguard Worker#" restore editor state
48*fb1b10abSAndroid Build Coastguard Workerfor inc in ${includes}; do
49*fb1b10abSAndroid Build Coastguard Worker    found_inc_path=
50*fb1b10abSAndroid Build Coastguard Worker    for idir in ${inc_path}; do
51*fb1b10abSAndroid Build Coastguard Worker        [ -f "${idir}/${inc}" ] && found_inc_path="${idir}" && break
52*fb1b10abSAndroid Build Coastguard Worker    done
53*fb1b10abSAndroid Build Coastguard Worker    if [ -f `dirname $srcfile`/$inc ]; then
54*fb1b10abSAndroid Build Coastguard Worker        # Handle include files in the same directory as the source
55*fb1b10abSAndroid Build Coastguard Worker        $self --build-pfx=$pfx --depfile=$out ${raw_inc_paths} `dirname $srcfile`/$inc
56*fb1b10abSAndroid Build Coastguard Worker    elif [ -n "${found_inc_path}" ]; then
57*fb1b10abSAndroid Build Coastguard Worker        # Handle include files on the include path
58*fb1b10abSAndroid Build Coastguard Worker        $self --build-pfx=$pfx --depfile=$out ${raw_inc_paths} "${found_inc_path}/$inc"
59*fb1b10abSAndroid Build Coastguard Worker    else
60*fb1b10abSAndroid Build Coastguard Worker        # Handle generated includes in the build root (which may not exist yet)
61*fb1b10abSAndroid Build Coastguard Worker        echo ${out} ${out%d}o: "${pfx}${inc}"
62*fb1b10abSAndroid Build Coastguard Worker    fi
63*fb1b10abSAndroid Build Coastguard Workerdone
64*fb1b10abSAndroid Build Coastguard Workerecho ${out} ${out%d}o: $srcfile
65