configure.ac
author J. Ali Harlow <ali@juiblex.co.uk>
Sat Oct 04 18:12:58 2014 +0100 (2014-10-04)
changeset 454 56ff755c268c
parent 443 b2d6a8273459
child 455 df914f383f5c
permissions -rw-r--r--
Only export symbols starting with razor_ in dynamic library.

Apart from being good practice to avoid clashes with higher-level
libraries and the application, this also fixes an obscure bug: The
gnulib library is used both by librazor (the dynamic library) and
by razor (the executable). In doing so, we want to have two separate
copies of the library despite the code duplication this involves.
Without the explicit limit to export only razor_ symbols, the razor
executable under mingw64 was picking up the getopt_long function
from librazor and the optind variable from libgnu which meant that
it did not see optind changing. Hiding librazor's copy of getopt
causes the linker to find libgnu's copy and everything works.

Note that under mingw librazor-#.dll still contains undocumented
(private) razor_ symbols but these will do no harm as long as nobody
tries to use them.
rhughes@241
     1
dnl Process this file with autoconf to produce a configure script.
rhughes@241
     2
rhughes@241
     3
AC_PREREQ(2.59c)
ali@437
     4
AC_INIT([razor], [0.5.7], [ali@juiblex.co.uk])
ali@380
     5
AM_INIT_AUTOMAKE([])
ali@380
     6
AM_CONFIG_HEADER([config.h])
rhughes@241
     7
AM_MAINTAINER_MODE
rhughes@241
     8
rhughes@241
     9
# libtool versioning - this applies to all libraries in this package
rhughes@241
    10
#
rhughes@241
    11
# See http://sources.redhat.com/autobook/autobook/autobook_91.html#SEC91 for details
rhughes@241
    12
#
ali@443
    13
LT_CURRENT=5
ali@403
    14
LT_REVISION=0
ali@443
    15
LT_AGE=1
rhughes@241
    16
AC_SUBST(LT_CURRENT)
rhughes@241
    17
AC_SUBST(LT_REVISION)
rhughes@241
    18
AC_SUBST(LT_AGE)
rhughes@241
    19
rhughes@241
    20
AC_ISC_POSIX
rhughes@241
    21
AC_PROG_CC
ali@323
    22
gl_EARLY
rhughes@241
    23
AM_PROG_CC_STDC
rhughes@241
    24
AC_HEADER_STDC
ali@330
    25
AC_HEADER_SYS_WAIT
ali@322
    26
AC_CHECK_HEADERS([sys/mman.h])
ali@323
    27
gl_INIT
ali@328
    28
AC_CHECK_FUNCS([symlink chroot])
ali@427
    29
LT_INIT([win32-dll])
ali@427
    30
# Libtool supports a --disable-shared option to tell it to avoid
ali@427
    31
# building shared versions of libraries. In addition to this,we want
ali@427
    32
# to support building static versions of our executables. Libtool
ali@427
    33
# can do this (under the right circumstances) so we overload this
ali@427
    34
# switch for this purpose.
ali@427
    35
#
ali@427
    36
# The libtool option that we use (-static-libtool-libs) means to use
ali@427
    37
# static linking with libraries that supply a .la file and which
ali@427
    38
# include a non-empty value for "old_library". If the library doesn't
ali@427
    39
# include a .la file (they are deleted by some distributions), then
ali@427
    40
# this option will have no effect and likewise if old_library is set
ali@427
    41
# to '' (eg., if the library was build with --disable-static) then
ali@427
    42
# again -static-libtool-libs will have no effect.
ali@427
    43
#
ali@427
    44
# If old_library is set to a non-empty value, then specifying
ali@427
    45
# -static-libtool-libs will cause the link to fail if the old library
ali@427
    46
# cannot be found (libtool will not fallback to a shared library
ali@427
    47
# in these circumstances). This can happen with Fedora, for example,
ali@427
    48
# if a main mingw32 library package is installed but not the
ali@427
    49
# coresponding static sub-package. The solution is to either
ali@427
    50
# install the relevant static sub-packages or don't use --disable-shared.
ali@427
    51
AS_IF([test "$enable_shared" = no],[
ali@427
    52
  LDFLAGS="$LDFLAGS -static-libtool-libs"
ali@427
    53
])
ali@427
    54
LT_OUTPUT
ali@427
    55
ac_compile="./libtool --mode=compile --tag=CC $ac_compile"
ali@427
    56
ac_link="./libtool --mode=link --tag=CC $ac_link"
rhughes@241
    57
AC_PROG_MAKE_SET
rhughes@241
    58
