Update version name
[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.6.0-rc1],[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 AM_MAINTAINER_MODE([enable])
23 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
24 AC_CONFIG_SRCDIR([include/lttng/tracepoint.h])
25
26 # Configuration options, which will be installed in the config.h
27 AC_CONFIG_HEADERS([config.h include/lttng/ust-config.h])
28 AH_TEMPLATE([LTTNG_UST_HAVE_EFFICIENT_UNALIGNED_ACCESS], [Use efficient unaligned access.])
29 AH_TEMPLATE([LTTNG_UST_HAVE_SDT_INTEGRATION], [SystemTap integration via sdt.h])
30 AH_TEMPLATE([LTTNG_UST_HAVE_PERF_EVENT], [Perf event integration via perf_event.h])
31
32 # Compute minor/major/patchlevel version numbers
33 AC_PROG_SED
34 major_version=$(echo AC_PACKAGE_VERSION | sed 's/^\([[0-9]]\)*\.[[0-9]]*\.[[0-9]]*.*$/\1/')
35 minor_version=$(echo AC_PACKAGE_VERSION | sed 's/^[[0-9]]*\.\([[0-9]]*\)\.[[0-9]]*.*$/\1/')
36 patchlevel_version=$(echo AC_PACKAGE_VERSION | sed 's/^[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\).*$/\1/')
37 AC_SUBST([MAJOR_VERSION], [$major_version])
38 AC_SUBST([MINOR_VERSION], [$minor_version])
39 AC_SUBST([PATCHLEVEL_VERSION], [$patchlevel_version])
40 AC_DEFINE_UNQUOTED([VERSION_MAJOR], $major_version, [UST major version number])
41 AC_DEFINE_UNQUOTED([VERSION_MINOR], $minor_version, [UST minor version number])
42 AC_DEFINE_UNQUOTED([VERSION_PATCHLEVEL], $patchlevel_version, [UST patchlevel version number])
43
44 version_name="Gaia"
45 version_description="From Benelux brewery in Montreal, the Gaia is a witbier with a cloudy light amber ale color. Aroma of coriander with floral hay notes is enchanting. Taste is also dominated by the very floral coriander note and some medium sweet malt notes."
46
47 AC_DEFINE_UNQUOTED([VERSION_NAME], ["$version_name"], [UST version name])
48 AC_DEFINE_UNQUOTED([VERSION_DESCRIPTION], ["$version_description"], [UST version description])
49
50 AC_PROG_GREP
51 # libtool link_all_deplibs fixup. See http://bugs.lttng.org/issues/321.
52 AC_ARG_ENABLE(libtool-linkdep-fixup,
53 AS_HELP_STRING([--disable-libtool-linkdep-fixup],
54 [disable the libtool fixup for linking all dependent libraries (link_all_deplibs)]),
55 libtool_fixup=$enableval,
56 libtool_fixup=yes)
57
58 AS_IF([test "x$libtool_fixup" = "xyes"],
59 [
60 libtool_m4="$srcdir/config/libtool.m4"
61 libtool_flag_pattern=".*link_all_deplibs\s*,\s*\$1\s*)"
62 AC_MSG_CHECKING([for occurence(s) of link_all_deplibs = no in $libtool_m4])
63 libtool_flag_pattern_count=$(grep -c "$libtool_flag_pattern\s*=\s*no" $libtool_m4)
64 AS_IF([test $libtool_flag_pattern_count -ne 0],
65 [
66 AC_MSG_RESULT([$libtool_flag_pattern_count])
67 AC_MSG_WARN([the detected libtool will not link all dependencies, forcing link_all_deplibs = unknown])
68 sed -i "s/\($libtool_flag_pattern\)\s*=\s*no/\1=unknown/g" $libtool_m4
69 ],
70 [
71 AC_MSG_RESULT([none])
72 ])
73 ])
74
75 AM_CONDITIONAL([NO_SHARED], [test "x$enable_shared" = "xno"])
76
77 # Checks for programs.
78 AC_PROG_CC
79 AC_PROG_CXX
80 AC_PROG_MAKE_SET
81 LT_INIT
82
83 # rw_PROG_CXX_WORKS
84 # Check whether the C++ compiler works.
85 AC_CACHE_CHECK([whether the C++ compiler works],
86 [rw_cv_prog_cxx_works],
87 [AC_LANG_PUSH([C++])
88 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
89 [check_cxx_designated_initializers=yes],
90 [rw_cv_prog_cxx_works=no])
91 if test "$check_cxx_designated_initializers" = "yes"; then
92 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
93 struct foo { int a; int b; };
94 void fct(void)
95 {
96 struct foo f = { .a = 0, .b = 1 };
97 }
98 ]])],[
99 rw_cv_prog_cxx_works=yes
100 ],[
101 rw_cv_prog_cxx_works=no
102 ])
103 fi
104 AC_LANG_POP([C++])])
105
106 AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"])
107
108 ## Checks for libraries.
109 AC_CHECK_LIB([dl], [dlopen],
110 [
111 have_libdl=yes
112 ],
113 [
114 #libdl not found, check for dlopen in libc.
115 AC_CHECK_LIB([c], [dlopen],
116 [
117 have_libc_dl=yes
118 ],
119 [
120 AC_MSG_ERROR([Cannot find dlopen in libdl nor libc. Use [LDFLAGS]=-Ldir to specify their location.])
121 ])
122 ])
123 AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBDL], [test "x$have_libdl" = "xyes"])
124 AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBC_DL], [test "x$have_libc_dl" = "xyes"])
125
126 AC_CHECK_LIB([pthread], [pthread_create])
127
128 # Check for dlfcn.h
129 AC_CHECK_HEADER([dlfcn.h])
130 AS_IF([test "x${ac_cv_header_dlfcn_h}" = "xyes"],
131 [AC_CHECK_DECLS([RTLD_DI_LINKMAP],,,
132 [#define _GNU_SOURCE /* Required on Linux to get GNU extensions */
133 #include <dlfcn.h>])
134 ],
135 [ac_cv_have_decl_RTLD_DI_LINKMAP="no"])
136 AM_CONDITIONAL([HAVE_DLINFO], [test "x${ac_cv_have_decl_RTLD_DI_LINKMAP}" = "xyes"])
137
138 # Checks for header files.
139 #AC_CHECK_HEADERS([fcntl.h stdint.h stdlib.h string.h sys/socket.h sys/time.h unistd.h])
140
141 # Checks for typedefs, structures, and compiler characteristics.
142 AC_C_INLINE
143 #AC_TYPE_INT16_T
144 #AC_TYPE_INT32_T
145 #AC_TYPE_INT64_T
146 #AC_TYPE_INT8_T
147 #AC_TYPE_PID_T
148 #AC_TYPE_SIZE_T
149 #AC_TYPE_SSIZE_T
150 #AC_TYPE_UINT16_T
151 #AC_TYPE_UINT32_T
152 #AC_TYPE_UINT64_T
153 #AC_TYPE_UINT8_T
154 #AC_CHECK_TYPES([ptrdiff_t])
155
156 # Checks for library functions.
157 AC_FUNC_MALLOC
158 AC_CHECK_FUNCS([gettimeofday munmap socket strerror strtol sched_getcpu sysconf])
159
160 CFLAGS="-Wall $CFLAGS"
161
162 # URCU
163
164 # urcu - check if we just find the headers it out of the box.
165 AC_CHECK_HEADERS([urcu-bp.h], [], [AC_MSG_ERROR([Cannot find [URCU] headers (urcu-bp.h). Use [CPPFLAGS]=-Idir to specify their location.
166 This error can also occur when the liburcu package's configure script has not been run.])])
167
168 # urcu-cds - check that URCU Concurrent Data Structure lib is available to compilation
169 # Part of Userspace RCU library 0.7.2 or better.
170 AC_CHECK_LIB([urcu-cds], [_cds_lfht_new], [], [AC_MSG_ERROR([Cannot find
171 liburcu-cds lib, part of Userspace RCU 0.7 or better. Use [LDFLAGS]=-Ldir to specify its location.])])
172
173 AC_MSG_CHECKING([caa_likely()])
174 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
175 #include <urcu/compiler.h>
176 void fct(void)
177 {
178 if (caa_likely(1)) {
179 }
180 }
181 ]])],[
182 AC_MSG_RESULT([yes])
183 ],[
184 AC_MSG_RESULT([no])
185 AC_MSG_ERROR([Please upgrade your version of liburcu to 0.6.6 or better])
186
187 ])
188
189 # urcu - check that URCU lib is available to compilation
190 AC_CHECK_LIB([urcu-bp], [synchronize_rcu_bp], [], [AC_MSG_ERROR([Cannot find liburcu-bp lib. Use [LDFLAGS]=-Ldir to specify its location.])])
191
192 # urcu - check that URCU lib is at least version 0.6
193 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.])])
194
195 # optional linux/perf_event.h
196 AC_CHECK_HEADERS([linux/perf_event.h], [have_perf_event=yes], [])
197
198 # Perf event counters are only supported on x86 so far.
199 AC_MSG_CHECKING([UST support for architecture perf event counters])
200 case $host_cpu in
201 changequote(,)dnl
202 i[3456]86)
203 changequote([,])dnl
204 UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS=yes;;
205 x86_64) UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS=yes;;
206 amd64) UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS=yes;;
207 *) UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS=no;;
208 esac
209 AC_MSG_RESULT([$UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS])
210
211 AM_CONDITIONAL([HAVE_PERF_EVENT], [test "x$have_perf_event" = "xyes" -a "x$UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS" = "xyes"])
212
213 if test "x$have_perf_event" = "xyes" -a "x$UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS" = "xyes"; then
214 AC_DEFINE([LTTNG_UST_HAVE_PERF_EVENT], [1])
215 fi
216
217 AC_MSG_CHECKING([host system alignment requirements])
218 case $host_cpu in
219 changequote(,)dnl
220 i[3456]86)
221 changequote([,])dnl
222 ;;
223 x86_64) ;;
224 amd64) ;;
225 powerpc) ;;
226 ppc64) ;;
227 ppc64le) ;;
228 powerpc64) ;;
229 powerpc64le) ;;
230 s390) NO_UNALIGNED_ACCESS=1 ;;
231 s390x) NO_UNALIGNED_ACCESS=1 ;;
232 arm*) NO_UNALIGNED_ACCESS=1 ;;
233 mips*) NO_UNALIGNED_ACCESS=1 ;;
234 tile*) NO_UNALIGNED_ACCESS=1 ;;
235 *) AC_MSG_ERROR([unable to detect alignment requirements (unsupported architecture ($host_cpu)?)]) ;;
236 esac
237 AC_MSG_RESULT([$host_cpu])
238
239 if test x$NO_UNALIGNED_ACCESS = x ; then
240 AC_DEFINE([LTTNG_UST_HAVE_EFFICIENT_UNALIGNED_ACCESS], [1])
241 fi
242
243 # Check for JNI header files if requested
244 AC_ARG_ENABLE([jni-interface],
245 [AS_HELP_STRING([--enable-jni-interface],[build JNI interface between C and Java. Needs Java include files [default=no]])],
246 [jni_interface=$withval],
247 [jni_interface=no]
248 )
249
250 AM_CONDITIONAL([BUILD_JNI_INTERFACE], [test "x$jni_interface" = "xyes"])
251
252
253 AC_ARG_ENABLE([java-agent-jul],
254 [AS_HELP_STRING([--enable-java-agent-jul],[build the LTTng UST Java agent with JUL support [default=no]])],
255 [java_agent_jul=$enableval],
256 [java_agent_jul=no]
257 )
258
259 AC_ARG_ENABLE([java-agent-log4j],
260 [AS_HELP_STRING([--enable-java-agent-log4j],[build the LTTng UST Java agent with Log4j support [default=no]])],
261 [java_agent_log4j=$enableval],
262 [java_agent_log4j=no]
263 )
264
265 AC_ARG_ENABLE([java-agent-all],
266 [AS_HELP_STRING([--enable-java-agent-all],[build the LTTng UST Java agent with all supported backends [default=no]])],
267 [java_agent_jul=$enableval
268 java_agent_log4j=$enableval],
269 [:]
270 )
271
272
273 AM_CONDITIONAL([BUILD_JAVA_AGENT], [test "x$java_agent_jul" = "xyes" || test "x$java_agent_log4j" = "xyes"])
274 AM_CONDITIONAL([BUILD_JAVA_AGENT_WITH_JUL], [test "x$java_agent_jul" = "xyes"])
275 AM_CONDITIONAL([BUILD_JAVA_AGENT_WITH_LOG4J], [test "x$java_agent_log4j" = "xyes"])
276
277 if test "x$jni_interface" = "xyes" || test "x$java_agent_jul" = "xyes" || test "x$java_agent_log4j" = "xyes"; then
278 AX_JAVA_OPTIONS
279 AX_PROG_JAVAC
280 AX_PROG_JAVA
281 AX_PROG_JAR
282
283 AX_JNI_INCLUDE_DIR
284 for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS
285 do
286 CPPFLAGS="$CPPFLAGS -I$JNI_INCLUDE_DIR"
287 done
288
289 AX_PROG_JAVAH
290 fi
291
292 if test "x$java_agent_log4j" = "xyes"; then
293 AX_CHECK_CLASSPATH
294
295 AX_CHECK_CLASS(org.apache.log4j.Logger)
296
297 if test "x$ac_cv_class_org_apache_log4j_Logger" = "xno"; then
298 AC_MSG_ERROR([The UST Java agent support for log4j was requested but the Log4j classes were not found. Please specify the location of the Log4j jar via the Java CLASSPATH e.g: export CLASSPATH="/path/to/log4j.jar"])
299 fi
300 fi
301
302 # sdt.h integration
303 AC_ARG_WITH([sdt],
304 [AS_HELP_STRING([--with-sdt],[provide SystemTap integration via sdt.h [default=no]])],
305 [with_sdt=$withval],
306 [with_sdt="no"]
307 )
308
309 AS_IF([test "x$with_sdt" = "xyes"],[
310 AC_MSG_CHECKING([STAP_PROBEV()])
311 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
312 #define SDT_USE_VARIADIC
313 #include <sys/sdt.h>
314 void fct(void)
315 {
316 STAP_PROBEV(provider,name,1,2,3,4,5,6,7,8,9,10);
317 }
318 ]])],[
319 AC_MSG_RESULT([yes])
320 AC_DEFINE([LTTNG_UST_HAVE_SDT_INTEGRATION], [1])
321 ],[
322 AC_MSG_RESULT([no])
323 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])
324 ])
325 ])
326
327 AC_MSG_CHECKING([whether shared libraries are enabled])
328 AS_IF([test "x$enable_shared" = "xyes"],
329 [
330 AC_MSG_RESULT([yes])
331 ],
332 [
333 AC_MSG_RESULT([no])
334 AC_MSG_ERROR([LTTng-UST requires shared libraries to be enabled])
335 ])
336
337 AC_ARG_WITH([lttng-system-rundir],
338 AS_HELP_STRING([--with-lttng-system-rundir],
339 [Location of the system directory where LTTng-UST expects the system-wide lttng-sessiond runtime files. The default is "/var/run/lttng".]),
340 [lttng_system_rundir="$withval"],
341 [lttng_system_rundir="/var/run/lttng"])
342 AC_DEFINE_UNQUOTED([LTTNG_SYSTEM_RUNDIR], ["$lttng_system_rundir"],
343 [LTTng system runtime directory])
344
345 AM_PATH_PYTHON([2.7],BUILD_GEN_TP_EXAMPLES=1,[:])
346 AM_CONDITIONAL([BUILD_GEN_TP_EXAMPLES], [test $BUILD_GEN_TP_EXAMPLES], [Build examples requiring lttng-gen-tp])
347
348 AC_CONFIG_FILES([
349 Makefile
350 doc/Makefile
351 doc/examples/Makefile
352 include/Makefile
353 include/lttng/ust-version.h
354 snprintf/Makefile
355 libringbuffer/Makefile
356 liblttng-ust-comm/Makefile
357 liblttng-ust/Makefile
358 liblttng-ust-ctl/Makefile
359 liblttng-ust-fork/Makefile
360 liblttng-ust-dl/Makefile
361 liblttng-ust-java/Makefile
362 liblttng-ust-java-agent/Makefile
363 liblttng-ust-java-agent/java/Makefile
364 liblttng-ust-java-agent/jni/Makefile
365 liblttng-ust-java-agent/jni/jul/Makefile
366 liblttng-ust-java-agent/jni/log4j/Makefile
367 liblttng-ust-libc-wrapper/Makefile
368 liblttng-ust-cyg-profile/Makefile
369 tools/Makefile
370 tests/Makefile
371 tests/hello/Makefile
372 tests/hello.cxx/Makefile
373 tests/same_line_tracepoint/Makefile
374 tests/snprintf/Makefile
375 tests/benchmark/Makefile
376 tests/utils/Makefile
377 lttng-ust.pc
378 ])
379
380 AC_OUTPUT
381
382 AS_ECHO()
383 AS_ECHO("Version name: $version_name")
384 AS_ECHO("$version_description")
385
386 # Report on the configuration options
387 AS_ECHO()
388 AS_ECHO("LTTng-UST will be built with the following options:")
389
390 AS_ECHO()
391
392 AS_ECHO_N("Java agent (JUL support): ")
393 AS_IF([test "x$java_agent_jul" = "xyes"], [AS_ECHO("Enabled")], [AS_ECHO("Disabled")])
394
395 AS_ECHO_N("Java agent (Log4j support): ")
396 AS_IF([test "x$java_agent_log4j" = "xyes"], [AS_ECHO("Enabled")], [AS_ECHO("Disabled")])
397
398 AS_ECHO_N("JNI interface (JNI): ")
399 AS_IF([test "x$jni_interface" = "xyes"], [AS_ECHO("Enabled")], [AS_ECHO("Disabled")])
400
401 AS_ECHO_N("sdt.h integration: ")
402 AS_IF([test "x$with_sdt" = "xyes"], [AS_ECHO("Enabled")], [AS_ECHO("Disabled")])
403
404 AS_ECHO()
405 AS_ECHO("Type 'make' to compile.")
406
This page took 0.037596 seconds and 5 git commands to generate.