source: trunk/configure.ac @ 8600

Last change on this file since 8600 was 8600, checked in by charles, 13 years ago

(trunk) if libevent exists on the system, use it. otherwise, use our own copy.

File size: 12.3 KB
Line 
1dnl convention: -TR MAJOR MINOR MAINT STATUS - (each a single char)
2dnl STATUS: "X" for prerelease beta builds,
3dnl         "Z" for unsupported trunk builds,
4dnl         "0" for stable, supported releases
5dnl these should be the only two lines you need to change
6m4_define([user_agent_prefix],[1.61+])
7m4_define([peer_id_prefix],[-TR161Z-])
8
9AC_INIT([transmission],
10        [user_agent_prefix],
11        [http://trac.transmissionbt.com/newticket])
12AC_SUBST(USERAGENT_PREFIX,[user_agent_prefix])
13AC_SUBST(PEERID_PREFIX,[peer_id_prefix])
14
15AC_CONFIG_MACRO_DIR([m4])
16
17dnl AM_CONFIG_HEADER(config.h)
18AC_CONFIG_SRCDIR(libtransmission/transmission.h)
19AM_INIT_AUTOMAKE([1.9 tar-ustar])
20AC_PROG_LIBTOOL
21
22if test m4_substr(peer_id_prefix,6,1) = "0"; then
23  supported_build=yes
24  if test "x$GCC" = "xyes" ; then
25    CFLAGS="$CFLAGS -g -O3 "
26    CXXFLAGS="$CXXFLAGS -g -O3 "
27  fi
28  AC_DEFINE(TR_STABLE_RELEASE, 1, [Define to 1 if this is a stable release of Transmission])
29else
30  supported_build=no
31  if test "x$GCC" = "xyes" ; then
32    CFLAGS="$CFLAGS -g -O0"
33    CXXFLAGS="$CXXFLAGS -g -O0"
34  fi
35  if test m4_substr(peer_id_prefix,6,1) = "X"; then
36    AC_DEFINE(TR_BETA_RELEASE, 1, [Define to 1 if this is a beta release of Transmission])
37  else
38    AC_DEFINE(TR_NIGHTLY_RELEASE, 1, [Define to 1 if this is a nightly release of Transmission])
39  fi
40fi
41AM_CONDITIONAL(TR_UNSTABLE, test "x$supported_build" = "xno")
42
43OPENSSL_MINIMUM=0.9.4
44CURL_MINIMUM=7.16.3
45GIO_MINIMUM=2.15.5
46GLIB_MINIMUM=2.6.0
47GTK_MINIMUM=2.6.0
48LIBNOTIFY_MINIMUM=0.4.3
49DBUS_GLIB_MINIMUM=0.70
50LIBEVENT_MINIMUM=1.4.5
51AC_SUBST(OPENSSL_MINIMUM)
52AC_SUBST(CURL_MINIMUM)
53AC_SUBST(GIO_MINIMUM)
54AC_SUBST(GLIB_MINIMUM)
55AC_SUBST(GTK_MINIMUM)
56AC_SUBST(LIBNOTIFY_MINIMUM)
57AC_SUBST(DBUS_GLIB_MINIMUM)
58AC_SUBST(LIBEVENT_MINIUM)
59
60AC_PROG_CC
61AC_PROG_CXX
62AC_C_INLINE
63if test "x$GCC" = "xyes" ; then
64
65    CFLAGS="$CFLAGS -std=gnu99 -ggdb3 -Wall -W -Wpointer-arith -Wformat-security -Wcast-align -Wundef -Wcast-align -Wstrict-prototypes -Wmissing-declarations -Wmissing-format-attribute -Wredundant-decls -Wnested-externs -Wunused-parameter -Wwrite-strings"
66
67    dnl figure out gcc version
68    AC_MSG_CHECKING([gcc version])
69    GCC_VERSION=`$CC -dumpversion`
70    GCC_MAJOR=`echo $GCC_VERSION | cut -d . -f1`
71    GCC_MINOR=`echo $GCC_VERSION | cut -d . -f2`
72    GCC_VERSION_NUM=`(expr $GCC_MAJOR "*" 100 + $GCC_MINOR) 2>/dev/null`
73
74    AC_MSG_RESULT($GCC_VERSION)
75    if test $GCC_VERSION_NUM -ge 304; then
76        dnl these were added in 3.4
77        CFLAGS="$CFLAGS -Wextra -Wdeclaration-after-statement -Winit-self"
78    fi
79fi
80
81AC_HEADER_STDC
82AC_HEADER_TIME
83
84AC_MSG_CHECKING([for fallocate])
85AC_TRY_LINK([#include <linux/falloc.h>],
86            [return fallocate(-1,0,0,0);],
87            [AC_DEFINE([HAVE_FALLOCATE],[1],[Defined if fallocate() exists])
88             AC_MSG_RESULT([yes])],
89            [AC_MSG_RESULT([no])])
90AC_CHECK_FUNCS([lrintf strlcpy daemon dirname basename daemon strcasecmp localtime_r posix_fallocate memmem])
91AC_PROG_INSTALL
92AC_PROG_MAKE_SET
93ACX_PTHREAD
94
95AC_SEARCH_LIBS([socket], [socket net])
96AC_SEARCH_LIBS([gethostbyname], [nsl bind])
97PKG_CHECK_MODULES(OPENSSL, [openssl >= $OPENSSL_MINIMUM], , [CHECK_SSL()])
98PKG_CHECK_MODULES(LIBCURL, [libcurl >= $CURL_MINIMUM])
99AC_PATH_ZLIB
100
101AC_SYS_LARGEFILE
102
103
104dnl ----------------------------------------------------------------------------
105dnl
106dnl posix_fadvise
107
108dnl can posix_fadvise be used
109AC_CHECK_DECLS(posix_fadvise, [], [], [
110#define _XOPEN_SOURCE 600
111#include <fcntl.h>])
112AC_CHECK_FUNCS([posix_fadvise])
113
114
115dnl ----------------------------------------------------------------------------
116dnl
117dnl file monitoring for the daemon
118
119AC_CHECK_HEADER([sys/inotify.h],
120                [AC_CHECK_FUNC([inotify_init],[have_inotify="yes"],[have_inotify="no"])],
121                [have_inotify="no"])
122AC_ARG_WITH([inotify],
123            [AS_HELP_STRING([--with-inotify],[Enable inotify support (default=auto)])],
124            [want_inotify=${enableval}],
125            [want_inotify=${have_inotify}])
126if test "x$want_inotify" = "xyes" ; then
127    if test "x$have_inotify" = "xyes"; then
128      AC_DEFINE([WITH_INOTIFY],[1])
129    else
130      AC_MSG_ERROR("inotify not found!")
131    fi
132fi
133 
134AC_CHECK_HEADER([sys/event.h],
135                [AC_CHECK_FUNC([kqueue],[have_kqueue="yes"],[have_kqueue="no"])],
136                [have_kqueue="no"])
137AC_ARG_WITH([kqueue],
138            [AS_HELP_STRING([--with-kqueue],[Enable kqueue support (default=auto)])],
139            [want_kqueue=${enableval}],
140            [want_kqueue=${have_kqueue}])
141if test "x$want_kqueue" = "xyes" ; then
142    if test "x$have_kqueue" = "xyes"; then
143      AC_DEFINE([WITH_KQUEUE],[1])
144    else
145      AC_MSG_ERROR("kqueue not found!")
146    fi
147fi
148
149AC_CHECK_HEADERS([xfs/xfs.h])
150
151
152dnl ----------------------------------------------------------------------------
153dnl
154dnl va_copy
155
156AC_MSG_CHECKING([how to copy va_list])
157AC_TRY_LINK([#include <stdarg.h>], [va_list ap1, ap2; va_copy(ap1, ap2);],
158    AC_MSG_RESULT([va_copy]),
159        [ AH_TEMPLATE([va_copy], [define if va_copy is not available])
160        AC_TRY_LINK([#include <stdarg.h>], [va_list ap1, ap2; __va_copy(ap1, ap2);],
161        [ AC_DEFINE([va_copy], [__va_copy])
162        AC_MSG_RESULT([__va_copy])],
163        [ AC_DEFINE([va_copy(dest,src)], [memcpy(&dest,&src,sizeof(va_list))])
164        AC_MSG_RESULT([memcpy])]
165    )
166])
167
168
169AC_CHECK_HEADER([event-config.h],
170                [libevent_source=system
171                 LIBEVENT_CPPFLAGS=""
172                 LIBEVENT_LIBS="-levent"],
173                [libevent_source=bundled
174                 AC_CONFIG_SUBDIRS([third-party/libevent])
175                 AC_MSG_NOTICE([libevent not found on system, so we'll build our own from third-party/libevent/.])
176                 AC_MSG_NOTICE([if you are cross-compiling this is probably not what you want.])
177                 LIBEVENT_CPPFLAGS="-I\$(top_srcdir)/third-party/libevent -I\$(top_builddir)/third-party/libevent"
178                 LIBEVENT_LIBS="\$(top_builddir)/third-party/libevent/.libs/libevent.a"
179                 AC_SUBST(LIBEVENT_CPPFLAGS)])
180AM_CONDITIONAL([BUILD_LIBEVENT], [test x$libevent_source = xbundled])
181AC_SUBST(LIBEVENT_CPPFLAGS)
182AC_SUBST(LIBEVENT_LIBS)
183
184
185dnl ----------------------------------------------------------------------------
186dnl
187dnl  detection for the GTK+ client
188
189PKG_CHECK_MODULES(GTK,
190                  [gtk+-2.0 >= $GTK_MINIMUM
191                   glib-2.0 >= $GLIB_MINIMUM
192                   gmodule-2.0 >= $GLIB_MINIMUM
193                   gthread-2.0 >= $GLIB_MINIMUM],
194                  [have_gtk=yes],
195                  [have_gtk=no])
196AC_ARG_ENABLE([gtk],
197              AS_HELP_STRING([--enable-gtk],[build gtk client]),
198              [want_gtk=${enableval}],
199              [want_gtk=${have_gtk}])
200build_gtk=no
201use_gio=no
202use_libnotify=no
203use_dbus_glib=no
204if test "x$want_gtk" = "xyes" ; then
205    if test "x$have_gtk" = "xyes"; then
206      build_gtk=yes
207    else
208      AC_MSG_ERROR("GTK+ not found!")
209    fi
210fi
211AM_CONDITIONAL([BUILD_GTK],[test "x$build_gtk" = "xyes"])
212AC_SUBST(GTK_LIBS)
213AC_SUBST(GTK_CFLAGS)
214
215if test "x$build_gtk" = "xyes"; then
216
217    PKG_CHECK_MODULES([GIO],
218                      [gio-2.0 >= $GIO_MINIMUM],
219                      [use_gio=yes],
220                      [use_gio=no])
221    AC_SUBST(GIO_LIBS)
222    AC_SUBST(GIO_CFLAGS)
223    if test "x$use_gio" = "xyes"; then
224        AC_DEFINE([HAVE_GIO], 1)
225    fi
226
227    PKG_CHECK_MODULES([LIBNOTIFY],
228                      [libnotify >= $LIBNOTIFY_MINIMUM],
229                      [have_libnotify=yes],
230                      [have_libnotify=no])
231    AC_ARG_ENABLE([libnotify],
232                  AS_HELP_STRING([--enable-libnotify],[enable notifications]),,
233                  [enable_libnotify=yes])
234    use_libnotify=no
235    if test "x$enable_libnotify" = "xyes" ; then
236        if test "x$have_libnotify" = "xyes"; then
237            use_libnotify=yes
238            AC_SUBST(LIBNOTIFY_LIBS)
239            AC_SUBST(LIBNOTIFY_CFLAGS)
240            AC_DEFINE([HAVE_LIBNOTIFY], 1)
241        fi
242    fi
243
244    PKG_CHECK_MODULES([DBUS_GLIB],
245                      [dbus-glib-1 >= $DBUS_GLIB_MINIMUM],
246                      [use_dbus_glib=yes],
247                      [use_dbus_glib=no])
248    AC_SUBST(DBUS_GLIB_LIBS)
249    AC_SUBST(DBUS_GLIB_CFLAGS)
250    if test "x$use_dbus_glib" = "xyes"; then
251        AC_DEFINE([HAVE_DBUS_GLIB], 1)
252    fi
253    if test "x$use_dbus_glib" = "xyes"; then
254        AC_PATH_PROG(DBUS_BINDING_TOOL, dbus-binding-tool, no)
255        if test "x$DBUS_BINDING_TOOL" = xno; then
256          AC_MSG_WARN([Cannot find dbus-binding-tool])
257          use_dbus_glib="no (dbus-binding-tool not found)"
258        fi
259    fi
260fi
261
262AC_ARG_ENABLE([nls],
263              AS_HELP_STRING([--enable-nls],[enable native language support]),,
264              [enable_nls=yes])
265
266if test "x$build_gtk" = "xyes" -a  "x$enable_nls" = "xno" ; then
267    AC_MSG_ERROR("The gtk client cannot be built without nls support.  Try adding either --enable-nls or --disable-gtk" )
268fi
269
270use_nls=no
271if test "x$enable_nls" = "xyes" ; then
272    use_nls=yes
273    IT_PROG_INTLTOOL([0.35],[no-xml])
274    AC_CHECK_HEADERS([libintl.h])
275    GETTEXT_PACKAGE=transmission
276    AC_SUBST(GETTEXT_PACKAGE)
277    AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package])
278    AM_GLIB_GNU_GETTEXT
279    transmissionlocaledir='${prefix}/${DATADIRNAME}/locale'
280    AC_SUBST(transmissionlocaledir)
281fi
282
283
284dnl ----------------------------------------------------------------------------
285dnl
286dnl  platform-specific stuff.
287
288AC_CANONICAL_HOST
289have_darwin="no"
290have_msw="no"
291case $host_os in
292
293   *cygwin|*mingw32*)
294     have_msw="yes"
295     CXXFLAGS="$CXXFLAGS -mms-bitfields -mwin32 -mwindows"
296     CPPFLAGS="$CPPFLAGS -DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN"
297     LIBS="$LIBS -lshell32 -lws2_32"
298     transmissionlocaledir="locale"
299     if test -z "$host_alias"; then
300       hostaliaswindres=
301     else
302       hostaliaswindres="$host_alias-windres";
303     fi
304     AC_CHECK_TOOL(WINDRES, windres)
305     ;;
306
307  *darwin*)
308    have_darwin="yes"
309    # Make sure the Universal SDK is installed
310    if test ! -d /Developer/SDKs/MacOSX10.4u.sdk; then
311      cat << EOF
312You need to install the Universal SDK in order to build Transmission:
313  Get your Xcode CD or package
314  Restart the install
315  When it gets to "Installation Type", select "Customize"
316  Select "Mac OS X 10.4 (Universal) SDK" under "Cross Development"
317  Finish the install.
318EOF
319      exit 1
320    fi
321    ;;
322
323esac
324
325AC_ARG_ENABLE([cli],
326              [AS_HELP_STRING([--enable-cli],[build command-line client])],
327              [build_cli=${enableval}],
328              [build_cli="yes"])
329AM_CONDITIONAL([BUILD_CLI],[test "x$build_cli" = "xyes"])
330
331AC_ARG_ENABLE([mac],
332              [AS_HELP_STRING([--enable-mac],[build OS X client])],
333              [build_mac=${enableval}],
334              [build_mac=${have_darwin}])
335AM_CONDITIONAL([BUILD_MAC],[test "x$build_mac" = "xyes"])
336
337AC_ARG_ENABLE([daemon],
338              [AS_HELP_STRING([--enable-daemon],[build daemon])],
339              [build_daemon=${enableval}],
340              [build_daemon="yes"])
341AM_CONDITIONAL([BUILD_DAEMON],[test "x$build_daemon" = "xyes"])
342
343
344if test "x$have_darwin" = "xyes"; then
345    AC_DEFINE([HAVE_DARWIN], 1)
346fi
347if test "x$have_msw" = "xyes"; then
348    AC_DEFINE([HAVE_MSW], 1)
349fi
350AM_CONDITIONAL(WIN32, test "x$have_msw" = "xyes")
351
352dnl ----------------------------------------------------------------------------
353dnl
354dnl  Generate the output
355
356AC_CONFIG_FILES([Makefile
357                 transmission.spec
358                 cli/Makefile
359                 daemon/Makefile
360                 doc/Makefile
361                 libtransmission/Makefile
362                 third-party/Makefile
363                 third-party/miniupnp/Makefile
364                 third-party/libnatpmp/Makefile
365                 third-party/dht/Makefile
366                 macosx/Makefile
367                 gtk/Makefile
368                 gtk/icons/Makefile
369                 po/Makefile.in])
370
371ac_configure_args="$ac_configure_args --enable-static --disable-shared -q"
372AC_OUTPUT
373
374echo "
375
376Configuration:
377
378        Source code location:          ${srcdir}
379        Compiler:                      ${CXX}
380        System or bundled libevent:    ${libevent_source}
381
382        Build OS X client:             ${build_mac}
383        Build GTK+ client:             ${build_gtk}
384          ... with gio support:        ${use_gio}
385          ... with dbus-glib support:  ${use_dbus_glib}
386          ... with libnotify support:  ${use_libnotify}
387        Build Command-Line client:     ${build_cli}
388        Build Daemon:                  ${build_daemon}
389
390"
Note: See TracBrowser for help on using the repository browser.