AC_PROG_LN_S
rhughes@241
    59
AC_SYS_LARGEFILE
rhughes@241
    60
AM_PROG_CC_C_O
rhughes@241
    61
ali@416
    62
AC_ARG_ENABLE([atomic],
ali@416
    63
	      [AS_HELP_STRING([--disable-atomic],
ali@416
    64
	      		      [disable atomic transactions])],
ali@416
    65
	      [],
ali@416
    66
	      [enable_atomic=yes])
ali@416
    67
if test "$enable_atomic" = "yes"; then
ali@416
    68
    AC_DEFINE([ENABLE_ATOMIC],[1],[Define if atomic transactions are wanted.])
ali@452
    69
    AC_SUBST([RAZOR_HAVE_ATOMIC_ROLLBACK],
ali@452
    70
      ['#define RAZOR_HAVE_ATOMIC_ROLLBACK 1'])
ali@452
    71
else
ali@452
    72
    AC_SUBST([RAZOR_HAVE_ATOMIC_ROLLBACK],['#undef RAZOR_HAVE_ATOMIC_ROLLBACK'])
ali@416
    73
fi
ali@416
    74
ali@328
    75
AC_MSG_CHECKING([for Microsoft Windows native API])
ali@328
    76
case $host_os in
ali@328
    77
    *mingw*)	AC_DEFINE([MSWIN_API], 1,
ali@328
    78
		  [Define to 1 to use Microsoft Windows native API.])
ali@340
    79
		EXTRA_LIBS='-lshell32 -lws2_32'
ali@328
    80
		mswin_api=yes;;
ali@328
    81
    *)		mswin_api=no;;
ali@328
    82
esac
ali@328
    83
AC_MSG_RESULT([$mswin_api])
ali@328
    84
AM_CONDITIONAL(MSWIN_API, test "$mswin_api" = "yes")
ali@335
    85
AC_SUBST(EXTRA_LIBS)
ali@328
    86
ali@416
    87
if test "$enable_atomic" = "yes" -a "$mswin_api" = "yes"; then
ali@403
    88
    AC_MSG_CHECKING([for Microsoft Windows Kernel Transaction Manager])
ali@403
    89
    save_LIBS="$LIBS"
ali@403
    90
    LIBS="-lktmw32 $LIBS"
ali@403
    91
    AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
ali@403
    92
#include <windows.h>
ali@403
    93
#include <ktmw32.h>
ali@403
    94
], [(void)CreateTransaction(NULL,0,0,0,0,0,NULL);])],
ali@403
    95
      [have_windows_ktm="yes"; EXTRA_LIBS="-lktmw32 $EXTRA_LIBS"],
ali@403
    96
      [have_windows_ktm="no"])
ali@403
    97
    LIBS="$save_LIBS"
ali@403
    98
    AC_MSG_RESULT([$have_windows_ktm])
ali@403
    99
else
ali@403
   100
    have_windows_ktm="no"
ali@403
   101
fi
ali@403
   102
if test "$have_windows_ktm" = "yes"; then
ali@403
   103
    AC_DEFINE([HAVE_WINDOWS_KTM],[1],[Define if Windows KTM is available.])
ali@403
   104
fi
ali@403
   105
rhughes@241
   106
# Taken from dbus
rhughes@241
   107
AC_ARG_ENABLE(ansi,             [  --enable-ansi           enable -ansi -pedantic gcc flags],enable_ansi=$enableval,enable_ansi=no)
rhughes@241
   108
AC_ARG_ENABLE(verbose-mode,     [  --enable-verbose-mode   support verbose debug mode],enable_verbose_mode=$enableval,enable_verbose_mode=$USE_MAINTAINER_MODE)
rhughes@241
   109
rhughes@241
   110
if test "${enable_verbose_mode}" != no; then
rhughes@241
   111
    # To get -rdynamic you pass -export-dynamic to libtool.
rhughes@241
   112
    AC_DEFINE(BUILT_R_DYNAMIC,1,[whether -export-dynamic was passed to libtool])
rhughes@241
   113
    R_DYNAMIC_LDFLAG=-export-dynamic
rhughes@241
   114
else
rhughes@241
   115
    R_DYNAMIC_LDFLAG=
rhughes@241
   116
fi
rhughes@241
   117
AC_SUBST(R_DYNAMIC_LDFLAG)
rhughes@241
   118
rhughes@241
   119
#### gcc warning flags
rhughes@241
   120
rhughes@241
   121
if test "x$GCC" = "xyes"; then
rhughes@241
   122
  changequote(,)dnl
