Fix: incorrect urcu git URL in README
[lttng-ust.git] / configure.ac
1 # -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
3
4 AC_INIT([lttng-ust],[2.3.2],[mathieu dot desnoyers at efficios dot com])
5
6 # Following the numbering scheme proposed by libtool for the library version
7 # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
8 # This is the library version of liblttng-ust.
9 AC_SUBST([LTTNG_UST_LIBRARY_VERSION], [0:0:0])
10 # note: remember to update tracepoint.h dlopen() to match this version
11 # number. TODO: eventually automate by exporting the major number.
12
13 # This is the library version of liblttng-ust-ctl, used internally by
14 # liblttng-ust, lttng-sessiond, and lttng-consumerd.
15 AC_SUBST([LTTNG_UST_CTL_LIBRARY_VERSION], [2:0:0])
16
17 AC_CONFIG_AUX_DIR([config])
18 AC_CANONICAL_TARGET
19 AC_CANONICAL_HOST
20 AC_CONFIG_MACRO_DIR([config])
21 AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip])
22 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
23 AC_CONFIG_SRCDIR([include/lttng/tracepoint.h])
24
25 # Configuration options, which will be installed in the config.h
26 AC_CONFIG_HEADERS([config.h include/lttng/ust-config.h])
27 AH_TEMPLATE([LTTNG_UST_HAVE_EFFICIENT_UNALIGNED_ACCESS], [Use efficient unaligned access.])
28 AH_TEMPLATE([LTTNG_UST_HAVE_SDT_INTEGRATION], [SystemTap integration via sdt.h])
29
30 # Compute minor/major/patchlevel version numbers
31 AC_PROG_SED
32 major_version=$(echo AC_PACKAGE_VERSION | sed 's/^\([[0-9]]\)*\.[[0-9]]*\.[[0-9]]*.*$/\1/')
33 minor_version=$(echo AC_PACKAGE_VERSION | sed 's/^[[0-9]]*\.\([[0-9]]*\)\.[[0-9]]*.*$/\1/')
34 patchlevel_version=$(echo AC_PACKAGE_VERSION | sed 's/^[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\).*$/\1/')
35 AC_SUBST([MAJOR_VERSION], [$major_version])
36 AC_SUBST([MINOR_VERSION], [$minor_version])
37 AC_SUBST([PATCHLEVEL_VERSION], [$patchlevel_version])
38 AC_DEFINE_UNQUOTED([VERSION_MAJOR], $major_version, [UST major version number])
39 AC_DEFINE_UNQUOTED([VERSION_MINOR], $minor_version, [UST minor version number])
40 AC_DEFINE_UNQUOTED([VERSION_PATCHLEVEL], $patchlevel_version, [UST patchlevel version number])
41
42 version_name="Dominus Vobiscum"
43 version_description="A very succulent line-up of beers brewed at Microbrasserie Charlevoix. Elaborated starting from special malts and fermented with a Belgian yeast. These beers are refermented in bottle and will make you discover the richness of wheat, amber and triple styles."
44
45 AC_DEFINE_UNQUOTED([VERSION_NAME], ["$version_name"], [UST version name])
46 AC_DEFINE_UNQUOTED([VERSION_DESCRIPTION], ["$version_description"], [UST version description])
47
48 AC_PROG_GREP
49 # libtool link_all_deplibs fixup. See http://bugs.lttng.org/issues/321.
50 AC_ARG_ENABLE(libtool-linkdep-fixup,
51 AS_HELP_STRING([--disable-libtool-linkdep-fixup],
52 [disable the libtool fixup for linking all dependent libraries (link_all_deplibs)]),
53 libtool_fixup=$enableval,
54 libtool_fixup=yes)
55
56 AS_IF([test "x$libtool_fixup" = "xyes"],
57 [
58 libtool_m4="$srcdir/config/libtool.m4"
59 libtool_flag_pattern=".*link_all_deplibs\s*,\s*\$1\s*)"
60 AC_MSG_CHECKING([for occurence(s) of link_all_deplibs = no in $libtool_m4])
61 libtool_flag_pattern_count=$(grep -c "$libtool_flag_pattern\s*=\s*no" $libtool_m4)
62 AS_IF([test $libtool_flag_pattern_count -ne 0],
63 [
64 AC_MSG_RESULT([$libtool_flag_pattern_count])
65 AC_MSG_WARN([the detected libtool will not link all dependencies, forcing link_all_deplibs = unknown])
66 sed -i "s/\($libtool_flag_pattern\)\s*=\s*no/\1=unknown/g" $libtool_m4
67 ],
68 [
69 AC_MSG_RESULT([none])
70 ])
71 ])
72
73 AM_CONDITIONAL([NO_SHARED], [test "x$enable_shared" = "xno"])
74
75 # Checks for programs.
76 AC_PROG_CC
77 AC_PROG_CXX
78 AC_PROG_MAKE_SET
79 LT_INIT
80
81 # rw_PROG_CXX_WORKS
82 # Check whether the C++ compiler works.
83 AC_CACHE_CHECK([whether the C++ compiler works],
84 [rw_cv_prog_cxx_works],
85 [AC_LANG_PUSH([C++])
86 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
87 [check_cxx_designated_initializers=yes],
88 [rw_cv_prog_cxx_works=no])
89 if test "$check_cxx_designated_initializers" = "yes"; then
90 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
91 struct foo { int a; int b; };
92 void fct(void)
93 {
94 struct foo f = { .a = 0, .b = 1 };
95 }
96 ]])],[
97 rw_cv_prog_cxx_works=yes
98 ],[
99 rw_cv_prog_cxx_works=no
100 ])
101 fi
102 AC_LANG_POP([C++])])
103
104 AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"])
105
106 ## Checks for libraries.
107 AC_CHECK_LIB([dl], [dlopen],
108 [
109 have_libdl=yes
110 ],
111 [
112 #libdl not found, check for dlopen in libc.
113 AC_CHECK_LIB([c], [dlopen],
114 [
115 have_libc_dl=yes
116 ],
117 [
118 AC_MSG_ERROR([Cannot find dlopen in libdl nor libc. Use [LDFLAGS]=-Ldir to specify their location.])
119 ])
120 ])
121 AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBDL], [test "x$have_libdl" = "xyes"])
122 AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBC_DL], [test "x$have_libc_dl" = "xyes"])
123
124 AC_CHECK_LIB([pthread], [pthread_create])
125
126 # Checks for header files.
127 #AC_CHECK_HEADERS([fcntl.h stdint.h stdlib.h string.h sys/socket.h sys/time.h unistd.h])
128
129 # Checks for typedefs, structures, and compiler characteristics.
130 AC_C_INLINE
131 #AC_TYPE_INT16_T
132 #AC_TYPE_INT32_T
133 #AC_TYPE_INT64_T
134 #AC_TYPE_INT8_T
135 #AC_TYPE_PID_T
136 #AC_TYPE_SIZE_T
137 #AC_TYPE_SSIZE_T
138 #AC_TYPE_UINT16_T
139 #AC_TYPE_UINT32_T
140 #AC_TYPE_UINT64_T
141 #AC_TYPE_UINT8_T
142 #AC_CHECK_TYPES([ptrdiff_t])
143
144 # Checks for library functions.
145 AC_FUNC_MALLOC
146 AC_CHECK_FUNCS([gettimeofday munmap socket strerror strtol sched_getcpu sysconf])
147
148 CFLAGS="-Wall $CFLAGS"
149
150 # URCU
151
152 # urcu - check if we just find the headers it out of the box.
153 AC_CHECK_HEADERS([urcu-bp.h], [], [AC_MSG_ERROR([Cannot find [URCU] headers (urcu-bp.h). Use [CPPFLAGS]=-Idir to specify their location.
154 This error can also occur when the liburcu package's configure script has not been run.])])
155
156 # urcu-cds - check that URCU Concurrent Data Structure lib is available to compilation
157 # Part of Userspace RCU library 0.7.2 or better.
158 AC_CHECK_LIB([urcu-cds], [_cds_lfht_new], [], [AC_MSG_ERROR([Cannot find
159 liburcu-cds lib, part of Userspace RCU 0.7 or better. Use [LDFLAGS]=-Ldir to specify its location.])])
160
161 AC_MSG_CHECKING([caa_likely()])
162 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
163 #include <urcu/compiler.h>
164 void fct(void)
165 {
166 if (caa_likely(1)) {
167 }
168 }
169 ]])],[
170 AC_MSG_RESULT([yes])
171 ],[
172 AC_MSG_RESULT([no])
173 AC_MSG_ERROR([Please upgrade your version of liburcu to 0.6.6 or better])
174
175 ])
176
177 # urcu - check that URCU lib is available to compilation
178 AC_CHECK_LIB([urcu-bp], [synchronize_rcu_bp], [], [AC_MSG_ERROR([Cannot find liburcu-bp lib. Use [LDFLAGS]=-Ldir to specify its location.])])
179
180 # urcu - check that URCU lib is at least version 0.6
181 AC_CHECK_LIB([urcu-bp], [call_rcu_bp], [], [AC_MSG_ERROR([liburcu 0.6 or newer is needed, please update your version or use [LDFLAGS]=-Ldir to specify the right location.])])
182
183 AC_MSG_CHECKING([host system alignment requirements])
184 case $host_cpu in
185 changequote(,)dnl
186 i[3456]86)
187 changequote([,])dnl
188 ;;
189 x86_64) ;;
190 amd64) ;;
191 powerpc) ;;
192 ppc64) ;;
193 powerpc64) ;;
194 s390) NO_UNALIGNED_ACCESS=1 ;;
195 s390x) NO_UNALIGNED_ACCESS=1 ;;
196 arm*) NO_UNALIGNED_ACCESS=1 ;;
197 mips*) NO_UNALIGNED_ACCESS=1 ;;
198 tile*) NO_UNALIGNED_ACCESS=1 ;;
199 *) AC_MSG_ERROR([unable to detect alignment requirements (unsupported architecture ($host_cpu)?)]) ;;
200 esac
201
202 if test x$NO_UNALIGNED_ACCESS = x ; then
203 AC_DEFINE([LTTNG_UST_HAVE_EFFICIENT_UNALIGNED_ACCESS], [1])
204 fi
205
206 # Set compile flags to java include files if given
207 AC_ARG_WITH([java-jdk],
208 [AS_HELP_STRING([--with-java-jdk=DIR],[use the Java JDK in DIR. Ex : $JAVA_HOME.])],
209 [JAVA_JDK=$withval],
210 [JAVA_JDK=""]
211 )
212 AS_IF([test $JAVA_JDK],[
213 AS_IF([test -d $JAVA_JDK],[
214 AC_MSG_RESULT([using Java includes in $JAVA_SDK])
215 SUBDIRS=`find $JAVA_JDK/include -type d`
216 CPPFLAGS+=" "
217 CPPFLAGS+=`for x in $SUBDIRS; do echo -n "-I$x "; done`
218 CPPFLAGS+=" "
219 ],[
220 AC_MSG_ERROR(Unable to find Java include files in $JAVA_JDK)
221 ])
222 ])
223
224 # Check for JNI header files if requested
225 AC_ARG_WITH([jni-interface],
226 [AS_HELP_STRING([--with-jni-interface],[build JNI interface between C and Java. Needs Java include files [default=no]])],
227 [jni_interface=$withval],
228 [jni_interface=no]
229 )
230
231 AS_IF([test "x$jni_interface" = "xyes"],[
232 AC_CHECK_HEADERS([jni.h],[],[
233 AC_MSG_ERROR([missing jni.h
234 Make sure Sun Java, OpenJDK or GCJ is installed and that this header file exists in the system path.
235 Use the --with-java-jdk=DIR flag to point to your Java include files, or disable the JNI interface.])
236 ])
237 ])
238 AM_CONDITIONAL([BUILD_JNI_INTERFACE], [test "x$jni_interface" = "xyes"])
239
240 # sdt.h integration
241 AC_ARG_WITH([sdt],
242 [AS_HELP_STRING([--with-sdt],[provide SystemTap integration via sdt.h [default=no]])],
243 [with_sdt=$withval],
244 [with_sdt="no"]
245 )
246
247 AS_IF([test "x$with_sdt" = "xyes"],[
248 AC_MSG_CHECKING([STAP_PROBEV()])
249 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
250 #define SDT_USE_VARIADIC
251 #include <sys/sdt.h>
252 void fct(void)
253 {
254 STAP_PROBEV(provider,name,1,2,3,4,5,6,7,8,9,10);
255 }
256 ]])],[
257 AC_MSG_RESULT([yes])
258 AC_DEFINE([LTTNG_UST_HAVE_SDT_INTEGRATION], [1])
259 ],[
260 AC_MSG_RESULT([no])
261 AC_MSG_ERROR([The sdt.h integration was requested but the STAP_PROBEV define cannot be used. Make sure it is installed, and up to date, or use CPPFLAGS=-I/path/ to specify a non-standard path to sys/sdt.h])
262 ])
263 ])
264
265 AC_ARG_WITH([lttng-system-rundir],
266 AS_HELP_STRING([--with-lttng-system-rundir],
267 [Location of the system directory where LTTng-UST expects the system-wide lttng-sessiond runtime files. The default is "/var/run/lttng".]),
268 [lttng_system_rundir="$withval"],
269 [lttng_system_rundir="/var/run/lttng"])
270 AC_DEFINE_UNQUOTED([LTTNG_SYSTEM_RUNDIR], ["$lttng_system_rundir"],
271 [LTTng system runtime directory])
272
273 AC_CONFIG_FILES([
274 Makefile
275 doc/Makefile
276 doc/examples/Makefile
277 include/Makefile
278 include/lttng/ust-version.h
279 snprintf/Makefile
280 libringbuffer/Makefile
281 liblttng-ust-comm/Makefile
282 liblttng-ust/Makefile
283 liblttng-ust-ctl/Makefile
284 liblttng-ust-fork/Makefile
285 liblttng-ust-java/Makefile
286 liblttng-ust-libc-wrapper/Makefile
287 liblttng-ust-cyg-profile/Makefile
288 tools/Makefile
289 tests/Makefile
290 tests/hello/Makefile
291 tests/hello.cxx/Makefile
292 tests/same_line_tracepoint/Makefile
293 tests/snprintf/Makefile
294 tests/benchmark/Makefile
295 tests/utils/Makefile
296 lttng-ust.pc
297 ])
298
299 AC_OUTPUT
300
301 AS_ECHO()
302 AS_ECHO("Version name: $version_name")
303 AS_ECHO("$version_description")
304
305 # Report on the configuration options
306 AS_ECHO()
307 AS_ECHO("LTTng-UST will be built with the following options:")
308
309 AS_ECHO()
310 AS_ECHO_N("Java support (JNI): ")
311 AS_IF([test "x$jni_interface" = "xyes"], [AS_ECHO("Enabled")], [AS_ECHO("Disabled")])
312
313 AS_ECHO_N("sdt.h integration: ")
314 AS_IF([test "x$with_sdt" = "xyes"], [AS_ECHO("Enabled")], [AS_ECHO("Disabled")])
315
316 AS_ECHO()
317 AS_ECHO("Type 'make' to compile.")
318
This page took 0.035206 seconds and 4 git commands to generate.