diff options
Diffstat (limited to 'system/tilda/configure.ac')
-rw-r--r-- | system/tilda/configure.ac | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/system/tilda/configure.ac b/system/tilda/configure.ac new file mode 100644 index 0000000000..133336b7fd --- /dev/null +++ b/system/tilda/configure.ac @@ -0,0 +1,212 @@ +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} +" |