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