| 1 | # This file is part of the Linux Trace Toolkit viewer |
| 2 | # Copyright (C) 2003-2004 Mathieu Desnoyers |
| 3 | # |
| 4 | # This program is free software; you can redistribute it and/or modify |
| 5 | # it under the terms of the GNU General Public License Version 2 as |
| 6 | # published by the Free Software Foundation; |
| 7 | # |
| 8 | # This program is distributed in the hope that it will be useful, |
| 9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | # GNU General Public License for more details. |
| 12 | # |
| 13 | # You should have received a copy of the GNU General Public License |
| 14 | # along with this program; if not, write to the Free Software |
| 15 | # Foundation, Inc., 59 Temple Place - Suite 330, Boston, |
| 16 | # MA 02111-1307, USA. |
| 17 | |
| 18 | |
| 19 | |
| 20 | # -*- Autoconf -*- |
| 21 | # Process this file with autoconf to produce a configure script. |
| 22 | |
| 23 | AC_PREREQ(2.57) |
| 24 | AC_INIT([lttv], [0.12.38-21032011], [yannick.brosseau@gmail.com]) |
| 25 | AC_CONFIG_AUX_DIR([config]) |
| 26 | AC_CONFIG_MACRO_DIR([config]) |
| 27 | AM_INIT_AUTOMAKE([dist-bzip2 no-dist-gzip]) |
| 28 | AM_SILENT_RULES([yes]) |
| 29 | AC_CONFIG_HEADERS([config.h]) |
| 30 | LT_INIT |
| 31 | |
| 32 | # If requested, avoid building LTTV part |
| 33 | AC_ARG_WITH(lttv-gui, |
| 34 | AS_HELP_STRING([--with-lttv-gui], |
| 35 | [build LTTV gui, as opposed to only build textmode LTTV [[default=yes]]]), |
| 36 | [with_lttv_gui="$withval"], |
| 37 | [with_lttv_gui="yes"]) |
| 38 | #TODO ybrosseau 2012-03-13: Remove this when babeltrace port is complete |
| 39 | #Force GUI disabling while we port babeltrace |
| 40 | with_lttv_gui="no" |
| 41 | |
| 42 | AM_CONDITIONAL([BUILD_LTTV_GUI], [ test "x$with_lttv_gui" = "xyes" ]) |
| 43 | |
| 44 | AM_PATH_GLIB_2_0(2.4.0, , AC_MSG_ERROR([glib is required in order to compile LTTV]) , gmodule) |
| 45 | |
| 46 | # GTK is only needed by the GUI |
| 47 | AS_IF([test "x$with_lttv_gui" = "xyes"],[ |
| 48 | AM_PATH_GTK_2_0(2.4.0, , AC_MSG_ERROR([GTK 2 is required in order to compile the LTTV GUI]) , gmodule) |
| 49 | ]) |
| 50 | |
| 51 | AC_PATH_PROGS(BASH, bash) |
| 52 | |
| 53 | AC_SYS_LARGEFILE |
| 54 | |
| 55 | # Checks for programs. |
| 56 | AC_PROG_CC |
| 57 | |
| 58 | # Checks for libraries. |
| 59 | AC_CHECK_LIB([popt], [poptGetNextOpt], [], |
| 60 | AC_MSG_ERROR([libpopt is required in order to compile LTTV]) |
| 61 | ) |
| 62 | AC_CHECK_LIB([m], [round], [], |
| 63 | AC_MSG_ERROR([Mathematical libraries are missing.]) |
| 64 | ) |
| 65 | AC_CHECK_LIB([util], [forkpty], [], |
| 66 | AC_MSG_ERROR([libutil is required in order to compile LTTV]) |
| 67 | ) |
| 68 | |
| 69 | # Trace synchronization feature, which requires libglpk |
| 70 | AC_ARG_WITH([trace-sync], |
| 71 | AS_HELP_STRING([--with-trace-sync], |
| 72 | [support trace synchronization accuracy calculation (needs libglpk) [default=no]]), |
| 73 | [with_trace_sync="$withval"], |
| 74 | [with_trace_sync="no"]) |
| 75 | |
| 76 | AS_IF([test "x$with_trace_sync" = "xyes"],[ |
| 77 | AC_CHECK_LIB([glpk], [glp_create_prob], [], [ |
| 78 | AC_MSG_ERROR([The trace synchronization feature requires libglpk, please install it first.]) |
| 79 | ]) |
| 80 | AC_DEFINE([HAVE_LIBGLPK], [1], [Define if you have libglpk]), |
| 81 | ]) |
| 82 | |
| 83 | |
| 84 | # Checks for header files. |
| 85 | AC_HEADER_STDC |
| 86 | AC_CHECK_HEADERS([fcntl.h stdlib.h string.h sys/time.h unistd.h pthread.h]) |
| 87 | |
| 88 | # Check for JNI header files if requested |
| 89 | AC_ARG_WITH(jni-interface, |
| 90 | AS_HELP_STRING([--with-jni-interface], |
| 91 | [build JNI interface between C and Java. Needs JNI header file. [[default=no]]]), |
| 92 | [with_jni_interface="$withval"], |
| 93 | [with_jni_interface="no"]) |
| 94 | |
| 95 | AS_IF([test "x$with_jni_interface" = "xyes"],[ |
| 96 | AC_CHECK_HEADERS([jni.h], [], AC_MSG_ERROR([missing jni.h |
| 97 | Make sure Sun Java or OpenJDK or GCJ is installed and that this header file exists in the system path. |
| 98 | Use CFLAGS=-I/path/ to specify a non-standard path or disable the JNI interface.])) |
| 99 | ]) |
| 100 | AM_CONDITIONAL([BUILD_JNI_INTERFACE], [ test "$with_jni_interface" = "yes" ] ) |
| 101 | |
| 102 | |
| 103 | # If we want the gui, we need additionnal flags for GTK |
| 104 | AS_IF([test "x$with_lttv_gui" = "xyes"],[ |
| 105 | pkg_modules="gtk+-2.0 >= 2.0.0" |
| 106 | PKG_CHECK_MODULES(PACKAGE, [$pkg_modules]) |
| 107 | ]) |
| 108 | |
| 109 | pkg_modules="gmodule-2.0 >= 2.0.0" |
| 110 | PKG_CHECK_MODULES(GMODULE, [$pkg_modules]) |
| 111 | |
| 112 | pkg_modules="gobject-2.0 >= 2.0.0" |
| 113 | PKG_CHECK_MODULES(GOBJECT, [$pkg_modules]) |
| 114 | |
| 115 | # Todo add test for babeltrace pkg-config |
| 116 | BABELTRACE_LIBS="-lbabeltrace -lbabeltrace-ctf" |
| 117 | |
| 118 | LIBS="$LIBS $GTK_LIBS $GOBJECT_LIBS $GMODULE_LIBS $BABELTRACE_LIBS" |
| 119 | PACKAGE_CFLAGS="$GTK_CFLAGS $GOBJECT_CFLAGS $GMODULE_CFLAGS -Wall -Wformat-security" |
| 120 | |
| 121 | MODULE_CFLAGS="$PACKAGE_CFLAGS -fvisibility=hidden" |
| 122 | MODULE_LDFLAGS="-module -avoid-version" |
| 123 | AC_SUBST([PACKAGE_CFLAGS]) |
| 124 | AC_SUBST(PACKAGE_LIBS) |
| 125 | AC_SUBST([MODULE_CFLAGS]) |
| 126 | AC_SUBST([MODULE_LDFLAGS]) |
| 127 | |
| 128 | # Checks for typedefs, structures, and compiler characteristics. |
| 129 | AC_HEADER_STDBOOL |
| 130 | AC_C_CONST |
| 131 | AC_C_INLINE |
| 132 | AC_TYPE_OFF_T |
| 133 | AC_TYPE_SIZE_T |
| 134 | AC_HEADER_TIME |
| 135 | |
| 136 | # Checks for library functions. |
| 137 | AC_FUNC_ERROR_AT_LINE |
| 138 | AC_FUNC_SELECT_ARGTYPES |
| 139 | AC_CHECK_FUNCS([select]) |
| 140 | |
| 141 | AC_ARG_ENABLE(lttvstatic, |
| 142 | AS_HELP_STRING([--enable-lttvstatic], |
| 143 | [build a statically linked executable [[default=no]]]), |
| 144 | [lttvstatic="$enableval"], |
| 145 | [lttvstatic="no"]) |
| 146 | AM_CONDITIONAL([LTTVSTATIC], [ test "x$lttvstatic" = "xyes" ] ) |
| 147 | |
| 148 | lttvlibdir="${libdir}/lttv" |
| 149 | lttvplugindir="${lttvlibdir}/plugins" |
| 150 | #lttlibdir="${libdir}/ltt" |
| 151 | top_lttvdir="\$(top_srcdir)/lttv" |
| 152 | top_lttvwindowdir="\$(top_srcdir)/lttv/modules/gui/lttvwindow" |
| 153 | |
| 154 | DEFAULT_INCLUDES="-I\$(top_srcdir) -I\$(top_builddir) -I\$(top_lttvdir) -I\$(top_lttvwindowdir)" |
| 155 | |
| 156 | lttincludedir="${includedir}/ltt" |
| 157 | lttvincludedir="${includedir}/lttv" |
| 158 | lttvwindowincludedir="${includedir}/lttvwindow" |
| 159 | lttctlincludedir="${includedir}/liblttctl" |
| 160 | |
| 161 | AC_SUBST(lttvlibdir) |
| 162 | AC_SUBST(lttvplugindir) |
| 163 | #AC_SUBST(lttlibdir) |
| 164 | AC_SUBST(top_lttvdir) |
| 165 | AC_SUBST(top_lttvwindowdir) |
| 166 | AC_SUBST(DEFAULT_INCLUDES) |
| 167 | AC_SUBST(lttincludedir) |
| 168 | AC_SUBST(lttvincludedir) |
| 169 | AC_SUBST(lttvwindowincludedir) |
| 170 | AC_SUBST(lttctlincludedir) |
| 171 | |
| 172 | # ltt/Makefile |
| 173 | |
| 174 | AC_CONFIG_FILES([Makefile |
| 175 | lttv/Makefile |
| 176 | lttv/lttv/Makefile |
| 177 | lttv/lttv/sync/Makefile |
| 178 | lttv/modules/Makefile |
| 179 | lttv/modules/text/Makefile |
| 180 | lttv/modules/gui/Makefile |
| 181 | lttv/modules/gui/lttvwindow/Makefile |
| 182 | lttv/modules/gui/interrupts/Makefile |
| 183 | lttv/modules/gui/lttvwindow/lttvwindow/Makefile |
| 184 | lttv/modules/gui/lttvwindow/pixmaps/Makefile |
| 185 | lttv/modules/gui/controlflow/Makefile |
| 186 | lttv/modules/gui/detailedevents/Makefile |
| 187 | lttv/modules/gui/statistics/Makefile |
| 188 | lttv/modules/gui/histogram/Makefile |
| 189 | lttv/modules/gui/filter/Makefile |
| 190 | lttv/modules/gui/tracecontrol/Makefile |
| 191 | lttv/modules/gui/resourceview/Makefile |
| 192 | doc/Makefile |
| 193 | doc/developer/Makefile |
| 194 | doc/developer/developer_guide/Makefile |
| 195 | doc/developer/developer_guide/docbook/Makefile |
| 196 | doc/developer/developer_guide/html/Makefile |
| 197 | doc/user/Makefile |
| 198 | doc/user/user_guide/Makefile |
| 199 | doc/user/user_guide/docbook/Makefile |
| 200 | doc/user/user_guide/html/Makefile]) |
| 201 | |
| 202 | AC_OUTPUT |
| 203 | |
| 204 | # Report on what will be built |
| 205 | AS_ECHO() |
| 206 | AS_ECHO("The following components will be built:") |
| 207 | AS_ECHO("LTT trace reading library: Enabled") # It's always enabled! |
| 208 | |
| 209 | AS_ECHO_N("LTTV command line tool: ") |
| 210 | AS_IF([test "x$with_lttv" = "xyes"],[AS_ECHO("Enabled")],[AS_ECHO("Disabled")]) |
| 211 | |
| 212 | AS_ECHO_N("LTTV graphical interface: ") |
| 213 | AS_IF([test "x$with_lttv_gui" = "xyes"],[AS_ECHO("Enabled")],[AS_ECHO("Disabled")]) |
| 214 | |
| 215 | AS_ECHO_N("Trace synchronization: ") |
| 216 | AS_IF([test "x$with_trace_sync" = "xyes"],[AS_ECHO("Enabled")],[AS_ECHO("Disabled")]) |
| 217 | |
| 218 | AS_ECHO_N("Java (JNI) interface: ") |
| 219 | AS_IF([test "x$with_jni_interface" = "xyes"],[AS_ECHO("Enabled")],[AS_ECHO("Disabled")]) |
| 220 | |
| 221 | AS_ECHO() |
| 222 | AS_ECHO_N("Statically linked executable: ") |
| 223 | AS_IF([test "x$lttvstatic" = "xyes"],[AS_ECHO("Yes")],[AS_ECHO("No")]) |
| 224 | |
| 225 | AS_ECHO() |
| 226 | AS_ECHO("Type 'make' to build LTTV.") |
| 227 | |