diff options
author | Gwenolé Beauchesne <gbeauchesne@mandriva.org> | 2005-01-31 22:59:19 +0000 |
---|---|---|
committer | Gwenolé Beauchesne <gbeauchesne@mandriva.org> | 2005-01-31 22:59:19 +0000 |
commit | cf462649e3ac7c5d5f92a791707c231ea8d107b4 (patch) | |
tree | ed990d9c60703fc77b8c9bf97153b53b9c685ce0 | |
parent | 5458c7a74c0f3606e30190e88955f7f23e51ba07 (diff) | |
download | multiarch-utils-cf462649e3ac7c5d5f92a791707c231ea8d107b4.tar multiarch-utils-cf462649e3ac7c5d5f92a791707c231ea8d107b4.tar.gz multiarch-utils-cf462649e3ac7c5d5f92a791707c231ea8d107b4.tar.bz2 multiarch-utils-cf462649e3ac7c5d5f92a791707c231ea8d107b4.tar.xz multiarch-utils-cf462649e3ac7c5d5f92a791707c231ea8d107b4.zip |
handle ciruclar inclusions (e.g. gd.h)
-rwxr-xr-x | mkmultiarch | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/mkmultiarch b/mkmultiarch index ec657c6..502884f 100755 --- a/mkmultiarch +++ b/mkmultiarch @@ -53,16 +53,25 @@ function dispatch_binaries() { function dispatch_includes() { local file=$1 local incdir=`dirname $file` + + # handle circular inclusions + local tag=$incdir/.multiarch-processing.${file##*/} + [[ -f "$tag" ]] && return + touch $tag + + # sanity checks, extract path parts echo $file | grep -q '/include/' || error "Unsupported includedir $incdir" local prefix=`echo $incdir | sed -n '/\(.*\/include\)\/.*/s//\1/p'` [[ -z "$prefix" ]] && prefix="$incdir" local suffix=`echo $incdir | sed -n '/.*\/include\/\(.*\)/s//\1/p'` [[ -n "$suffix" ]] && suffix="$suffix/" + # dispatch nested includes expected in local directory sed -n '/^#[ \t]*include[ \t]*"\([^"][^"]*\)".*/s//\1/p' $file | \ while read localfile; do [[ -f "$incdir/$localfile" ]] && dispatch_includes $incdir/$localfile done + # dispatch selected include file, provided it's not already dispatched grep -q _MULTIARCH_HEADER $file || { local archincdir=$prefix/$mplat/$suffix @@ -73,6 +82,9 @@ function dispatch_includes() { #include <multiarch-dispatch.h> EOF } + + # done with this file + rm -f $tag } while [[ $# -gt 0 ]]; do |