213 lines
7.5 KiB
Plaintext
213 lines
7.5 KiB
Plaintext
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}
|
|
"
|