dnl ****************************************************************************
dnl Tilda autoconf configuration file.
dnl Use autogen.sh to bootstrap the build system.
dnl ****************************************************************************
m4_define ([tilda_issues],
[https://github.com/lanoxx/tilda/issues])
m4_define ([tilda_repository],
[https://github.com/lanoxx/tilda])
AC_PREREQ([2.69])
AC_INIT([Tilda],
[2.0.0],
[tilda_issues],
[tilda],
[tilda_repository])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_SRCDIR([src/tilda.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign subdir-objects])
# We are going to use silent builds which have a much
# nicer output. More information can be found here:
# https://wiki.gnome.org/Initiatives/GnomeGoals/NicerBuilds
AM_SILENT_RULES([yes])
# See http://www.gnu.org/savannah-checkouts/gnu/automake/manual/html_node/maintainer_002dmode.html
# for an explanation of using this macro. The short explanation is:
# AM_MAINTAINER_MODE is bad but
# AM_MAINTAINER_MODE([enable]) is good
AM_MAINTAINER_MODE([enable])
# This registers the option '--enable-maintainer-flags' to the ./configure script
# If this option is set then it activates both the '--enable-debug' and '--enable-debug-functions'
# options that are defined below. It also activates several flags to the compile such that it
# will show more warnings and errors to indicate problems in the source code.
AC_ARG_ENABLE([maintainer-flags],
[AS_HELP_STRING([--enable-maintainer-flags],[\
Enables extra debugging; use this option if you want to develop for tilda,
but to not use it as an end user if you just want to compile and use tilda. \
This option includes the --enable-debug and --enable-debug-functions \
options. And sets several CFLAGS to enable more gcc warnings and errors.])])
if test "x$enable_maintainer_flags" = "xyes"; then
enable_debug="yes"
enable_debug_functions="yes"
CFLAGS="$CFLAGS \
-Wall \
-Wextra \
-fno-common \
-Wstrict-aliasing=2 \
-Wshadow \
-Wmissing-prototypes \
-Wmissing-declarations \
-Wcast-align \
-Wuninitialized \
-Wno-strict-aliasing \
-Werror=pointer-arith \
-Werror=missing-declarations \
-Werror=redundant-decls \
-Werror=empty-body \
-Werror=format \
-Werror=format-security \
-Werror=format-nonliteral \
-Werror=init-self \
-Werror=vla \
-Wno-unused-parameter \
"
fi
# This registers the option '--enable-debug' in the ./configure script
# If this option is set, then the the options -g and -ggdb will be
# passed to the compiler.
AC_ARG_ENABLE([debug],
[AS_HELP_STRING([--enable-debug],[Enables extra debugging output and \
sets debug flags for gdb])])
if test "x$enable_debug" = "xyes"; then
AC_DEFINE([DEBUG], [1], [Enable extra debugging output])
CFLAGS="$CFLAGS -g -ggdb"
fi
# This registers the option '--debug-functions' in the ./configure script
# If this option is set, then the name of each entered function will be
# printed on the shell.
AC_ARG_ENABLE([debug-functions],
[AS_HELP_STRING([--enable-debug-functions],[Enables function call tracing. \
When this option is enabled tilda will print \
the name of each function that is called to the \
console.])])
if test "x$enable_debug_functions" = "xyes"; then
AC_DEFINE([DEBUG_FUNCTIONS], [1], [Enable function call tracing])
fi
AC_ARG_ENABLE([clang],
[AS_HELP_STRING([--enable-clang],[use clang instead of gcc as C compiler.])])
#Use C99 compilation mode
if test "x$enable_clang" = "xyes"; then
# clang uses c99 mode by default, so we just set CC to clang and we are done
CC="clang";
else
# We do not need to set CC as the default is gcc, but we need to set it to
# use C99 compilation mode
CFLAGS="$CFLAGS -std=c99";
fi
AC_ARG_ENABLE([lto],
[AS_HELP_STRING([--enable-lto],[Optimize at link time. This enables the compiler \
to do a better job at optimization and (hopefully) \
produce smaller binaries.])])
if test "x$enable_lto" = "xyes"; then
CFLAGS="$CFLAGS -flto"
if test "$CC" != "clang"; then
# If the user has enabled lto explicitly, we assume he has made sure
# that his toolchain can indeed handle lto objects.
CFLAGS="$CFLAGS -fno-fat-lto-objects"
fi
# In the case of lto optimizations, we need to pass the optimization options
# to the linker as well as telling it to use the linker plugin.
LDFLAGS="$LDFLAGS $CFLAGS -fuse-linker-plugin"
fi
AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums, no)
if test x$GLIB_MKENUMS = xno; then
AC_MSG_ERROR(Could not find a glib-mkenums in your PATH)
fi
AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources, no)
if test x$GLIB_COMPILE_RESOURCES = xno; then
AC_MSG_ERROR(Could not find a glib-compile-resources in your PATH)
fi
AC_PATH_PROG(GDBUS_CODEGEN, gdbus-codegen, no)
if test x$GDBUS_CODEGEN = xno; then
AC_MSG_ERROR(Could not find a glib-codegen binary in your PATH)
fi
# Checks for programs.
AC_PROG_CC
AM_PROG_CC_C_O
# This will initialize the internationalization
# capabilities of glib (glib/gi18n.h) and gettext
AM_GNU_GETTEXT_VERSION([0.18.1])
AM_GNU_GETTEXT([external])
# Checks for libraries.
PKG_PROG_PKG_CONFIG
PKG_CHECK_MODULES([GTK], [gtk+-3.0 >= 3.10.0])
PKG_CHECK_MODULES([VTE], [vte-2.91 >= 0.40])
PKG_CHECK_MODULES([LIBCONFUSE], [libconfuse])
PKG_CHECK_MODULES([X11], [x11])
# Checks for header files.
AC_CHECK_HEADERS([fcntl.h malloc.h stdlib.h string.h strings.h sys/ioctl.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_PID_T
AC_TYPE_SIZE_T
# Checks for library functions.
AC_FUNC_MALLOC
AC_FUNC_STRTOD
AC_CHECK_FUNCS([mkdir strcasecmp strchr strncasecmp strstr strtol])
AC_CONFIG_FILES([Makefile
po/Makefile.in])
AC_OUTPUT
dnl ---------------------------------------------------------------------------
dnl - Show summary
dnl ---------------------------------------------------------------------------
dnl The following 'for' block splits the CFLAGS variable into multiple lines of 4 options per line
cflaglines=""
cflagcount=0
for flag in ${CFLAGS}; do
cflaglines=$cflaglines$flag" "
cflagcount=$(($cflagcount+1))
if (( $cflagcount % 4 == 0)); then
dnl Here we concatenate the current cflaglines variable with a newline and enough spaces
dnl such that the lines are correctly indented. Do not try to indent or reformat the
dnl position of the double quotes (\").
cflaglines=$cflaglines"
"
fi
done;
echo "
${PACKAGE} $VERSION
`echo ${PACKAGE} $VERSION | sed "s/./=/g"`
prefix: ${prefix}
datarootdir: ${datarootdir}
datadir: ${datadir}
pkgdatadir: `if test x${pkgdatadir} != "x"; then echo ${pkgdatadir}; else echo ${datadir}/${PACKAGE}; fi`
source code location: ${srcdir}
compiler: ${CC}
cflags: ${cflaglines}
Maintainer mode: ${USE_MAINTAINER_MODE}
VTE: ${vte_package}
Use *_DISABLE_DEPRECATED: ${enable_deprecation_flags}
"
|