rhughes@241
   123
  case " $CFLAGS " in
rhughes@241
   124
  *[\ \	]-Wall[\ \	]*) ;;
ali@442
   125
  *) CFLAGS="$CFLAGS -Wall -Wno-parentheses" ;;
rhughes@241
   126
  esac
rhughes@241
   127
rhughes@241
   128
  case " $CFLAGS " in
rhughes@241
   129
  *[\ \	]-Wchar-subscripts[\ \	]*) ;;
rhughes@241
   130
  *) CFLAGS="$CFLAGS -Wchar-subscripts" ;;
rhughes@241
   131
  esac
rhughes@241
   132
rhughes@241
   133
  case " $CFLAGS " in
rhughes@241
   134
  *[\ \	]-Wmissing-declarations[\ \	]*) ;;
rhughes@241
   135
  *) CFLAGS="$CFLAGS -Wmissing-declarations" ;;
rhughes@241
   136
  esac
rhughes@241
   137
rhughes@241
   138
  case " $CFLAGS " in
rhughes@241
   139
  *[\ \	]-Wnested-externs[\ \	]*) ;;
rhughes@241
   140
  *) CFLAGS="$CFLAGS -Wnested-externs" ;;
rhughes@241
   141
  esac
rhughes@241
   142
rhughes@241
   143
  case " $CFLAGS " in
rhughes@241
   144
  *[\ \	]-Wcast-align[\ \	]*) ;;
rhughes@241
   145
  *) CFLAGS="$CFLAGS -Wcast-align" ;;
rhughes@241
   146
  esac
rhughes@241
   147
rhughes@241
   148
  case " $CFLAGS " in
rhughes@241
   149
  *[\ \	]-Wformat[\ \	]*) ;;
rhughes@241
   150
  *) CFLAGS="$CFLAGS -Wformat" ;;
rhughes@241
   151
  esac
rhughes@241
   152
rhughes@241
   153
  case " $CFLAGS " in
rhughes@241
   154
  *[\ \	]-Wformat-security[\ \	]*) ;;
rhughes@241
   155
  *) CFLAGS="$CFLAGS -Wformat-security" ;;
rhughes@241
   156
  esac
rhughes@241
   157
rhughes@241
   158
  if test "x$enable_ansi" = "xyes"; then
rhughes@241
   159
    case " $CFLAGS " in
rhughes@241
   160
    *[\ \	]-ansi[\ \	]*) ;;
rhughes@241
   161
    *) CFLAGS="$CFLAGS -ansi" ;;
rhughes@241
   162
    esac
rhughes@241
   163
rhughes@241
   164
    case " $CFLAGS " in
rhughes@241
   165
    *[\ \	]-D_POSIX_C_SOURCE*) ;;
rhughes@241
   166
    *) CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=199309L" ;;
rhughes@241
   167
    esac
rhughes@241
   168
rhughes@241
   169
    case " $CFLAGS " in
rhughes@241
   170
    *[\ \	]-D_BSD_SOURCE[\ \	]*) ;;
rhughes@241
   171
    *) CFLAGS="$CFLAGS -D_BSD_SOURCE" ;;
rhughes@241
   172
    esac
rhughes@241
   173
rhughes@241
   174
    case " $CFLAGS " in
rhughes@241
   175
    *[\ \	]-pedantic[\ \	]*) ;;
rhughes@241
   176
    *) CFLAGS="$CFLAGS -pedantic" ;;
rhughes@241
   177
    esac
rhughes@241
   178
  fi
rhughes@241
   179
  changequote([,])dnl
rhughes@241
   180
fi
rhughes@241
   181
krh@269
   182
krh@269
   183
# gcc default visibility stuff
krh@269
   184
krh@269
   185
have_gcc4=no
krh@269
   186
AC_MSG_CHECKING(for -fvisibility)
krh@269
   187
AC_COMPILE_IFELSE([
krh@269
   188
#if defined(__GNUC__) && (__GNUC__ >= 4)
krh@269
   189
#else
krh@269
   190
#error Need GCC 4.0 for visibility
krh@269
   191
#endif
krh@269
   192
int main () { return 0; } 
krh@269
   193
], have_gcc4=yes)
krh@269
   194
krh@269
   195
if test "x$have_gcc4" = "xyes"; then
krh@269
   196
   CFLAGS="$CFLAGS -fvisibility=hidden"
krh@269
   197
fi
krh@269
   198
AC_MSG_RESULT($have_gcc4)
krh@269
   199
ali@344
   200
