summaryrefslogtreecommitdiff
path: root/build-aux/gl/build-aux/inline-source
diff options
context:
space:
mode:
Diffstat (limited to 'build-aux/gl/build-aux/inline-source')
-rwxr-xr-xbuild-aux/gl/build-aux/inline-source154
1 files changed, 154 insertions, 0 deletions
diff --git a/build-aux/gl/build-aux/inline-source b/build-aux/gl/build-aux/inline-source
new file mode 100755
index 00000000..4bd26b10
--- /dev/null
+++ b/build-aux/gl/build-aux/inline-source
@@ -0,0 +1,154 @@
+#! /bin/sh
+
+# Output the contents of a shell script with sourced files inlined.
+# Written by Gary V. Vaughan, 2012
+
+# Copyright (C) 2012-2013 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions. There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# Source required external libraries:
+. `echo "$0" |${SED-sed} 's|[^/]*$||'`"funclib.sh"
+. `echo "$0" |${SED-sed} 's|[^/]*$||'`"options-parser"
+
+# Set a version string for *this* script.
+scriptversion=2012-10-11.10; # UTC
+
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to bug-libtool@gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Run 'build-aux/inline-source --help' for help with using this script
+# from the command line.
+
+# Recursively scan through a FILE passed on the command line, replacing
+# either of the following:
+# . "relative/file"
+# . `echo "$0" |edit`"relative/file"
+# with the contents of the referenced files.
+
+
+## ---------------- ##
+## Options parsing. ##
+## ---------------- ##
+
+usage='$progpath [OPTION]... FILE'
+
+# Short help message in response to '-h'.
+usage_message='Options:
+ --debug enable verbose shell tracing
+ --version print version information and exit
+ -h, --help print help message and exit
+'
+
+long_help_message="\
+Report bugs to <bug-libtool@gnu.org>
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+
+func_options ${1+"$@"}
+eval set dummy "$func_options_result"; shift
+
+
+## -------------------- ##
+## Resource management. ##
+## -------------------- ##
+
+# require_AWK
+# -----------
+# Search for a "not hopeless" awk.
+require_AWK=func_require_AWK
+func_require_AWK ()
+{
+ $debug_cmd
+
+ test -n "$AWK" || {
+ # Find the first executable in the list.
+ for _G_prog in gawk mawk nawk awk
+ do
+ require_AWK_IFS=$IFS
+ IFS=${PATH_SEPARATOR-:}
+ for _G_dir in $PATH
+ do
+ IFS=$require_AWK_IFS
+ if test -f "$_G_dir/$_G_prog" && test -x "$_G_dir/$_G_prog"
+ then
+ AWK=$_G_dir/$_G_prog
+ break 2
+ fi
+ done
+ IFS=$require_AWK_IFS
+ done
+ }
+
+ test -n "$AWK" || func_fatal_error "\
+Please install GNU Awk, or 'export AWK=/path/to/gnu/awk'."
+
+ func_verbose "found '$AWK'."
+
+ require_AWK=:
+}
+
+
+## --------------- ##
+## Core functions. ##
+## --------------- ##
+
+# func_include LINE
+# -----------------
+# Output the contents of file included by LINE.
+func_include ()
+{
+ $require_AWK
+
+ test -f "$1" \
+ || func_fatal_error "file '$1' not found"
+
+ _G_scriptdir=`echo "$1" |$SED 's|[^/]*$||'`
+ test -n "$_G_scriptdir" || _G_scriptdir="./"
+
+ $AWK '
+ /^\. ['\''"].*['\''"]$/ {
+ file = substr ($2, 2, length ($2) -2);
+ system (sprintf ("'$progpath' %s", file));
+ next;
+ }
+
+ /^\. `echo [^`]*`['\''"][^'\''"]*['\''"]$/ {
+ tail = substr ($0, match ($0, /`['\''"]/));
+ file = substr (tail, 3, length (tail) -3);
+ system (sprintf ("'$progpath' '"$_G_scriptdir"'%s", file));
+ next;
+ }
+
+ { print; }
+ ' < "$1"
+}
+
+func_include "$1"
+
+exit 0
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End: