1AC_INIT([dclib], [0.3.23], [http://sourceforge.net/tracker/?group_id=181579&atid=897767])
2
3dnl there is also a version in hex in dcos.h.in
4
5AC_CONFIG_SRCDIR([COPYING.OpenSSL])
6
7AC_CONFIG_AUX_DIR([admin])
8AC_CONFIG_MACRO_DIR([m4])
9AC_CONFIG_HEADERS([config.h])
10
11AC_CANONICAL_HOST
12
13AM_INIT_AUTOMAKE
14
15dnl yes dclib is C++ so do all tests as C++
16AC_LANG([C++])
17
18LARGEFILESUPPORT="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
19AC_ARG_ENABLE([lfs],
20[AS_HELP_STRING([--disable-lfs],[disable largefile (files larger than 2GiB) support (default enabled)])],
21[ if test "x$enableval" = "xno"
22  then
23    LARGEFILESUPPORT=""
24  fi ]
25)
26
27dnl these have changed but I do not want to start doing
28dnl 1000 tests of "does -Wsome-unusual-option-only-in-gcc-4.3 work?"
29WARNINGFLAGS="-Wall -W -pedantic -Wno-long-long -Wundef -Wconversion"
30AC_ARG_ENABLE([warnings],
31[AS_HELP_STRING([--disable-warnings],[disable compiler warnings (default enabled)])],
32[ if test "x$enableval" = "xno"
33  then
34    WARNINGFLAGS=""
35  fi ]
36)
37
38DEBUGFLAGS=""
39DEBUGCOMPILE=""
40AC_ARG_ENABLE([debug],
41[AS_HELP_STRING([--enable-debug],[enable debugging support (default disabled)])],
42[ if test "x$enableval" = "xyes"
43  then
44    DEBUGFLAGS="-DDEBUG"
45    DEBUGCOMPILE="-g"
46  fi ]
47)
48
49dnl really -D_GNU_SOURCE should be used for strcasestr and canonicalize_file_name
50dnl but it compiles without it
51PACKAGE_FLAGS="$DEBUGFLAGS $WARNINGFLAGS $LARGEFILESUPPORT -D_REENTRANT"
52case $host in
53  *-*-linux-gnu)
54    PACKAGE_FLAGS="$PACKAGE_FLAGS -D_XOPEN_SOURCE=600 -D_BSD_SOURCE"
55esac
56AC_SUBST(PACKAGE_FLAGS)
57AC_SUBST(DEBUGCOMPILE)
58
59AC_PROG_CXX
60AC_PROG_CXXCPP
61
62AC_ENABLE_SHARED([yes])
63AC_ENABLE_STATIC([no])
64AC_PROG_LIBTOOL
65
66AC_CHECK_HEADER( [bzlib.h], [], [AC_MSG_ERROR([bzlib headers not found. install bzlib devel package])] )
67AC_CHECK_LIB( [bz2], [BZ2_bzBuffToBuffCompress], [], [AC_MSG_ERROR([bzlib not found. install bzlib package])] )
68
69AC_CHECK_HEADER( [zlib.h], [], [AC_MSG_ERROR([zlib headers not found. install zlib devel package])] )
70AC_CHECK_LIB( [z], [inflate], [], [AC_MSG_ERROR([zlib not found. install zlib package])] )
71
72dnl the plugin manager uses dlopen / dlsym on unix
73dnl the check valknut used was from KDE 3 and also checked for
74dnl "shl_unload" in "dld" but there is no #ifdef'ed code for that
75AC_CHECK_HEADER([dlfcn.h])
76AC_CHECK_LIB([dl],[dlopen])
77
78dnl There was a KDE test here to work out what the third argument of accept() and
79dnl getsockname() is. The manpage says:
80dnl #include <sys/socket.h>
81dnl int getsockname(int s, struct sockaddr *name, socklen_t *namelen);
82dnl So socklen_t is defined in <sys/socket.h> and there's no need to
83dnl attempt to work out what it is. The accept() manpage also says
84dnl #include <sys/types.h> may be required so that was added to dclib/core/csocket.cpp
85
86dnl XML
87AM_PATH_XML2( [2.0.0], [], [AC_MSG_ERROR([libxml2 development package is required])] )
88
89dnl check some includes - mainly for CDir or CSocket
90dnl definitions not used were removed
91dnl definitions only used by gnulib fsusage.c are not included here
92dnl that's what gl_FSUSAGE is for
93AC_CHECK_HEADERS([unistd.h sys/filio.h sys/sockio.h sys/termios.h langinfo.h])
94
95dnl fsusage.c - get free disk space
96gl_PREREQ_FSUSAGE_EXTRA
97gl_FSUSAGE
98
99is_mingw32="false"
100case $host in
101  *mingw32)
102    is_mingw32="true"
103esac
104
105AM_CONDITIONAL([WIN32], [test x$is_mingw32 = "xtrue"])
106
107dnl gl_MD5 uses this but now also CCaseFolder needs it
108dnl TigerHash.cpp has defines for big endian and 64 bit CPU
109AC_C_BIGENDIAN
110AC_CHECK_SIZEOF([void*])
111AC_CHECK_SIZEOF([long])
112
113dnl cmd5.c - compute MD5 checksum
114gl_MD5
115
116dnl see if canonicalize_file_name is provided by system libs (glibc)
117dnl if not realpath gets used with a big buffer
118dnl canonicalize_file_name and strcasestr unfortunately require -D_GNU_SOURCE
119dnl definitions not used were removed
120AC_CHECK_FUNCS([canonicalize_file_name realpath strtoll strtoull strtoq strtouq strcasestr lrint nanosleep usleep nl_langinfo _strtoi64 _strtoui64 if_nameindex])
121
122AC_ARG_ENABLE([socks],
123[AS_HELP_STRING([--enable-socks],[use the socks proxying library (default disabled)])],
124[ if test x$enableval = "xyes"
125  then
126    AC_DEFINE([HAVE_SOCKS],[1],[use the socks library])
127    AC_CHECK_LIB([socks], [Rconnect], [], [AC_MSG_ERROR([Socks support requested but socks library not found])])
128  fi
129])
130
131AM_ICONV
132
133ACX_PTHREAD([], [AC_MSG_ERROR([POSIX threads support required but not found])])
134
135PKG_PROG_PKG_CONFIG([0.9.0])
136
137DCLIB_CHECK_SSL
138
139DCLIB_CHECK_STL
140
141HIDESYMS="-fvisibility=hidden"
142AC_MSG_CHECKING([if $CXX supports $HIDESYMS])
143
144ac_save_CXXFLAGS="$CXXFLAGS"
145CXXFLAGS="$CXXFLAGS $HIDESYMS"
146
147AC_COMPILE_IFELSE([AC_LANG_SOURCE(
148[[
149int main()
150{
151	return 0;
152}
153]]
154)],
155[ AC_MSG_RESULT([yes]) ],
156[ AC_MSG_RESULT([no])
157  HIDESYMS=""
158])
159
160CXXFLAGS="$ac_save_CXXFLAGS"
161
162AC_SUBST(HIDESYMS)
163
164dnl build date and svn revision information, no longer put into PACKAGE_VERSION
165AC_MSG_CHECKING([for build date and svn revision])
166DCLIB_BUILD_INFO="Build date: `date +%Y%m%d`"
167if echo "$PACKAGE_VERSION" | grep svn >/dev/null 2>&1
168then
169  DCLIB_BUILD_INFO="$DCLIB_BUILD_INFO svn: `svnversion`"
170else
171  DCLIB_BUILD_INFO="$DCLIB_BUILD_INFO release"
172fi
173AC_MSG_RESULT([$DCLIB_BUILD_INFO])
174AC_SUBST(DCLIB_BUILD_INFO)
175
176AC_CONFIG_FILES([ Makefile ])
177AC_CONFIG_FILES([ dclib.spec ])
178AC_CONFIG_FILES([ dclib.lsm ])
179AC_CONFIG_FILES([ dclib.pc ])
180AC_CONFIG_FILES([ dclib-uninstalled.pc ])
181AC_CONFIG_FILES([ dclib/dcos.h ])
182AC_CONFIG_FILES([ dclib/dclib-ssl-use.h ])
183AC_CONFIG_FILES([ dclib/dclib-stl-use.h ])
184AC_CONFIG_FILES([ dclib/Makefile ])
185AC_CONFIG_FILES([ dclib/gnulib/Makefile ])
186AC_CONFIG_FILES([ dclib/core/Makefile ])
187AC_CONFIG_FILES([ dclib/hash/Makefile ])
188AC_CONFIG_FILES([ tests/Makefile ])
189AC_OUTPUT
190