aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlloyd <[email protected]>2006-09-08 00:41:34 +0000
committerlloyd <[email protected]>2006-09-08 00:41:34 +0000
commit02dc261335127a77ecbe71d0c5c3480b0fa7b245 (patch)
tree3dbe1d8fb8c394a27a2211f04d42941933c39e7a
parentc9ac2557367d79937ad267852905cebe66c44704 (diff)
Generate the botan-config script through a simple template-based system.
-rwxr-xr-xconfigure.pl107
-rw-r--r--misc/config/botan-config.in57
2 files changed, 98 insertions, 66 deletions
diff --git a/configure.pl b/configure.pl
index 35aec705a..11a683561 100755
--- a/configure.pl
+++ b/configure.pl
@@ -1167,9 +1167,9 @@ sub guess_triple
if($cc eq '') {
my $msg =
- "Can't find a usable C++ compiler, is your PATH right?\n" .
- "You might need to run with explicit compiler/system flags;\n" .
- " run '$0 --help' for more information\n";
+ "Can't find a usable C++ compiler, is your PATH right?\n" .
+ "You might need to run with explicit compiler/system flags;\n" .
+ " run '$0 --help' for more information\n";
error($msg);
}
@@ -1285,6 +1285,38 @@ END_OF_CONFIG_H
close CONFIG_H;
}
+sub process_template {
+ my ($in, $out, $vars) = @_;
+
+ open IN, "<$in" or die "Couldn't read $in ($!)\n";
+ open OUT, ">$out" or die "Couldn't write $out ($!)\n";
+
+ my $lineno = 0;
+ while(my $line = <IN>) {
+ $lineno++;
+
+ foreach my $name (keys %$vars)
+ {
+ my $val = $$vars{$name};
+ $line =~ s/@\{var:$name\}/$val/g;
+
+ unless($val eq 'no' or $val eq 'false') {
+ $line =~ s/\@\{if:$name (.*) (.*)\}/$1/g;
+ } else {
+ $line =~ s/\@\{if:$name (.*) (.*)\}/$2/g;
+ }
+ }
+
+ if($line =~ /@\{var:(.*)\}/) {
+ die "Unbound variable '$1' at $in:$lineno\n";
+ }
+
+ print OUT $line;
+ }
+ close IN;
+ close OUT;
+}
+
sub print_pkg_config
{
my ($os, $major,$minor,$patch,@libs) = @_;
@@ -1303,70 +1335,13 @@ sub print_pkg_config
my $VERSION = $major . "." . $minor . "." . $patch;
- open PKGCONFIG, ">botan-config" or
- die "Couldn't write to botan-config ($!)";
-
- print PKGCONFIG <<END_OF_FILE;
-#!/bin/sh
-
-guess_prefix=\`dirname \\\`dirname \$0\\\`\`
-install_prefix=$install_root
-prefix=
-includedir=$header_dir
-libdir=$lib_dir
-
-usage()
-{
- echo "botan-config [--prefix[=DIR]] [--version] [--libs] [--cflags]"
- exit 1
-}
+ process_template('misc/config/botan-config.in', 'botan-config',
+ { 'version' => $VERSION,
+ 'prefix' => $install_root,
+ 'includedir' => $header_dir,
+ 'libdir' => $lib_dir,
+ 'libs' => $link_to });
-if test \$# -eq 0; then
- usage
-fi
-
-if test \`echo \$guess_prefix | cut -c 1\` = "/"; then
- prefix=\$guess_prefix
-else
- prefix=\$install_prefix
-fi
-
-while test \$# -gt 0; do
- case "\$1" in
- -*=*) optarg=`echo "\$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) optarg= ;;
- esac
- case "\$1" in
- --prefix=*)
- prefix=\$optarg
- ;;
- --prefix)
- echo \$prefix
- ;;
- --version)
- echo $VERSION
- exit 0
- ;;
- --cflags)
- if [ \$prefix != "/usr" -a \$prefix != "/usr/local" ]
- then
- echo -I\$prefix/\$includedir
- fi
- ;;
- --libs)
- echo -L\$prefix/\$libdir $link_to -lbotan
- ;;
- *)
- usage
- ;;
- esac
- shift
-done
-
-exit 0
-END_OF_FILE
-
- close PKGCONFIG;
chmod 0755, 'botan-config';
}
diff --git a/misc/config/botan-config.in b/misc/config/botan-config.in
new file mode 100644
index 000000000..e3554eef3
--- /dev/null
+++ b/misc/config/botan-config.in
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+guess_prefix=`dirname \`dirname $0\``
+install_prefix=@{var:prefix}
+prefix=
+includedir=@{var:includedir}
+libdir=@{var:libdir}
+
+usage()
+{
+ echo "botan-config [--prefix[=DIR]] [--version] [--libs] [--cflags]"
+ exit 1
+}
+
+if test $# -eq 0; then
+ usage
+fi
+
+if test `echo $guess_prefix | cut -c 1` = "/"; then
+ prefix=$guess_prefix
+else
+ prefix=$install_prefix
+fi
+
+while test $# -gt 0; do
+ case "$1" in
+ -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+ case "$1" in
+ --prefix=*)
+ prefix=$optarg
+ ;;
+ --prefix)
+ echo $prefix
+ ;;
+ --version)
+ echo @{var:version}
+ exit 0
+ ;;
+ --cflags)
+ if [ $prefix != "/usr" -a $prefix != "/usr/local" ]
+ then
+ echo -I$prefix/$includedir
+ fi
+ ;;
+ --libs)
+ echo -L$prefix/$libdir @{var:libs} -lbotan
+ ;;
+ *)
+ usage
+ ;;
+ esac
+ shift
+done
+
+exit 0