Update version name
[lttng-ust.git] / configure.ac
... / ...
CommitLineData
1# -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4AC_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.
9AC_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.
15AC_SUBST([LTTNG_UST_CTL_LIBRARY_VERSION], [2:0:0])
16
17AC_CONFIG_AUX_DIR([config])
18AC_CANONICAL_TARGET
19AC_CANONICAL_HOST
20AC_CONFIG_MACRO_DIR([config])
21AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip])
22AM_MAINTAINER_MODE([enable])
23m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
24AC_CONFIG_SRCDIR([include/lttng/tracepoint.h])
25
26# Configuration options, which will be installed in the config.h
27AC_CONFIG_HEADERS([config.h include/lttng/ust-config.h])
28AH_TEMPLATE([LTTNG_UST_HAVE_EFFICIENT_UNALIGNED_ACCESS], [Use efficient unaligned access.])
29AH_TEMPLATE([LTTNG_UST_HAVE_SDT_INTEGRATION], [SystemTap integration via sdt.h])
30AH_TEMPLATE([LTTNG_UST_HAVE_PERF_EVENT], [Perf event integration via perf_event.h])
31
32# Compute minor/major/patchlevel version numbers
33AC_PROG_SED
34major_version=$(echo AC_PACKAGE_VERSION | sed 's/^\([[0-9]]\)*\.[[0-9]]*\.[[0-9]]*.*$/\1/')
35minor_version=$(echo AC_PACKAGE_VERSION | sed 's/^[[0-9]]*\.\([[0-9]]*\)\.[[0-9]]*.*$/\1/')
36patchlevel_version=$(echo AC_PACKAGE_VERSION | sed 's/^[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\).*$/\1/')
37AC_SUBST([MAJOR_VERSION], [$major_version])
38AC_SUBST([MINOR_VERSION], [$minor_version])
39AC_SUBST([PATCHLEVEL_VERSION], [$patchlevel_version])
40AC_DEFINE_UNQUOTED([VERSION_MAJOR], $major_version, [UST major version number])
41AC_DEFINE_UNQUOTED([VERSION_MINOR], $minor_version, [UST minor version number])
42AC_DEFINE_UNQUOTED([VERSION_PATCHLEVEL], $patchlevel_version, [UST patchlevel version number])
43
44version_name="Gaia"
45version_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
47AC_DEFINE_UNQUOTED([VERSION_NAME], ["$version_name"], [UST version name])
48AC_DEFINE_UNQUOTED([VERSION_DESCRIPTION], ["$version_description"], [UST version description])
49
50AC_PROG_GREP
51# libtool link_all_deplibs fixup. See http://bugs.lttng.org/issues/321.
52AC_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
58AS_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
75AM_CONDITIONAL([NO_SHARED], [test "x$enable_shared" = "xno"])
76
77# Checks for programs.
78AC_PROG_CC
79AC_PROG_CXX
80AC_PROG_MAKE_SET
81LT_INIT
82
83# rw_PROG_CXX_WORKS
84# Check whether the C++ compiler works.
85AC_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
106AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"])
107
108## Checks for libraries.
109AC_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])
123AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBDL], [test "x$have_libdl" = "xyes"])
124AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBC_DL], [test "x$have_libc_dl" = "xyes"])
125
126AC_CHECK_LIB([pthread], [pthread_create])
127
128# Check for dlfcn.h
129AC_CHECK_HEADER([dlfcn.h])
130AS_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"])
136AM_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.
142AC_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.
157AC_FUNC_MALLOC
158AC_CHECK_FUNCS([gettimeofday munmap socket strerror strtol sched_getcpu sysconf])
159
160CFLAGS="-Wall $CFLAGS"
161
162# URCU
163
164# urcu - check if we just find the headers it out of the box.
165AC_CHECK_HEADERS([urcu-bp.h], [], [AC_MSG_ERROR([Cannot find [URCU] headers (urcu-bp.h). Use [CPPFLAGS]=-Idir to specify their location.
166This 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.
170AC_CHECK_LIB([urcu-cds], [_cds_lfht_new], [], [AC_MSG_ERROR([Cannot find
171liburcu-cds lib, part of Userspace RCU 0.7 or better. Use [LDFLAGS]=-Ldir to specify its location.])])
172
173AC_MSG_CHECKING([caa_likely()])
174AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
175#include <urcu/compiler.h>
176void 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
190AC_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
193AC_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
196AC_CHECK_HEADERS([linux/perf_event.h], [have_perf_event=yes], [])
197
198# Perf event counters are only supported on x86 so far.
199AC_MSG_CHECKING([UST support for architecture perf event counters])
200case $host_cpu in
201changequote(,)dnl
202 i[3456]86)
203changequote([,])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;;
208esac
209AC_MSG_RESULT([$UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS])
210
211AM_CONDITIONAL([HAVE_PERF_EVENT], [test "x$have_perf_event" = "xyes" -a "x$UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS" = "xyes"])
212
213if test "x$have_perf_event" = "xyes" -a "x$UST_SUPPORT_FOR_ARCH_PERF_EVENT_COUNTERS" = "xyes"; then
214AC_DEFINE([LTTNG_UST_HAVE_PERF_EVENT], [1])
215fi
216
217AC_MSG_CHECKING([host system alignment requirements])
218case $host_cpu in
219changequote(,)dnl
220 i[3456]86)
221changequote([,])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)?)]) ;;
236esac
237AC_MSG_RESULT([$host_cpu])
238
239if test x$NO_UNALIGNED_ACCESS = x ; then
240AC_DEFINE([LTTNG_UST_HAVE_EFFICIENT_UNALIGNED_ACCESS], [1])
241fi
242
243# Check for JNI header files if requested
244AC_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
250AM_CONDITIONAL([BUILD_JNI_INTERFACE], [test "x$jni_interface" = "xyes"])
251
252
253AC_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
259AC_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
265AC_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
273AM_CONDITIONAL([BUILD_JAVA_AGENT], [test "x$java_agent_jul" = "xyes" || test "x$java_agent_log4j" = "xyes"])
274AM_CONDITIONAL([BUILD_JAVA_AGENT_WITH_JUL], [test "x$java_agent_jul" = "xyes"])
275AM_CONDITIONAL([BUILD_JAVA_AGENT_WITH_LOG4J], [test "x$java_agent_log4j" = "xyes"])
276
277if 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
290fi
291
292if 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
300fi
301
302# sdt.h integration
303AC_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
309AS_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
327AC_MSG_CHECKING([whether shared libraries are enabled])
328AS_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
337AC_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"])
342AC_DEFINE_UNQUOTED([LTTNG_SYSTEM_RUNDIR], ["$lttng_system_rundir"],
343 [LTTng system runtime directory])
344
345AM_PATH_PYTHON([2.7],BUILD_GEN_TP_EXAMPLES=1,[:])
346AM_CONDITIONAL([BUILD_GEN_TP_EXAMPLES], [test $BUILD_GEN_TP_EXAMPLES], [Build examples requiring lttng-gen-tp])
347
348AC_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
380AC_OUTPUT
381
382AS_ECHO()
383AS_ECHO("Version name: $version_name")
384AS_ECHO("$version_description")
385
386# Report on the configuration options
387AS_ECHO()
388AS_ECHO("LTTng-UST will be built with the following options:")
389
390AS_ECHO()
391
392AS_ECHO_N("Java agent (JUL support): ")
393AS_IF([test "x$java_agent_jul" = "xyes"], [AS_ECHO("Enabled")], [AS_ECHO("Disabled")])
394
395AS_ECHO_N("Java agent (Log4j support): ")
396AS_IF([test "x$java_agent_log4j" = "xyes"], [AS_ECHO("Enabled")], [AS_ECHO("Disabled")])
397
398AS_ECHO_N("JNI interface (JNI): ")
399AS_IF([test "x$jni_interface" = "xyes"], [AS_ECHO("Enabled")], [AS_ECHO("Disabled")])
400
401AS_ECHO_N("sdt.h integration: ")
402AS_IF([test "x$with_sdt" = "xyes"], [AS_ECHO("Enabled")], [AS_ECHO("Disabled")])
403
404AS_ECHO()
405AS_ECHO("Type 'make' to compile.")
406
This page took 0.027835 seconds and 5 git commands to generate.