11184aebb761cbeac9124c37189a80a1a58f04b6bhkuang#!/bin/sh 290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 3f71323e297a928af368937089d3ed71239786f86Andreas Huber## Copyright (c) 2010 The WebM project authors. All Rights Reserved. 490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 5f71323e297a928af368937089d3ed71239786f86Andreas Huber## Use of this source code is governed by a BSD-style license 6f71323e297a928af368937089d3ed71239786f86Andreas Huber## that can be found in the LICENSE file in the root of the source 7f71323e297a928af368937089d3ed71239786f86Andreas Huber## tree. An additional intellectual property rights grant can be found 8f71323e297a928af368937089d3ed71239786f86Andreas Huber## in the file PATENTS. All contributing project authors may 9f71323e297a928af368937089d3ed71239786f86Andreas Huber## be found in the AUTHORS file in the root of the source tree. 1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberself=$0 1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help() { 1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "usage: $self [options] <srcfile>" 1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo 1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "Generate Makefile dependency information from assembly code source" 1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo 1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber exit 1 2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdie_unknown(){ 2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "Unknown option \"$1\"." 2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "See $0 --help for available options." 2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber exit 1 2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfor opt do 2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber optval="${opt#*=}" 2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$opt" in 2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --build-pfx=*) pfx="${optval}" 3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --depfile=*) out="${optval}" 3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber -I*) raw_inc_paths="${raw_inc_paths} ${opt}" 3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber inc_path="${inc_path} ${opt#-I}" 3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber -h|--help) show_help 3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *) [ -f "$opt" ] && srcfile="$opt" 3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdone 4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber[ -n "$srcfile" ] || show_help 4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersfx=${sfx:-asm} 451b362b15af34006e6a11974088a46d42b903418eJohannincludes=$(LC_ALL=C egrep -i "include +\"?[a-z0-9_/]+\.${sfx}" $srcfile | 4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber perl -p -e "s;.*?([a-z0-9_/]+.${sfx}).*;\1;") 4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#" restore editor state 4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfor inc in ${includes}; do 4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber found_inc_path= 5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for idir in ${inc_path}; do 5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -f "${idir}/${inc}" ] && found_inc_path="${idir}" && break 5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ -f `dirname $srcfile`/$inc ]; then 5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Handle include files in the same directory as the source 5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber $self --build-pfx=$pfx --depfile=$out ${raw_inc_paths} `dirname $srcfile`/$inc 5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber elif [ -n "${found_inc_path}" ]; then 5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Handle include files on the include path 5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber $self --build-pfx=$pfx --depfile=$out ${raw_inc_paths} "${found_inc_path}/$inc" 5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Handle generated includes in the build root (which may not exist yet) 6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo ${out} ${out%d}o: "${pfx}${inc}" 6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdone 6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberecho ${out} ${out%d}o: $srcfile 65