From: Ryan Bloom Date: Sun, 26 Aug 2001 06:25:00 +0000 (+0000) Subject: Improvements to APXS. It now uses the config_vars.mk variables to X-Git-Tag: 2.0.25~44 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6f7bc4aede4660e9770d699f98c089edd2cb85fa;p=thirdparty%2Fapache%2Fhttpd.git Improvements to APXS. It now uses the config_vars.mk variables to figure out how to build stuff. It uses the Apache build system for the generated module, but not for command line builds. Maybe I'll fix that one day. If somebody wants to beat me to it, that would be cool. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@90696 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/Makefile.in b/Makefile.in index df825faa798..50d83d78624 100644 --- a/Makefile.in +++ b/Makefile.in @@ -51,9 +51,13 @@ install-conf: install-build: @echo Installing build system files @test -d $(installbuilddir) || $(MKINSTALLDIRS) $(installbuilddir) - @cp config_vars.mk $(installbuilddir); \ - cd build; \ - cp *.mk $(installbuilddir); + @sed 's#LIBTOOL = \(.*\)#LIBTOOL = $(SHELL) $(installbuilddir)/libtool $(LTFLAGS)#' \ + config_vars.mk > $(installbuilddir)config_vars.mk; \ + cp build/*.mk $(installbuilddir); \ + cp srclib/apr/libtool $(installbuilddir); \ + if test -f srclib/apr/shlibtool; then \ + cp srclib/apr/shlibtool $(installbuilddir); \ + fi htdocs-srcdir = docs/docroot diff --git a/support/apxs.in b/support/apxs.in index 3fb508ea2ed..40299ef3575 100644 --- a/support/apxs.in +++ b/support/apxs.in @@ -52,10 +52,6 @@ # information on the Apache Software Foundation, please see # . # -## -## apxs -- APache eXtenSion tool -## Written by Ralf S. Engelschall -## require 5.003; use strict; @@ -65,26 +61,17 @@ package apxs; ## Configuration ## -my $CFG_TARGET = '@progname@'; -my $CFG_CC = '@CC@'; -my $CFG_DEFS = '@DEFS@'; -my $CFG_CFLAGS = '@CFLAGS@ @EXTRA_CFLAGS@'; -my $CFG_PREFIX = "@prefix@"; -my $prefix = "$CFG_PREFIX"; -my $CFG_EXEC_PREFIX = "@exec_prefix@"; -my $exec_prefix = "$CFG_EXEC_PREFIX"; -my $CFG_SBINDIR = "@bindir@"; -my $CFG_INCLUDEDIR = "@includedir@"; -my $CFG_LIBEXECDIR = "@libexecdir@"; -my $CFG_SYSCONFDIR = "@sysconfdir@"; - - -## -## Cleanup the above stuff -## -$CFG_CFLAGS =~ s|^\s+||; -$CFG_CFLAGS =~ s|\s+$||; -$CFG_CFLAGS =~ s|\s+`.+apaci`||; +my $prefix = "@prefix@"; +my $CFG_PREFIX = "$prefix"; +my $exec_prefix = get_vars("exec_prefix"); +my $CFG_TARGET = get_vars("progname"); +my $CFG_SYSCONFDIR = get_vars("sysconfdir"); +my $CFG_CFLAGS = get_vars("SHLTCFLAGS"); +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"); ## ## parse argument line @@ -219,15 +206,17 @@ if (@opt_S) { ## ## Initial shared object support check ## -my $httpd = "$CFG_SBINDIR/$CFG_TARGET"; +my $exec_prefix = get_vars("exec_prefix"); +my $httpd = get_vars("bindir") . "/" . get_vars("progname"); +my $temp = eval qq("$httpd"); +my $httpd = eval qq("$temp"); #allow apxs to be run from the source tree, before installation if ($0 =~ m:support/apxs$:) { ($httpd = $0) =~ s:support/apxs$::; - $httpd .= $CFG_TARGET; } -if (not -x $httpd) { +if (not -x "$httpd") { print STDERR "apxs:Error: $httpd not found or not executable\n"; exit(1); } @@ -239,6 +228,36 @@ if (not grep(/mod_so/, `$httpd -l`)) { exit(1); } +sub get_vars { + my $result = ''; + my $arg; + my $ok = 0; + foreach $arg (@_) { + open IN, "$prefix/build/config_vars.mk" or die "open $prefix/build/config_vars.mk: $!"; + while () { + my $var; + my $val; + if (/(.*) = (.*)$/) { + $var = $1; + $val = $2; + } + next unless $var; + if ($arg eq $var or $arg eq lc($var)) { + $result .= "$val;;"; + $ok = 1; + last; + } + } + if (not $ok) { + printf(STDERR "apxs:Error: Invalid query string `%s'\n", $arg); + exit(1); + } + } + $result =~ s|;;$||; + $result =~ s|:| |; + return("$result"); +} + ## ## Operation ## @@ -273,7 +292,7 @@ if ($opt_g) { $data =~ s|%NAME%|$name|sg; $data =~ s|%TARGET%|$CFG_TARGET|sg; - my ($mkf, $src) = ($data =~ m|^(.+)-=#=-\n(.+)|s); + my ($mkf, $mods, $src) = ($data =~ m|^(.+)-=#=-\n(.+)-=#=-\n(.+)|s); print STDERR "Creating [DIR] $name\n"; system("mkdir $name"); @@ -281,10 +300,16 @@ if ($opt_g) { open(FP, ">${name}/Makefile") || die; print FP $mkf; close(FP); + print STDERR "Creating [FILE] $name/modules.mk\n"; + open(FP, ">${name}/modules.mk") || die; + print FP $mods; + close(FP); print STDERR "Creating [FILE] $name/mod_$name.c\n"; open(FP, ">${name}/mod_${name}.c") || die; print FP $src; close(FP); + print STDERR "Creating [FILE] $name/.deps\n"; + system("touch ${name}/.deps"); exit(0); } @@ -294,30 +319,8 @@ if ($opt_q) { ## ## QUERY INFORMATION ## - - my $result = ''; - my $arg; - foreach $arg (@args) { - my $ok = 0; - my $name; - foreach $name (qw( - TARGET CC CFLAGS CFLAGS_SHLIB LD_SHLIB LDFLAGS_SHLIB LIBS_SHLIB - PREFIX SBINDIR INCLUDEDIR LIBEXECDIR SYSCONFDIR - )) { - if ($arg eq $name or $arg eq lc($name)) { - my $val = eval "\$CFG_$name"; - $result .= "${val}::"; - $ok = 1; - } - } - if (not $ok) { - printf(STDERR "apxs:Error: Invalid query string `%s'\n", $arg); - exit(1); - } - } - $result =~ s|::$||; - $result =~ s|::| |; - print $result; + my $result = get_vars(@args); + print "$result\n"; } if ($opt_c) { @@ -407,7 +410,7 @@ if ($opt_c) { $opt .= " -l$opt_l"; } - push(@cmds, "libtool --silent --mode=link $CFG_CC $cflags -o $dso_file -rpath $CFG_LIBEXECDIR -module -avoid-version $opt $lo"); + push(@cmds, "libtool --silent --mode=link $CFG_CC -o $dso_file -rpath $CFG_LIBEXECDIR -module -avoid-version $opt $lo"); # execute the commands &execute_cmds(@cmds); @@ -492,6 +495,7 @@ if ($opt_i or $opt_e) { } open(FP, "<$CFG_SYSCONFDIR/$CFG_TARGET.conf") || die; + open(FP, "httpd.conf") || die; my $content = join('', ); close(FP); @@ -543,6 +547,11 @@ __DATA__ ## Autogenerated via ``apxs -n %NAME% -g''. ## +builddir=$(shell pwd) +top_srcdir=/home/rbb/apachebin4 +top_builddir=/home/rbb/apachebin4/build +include /home/rbb/apachebin4/build/special.mk + # the used tools APXS=apxs APACHECTL=apachectl @@ -553,15 +562,10 @@ APACHECTL=apachectl #LIB=-Lmy/lib/dir -lmylib # the default target -all: mod_%NAME%.la - -# compile the shared object file -mod_%NAME%.la: mod_%NAME%.c - $(APXS) -c $(DEF) $(INC) $(LIB) mod_%NAME%.c +all: local-shared-build # install the shared object file into Apache -install: all - $(APXS) -i -a -n '%NAME%' mod_%NAME%.la +install: install-modules # cleanup clean: @@ -584,6 +588,11 @@ restart: stop: $(APACHECTL) stop +-=#=- +mod_%NAME%.la: mod_%NAME%.slo + $(SH_LINK) -rpath $(libexecdir) -module -avoid-version mod_%NAME%.lo +DISTCLEAN_TARGETS = modules.mk +shared = mod_%NAME%.la -=#=- /* ** mod_%NAME%.c -- Apache sample %NAME% module