1# This is free software, licensed under the GNU Public License V2. 2# See the file COPYING for details. 3 4dnl # ****************************** 5dnl # Initialise 6dnl # ****************************** 7 8AC_DEFUN([MAJOR], [0]) 9AC_DEFUN([MINOR], [8]) 10AC_DEFUN([MICRO], [8]) 11AC_DEFUN([MY_VERSION], [MAJOR.MINOR.MICRO]) 12AC_INIT([qof], [0.8.8], [http://lists.sourceforge.net/lists/listinfo/qof-devel]) 13AC_PREREQ(2.68) 14AC_GNU_SOURCE 15AC_DEFUN([QOFCURRENT], [2]) 16AC_DEFUN([QOFREVISION], [5]) 17AC_DEFUN([QOFAGE], [0]) 18AC_DEFUN([LIBQOFVERS], [QOFCURRENT:QOFREVISION:QOFAGE]) 19LIBQOF_LIBRARY_VERSION=LIBQOFVERS 20AC_DEFUN([SQLCURRENT], [1]) 21AC_DEFUN([SQLREVISION], [2]) 22AC_DEFUN([SQLAGE], [0]) 23AC_DEFUN([LIBSQLVERS], [SQLCURRENT:SQLREVISION:SQLAGE]) 24LIBQOFSQL_LIBRARY_VERSION=LIBSQLVERS 25AC_CONFIG_MACRO_DIR([m4]) 26 27AC_SUBST(LIBQOF_LIBRARY_VERSION) 28AC_SUBST(LIBQOFSQL_LIBRARY_VERSION) 29SONAME=QOFCURRENT 30AC_SUBST([SONAME]) 31 32AC_PREFIX_PROGRAM([/usr]) 33VERSION=AC_PACKAGE_VERSION 34AC_SUBST(VERSION) 35PACKAGE=AC_PACKAGE_NAME 36AC_SUBST(PACKAGE) 37AM_INIT_AUTOMAKE() 38 39AC_PROG_LIBTOOL 40AC_CONFIG_HEADERS([config.h]) 41 42AC_ISC_POSIX 43AC_PROG_AWK 44AC_PROG_CXX 45AC_PROG_CC 46AC_PROG_CPP 47AC_HEADER_STDC 48AC_PROG_YACC 49AC_PROG_INSTALL 50AC_PROG_LN_S 51AC_PROG_MAKE_SET 52AC_FUNC_MKTIME 53AC_FUNC_STRTOD 54 55dnl # ***************************************** 56dnl # pkg-config check time 57dnl # ***************************************** 58 59AM_PATH_GLIB_2_0("2.9.0", , ,gobject) 60 61AC_PATH_PROG(PKG_CONFIG,pkg-config) 62if test "x$PKG_CONFIG" != x; then 63 GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0` 64 GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0` 65 GOBJECT_LIBS=`$PKG_CONFIG --libs gobject-2.0` 66 GMODULE_LIBS=`$PKG_CONFIG --libs gmodule-2.0` 67fi 68AC_SUBST(GLIB_CFLAGS) 69AC_SUBST(GLIB_LIBS) 70AC_SUBST(GOBJECT_LIBS) 71AC_SUBST(GMODULE_LIBS) 72 73dnl # ******************************** 74dnl # Symbol versioning support 75dnl # ******************************** 76 77dnl # use symbol versioning on Linux, to avoid problems when 78dnl # mixing-and-matching multiple lib versions; may be useful on other 79dnl # platforms that support symbol versioning (BSDs?) 80 81AC_MSG_CHECKING(whether to implement symbol versioning) 82case $host_os in 83 *gnu*) 84 LINKER_SCRIPT="-Wl,--version-script=\$(srcdir)/libqof.ver" 85 AC_MSG_RESULT(yes) 86 ;; 87 *) 88 AC_MSG_RESULT(no) 89 ;; 90esac 91AC_SUBST(LINKER_SCRIPT) 92 93dnl # ******************************** 94dnl # Auto-disable deprecated QOF 95dnl # ******************************** 96 97# nothing to do, yet. 98 99AC_MSG_CHECKING(for darwin) 100case $host_os in 101 rhapsody* | darwin1*) 102 AC_MSG_RESULT([yes, but too old]) 103 AC_MSG_ERROR([This platform is too old, please update to the latest darwin]) 104 ;; 105 darwin*) 106 AC_MSG_RESULT([yes, patching libtool to always build dylibs]) 107 mv libtool libtool.old 108 sed -e 's/^deplibs_check_method.*/deplibs_check_method=pass_all/g' \ 109 -e 's|^library_names_spec.*|library_names_spec="\\$libname\\$release\\$versuffix.dylib \\$libname\\$release\\${major}.dylib \\$libname.dylib"|g' \ 110 -e 's|^soname_spec.*|soname_spec="\\$libname\\$release\\$major.dylib"|g' \ 111 < libtool.old > libtool 112 rm libtool.old 113 AC_DEFINE(DARWIN,,Found Mac OSX Darwin) 114 DARWIN="dylib" 115 AC_SUBST(DARWIN) 116 ;; 117 *) 118 AC_MSG_RESULT(no) 119 ;; 120esac 121 122dnl # ************************************************************** 123dnl # Checks for typedefs, structures, and compiler characteristics. 124dnl # ************************************************************** 125 126AC_C_CONST 127AC_C_INLINE 128AC_TYPE_INT16_T 129AC_TYPE_INT32_T 130AC_TYPE_INT8_T 131AC_TYPE_PID_T 132AC_TYPE_SIZE_T 133AC_HEADER_TIME 134AC_STRUCT_TIMEZONE 135AC_STRUCT_TM 136AC_TYPE_UID_T 137AC_TYPE_UINT16_T 138AC_TYPE_UINT32_T 139AC_TYPE_UINT8_T 140 141dnl # ***************************** 142dnl # Checks for library functions. 143dnl # ***************************** 144AC_FUNC_MALLOC 145AC_FUNC_MKTIME 146AC_FUNC_REALLOC 147AC_FUNC_STRTOD 148AC_FUNC_STRFTIME 149AC_CHECK_HEADERS(sys/times.h time.h langinfo.h wchar.h ) 150AC_CHECK_FUNCS(getcwd gettimeofday getline getwd stpcpy strdup strtoul \ 151 strcasestr strcasecmp gmtime_r mblen pow tzname tzset) 152AC_CHECK_MEMBERS([struct stat.st_rdev]) 153 154dnl # ******************************* 155dnl # Internationalization 156dnl # ******************************* 157 158GETTEXT_PACKAGE=qof 159AC_SUBST(GETTEXT_PACKAGE) 160AM_GNU_GETTEXT([external]) 161AM_GNU_GETTEXT_VERSION([0.19.2]) 162AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"], [gettext domain]) 163 164dnl # ******************************** 165dnl # Auto-disable deprecated glib 166dnl # ******************************** 167 168AC_ARG_ENABLE(deprecated-glib, 169 [ --disable-deprecated-glib 170 Do not use deprecated glib functions], 171 [case "${enableval}" in 172 no) AC_DEFINE(G_DISABLE_DEPRECATED,1, 173 [Do not use deprecated glib functions]) ;; 174 yes) ;; 175 *) AC_MSG_ERROR(bad value ${enableval} for --enable-deprecated-glib) ;; 176 esac]) 177 178dnl # ************************************************************** 179dnl # Embedded systems only use the QofSQLite backend. 180dnl # libxml2 and optional sqlite for host systems. 181dnl # libxml2 v2.5.10 is required for QSF (backend/file) 182dnl # libgdasql is omitted to prevent a need for libgda2-3 itself. 183dnl # ************************************************************** 184 185AC_ARG_ENABLE(embedded, 186 [ --enable-embedded Enable the SQLite backend for embedded systems 187 and DISABLE libgdasql and the QSF XML backend. (no)], 188 [case "${enableval}" in 189 no) embedded="no" ;; 190 yes) embedded="yes" ;; 191 *) AC_MSG_ERROR(bad value ${enableval} for --enable-embedded) ;; 192 esac]) 193 194if test "$embedded" = "yes"; then 195 PKG_CHECK_MODULES(SQLITE, sqlite >= 2.8.0) 196 AC_SUBST(SQLITE_LIBS) 197 AC_SUBST(SQLITE_CFLAGS) 198 backend="sqlite" 199else 200 LIBXML2_REQUIRED=2.5.10 201 PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= $LIBXML2_REQUIRED) 202 LIBXML_VERSION=`xml2-config --version` 203 AC_SUBST(LIBXML2_CFLAGS) 204 AC_SUBST(LIBXML2_LIBS) 205 backend="libxml2 == $LIBXML_VERSION" 206fi 207 208AM_CONDITIONAL(EMBEDDED, [test "$embedded" = "yes"]) 209 210sqlite="no" 211AC_ARG_ENABLE(sqlite, 212 [ --disable-sqlite Disable the SQLite backend module.], 213 [case "${enableval}" in 214 no) sqlite="no" ;; 215 yes) sqlite="yes" ;; 216 *) AC_MSG_ERROR(bad value ${enableval} for --disable-sqlite) ;; 217 esac]) 218 219if test "$embedded" != "yes"; then 220 if test "$sqlite" = "yes"; then 221 SQLITE_REQUIRED=2.8.0 222 PKG_CHECK_MODULES(SQLITE, sqlite >= $SQLITE_REQUIRED) 223 AC_SUBST(SQLITE_LIBS) 224 AC_SUBST(SQLITE_CFLAGS) 225 backend2="sqlite" 226 fi 227fi 228 229AM_CONDITIONAL(USE_SQLITE, [test "$sqlite" = "yes"]) 230 231dnl # ************************************************************** 232dnl # GNOME Data Access library for GNOME2 libgda 233dnl # Enables use of gdasql within libqof1 *and* the gda backend. 234dnl # ************************************************************** 235 236dnl # Not ready yet. 237usegdabackend="no" 238backend3="Disabled (default)" 239if test "$embedded" != "yes"; then 240 usegdasql="yes" 241else 242 usegdasql="no" 243 usegdabackend="no" 244fi 245AC_ARG_ENABLE(gdasql, 246 [ --disable-gdasql Disable the use of libgdasql.], 247 [case "${enableval}" in 248 no) usegdasql="no" ;; 249 yes) usegdasql="yes" ;; 250 *) AC_MSG_ERROR(bad value ${enableval} for --disable-gda) ;; 251 esac]) 252 253if test "$usegdasql" = "yes"; then 254 AC_MSG_CHECKING(for SQL parser support) 255 if test "$embedded" != "yes"; then 256 GDA_REQUIRED=3.0.1 257 LIBGDA_CFLAGS=`$PKG_CONFIG --cflags "libgda-3.0 >= $GDA_REQUIRED"` 258 LIBGDA_LIBS="-lgda-3.0" 259 # LIBGDA should only be used for the GDA backend 260 AC_SUBST(LIBGDA_CFLAGS) 261 AC_SUBST(LIBGDA_LIBS) 262 fi 263fi 264if test "x$LIBGDA_CFLAGS" = x; then 265 AC_MSG_RESULT([GDA not found (or disabled); will build using internal SQL library.]) 266 SQL_PKG_LIB="-lqofsql" 267else 268 AC_ARG_ENABLE(gdabackend, 269 [ --enable-gdabackend Enable the use of the gda backend (off).], 270 [case "${enableval}" in 271 no) usegdabackend="no" ;; 272 yes) usegdabackend="yes" ;; 273 *) AC_MSG_ERROR(bad value ${enableval} for --enable-gdabackend) ;; 274 esac]) 275 GDA_VERSION=`$PKG_CONFIG --modversion libgda-3.0` 276 AC_SUBST(GDA_VERSION) 277 AC_MSG_RESULT([yes, using GDA: ${GDA_VERSION}]) 278 save_LIBS="$LIBS" 279 AC_CHECK_LIB(gda-3.0, gda_client_open_connection, , 280 [AC_MSG_ERROR([libgda3-3 found but missing gda_client_open_connection])]) 281 AC_CHECK_LIB(gdasql-3.0, sql_parse, , [AC_MSG_ERROR([libgda3-3 found but missing libgdasql-3.0])]) 282 AC_DEFINE(HAVE_GDA,,[We have found GDA]) 283 GDA_PKG_LIB="-lgdasql-3.0" 284 LIBS="$save_LIBS" 285 HAVE_GDA="use_gda" 286 if test "$usegdabackend" = "yes"; then 287 backend3="Enabled" 288 fi 289fi 290 291AM_CONDITIONAL(USE_GDABACKEND, [ test x"$usegdabackend" != x"no"]) 292 293AM_CONDITIONAL(USE_LIBGDA, [ test x"$HAVE_GDA" != x]) 294AM_CONDITIONAL(USE_LIBGDA, [ test "$HAVE_GDA" = "use_gda"]) 295AC_SUBST(USE_LIBGDA) 296AC_SUBST(GDA_PKG_LIB) 297AC_SUBST(SQL_PKG_LIB) 298 299dnl # ************************************************************** 300dnl # DWI is now 'estron' - a dedicated backend 301dnl # ************************************************************** 302 303#estron="no" 304#AC_ARG_ENABLE(estron, 305# [ --enable-estron Enable the Estron support. (off)], 306# [case "${enableval}" in 307# no) estron="no" ;; 308# yes) estron="yes" ;; 309# *) AC_MSG_ERROR(bad value ${enableval} for --enable-estron) ;; 310# esac]) 311 312#AC_ARG_WITH(estron, 313# [ --with-estron=path prefix for Data With Integration - Estron (off)]) 314#ESTRON_REQ=0.7.0 315#ESTRON_Q="--silence-errors" 316#ESTRON_PC_PATH="lib/pkgconfig/estron.pc" 317#AC_MSG_CHECKING([for estron >= $ESTRON_REQ]) 318#if test x"$withval" != x; then 319# if test "$estron" = "yes"; then 320# ESTRON=`$PKG_CONFIG $ESTRON_Q --exists '$withval/$ESTRON_PC_PATH >= $ESTRON_REQ'` 321# ESTRON_LIBS=`$PKG_CONFIG $ESTRON_Q --libs $withval/$ESTRON_PC_PATH` 322# ESTRON_CFLAGS=`$PKG_CONFIG $ESTRON_Q --cflags $withval/$ESTRON_PC_PATH` 323# ESTRON_VERSION=`$PKG_CONFIG $ESTRON_Q --modversion $withval/$ESTRON_PC_PATH` 324# AC_MSG_RESULT([yes, using estron: ${ESTRON_VERSION}]) 325# fi 326#else 327# if test "$estron" = "yes"; then 328# PKG_CHECK_MODULES(ESTRON, estron >= $ESTRON_REQ) 329# AC_SUBST(ESTRON_LIBS) 330# AC_SUBST(ESTRON_CFLAGS) 331# ESTRON_VERSION=`$PKG_CONFIG --modversion estron` 332# AC_SUBST(ESTRON_VERSION) 333# AC_MSG_RESULT([yes, using estron: ${ESTRON_VERSION}]) 334# backend3="estron" 335# fi 336#fi 337# 338#AM_CONDITIONAL(USE_ESTRON, [test "$estron" = "yes"]) 339 340dnl # ========================= 341dnl # Perl - no longer needed 342dnl # ========================= 343 344# check for doxygen, mostly stolen from http://log4cpp.sourceforge.net/ 345# ------------------------------------------------------------------ 346AC_DEFUN([BB_ENABLE_DOXYGEN], 347[ 348AC_ARG_ENABLE(doxygen, [ --enable-doxygen enable documentation generation with doxygen (auto)]) 349AC_ARG_ENABLE(dot, [ --enable-dot use 'dot' to generate graphs in doxygen (auto)]) 350AC_ARG_ENABLE(html-docs, [ --enable-html-docs enable HTML generation with doxygen (yes)], [], [ enable_html_docs=yes]) 351AC_ARG_ENABLE(latex-docs, [ --enable-latex-docs enable LaTeX documentation generation with doxygen (no)], [], [ enable_latex_docs=no]) 352if test "$embedded" = "yes"; then 353 enable_doxygen=no 354 enable_doc=no 355fi 356if test "x$enable_doxygen" = xno; then 357 enable_doc=no 358else 359 AC_PATH_PROG(DOXYGEN, doxygen, , $PATH) 360 if test x$DOXYGEN = x; then 361 if test "x$enable_doxygen" = xyes; then 362 AC_MSG_ERROR([could not find doxygen]) 363 fi 364 enable_doc=no 365 else 366 enable_doc=yes 367 AC_PATH_PROG(DOT, dot, , $PATH) 368 fi 369fi 370AM_CONDITIONAL(DOC, test x$enable_doc = xyes) 371 372if test x$DOT = x; then 373 if test "x$enable_dot" = xyes; then 374 AC_MSG_ERROR([could not find dot]) 375 fi 376 enable_dot=no 377else 378 enable_dot=yes 379fi 380AM_CONDITIONAL(ENABLE_DOXYGEN, test "$enable_doc" = "yes") 381AC_SUBST(enable_dot) 382AC_SUBST(enable_html_docs) 383AC_SUBST(enable_latex_docs) 384]) 385 386# check for doxygen 387BB_ENABLE_DOXYGEN 388# ---------------------------------------------------------------- 389 390dnl # ************************************* 391dnl # Extra warnings 392dnl # ************************************* 393AC_MSG_CHECKING(what extra warning flags to pass to the C compiler) 394if test ${GCC}x = yesx; then 395 warnFLAGS= 396 CFLAGS="${CFLAGS} -g2 -Wall" 397 AC_ARG_ENABLE(error-on-warning, 398 [ --disable-error-on-warning 399 disable treating compile warnings as errors], 400 [case "${enableval}" in 401 yes) warnFLAGS="${warnFLAGS} -Werror" ;; 402 no) ;; 403 *) AC_MSG_ERROR(bad value ${enableval} for --enable-error-on-warning) ;; 404 esac], 405 [ warnFLAGS="${warnFLAGS}" ]) 406 GCC_VERSION=`${CC} -dumpversion` 407 if test `echo ${GCC_VERSION} | cut -d. -f1` -ge 3; then 408 # This is gcc >= 3.x.x 409 if test `echo ${GCC_VERSION} | cut -d. -f2` -ge 4; then 410 # This is gcc >= 3.4.x 411 warnFLAGS="${warnFLAGS} -Wdeclaration-after-statement" 412 else if test `echo ${GCC_VERSION} | cut -d. -f1` -ge 4; then 413 # This is gcc == 4.x.x 414 warnFLAGS="${warnFLAGS} -Wdeclaration-after-statement -Wno-pointer-sign" 415 fi 416 fi 417 fi 418dnl CFLAGS="${CFLAGS} ${warnFLAGS}" 419else 420 warnFLAGS= 421fi 422AC_MSG_RESULT($warnFLAGS) 423AC_SUBST(warnFLAGS) 424 425set_compile_warnings=no 426 427AC_ARG_ENABLE(compile-warnings, 428 [ --enable-compile-warnings 429 Enable verbose compiler warnings], 430 set_compile_warnings=yes) 431 432if test "$GCC" = "yes" -a "$set_compile_warnings" != "no"; then 433 warnFLAGS="$warnFLAGS -Wcast-align -Wsign-compare \ 434 -Wmissing-prototypes -Wmissing-declarations -Werror -Wmissing-include-dirs \ 435 -Wstrict-prototypes -Winline -Wnested-externs -Wpointer-arith \ 436 -Wmissing-field-initializers" 437# LDFLAGS="$LDFLAGS -Wl,-z,defs" 438fi 439 440AC_SUBST(CFLAGS) 441AC_SUBST(CPPFLAGS) 442AC_SUBST(LDFLAGS) 443 444DATADIR=`eval echo $datadir` 445QSF_SCHEMA_DIR=`eval echo $DATADIR`"/xml/qof/qsf" 446AC_SUBST(QSF_SCHEMA_DIR) 447BACKEND_SCHEMA_DIR=`eval echo $DATADIR`"/xml/qof/" 448AC_SUBST(BACKEND_SCHEMA_DIR) 449 450QOF_CFLAGS="-I$includedir/qof" 451QOF_LIBS="-lqof" 452QOF_LIBDEPS="$LDFLAGS" 453QOF_VERSION="$VERSION" 454QOF_LIB_DIR=$libdir/${PACKAGE}${SONAME} 455AC_SUBST(QOF_LIB_DIR) 456QLD_PRINT=`eval echo $QOF_LIB_DIR | sed "s%^NONE%$prefix%"` 457AC_SUBST(QOF_LIBS) 458 459dnl # ****************************** 460dnl # Check if this was VCS source 461dnl # ****************************** 462if test -f "${srcdir}/README.vcs" ; then 463 AC_DEFINE([TEST_DEBUG],1, 464 [Run test code in debug mode]) 465 QOF_FROM_VCS=yes 466fi 467 468AC_CONFIG_FILES([ po/Makefile.in 469Makefile 470backend/Makefile 471backend/file/Makefile 472backend/gda/Makefile 473backend/sqlite/Makefile 474doc/Makefile 475doc/html/Makefile 476doc/doxygen.cfg 477lib/Makefile 478lib/libsql/Makefile 479qof/Makefile 480qof/test/Makefile 481qof.pc 482qof.symbols 483]) 484AC_OUTPUT 485 486dnl # <= Configuration summary => 487 488echo "" 489echo "qof configuration summary:" 490echo "===========================" 491echo "" 492 493dnl # <= CFLAGS and LDFLAGS => 494echo "CFLAGS : $warnFLAGS" 495echo "LDFLAGS : $LDFLAGS" 496echo "QOF_CFLAGS : "`eval echo $QOF_CFLAGS` 497echo "QOF_LIBS : $QOF_LIBS" 498echo "ESTRON_LIBS : $ESTRON_LIBS" 499echo "1st backend : $backend" 500echo "2nd backend : $backend2" 501echo "GDA backend : $backend3" 502echo "libgda : $GDA_VERSION" 503echo "libgdasql : $GDA_PKG_LIB" 504echo "libqofsql : $SQL_PKG_LIB" 505echo "prefix : $prefix" 506echo "data dir : "`eval echo $DATADIR` 507echo "XML dir : "`eval echo $QSF_SCHEMA_DIR` 508echo "include dir : "`eval echo $includedir` 509echo "lib dir : "`eval echo $QLD_PRINT` 510echo "" 511echo "" 512dnl # <= End of configuration summary => 513 514if [[ x"$QOF_FROM_VCS" = xyes ]]; then 515 echo " .----- NOTICE ------------------------------------------------." 516 echo " | You are using QOF from VCS source. |" 517 echo " | |" 518 echo " | This is likely to be unstable, or contain some incomplete |" 519 echo " | features, or just plain not work at all. Use it at your own |" 520 echo " | risk. Please help me to fix any bugs you find, by reporting |" 521 echo " | them back to me via the QOF-devel mailing list. |" 522 echo " | http://lists.alioth.debian.org/mailman/listinfo/qof-devel |" 523 echo " \`-------------------------------------------------------------'" 524 echo "" 525fi 526