1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437
|
## -*- autoconf -*-
dnl This file is part of the KDE libraries/packages
dnl Copyright (C) 1997 Janos Farkas (chexum@shadow.banki.hu)
dnl (C) 1997,98,99 Stephan Kulow (coolo@kde.org)
dnl This file is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU Library General Public
dnl License as published by the Free Software Foundation; either
dnl version 2 of the License, or (at your option) any later version.
dnl This library is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dnl Library General Public License for more details.
dnl You should have received a copy of the GNU Library General Public License
dnl along with this library; see the file COPYING.LIB. If not, write to
dnl the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
dnl Boston, MA 02111-1307, USA.
AC_DEFUN(KDE_CHECK_COMPILER_FLAG,
[
AC_MSG_CHECKING(whether $CXX supports -$1)
kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'`
AC_CACHE_VAL(kde_cv_prog_cxx_$kde_cache,
[
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -$1"
AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cxx_$kde_cache=yes"], [])
CXXFLAGS="$save_CXXFLAGS"
AC_LANG_RESTORE
])
if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then
AC_MSG_RESULT(yes)
:
$2
else
AC_MSG_RESULT(no)
:
$3
fi
])
dnl AC_REMOVE_FORBIDDEN removes forbidden arguments from variables
dnl use: AC_REMOVE_FORBIDDEN(CC, [-forbid -bad-option whatever])
dnl it's all white-space separated
AC_DEFUN(AC_REMOVE_FORBIDDEN,
[ __val=$$1
__forbid=" $2 "
if test -n "$__val"; then
__new=""
ac_save_IFS=$IFS
IFS=" "
for i in $__val; do
case "$__forbid" in
*" $i "*) AC_MSG_WARN([found forbidden $i in $1, removing it]) ;;
*) # Careful to not add spaces, where there were none, because otherwise
# libtool gets confused, if we change e.g. CXX
if test -z "$__new" ; then __new=$i ; else __new="$__new $i" ; fi ;;
esac
done
IFS=$ac_save_IFS
$1=$__new
fi
])
dnl AC_VALIDIFY_CXXFLAGS checks for forbidden flags the user may have given
AC_DEFUN(AC_VALIDIFY_CXXFLAGS,
[dnl
if test "x$kde_use_qt_emb" != "xyes"; then
AC_REMOVE_FORBIDDEN(CXX, [-fno-rtti -rpath])
AC_REMOVE_FORBIDDEN(CXXFLAGS, [-fno-rtti -rpath])
else
AC_REMOVE_FORBIDDEN(CXX, [-rpath])
AC_REMOVE_FORBIDDEN(CXXFLAGS, [-rpath])
fi
])
AC_DEFUN(AC_CHECK_COMPILERS,
[
AC_ARG_ENABLE(debug,[ --enable-debug[=ARG] enables debug symbols (yes|no|full) [default=no]],
[
case $enableval in
yes)
kde_use_debug_code="yes"
kde_use_debug_define=no
;;
full)
kde_use_debug_code="full"
kde_use_debug_define=no
;;
*)
kde_use_debug_code="no"
kde_use_debug_define=yes
;;
esac
],
[kde_use_debug_code="no"
kde_use_debug_define=no
])
dnl Just for configure --help
AC_ARG_ENABLE(dummyoption,[ --disable-debug disables debug output and debug symbols [default=no]],[],[])
AC_ARG_ENABLE(strict,[ --enable-strict compiles with strict compiler options (may not work!)],
[
if test $enableval = "no"; then
kde_use_strict_options="no"
else
kde_use_strict_options="yes"
fi
], [kde_use_strict_options="no"])
AC_ARG_ENABLE(warnings,[ --disable-warnings disables compilation with -Wall and similiar],
[
if test $enableval = "no"; then
kde_use_warnings="no"
else
kde_use_warnings="yes"
fi
], [kde_use_warnings="yes"])
dnl enable warnings for debug build
if test "$kde_use_debug_code" != "no"; then
kde_use_warnings="yes"
fi
AC_ARG_ENABLE(profile,[ --enable-profile creates profiling infos [default=no]],
[kde_use_profiling=$enableval],
[kde_use_profiling="no"]
)
dnl this prevents stupid AC_PROG_CC to add "-g" to the default CFLAGS
CFLAGS=" $CFLAGS"
AC_PROG_CC
AC_PROG_CPP
if test "$GCC" = "yes"; then
if test "$kde_use_debug_code" != "no"; then
if test $kde_use_debug_code = "full"; then
CFLAGS="-g3 $CFLAGS"
else
CFLAGS="-g -O1 $CFLAGS"
fi
else
CFLAGS="-O2 $CFLAGS"
fi
fi
if test "$kde_use_debug_define" = "yes"; then
CFLAGS="-DNDEBUG $CFLAGS"
fi
case "$host" in
*-*-sysv4.2uw*) CFLAGS="-D_UNIXWARE $CFLAGS";;
*-*-sysv5uw7*) CFLAGS="-D_UNIXWARE7 $CFLAGS";;
esac
if test -z "$LDFLAGS" && test "$kde_use_debug_code" = "no" && test "$GCC" = "yes"; then
LDFLAGS=""
fi
CXXFLAGS=" $CXXFLAGS"
AC_PROG_CXX
if test "$GXX" = "yes" || test "$CXX" = "KCC"; then
if test "$kde_use_debug_code" != "no"; then
if test "$CXX" = "KCC"; then
CXXFLAGS="+K0 -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings $CXXFLAGS"
else
if test "$kde_use_debug_code" = "full"; then
CXXFLAGS="-g3 $CXXFLAGS"
else
CXXFLAGS="-g -O1 $CXXFLAGS"
fi
fi
KDE_CHECK_COMPILER_FLAG(fno-builtin,[CXXFLAGS="-fno-builtin $CXXFLAGS"])
KDE_CHECK_COMPILER_FLAG(fno-nonansi-builtins,[CXXFLAGS="-fno-nonansi-builtins $CXXFLAGS"])
dnl convenience compiler flags
KDE_CHECK_COMPILER_FLAG(Woverloaded-virtual, [WOVERLOADED_VIRTUAL="-Woverloaded-virtual"], [WOVERLOADED_VRITUAL=""])
AC_SUBST(WOVERLOADED_VIRTUAL)
else
if test "$CXX" = "KCC"; then
CXXFLAGS="+K3 $CXXFLAGS"
else
CXXFLAGS="-O2 $CXXFLAGS"
fi
fi
fi
if test "$kde_use_debug_define" = "yes"; then
CXXFLAGS="-DNDEBUG -DNO_DEBUG $CXXFLAGS"
fi
if test "$kde_use_profiling" = "yes"; then
KDE_CHECK_COMPILER_FLAG(pg,
[
CFLAGS="-pg $CFLAGS"
CXXFLAGS="-pg $CXXFLAGS"
])
fi
if test "$kde_use_warnings" = "yes"; then
if test "$GCC" = "yes"; then
case $host in
*-*-linux-gnu)
CFLAGS="-ansi -W -Wall -pedantic -Wchar-subscripts -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE $CFLAGS"
CXXFLAGS="-ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts $CXXFLAGS"
KDE_CHECK_COMPILER_FLAG(Wmissing-format-attribute, [CXXFLAGS="$CXXFLAGS -Wformat-security -Wmissing-format-attribute"; CFLAGS="$CFLAGS -Wformat-security -Wmissing-format-attribute"])
;;
esac
CXXFLAGS="-Wall -pedantic -W -Wpointer-arith -Wwrite-strings $CXXFLAGS"
KDE_CHECK_COMPILER_FLAG(Wundef,[CXXFLAGS="-Wundef $CXXFLAGS"])
KDE_CHECK_COMPILER_FLAG(Wnon-virtual-dtor,[CXXFLAGS="-Wnon-virtual-dtor $CXXFLAGS"])
KDE_CHECK_COMPILER_FLAG(Wold-style-cast,[CXXFLAGS="-Wold-style-cast $CXXFLAGS"])
fi
fi
if test "$GCC" = "yes" && test "$kde_use_strict_options" = "yes"; then
CXXFLAGS="-Wcast-qual -Wshadow -Wcast-align $CXXFLAGS"
KDE_CHECK_COMPILER_FLAG(Weffc++,[CXXFLAGS="-Weffc++ $CXXFLAGS"])
fi
if test "$GXX" = "yes"; then
KDE_CHECK_COMPILER_FLAG(fno-exceptions,[CXXFLAGS="$CXXFLAGS -fno-exceptions"])
KDE_CHECK_COMPILER_FLAG(fno-check-new, [CXXFLAGS="$CXXFLAGS -fno-check-new"])
KDE_CHECK_COMPILER_FLAG(fexceptions, [USE_EXCEPTIONS="-fexceptions"], USE_EXCEPTIONS= )
fi
if test "$CXX" = "KCC"; then
dnl unfortunately we currently cannot disable exception support in KCC
dnl because doing so is binary incompatible and Qt by default links with exceptions :-(
dnl KDE_CHECK_COMPILER_FLAG(-no_exceptions,[CXXFLAGS="$CXXFLAGS --no_exceptions"])
dnl KDE_CHECK_COMPILER_FLAG(-exceptions, [USE_EXCEPTIONS="--exceptions"], USE_EXCEPTIONS= )
AC_ARG_ENABLE(pch,[ --enable-pch enables precompiled header support (currently only KCC) [default=no]],
[
kde_use_pch=$enableval
],[kde_use_pch=no])
if test "$kde_use_pch" = "yes"; then
dnl TODO: support --pch-dir!
KDE_CHECK_COMPILER_FLAG(-pch,[CXXFLAGS="$CXXFLAGS --pch"])
dnl the below works (but the dir must exist), but it's
dnl useless for a whole package.
dnl The are precompiled headers for each source file, so when compiling
dnl from scratch, it doesn't make a difference, and they take up
dnl around ~5Mb _per_ sourcefile.
dnl KDE_CHECK_COMPILER_FLAG(-pch_dir /tmp,
dnl [CXXFLAGS="$CXXFLAGS --pch_dir `pwd`/pcheaders"])
fi
dnl this flag controls inlining. by default KCC inlines in optimisation mode
dnl all implementations that are defined inside the class {} declaration.
dnl because of templates-compatibility with broken gcc compilers, this
dnl can cause excessive inlining. This flag limits it to a sane level
KDE_CHECK_COMPILER_FLAG(-inline_keyword_space_time=6,[CXXFLAGS="$CXXFLAGS --inline_keyword_space_time=6"])
KDE_CHECK_COMPILER_FLAG(-inline_auto_space_time=2,[CXXFLAGS="$CXXFLAGS --inline_auto_space_time=2"])
KDE_CHECK_COMPILER_FLAG(-inline_implicit_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_implicit_space_time=2.0"])
KDE_CHECK_COMPILER_FLAG(-inline_generated_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_generated_space_time=2.0"])
dnl Some source files are shared between multiple executables
dnl (or libraries) and some of those need template instantiations.
dnl In that case KCC needs to compile those sources with
dnl --one_instantiation_per_object. To make it easy for us we compile
dnl _all_ objects with that flag (--one_per is a shorthand).
KDE_CHECK_COMPILER_FLAG(-one_per, [CXXFLAGS="$CXXFLAGS --one_per"])
fi
AC_SUBST(USE_EXCEPTIONS)
dnl obsolete macro - provided to keep things going
USE_RTTI=
AC_SUBST(USE_RTTI)
case "$host" in
*-*-irix*) test "$GXX" = yes && CXXFLAGS="-D_LANGUAGE_C_PLUS_PLUS -D__LANGUAGE_C_PLUS_PLUS $CXXFLAGS" ;;
*-*-sysv4.2uw*) CXXFLAGS="-D_UNIXWARE $CXXFLAGS";;
*-*-sysv5uw7*) CXXFLAGS="-D_UNIXWARE7 $CXXFLAGS";;
*-*-solaris*)
if test "$GXX" = yes; then
libstdcpp=`$CXX -print-file-name=libstdc++.so`
if test ! -f $libstdcpp; then
AC_MSG_WARN([You've compiled gcc without --enable-shared. This might not work with wv2.])
fi
fi
;;
esac
AC_VALIDIFY_CXXFLAGS
AC_PROG_CXXCPP
if test "$GCC" = yes; then
NOOPT_CXXFLAGS=-O0
NOOPT_CFLAGS=-O0
fi
AC_SUBST(NOOPT_CXXFLAGS)
AC_SUBST(NOOPT_CFLAGS)
ifdef([AM_DEPENDENCIES], AC_REQUIRE([KDE_ADD_DEPENDENCIES]), [])
])
AC_DEFUN(KDE_ADD_DEPENDENCIES,
[
[A]M_DEPENDENCIES(CC)
[A]M_DEPENDENCIES(CXX)
])
pushdef([AC_PROG_INSTALL],
[
dnl our own version, testing for a -p flag
popdef([AC_PROG_INSTALL])
dnl as AC_PROG_INSTALL works as it works we first have
dnl to save if the user didn't specify INSTALL, as the
dnl autoconf one overwrites INSTALL and we have no chance to find
dnl out afterwards
test -n "$INSTALL" && kde_save_INSTALL_given=$INSTALL
test -n "$INSTALL_PROGRAM" && kde_save_INSTALL_PROGRAM_given=$INSTALL_PROGRAM
test -n "$INSTALL_SCRIPT" && kde_save_INSTALL_SCRIPT_given=$INSTALL_SCRIPT
AC_PROG_INSTALL
if test -z "$kde_save_INSTALL_given" ; then
# OK, user hasn't given any INSTALL, autoconf found one for us
# now we test, if it supports the -p flag
AC_MSG_CHECKING(for -p flag to install)
rm -f confinst.$$.* > /dev/null 2>&1
echo "Testtest" > confinst.$$.orig
ac_res=no
if ${INSTALL} -p confinst.$$.orig confinst.$$.new > /dev/null 2>&1 ; then
if test -f confinst.$$.new ; then
# OK, -p seems to do no harm to install
INSTALL="${INSTALL} -p"
ac_res=yes
fi
fi
rm -f confinst.$$.*
AC_MSG_RESULT($ac_res)
fi
dnl the following tries to resolve some signs and wonders coming up
dnl with different autoconf/automake versions
dnl e.g.:
dnl *automake 1.4 install-strip sets A_M_INSTALL_PROGRAM_FLAGS to -s
dnl and has INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(A_M_INSTALL_PROGRAM_FLAGS)
dnl it header-vars.am, so there the actual INSTALL_PROGRAM gets the -s
dnl *automake 1.4a (and above) use INSTALL_STRIP_FLAG and only has
dnl INSTALL_PROGRAM = @INSTALL_PROGRAM@ there, but changes the
dnl install-@DIR@PROGRAMS targets to explicitly use that flag
dnl *autoconf 2.13 is dumb, and thinks it can use INSTALL_PROGRAM as
dnl INSTALL_SCRIPT, which breaks with automake <= 1.4
dnl *autoconf >2.13 (since 10.Apr 1999) has not that failure
dnl *sometimes KDE does not use the install-@DIR@PROGRAM targets from
dnl automake (due to broken Makefile.am or whatever) to install programs,
dnl and so does not see the -s flag in automake > 1.4
dnl to clean up that mess we:
dnl +set INSTALL_PROGRAM to use INSTALL_STRIP_FLAG
dnl which cleans KDE's program with automake > 1.4;
dnl +set INSTALL_SCRIPT to only use INSTALL, to clean up autoconf's problems
dnl with automake<=1.4
dnl note that dues to this sometimes two '-s' flags are used (if KDE
dnl properly uses install-@DIR@PROGRAMS, but I don't care
dnl
dnl And to all this comes, that I even can't write in comments variable
dnl names used by automake, because it is so stupid to think I wanted to
dnl _use_ them, therefor I have written A_M_... instead of AM_
dnl hmm, I wanted to say something ... ahh yes: Arghhh.
if test -z "$kde_save_INSTALL_PROGRAM_given" ; then
INSTALL_PROGRAM='${INSTALL} $(INSTALL_STRIP_FLAG)'
fi
if test -z "$kde_save_INSTALL_SCRIPT_given" ; then
INSTALL_SCRIPT='${INSTALL}'
fi
])
dnl ##########################################################################
dnl This last check is copied from kdenonbeta/gsf/configure.in.in
dnl ##########################################################################
dnl KDE_PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
dnl also defines GSTUFF_PKG_ERRORS on error
AC_DEFUN(KDE_PKG_CHECK_MODULES, [
succeeded=no
if test -z "$PKG_CONFIG"; then
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
fi
if test "$PKG_CONFIG" = "no" ; then
echo "*** The pkg-config script could not be found. Make sure it is"
echo "*** in your path, or set the PKG_CONFIG environment variable"
echo "*** to the full path to pkg-config."
echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
else
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
AC_MSG_CHECKING(for $2)
if $PKG_CONFIG --exists "$2" ; then
AC_MSG_RESULT(yes)
succeeded=yes
AC_MSG_CHECKING($1_CFLAGS)
$1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
AC_MSG_RESULT($$1_CFLAGS)
AC_MSG_CHECKING($1_LIBS)
$1_LIBS=`$PKG_CONFIG --libs "$2"`
AC_MSG_RESULT($$1_LIBS)
else
$1_CFLAGS=""
$1_LIBS=""
## If we have a custom action on failure, don't print errors, but
## do set a variable so people can do so.
$1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
ifelse([$4], ,echo $$1_PKG_ERRORS,)
fi
AC_SUBST($1_CFLAGS)
AC_SUBST($1_LIBS)
else
echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
echo "*** See http://www.freedesktop.org/software/pkgconfig"
fi
fi
if test $succeeded = yes; then
ifelse([$3], , :, [$3])
else
ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
fi
])
|