Author: stevehay
Date: Wed Jul 17 08:20:36 2013
New Revision: 1504043
URL: http://svn.apache.org/r1504043
Log:
Fix linking of Apache2::ServerUtil
This commit reverts r1503137: I had failed to spot that ap_get_server_version
is actually defined in modperl_apache_compat.c (thanks, Jan Kaluza!), which I
should have known because I'd already fiddled with it in r1502135! This commit
also reverts that, and (hopefully) does the job properly this time.
Normally, ap_get_server_version is exported from an httpd library and
AP_DECLARE in third-party code such as ours means to dllimport it from there.
However, if we're building against httpd-2.3+ then httpd no longer provides
that symbol, but we have our own definition in modperl_apache_compat.c instead.
In this case we need AP_DECLARE to mean dllexport (like it does when building
the httpd core) so that our compat version gets exported from mod_perl.so/lib
(but we still need to dllimport it when building
Apache2/ServerUtil/ServerUtil.dll, of course).
This is effected by #defining AP_DECLARE_EXPORT in modperl_apache_compat.c
(before modperl_apache_compat.h gets included, to cover the declaration too).
This will affect all such declarations in that file (which is correct, being
the whole point of the file) without affecting any other code, which continues
to dllimport as usual (either from some httpd library, or from mod_perl.so/lib,
whatever happens to provide the definition).
The case of ap_get_server_banner/description must also have been similarly
broken for httpd-2.2 builds, and should also be fixed by this commit.
Modified:
perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.c
perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.h
perl/modperl/branches/httpd24/xs/maps/apache2_functions.map
Modified: perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.c
URL:
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.c?rev=1504043&r1=1504042&r2=1504043&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.c
(original)
+++ perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.c Wed
Jul 17 08:20:36 2013
@@ -14,6 +14,7 @@
* limitations under the License.
*/
+#define AP_DECLARE_EXPORT
#include "mod_perl.h"
/* back compat adjustements for older Apache versions
@@ -62,7 +63,7 @@ AP_DECLARE(const char *) ap_get_server_b
MP_FUNC, ver, fallback); \
}
-const char * ap_get_server_version(void) {
+AP_DECLARE(const char *) ap_get_server_version(void) {
modperl_warn_deprecated_http_function("2.3.0",
"ap_get_server_(description|banner)");
return ap_get_server_banner();
Modified: perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.h
URL:
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.h?rev=1504043&r1=1504042&r2=1504043&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.h
(original)
+++ perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.h Wed
Jul 17 08:20:36 2013
@@ -50,7 +50,7 @@ AP_DECLARE(const char *) ap_get_server_b
#if AP_MODULE_MAGIC_AT_LEAST(20060905,0)
/* removed in APACHE-2.3.0 */
-const char * ap_get_server_version(void);
+AP_DECLARE(const char *) ap_get_server_version(void);
#endif /* since-APACHE-2.3.0 */
Modified: perl/modperl/branches/httpd24/xs/maps/apache2_functions.map
URL:
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/xs/maps/apache2_functions.map?rev=1504043&r1=1504042&r2=1504043&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/xs/maps/apache2_functions.map (original)
+++ perl/modperl/branches/httpd24/xs/maps/apache2_functions.map Wed Jul 17
08:20:36 2013
@@ -188,17 +188,9 @@ MODULE=Apache2::ServerUtil PACKAGE=Apa
MODULE=Apache2::ServerUtil PACKAGE=Apache2::ServerUtil
ap_exists_config_define
ap_server_root_relative | | p, fname=""
-#_if_ do { \
- Apache2::Build->build_config \
- ->httpd_version =~ /^(\d+)\.(\d+)\.(\d+)/ \
- ? ($1*1000+$2)*1000+$3 \
- : die "Cannot get httpd version"; \
- } > 2003000
ap_get_server_banner
ap_get_server_description
-#_else_
ap_get_server_version
-#_end_
MODULE=Apache2::ServerUtil PACKAGE=guess
ap_error_log2stderr