Index: support/apxs.in =================================================================== RCS file: /home/cvspublic/httpd-2.0/support/apxs.in,v retrieving revision 1.36 diff -U3 -r1.36 apxs.in --- support/apxs.in 13 Mar 2002 20:48:05 -0000 1.36 +++ support/apxs.in 6 Apr 2002 18:48:01 -0000 @@ -58,36 +58,6 @@ package apxs; ## -## Configuration -## - -my $prefix = "@prefix@"; -my $CFG_PREFIX = $prefix; - -# read the configuration variables once -my %config_vars = (); -get_config_vars("$prefix/build/config_vars.mk",\%config_vars); - -my $exec_prefix = get_vars("exec_prefix"); -my $CFG_TARGET = get_vars("progname"); -my $CFG_SYSCONFDIR = get_vars("sysconfdir"); -my $CFG_CFLAGS = join ' ', map { get_vars($_) } - qw(SHLTCFLAGS CFLAGS NOTEST_CPPFLAGS EXTRA_CPPFLAGS EXTRA_CFLAGS); -my $includedir = get_vars("includedir"); -my $CFG_INCLUDEDIR = eval qq("$includedir"); -my $CFG_CC = get_vars("CC"); -my $libexecdir = get_vars("libexecdir"); -my $CFG_LIBEXECDIR = eval qq("$libexecdir"); -my $sbindir = get_vars("sbindir"); -my $CFG_SBINDIR = eval qq("$sbindir"); -my $ltflags = $ENV{'LTFLAGS'}; -$ltflags or $ltflags = "--silent"; - -my %internal_vars = map {$_ => 1} - qw(TARGET CC CFLAGS CFLAGS_SHLIB LD_SHLIB LDFLAGS_SHLIB LIBS_SHLIB - PREFIX SBINDIR INCLUDEDIR LIBEXECDIR SYSCONFDIR); - -## ## parse argument line ## @@ -108,6 +78,7 @@ my $opt_A = 0; my $opt_q = 0; my $opt_h = 0; +my $opt_d = ''; # this subroutine is derived from Perl's getopts.pl with the enhancement of # the "+" metacharacter at the format string to allow a list to be built by @@ -174,19 +145,19 @@ } sub usage { - print STDERR "Usage: apxs -g [-S =] -n \n"; - print STDERR " apxs -q [-S =] ...\n"; - print STDERR " apxs -c [-S =] [-o ] [-D [=]]\n"; + print STDERR "Usage: apxs -d -g [-S =] -n \n"; + print STDERR " apxs -d -q [-S =] ...\n"; + print STDERR " apxs -d -c [-S =] [-o ] [-D [=]]\n"; print STDERR " [-I ] [-L ] [-l ] [-Wc,]\n"; print STDERR " [-Wl,] ...\n"; - print STDERR " apxs -i [-S =] [-a] [-A] [-n ] ...\n"; - print STDERR " apxs -e [-S =] [-a] [-A] [-n ] ...\n"; + print STDERR " apxs -d -i [-S =] [-a] [-A] [-n ] ...\n"; + print STDERR " apxs -d -e [-S =] [-a] [-A] [-n ] ...\n"; exit(1); } # option handling my $rc; -($rc, @ARGV) = &Getopts("qn:gco:I+D+L+l+W+S+eiaA", @ARGV); +($rc, @ARGV) = &Getopts("d:qn:gco:I+D+L+l+W+S+eiaA", @ARGV); &usage if ($rc == 0); &usage if ($#ARGV == -1 and not $opt_g); &usage if (not $opt_q and not ($opt_g and $opt_n) and not $opt_i and not $opt_c and not $opt_e); @@ -217,10 +188,80 @@ } } + +## +## Configuration +## + +# read the configuration variables once +my %config_vars = (); +my $mode; +my $working_dir; +my $server_root; +my $installbuilddir; + +my $temp_path = $0; + +while (-l $temp_path) { + $temp_path = readlink $temp_path; +} + +if ($temp_path =~ /^(.*)\/apxs/){ + $working_dir=$1; +} + +if ($opt_d ne ''){ + $mode="rel_"; + $server_root=$opt_d ."/"; + $installbuilddir=$server_root . "@rel_installbuilddir@"; +} +elsif ($working_dir eq '@exp_bindir@') { +#if ($working_dir eq '@exp_bindir@') { + #we are in absolute mode + $installbuilddir = '@exp_installbuilddir@/'; + $mode = "exp_"; + $server_root='@prefix@'."/"; +} +elsif ($working_dir =~ /(.*)@rel_bindir@/) { + #we are working in relative mode. + #we need to calculate what the server root is, + #and then use that as a base to work from + $server_root = $1; + $mode = "rel_"; + $installbuilddir=$server_root . "@rel_installbuilddir@"; +} +else { + die "Can't calculate what the server root is. Please use -d\n"; +} + +get_config_vars("$installbuilddir/config_vars.mk",\%config_vars)||die "Can't open config_vars.mk, $!"; + +my $prefix = $server_root; +my $CFG_PREFIX = $prefix; +my $exec_prefix = $server_root.get_vars("rel_exec_prefix"); +my $progname = get_vars("progname"); +my $CFG_TARGET = $progname; +my $CFG_SYSCONFDIR = $server_root.get_vars("rel_sysconfdir"); +my $CFG_CFLAGS = join ' ', map { get_vars($_) } + qw(SHLTCFLAGS CFLAGS NOTEST_CPPFLAGS EXTRA_CPPFLAGS EXTRA_CFLAGS); +my $includedir = $server_root.get_vars("rel_includedir"); +my $CFG_INCLUDEDIR = eval qq("$includedir"); +my $CFG_CC = get_vars("CC"); +my $libexecdir = $server_root.get_vars("rel_libexecdir"); +my $CFG_LIBEXECDIR = eval qq("$libexecdir"); +my $sbindir = $server_root.get_vars("rel_sbindir"); +my $CFG_SBINDIR = eval qq("$sbindir"); +my $ltflags = $ENV{'LTFLAGS'}; +$ltflags or $ltflags = "--silent"; + +my %internal_vars = map {$_ => 1} + qw(TARGET CC CFLAGS CFLAGS_SHLIB LD_SHLIB LDFLAGS_SHLIB LIBS_SHLIB + PREFIX SBINDIR INCLUDEDIR LIBEXECDIR SYSCONFDIR); + ## ## Initial shared object support check ## -my $httpd = get_vars("sbindir") . "/" . get_vars("progname"); +my $httpd = $sbindir . "/" . $progname; $httpd = eval qq("$httpd"); $httpd = eval qq("$httpd"); @@ -321,6 +362,7 @@ $data =~ s|%NAME%|$name|sg; $data =~ s|%TARGET%|$CFG_TARGET|sg; $data =~ s|%PREFIX%|$prefix|sg; + $data =~ s|%INSTBUILDDIR%|$installbuilddir|sg; my ($mkf, $mods, $src) = ($data =~ m|^(.+)-=#=-\n(.+)-=#=-\n(.+)|s); @@ -415,7 +457,7 @@ $la =~ s|\.c$|.la|; my $o = $s; $o =~ s|\.c$|.o|; - push(@cmds, "$prefix/build/libtool $ltflags --mode=compile $CFG_CC $cflags -I$CFG_INCLUDEDIR $opt -c -o $lo $s && touch $slo"); + push(@cmds, "$installbuilddir/libtool $ltflags --mode=compile $CFG_CC $cflags -I$CFG_INCLUDEDIR $opt -c -o $lo $s && touch $slo"); unshift(@objs, $lo); } @@ -440,7 +482,7 @@ $opt .= " -l$opt_l"; } - push(@cmds, "$prefix/build/libtool $ltflags --mode=link $CFG_CC -o $dso_file -rpath $CFG_LIBEXECDIR -module -avoid-version $opt $lo"); + push(@cmds, "$installbuilddir/libtool $ltflags --mode=link $CFG_CC -o $dso_file -rpath $CFG_LIBEXECDIR -module -avoid-version $opt $lo"); # execute the commands &execute_cmds(@cmds); @@ -471,8 +513,8 @@ $t =~ s|^.+/([^/]+)$|$1|; $t =~ s|\.la$|\.so|; if ($opt_i) { - push(@cmds, "$prefix/build/instdso.sh SH_LIBTOOL='" . - "$prefix/build/libtool' $f $CFG_LIBEXECDIR"); + push(@cmds, "$installbuilddir/instdso.sh SH_LIBTOOL='" . + "$installbuilddir/libtool' $f $CFG_LIBEXECDIR"); push(@cmds, "chmod 755 $CFG_LIBEXECDIR/$t"); } @@ -589,7 +631,7 @@ builddir=$(shell pwd) top_srcdir=%PREFIX% top_builddir=%PREFIX% -include %PREFIX%/build/special.mk +include %INSTBUILDDIR%/special.mk # the used tools APXS=apxs