REQUIREMENTS=""
ali@321
   201
AC_ARG_WITH([curl],
ali@321
   202
            [AS_HELP_STRING([--without-curl], [disable support for curl])],
ali@321
   203
            [],
ali@321
   204
            [with_curl=yes])
ali@321
   205
          
ali@321
   206
CURL_CFLAGS=
ali@321
   207
CURL_LIBS=
ali@321
   208
AS_IF([test "x$with_curl" != xno],
ali@321
   209
  [PKG_CHECK_MODULES(CURL, [libcurl])
ali@321
   210
   AC_DEFINE([HAVE_CURL], [1], [Define if you have curl])])
rhughes@241
   211
AC_SUBST(CURL_CFLAGS)
rhughes@241
   212
AC_SUBST(CURL_LIBS)
rhughes@241
   213
rhughes@241
   214
ZLIB_LIBS=""
rhughes@241
   215
AC_ARG_WITH(zlib, [  --with-zlib=<dir>       Use zlib from here],
rhughes@241
   216
                      [
rhughes@241
   217
                      zlib=$withval
rhughes@241
   218
                      CPPFLAGS="$CPPFLAGS -I$withval/include"
rhughes@241
   219
                      ]
rhughes@241
   220
                      )
rhughes@241
   221
AC_CHECK_HEADERS(zlib.h, [AC_DEFINE(HAVE_ZLIB_H)],
rhughes@241
   222
                 [AC_MSG_ERROR([Can't find zlib.h. Please install zlib.])])
ali@344
   223
save_ldflags="$LDFLAGS"
ali@344
   224
LDFLAGS="$LDFLAGS -L$zlib/lib"
ali@344
   225
AC_CHECK_LIB(z, inflate, [ZLIB_LIBS="-L$zlib/lib -lz"],
rhughes@241
   226
	     [AC_MSG_ERROR([Can't find zlib library. Please install zlib.])])
ali@344
   227
LDFLAGS="$save_ldflags"
rhughes@241
   228
AC_SUBST(ZLIB_LIBS)
rhughes@241
   229
rhughes@241
   230
EXPAT_LIB=""
rhughes@241
   231
AC_ARG_WITH(expat, [  --with-expat=<dir>      Use expat from here],
rhughes@241
   232
                      [
rhughes@241
   233
                      expat=$withval
rhughes@241
   234
                      CPPFLAGS="$CPPFLAGS -I$withval/include"
rhughes@241
   235
                      ]
rhughes@241
   236
                      )
rhughes@241
   237
AC_CHECK_HEADERS(expat.h, [AC_DEFINE(HAVE_EXPAT_H)], 
rhughes@241
   238
		 [AC_MSG_ERROR([Can't find expat.h. Please install expat.])])
ali@344
   239
save_ldflags="$LDFLAGS"
ali@344
   240
LDFLAGS="$LDFLAGS -L$expat/lib"
ali@344
   241
AC_CHECK_LIB(expat, XML_ParserCreate, [EXPAT_LIBS="-L$expat/lib -lexpat"],
rhughes@241
   242
	     [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
ali@344
   243
LDFLAGS="$save_ldflags"
rhughes@241
   244
AC_SUBST(EXPAT_LIBS)
rhughes@241
   245
ali@320
   246
RPM_LIBS=""
ali@320
   247
AC_ARG_WITH(rpm, [  --with-rpm=<dir>      Use rpm from here])
ali@320
   248
ali@320
   249
AS_IF([test "$with_rpm" != no],
ali@320
   250
      [if test "$with_rpm" != yes; then
ali@320
   251
	    CPPFLAGS="$CPPFLAGS -I$with_rpm/include"
ali@320
   252
       fi
ali@320
   253
       AC_CHECK_HEADERS(rpm/rpmlib.h, [], 
ali@320
   254
		 [AC_MSG_ERROR([Can't find rpm/rpmlib.h. Please install rpm-devel or use --without-rpm.])])
ali@344
   255
       save_ldflags="$LDFLAGS"
ali@344
   256
       LDFLAGS="$LDFLAGS -L$with_rpm/lib"
ali@344
   257
       AC_CHECK_LIB(rpm,rpmdbOpen,[RPM_LIBS="-L$with_rpm/lib -lrpm"],
ali@320
   258
	     [AC_MSG_ERROR([Can't find rpm library. Please install rpm-devel or use --without-rpm.])])
ali@344
   259
       LDFLAGS="$save_ldflags"
ali@320
   260
       AC_DEFINE([HAVE_RPMLIB], [1], [Define if you have librpm])])
rhughes@241
   261
AC_SUBST(RPM_LIBS)
ali@320
   262
AM_CONDITIONAL([HAVE_RPMLIB], [test -n "$RPM_LIBS"])
ali@352
   263
ali@352
   264
AC_ARG_WITH([lua],
ali@352
   265
            [AS_HELP_STRING([--without-lua], [disable support for lua])],
ali@352
   266
            [],
ali@352
   267
            [with_lua=yes])
ali@428
   268
ali@352
   269
AS_IF([test "x$with_lua" != xno],
ali@352
   270
  [PKG_CHECK_MODULES(LUA, [lua])
ali@352
   271
   REQUIREMENTS="$REQUIREMENTS lua"
ali@352
   272
   AC_DEFINE([HAVE_LUA], [1], [Define if you have lua])
ali@352
   273
   AC_PATH_PROG(LUA, [lua], [no])
ali@352
   274
   AS_IF([test "x$LUA" = xno],
ali@352
   275
     [AC_MSG_ERROR([Can't find lua program. Please install lua-devel or use --without-lua.])])
ali@352
   276
   AC_DEFINE_UNQUOTED([LUA_BINARY], ["$LUA"],
ali@352
   277
     [Define to the location of the lua binary])])
ali@352
   278
AC_SUBST(LUA_CFLAGS)
ali@352
   279
AC_SUBST(LUA_LIBS)
ali@352
   280
AM_CONDITIONAL([HAVE_LUA], [test "x$with_lua" != xno])
ali@352
   281
ali@344
   282
AC_SUBST(REQUIREMENTS)
rhughes@241
   283
rhughes@241
   284
if test "x$GCC" = "xyes"; then
rhughes@241
   285
  LDFLAGS="-Wl,--as-needed $LDFLAGS"
rhughes@241
   286
fi
rhughes@241
   287
rhughes@241
   288
# *****************************
rhughes@241
   289
# Make available to Makefile.am
rhughes@241
   290
# *****************************
rhughes@241
   291
AC_SUBST(SYSCONFDIR, $sysconfdir)
rhughes@241
   292
rhughes@241
   293
# ********************
rhughes@241
   294
# Internationalisation
rhughes@241
   295
# ********************
rhughes@241
   296
ali@319
   297
IT_PROG_INTLTOOL([0.35.0])
rhughes@241
   298
GETTEXT_PACKAGE=razor
rhughes@241
   299
AC_SUBST([GETTEXT_PACKAGE])
rhughes@241
   300
AM_GLIB_GNU_GETTEXT
rhughes@241
   301
AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[gettext domain])
rhughes@241
   302
krh@262
   303
GTK_DOC_CHECK([1.9])
krh@262
   304
rhughes@241
   305
AC_OUTPUT([
rhughes@241
   306
Makefile
rhughes@241
   307
data/razor.pc
rhughes@241
   308
data/Makefile
rhughes@241
   309
librazor/Makefile
ali@452
   310
librazor/razor.h
ali@364
   311
librazor/types/Makefile
rhughes@241
   312
src/Makefile
rhughes@241
   313
docs/Makefile
krh@262
   314
docs/version.xml
rhughes@241
   315
po/Makefile.in
ali@323
   316
gl/Makefile
ali@351
   317
test/Makefile
rhughes@241
   318
])
rhughes@241
   319
rhughes@241
   320
dnl ==========================================================================
rhughes@241
   321
echo "
rhughes@241
   322
                  razor $VERSION
rhughes@241
   323
                =================
rhughes@241
   324
rhughes@241
   325
        prefix:                     ${prefix}
rhughes@241
   326
        libdir:                     ${libdir}
rhughes@241
   327
        libexecdir:                 ${libexecdir}
rhughes@241
   328
        bindir:                     ${bindir}
rhughes@241
   329
        sbindir:                    ${sbindir}
rhughes@241
   330
        datadir:                    ${datadir}
rhughes@241
   331
        sysconfdir:                 ${sysconfdir}
rhughes@241
   332
        localstatedir:              ${localstatedir}
rhughes@241
   333
        docdir:                     ${docdir}
rhughes@241
   334
rhughes@241
   335
        compiler:                   ${CC}
rhughes@241
   336
        cflags:                     ${CFLAGS}
rhughes@241
   337
        Maintainer mode:            ${USE_MAINTAINER_MODE}
rhughes@241
   338
        Building verbose mode:      ${enable_verbose_mode}
krh@294
   339
        Building gtk-doc:           ${enable_gtk_doc}
rhughes@241
   340
"