* Updated configure/make scripts to resolve various issues.
- Added detection whether or not -fPIC switch is required when compiling shared objects (plug-ins) to resolve compile issues on 64-bit platforms (topic:208746). - Native 'strnlen' implementations are now detected and disable the one in strlib (bugreport:1261). - Define 'DB_MANUAL_CAST_TO_UNION' is now set when necessary (bugreport:1261). git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14708 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
86091a86f7
commit
ba8bd70b0c
@ -1,5 +1,10 @@
|
||||
Date Added
|
||||
|
||||
2011/02/16
|
||||
* Updated configure/make scripts to resolve various issues. [Ai4rei]
|
||||
- Added detection whether or not -fPIC switch is required when compiling shared objects (plug-ins) to resolve compile issues on 64-bit platforms (topic:208746).
|
||||
- Native 'strnlen' implementations are now detected and disable the one in strlib (bugreport:1261).
|
||||
- Define 'DB_MANUAL_CAST_TO_UNION' is now set when necessary (bugreport:1261).
|
||||
2011/02/15
|
||||
* Added support for client GM command /check (related r12076). [Ai4rei]
|
||||
2011/02/14
|
||||
|
18
Makefile.in
18
Makefile.in
@ -2,7 +2,7 @@
|
||||
|
||||
HAVE_MYSQL=@HAVE_MYSQL@
|
||||
ifeq ($(HAVE_MYSQL),yes)
|
||||
ALL_DEPENDS=common common_sql login login_sql char char_sql map map_sql tools converters plugins import save
|
||||
ALL_DEPENDS=common common_sql login login_sql char char_sql map map_sql tools converters import save
|
||||
SQL_DEPENDS=common_sql login_sql char_sql map_sql import save
|
||||
COMMON_SQL_DEPENDS=
|
||||
LOGIN_SQL_DEPENDS=common_sql
|
||||
@ -10,7 +10,7 @@ ifeq ($(HAVE_MYSQL),yes)
|
||||
MAP_SQL_DEPENDS=common_sql
|
||||
CONVERTERS_DEPENDS=common_sql
|
||||
else
|
||||
ALL_DEPENDS=common login char map tools plugins import save
|
||||
ALL_DEPENDS=common login char map tools import save
|
||||
SQL_DEPENDS=needs_mysql
|
||||
COMMON_SQL_DEPENDS=needs_mysql
|
||||
LOGIN_SQL_DEPENDS=needs_mysql
|
||||
@ -19,6 +19,14 @@ else
|
||||
CONVERTERS_DEPENDS=needs_mysql
|
||||
endif
|
||||
|
||||
WITH_PLUGINS=@WITH_PLUGINS@
|
||||
ifeq ($(WITH_PLUGINS),yes)
|
||||
ALL_DEPENDS+=plugins
|
||||
PLUGIN_DEPENDS=common
|
||||
else
|
||||
PLUGIN_DEPENDS=no_plugins
|
||||
endif
|
||||
|
||||
#####################################################################
|
||||
.PHONY: txt sql conf \
|
||||
common common_sql \
|
||||
@ -66,7 +74,7 @@ tools:
|
||||
converters: $(CONVERTERS_DEPENDS)
|
||||
@$(MAKE) -C src/txt-converter
|
||||
|
||||
plugins addons: common
|
||||
plugins addons: $(PLUGIN_DEPENDS)
|
||||
@$(MAKE) -C src/plugins
|
||||
|
||||
import:
|
||||
@ -129,6 +137,10 @@ needs_mysql:
|
||||
@echo "MySQL not found or disabled by the configure script"
|
||||
@exit 1
|
||||
|
||||
no_plugins:
|
||||
@echo "Plugins disabled by the configure script"
|
||||
@exit 1
|
||||
|
||||
#####################################################################
|
||||
# TODO
|
||||
|
||||
|
339
configure
vendored
339
configure
vendored
@ -1,5 +1,5 @@
|
||||
#! /bin/sh
|
||||
# From configure.in Revision: 13486 .
|
||||
# From configure.in Revision: 14708 .
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.59.
|
||||
#
|
||||
@ -311,7 +311,7 @@ ac_includes_default="\
|
||||
# include <unistd.h>
|
||||
#endif"
|
||||
|
||||
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP MYSQL_CONFIG_HOME HAVE_MYSQL MYSQL_VERSION MYSQL_CFLAGS MYSQL_LIBS HAVE_PCRE PCRE_LIBS PCRE_CFLAGS DLLEXT LIBOBJS LTLIBOBJS'
|
||||
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP WITH_PLUGINS EGREP MYSQL_CONFIG_HOME HAVE_MYSQL MYSQL_VERSION MYSQL_CFLAGS MYSQL_LIBS HAVE_PCRE PCRE_LIBS PCRE_CFLAGS DLLEXT LIBOBJS LTLIBOBJS'
|
||||
ac_subst_files=''
|
||||
|
||||
# Initialize some variables set by options.
|
||||
@ -1333,7 +1333,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
ac_config_files="$ac_config_files Makefile src/common/Makefile"
|
||||
|
||||
ac_config_files="$ac_config_files src/char/Makefile src/login/Makefile"
|
||||
ac_config_files="$ac_config_files src/char/Makefile src/login/Makefile"
|
||||
|
||||
ac_config_files="$ac_config_files src/char_sql/Makefile src/txt-converter/Makefile"
|
||||
|
||||
@ -3257,6 +3257,240 @@ fi
|
||||
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
|
||||
|
||||
echo "$as_me:$LINENO: checking whether $CC supports -fPIC" >&5
|
||||
echo $ECHO_N "checking whether $CC supports -fPIC... $ECHO_C" >&6
|
||||
OLD_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -fPIC"
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
int foo;
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
(eval $ac_compile) 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; } &&
|
||||
{ ac_try='test -s conftest.$ac_objext'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
|
||||
echo "$as_me:$LINENO: result: yes" >&5
|
||||
echo "${ECHO_T}yes" >&6
|
||||
compiler_supports_pic="yes"
|
||||
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
|
||||
echo "$as_me:$LINENO: result: no" >&5
|
||||
echo "${ECHO_T}no" >&6
|
||||
compiler_supports_pic="no"
|
||||
|
||||
|
||||
fi
|
||||
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
CFLAGS="$OLD_CFLAGS"
|
||||
|
||||
|
||||
#
|
||||
# -shared needs position independent code; some platforms emit it
|
||||
# always, others need -fPIC
|
||||
#
|
||||
echo "$as_me:$LINENO: checking whether $CC needs -fPIC for shared objects" >&5
|
||||
echo $ECHO_N "checking whether $CC needs -fPIC for shared objects... $ECHO_C" >&6
|
||||
OLD_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -shared"
|
||||
WITH_PLUGINS="yes"
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
|
||||
int foo(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext conftest$ac_exeext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
||||
(eval $ac_link) 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; } &&
|
||||
{ ac_try='test -s conftest$ac_exeext'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
|
||||
echo "$as_me:$LINENO: result: no" >&5
|
||||
echo "${ECHO_T}no" >&6
|
||||
CFLAGS="$OLD_CFLAGS"
|
||||
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
|
||||
if test "$compiler_supports_pic" = "yes" ; then
|
||||
# Verify if -shared really fails due to lack of -fPIC or something else
|
||||
CFLAGS="$CFLAGS -fPIC"
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
|
||||
int foo(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext conftest$ac_exeext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
||||
(eval $ac_link) 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; } &&
|
||||
{ ac_try='test -s conftest$ac_exeext'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
|
||||
echo "$as_me:$LINENO: result: yes" >&5
|
||||
echo "${ECHO_T}yes" >&6
|
||||
CFLAGS="$OLD_CFLAGS -fPIC"
|
||||
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
|
||||
echo "$as_me:$LINENO: result: no, but fails for another reason" >&5
|
||||
echo "${ECHO_T}no, but fails for another reason" >&6
|
||||
{ { echo "$as_me:$LINENO: error: compiler is unable to compile shared objects for an unhandled reason, please report this with attached config.log... stopping" >&5
|
||||
echo "$as_me: error: compiler is unable to compile shared objects for an unhandled reason, please report this with attached config.log... stopping" >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
|
||||
|
||||
fi
|
||||
rm -f conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
else
|
||||
# Disable compilation of plugins (optional), so 'make all' does not fail
|
||||
echo "$as_me:$LINENO: result: yes, but unsupported" >&5
|
||||
echo "${ECHO_T}yes, but unsupported" >&6
|
||||
{ echo "$as_me:$LINENO: compiler is unable to generate position independent code, disabled plugins (optional)" >&5
|
||||
echo "$as_me: compiler is unable to generate position independent code, disabled plugins (optional)" >&6;}
|
||||
WITH_PLUGINS="no"
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
rm -f conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
|
||||
|
||||
|
||||
#
|
||||
# DB_MANUAL_CAST_TO_UNION
|
||||
#
|
||||
echo "$as_me:$LINENO: checking whether $CC is able to typecast to union" >&5
|
||||
echo $ECHO_N "checking whether $CC is able to typecast to union... $ECHO_C" >&6
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
|
||||
typedef union Foonion
|
||||
{
|
||||
int i;
|
||||
unsigned int ui;
|
||||
const char* s;
|
||||
}
|
||||
Foonion;
|
||||
|
||||
int bar(Foonion onion)
|
||||
{
|
||||
return onion.i;
|
||||
}
|
||||
|
||||
int foo(void)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
return bar(((Foonion)(int)i));
|
||||
}
|
||||
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
(eval $ac_compile) 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; } &&
|
||||
{ ac_try='test -s conftest.$ac_objext'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
|
||||
echo "$as_me:$LINENO: result: yes" >&5
|
||||
echo "${ECHO_T}yes" >&6
|
||||
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
|
||||
echo "$as_me:$LINENO: result: no" >&5
|
||||
echo "${ECHO_T}no" >&6
|
||||
CFLAGS="$CFLAGS -DDB_MANUAL_CAST_TO_UNION"
|
||||
|
||||
|
||||
fi
|
||||
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Check for libraries and header files.
|
||||
@ -3362,6 +3596,104 @@ fi
|
||||
|
||||
|
||||
|
||||
#
|
||||
# strnlen - string length with upper scan bound
|
||||
#
|
||||
echo "$as_me:$LINENO: checking for strnlen" >&5
|
||||
echo $ECHO_N "checking for strnlen... $ECHO_C" >&6
|
||||
if test "${ac_cv_func_strnlen+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
/* Define strnlen to an innocuous variant, in case <limits.h> declares strnlen.
|
||||
For example, HP-UX 11i <limits.h> declares gettimeofday. */
|
||||
#define strnlen innocuous_strnlen
|
||||
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char strnlen (); below.
|
||||
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|
||||
<limits.h> exists even on freestanding compilers. */
|
||||
|
||||
#ifdef __STDC__
|
||||
# include <limits.h>
|
||||
#else
|
||||
# include <assert.h>
|
||||
#endif
|
||||
|
||||
#undef strnlen
|
||||
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
/* We use char because int might match the return type of a gcc2
|
||||
builtin and then its argument prototype would still apply. */
|
||||
char strnlen ();
|
||||
/* The GNU C library defines this for functions which it implements
|
||||
to always fail with ENOSYS. Some functions are actually named
|
||||
something starting with __ and the normal name is an alias. */
|
||||
#if defined (__stub_strnlen) || defined (__stub___strnlen)
|
||||
choke me
|
||||
#else
|
||||
char (*f) () = strnlen;
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
return f != strnlen;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext conftest$ac_exeext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
||||
(eval $ac_link) 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag"
|
||||
|| test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; } &&
|
||||
{ ac_try='test -s conftest$ac_exeext'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
ac_cv_func_strnlen=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_cv_func_strnlen=no
|
||||
fi
|
||||
rm -f conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
fi
|
||||
echo "$as_me:$LINENO: result: $ac_cv_func_strnlen" >&5
|
||||
echo "${ECHO_T}$ac_cv_func_strnlen" >&6
|
||||
if test $ac_cv_func_strnlen = yes; then
|
||||
CFLAGS="$CFLAGS -DHAVE_STRNLEN"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Memory manager
|
||||
@ -5725,6 +6057,7 @@ s,@ac_ct_CC@,$ac_ct_CC,;t t
|
||||
s,@EXEEXT@,$EXEEXT,;t t
|
||||
s,@OBJEXT@,$OBJEXT,;t t
|
||||
s,@CPP@,$CPP,;t t
|
||||
s,@WITH_PLUGINS@,$WITH_PLUGINS,;t t
|
||||
s,@EGREP@,$EGREP,;t t
|
||||
s,@MYSQL_CONFIG_HOME@,$MYSQL_CONFIG_HOME,;t t
|
||||
s,@HAVE_MYSQL@,$HAVE_MYSQL,;t t
|
||||
|
107
configure.in
107
configure.in
@ -339,6 +339,108 @@ AC_COMPILE_IFELSE(
|
||||
)
|
||||
|
||||
|
||||
AC_MSG_CHECKING([whether $CC supports -fPIC])
|
||||
OLD_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -fPIC"
|
||||
AC_COMPILE_IFELSE(
|
||||
[int foo;],
|
||||
[
|
||||
AC_MSG_RESULT([yes])
|
||||
compiler_supports_pic="yes"
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT([no])
|
||||
compiler_supports_pic="no"
|
||||
]
|
||||
)
|
||||
CFLAGS="$OLD_CFLAGS"
|
||||
|
||||
|
||||
#
|
||||
# -shared needs position independent code; some platforms emit it
|
||||
# always, others need -fPIC
|
||||
#
|
||||
AC_MSG_CHECKING([whether $CC needs -fPIC for shared objects])
|
||||
OLD_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -shared"
|
||||
WITH_PLUGINS="yes"
|
||||
AC_LINK_IFELSE(
|
||||
[
|
||||
int foo(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT([no])
|
||||
CFLAGS="$OLD_CFLAGS"
|
||||
],
|
||||
[
|
||||
if test "$compiler_supports_pic" = "yes" ; then
|
||||
# Verify if -shared really fails due to lack of -fPIC or something else
|
||||
CFLAGS="$CFLAGS -fPIC"
|
||||
AC_LINK_IFELSE(
|
||||
[
|
||||
int foo(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT([yes])
|
||||
CFLAGS="$OLD_CFLAGS -fPIC"
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT([no, but fails for another reason])
|
||||
AC_MSG_ERROR([compiler is unable to compile shared objects for an unhandled reason, please report this with attached config.log... stopping])
|
||||
]
|
||||
)
|
||||
else
|
||||
# Disable compilation of plugins (optional), so 'make all' does not fail
|
||||
AC_MSG_RESULT([yes, but unsupported])
|
||||
AC_MSG_NOTICE([compiler is unable to generate position independent code, disabled plugins (optional)])
|
||||
WITH_PLUGINS="no"
|
||||
fi
|
||||
]
|
||||
)
|
||||
AC_SUBST([WITH_PLUGINS])
|
||||
|
||||
|
||||
#
|
||||
# DB_MANUAL_CAST_TO_UNION
|
||||
#
|
||||
AC_MSG_CHECKING([whether $CC is able to typecast to union])
|
||||
AC_COMPILE_IFELSE(
|
||||
[
|
||||
typedef union Foonion
|
||||
{
|
||||
int i;
|
||||
unsigned int ui;
|
||||
const char* s;
|
||||
}
|
||||
Foonion;
|
||||
|
||||
int bar(Foonion onion)
|
||||
{
|
||||
return onion.i;
|
||||
}
|
||||
|
||||
int foo(void)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
return bar(((Foonion)(int)i));
|
||||
}
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT([yes])
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT([no])
|
||||
CFLAGS="$CFLAGS -DDB_MANUAL_CAST_TO_UNION"
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Check for libraries and header files.
|
||||
@ -351,6 +453,11 @@ AC_COMPILE_IFELSE(
|
||||
AC_CHECK_FUNC([setrlimit],[CFLAGS="$CFLAGS -DHAVE_SETRLIMIT"])
|
||||
|
||||
|
||||
#
|
||||
# strnlen - string length with upper scan bound
|
||||
#
|
||||
AC_CHECK_FUNC([strnlen],[CFLAGS="$CFLAGS -DHAVE_STRNLEN"])
|
||||
|
||||
|
||||
#
|
||||
# Memory manager
|
||||
|
@ -8,7 +8,6 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
|
||||
@ -241,7 +240,7 @@ char* _strtok_r(char *s1, const char *s2, char **lasts)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !(defined(WIN32) && defined(_MSC_VER) && _MSC_VER >= 1400) && !defined(CYGWIN)
|
||||
#if !(defined(WIN32) && defined(_MSC_VER) && _MSC_VER >= 1400) && !defined(HAVE_STRNLEN)
|
||||
/* Find the length of STRING, but scan at most MAXLEN characters.
|
||||
If no '\0' terminator is found in that many characters, return MAXLEN. */
|
||||
size_t strnlen (const char* string, size_t maxlen)
|
||||
|
@ -9,6 +9,10 @@
|
||||
#endif
|
||||
#include <stdarg.h>
|
||||
|
||||
#define __USE_GNU // required to enable strnlen on some platforms
|
||||
#include <string.h>
|
||||
#undef __USE_GNU
|
||||
|
||||
char* jstrescape (char* pt);
|
||||
char* jstrescapecpy (char* pt, const char* spt);
|
||||
int jmemescapecpy (char* pt, const char* spt, int size);
|
||||
@ -24,7 +28,7 @@ const char *stristr(const char *haystack, const char *needle);
|
||||
char* _strtok_r(char* s1, const char* s2, char** lasts);
|
||||
#endif
|
||||
|
||||
#if !(defined(WIN32) && defined(_MSC_VER) && _MSC_VER >= 1400) && !defined(CYGWIN)
|
||||
#if !(defined(WIN32) && defined(_MSC_VER) && _MSC_VER >= 1400) && !defined(HAVE_STRNLEN)
|
||||
size_t strnlen (const char* string, size_t maxlen);
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user