# Process this file with autoconf to produce a configure script. ############################################################ # Autoconf requirements ############################################################ m4_include([gitrev.m4]) AC_PREREQ(2.59) AC_INIT([chrysalide], [gitversion], [nocbos@gmail.com]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE AM_SILENT_RULES AM_GNU_GETTEXT_VERSION([0.18.3]) AM_GNU_GETTEXT([external]) AC_CONFIG_SRCDIR([src/main.c]) ############################################################ # Information on the package ############################################################ #--- Checks for programs AC_PROG_CC AM_PROG_CC_C_O AC_PROG_LEX AC_PROG_YACC AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_LIBTOOL AC_PATH_PROG(YACC_INST, $YACC) AC_PATH_PROG(LEX_INST, $LEX) #--- Checks for libraries AC_CHECK_LIB([dl], [dlopen]) #--- Checks for header files AC_HEADER_DIRENT AC_HEADER_STDBOOL AC_HEADER_STDC AC_CHECK_HEADERS([malloc.h]) AC_CHECK_HEADERS([netdb.h]) AC_CHECK_HEADERS([stdlib.h]) AC_CHECK_HEADERS([string.h]) AC_CHECK_HEADERS([unistd.h]) #--- Checks for types AC_TYPE_SIZE_T #--- Checks for structures AC_STRUCT_TM #--- Checks for compiler characteristics AC_C_CONST #--- Checks for library functions AC_FUNC_CLOSEDIR_VOID AC_FUNC_MALLOC AC_FUNC_REALLOC AC_FUNC_STAT AC_FUNC_STRFTIME AC_FUNC_VPRINTF AC_CHECK_FUNCS([pow]) AC_CHECK_FUNCS([regcomp]) AC_CHECK_FUNCS([strdup]) AC_CHECK_FUNCS([strerror]) AC_CHECK_FUNCS([strndup]) AC_CHECK_FUNCS([strrchr]) #--- Checks for system services #--- Autoheader Macros AH_TEMPLATE([REVISION], [Define the version number of the program for the about box.]) AH_TEMPLATE([PACKAGE_SOURCE_DIR], [Define the directory where the code source is waiting for being compiled.]) AH_TEMPLATE([PIXMAPS_DIR], [Define the directory where the pictures will be installed.]) AH_TEMPLATE([THEMES_DIR], [Define the main directory where all themes will be installed.]) AH_TEMPLATE([PLUGINS_LIB_DIR], [Define the directory where the plugin librairies are installed.]) AH_TEMPLATE([PLUGINS_DATA_DIR], [Define the directory where the plugin data is installed.]) AH_TEMPLATE([LOCALE_DIR], [Define the directory where the message catalogs are installed.]) AC_DEFINE_UNQUOTED(REVISION, AC_PACKAGE_VERSION) packagesrcdir=`cd $srcdir && pwd` AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "${packagesrcdir}") AC_LIB_PREPARE_PREFIX basedir=${datadir}/${PACKAGE} while : ; do oldbasedir=${basedir} AC_LIB_WITH_FINAL_PREFIX([basedir=$(eval echo ${basedir} )]) test ${oldbasedir} = ${basedir} && break done if echo ${basedir} | grep -q '^NONE'; then AC_MSG_FAILURE([NONE found in \$datadir]) fi pixmapsdir="${basedir}/pixmaps" AC_SUBST(pixmapsdir) AC_DEFINE_UNQUOTED(PIXMAPS_DIR, "${pixmapsdir}") themesdir="${basedir}/themes" AC_SUBST(themesdir) AC_DEFINE_UNQUOTED(THEMES_DIR, "${themesdir}") pluginsdatadir="${basedir}/plugins" AC_SUBST(pluginsdatadir) AC_DEFINE_UNQUOTED(PLUGINS_DATA_DIR, "${pluginsdatadir}") basedir=${libdir}/${PACKAGE}/plugins while : ; do oldbasedir=${basedir} AC_LIB_WITH_FINAL_PREFIX([basedir=$(eval echo ${basedir} )]) test ${oldbasedir} = ${basedir} && break done if echo ${basedir} | grep -q '^NONE'; then AC_MSG_FAILURE([NONE found in \$libdir]) fi pluginslibdir="${basedir}" AC_SUBST(pluginslibdir) AC_DEFINE_UNQUOTED(PLUGINS_LIB_DIR, "${pluginslibdir}") basedir=${prefix} while : ; do oldbasedir=${basedir} AC_LIB_WITH_FINAL_PREFIX([basedir=$(eval echo ${basedir} )]) test ${oldbasedir} = ${basedir} && break done if echo ${basedir} | grep -q '^NONE'; then AC_MSG_FAILURE([NONE found in \$prefix]) fi AC_DEFINE_UNQUOTED(LOCALE_DIR, "${basedir}/share/locale") ############################################################ # Compilation options ############################################################ AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug], [compile with debugging support [default=no]]), [], [enable_debug=no]) AC_ARG_WITH(gobject-leak-tracker, AS_HELP_STRING([--with-gobject-leak-tracker], [track remaining GObject instances at exit (imply --enable-debug and GLib support) [default=no]]), [], [with_gobject_leak_tracker=no]) AC_ARG_WITH(local-resources, AS_HELP_STRING([--with-local-resources], [discard resources from local sources [default=yes]]), [], [with_local_resources=yes]) #--- Small enumerations CFLAGS="$CFLAGS -fshort-enums -D_LARGEFILE64_SOURCE" #--- Is debug mode needed ? if test "x$with_gobject_leak_tracker" = "xyes"; then enable_debug="yes" fi if test "x$enable_debug" = "xyes"; then DEBUG_CFLAGS="$DEBUG_CFLAGS -O0 -ggdb -gdwarf-2 -DDEBUG" else DEBUG_CFLAGS="$DEBUG_CFLAGS -DNDEBUG" fi AC_SUBST(DEBUG_CFLAGS) AM_CONDITIONAL([TRACK_GOBJECT_LEAKS], [test "x$with_gobject_leak_tracker" = "xyes"]) if test "x$with_gobject_leak_tracker" = "xyes"; then AC_DEFINE(TRACK_GOBJECT_LEAKS, 1, [Define to 1 to enable code for dumping remaining GObject instances at exit.]) fi #--- Discard local sources when looking for resources ? if test "x$enable_rpath" = "xno"; then hardcode_libdir_flag_spec= fi if test "x$with_local_resources" = "xno"; then CFLAGS="$CFLAGS -DDISCARD_LOCAL" fi AM_CONDITIONAL([BUILD_DISCARD_LOCAL], [test "x$with_local_resources" = "xno"]) AC_SUBST(CFLAGS) #--- Compilation warnings #-Wall -Wimplicit -Wreturn-type -Wunused -Wswitch -Wcomment -Wuninitialized -Wparentheses -Wpointer-arith -Wmissing-prototypes WARNING_FLAGS="-Wall -Wimplicit -Wreturn-type -Wunused -Wswitch -Wcomment -Wuninitialized -Wparentheses -Wpointer-arith -Wmissing-prototypes" #-Wcast-qual -Wconversion -Wsign-compare -Wdisabled-optimization AC_SUBST(WARNING_FLAGS) # _BSD_SOURCE: htobe64, be64toh # _XOPEN_SOURCE: strdup, snprintf # _ISOC99_SOURCE: INFINITY; NAN # GTK_DISABLE_DEPRECATED: on reste conforme au C99 #COMPLIANCE_FLAGS="-D_BSD_SOURCE -D_GNU_SOURCE -DGTK_DISABLE_DEPRECATED" COMPLIANCE_FLAGS="-D_DEFAULT_SOURCE -D_GNU_SOURCE" AC_SUBST(COMPLIANCE_FLAGS) #--- Checks for GTK 2.0 PKG_CHECK_MODULES(LIBGTK,gtk+-3.0 >= 3.8.6,[libgtk_found=yes],[libgtk_found=no]) if test "$libgtk_found" = "yes"; then libgtk_version=`pkg-config gtk+-3.0 --modversion` else libgtk_version='-' fi AC_SUBST(LIBGTK_CFLAGS) AC_SUBST(LIBGTK_LIBS) #--- Checks for libxml2 PKG_CHECK_MODULES(LIBXML,libxml-2.0 >= 2.6.11,[libxml_found=yes],[libxml_found=no]) if test "$libxml_found" = "yes"; then libxml_version=`pkg-config libxml-2.0 --modversion` else libxml_version='-' fi AC_SUBST(LIBXML_CFLAGS) AC_SUBST(LIBXML_LIBS) #--- Checks for libarchive PKG_CHECK_MODULES(LIBARCHIVE,libarchive >= 3.1.2,[libarchive_found=yes],[libarchive_found=no]) if test "$libarchive_found" = "yes"; then libarchive_version=`pkg-config libarchive --modversion` else libarchive_version='-' fi AC_SUBST(LIBARCHIVE_CFLAGS) AC_SUBST(LIBARCHIVE_LIBS) #--- Checks for libsqlite PKG_CHECK_MODULES(LIBSQLITE,sqlite3 >= 3.8.2,[libsqlite_found=yes],[libsqlite_found=no]) if test "$libsqlite_found" = "yes"; then libsqlite_version=`pkg-config sqlite3 --modversion` else libsqlite_version='-' fi AC_SUBST(LIBSQLITE_CFLAGS) AC_SUBST(LIBSQLITE_LIBS) #--- Checks for libssl PKG_CHECK_MODULES(LIBSSL,libssl >= 1.0.1k,[libssl_found=yes],[libssl_found=no]) if test "$libssl_found" = "yes"; then libssl_version=`pkg-config libssl --modversion` else libssl_version='-' fi AC_SUBST(LIBSSL_CFLAGS) AC_SUBST(LIBSSL_LIBS) #--- Checks for Python AC_ARG_ENABLE([python-bindings], AS_HELP_STRING([--disable-python-bindings], [disable Python bindings [default=no]]), [], [enable_python_bindings=yes]) if test "x$enable_debug" = "xyes"; then AC_CHECK_PROG(python3_cfg_binary, [python3-dbg-config] , yes) else AC_CHECK_PROG(python3_cfg_binary, [python3-config] , yes) fi AM_CONDITIONAL([BUILD_PYTHON3_BINDINGS], [test "x$enable_python_bindings$python3_cfg_binary" = "xyesyes"]) if test "x$BUILD_PYTHON3_BINDINGS_TRUE" = "x"; then AC_DEFINE(HAVE_PYTHON3_BINDINGS, 1, [Define to 1 if the Python bindings are available and enabled.]) fi if test "x$python3_cfg_binary" = "xyes"; then if test "x$enable_debug" = "xyes"; then LIBPYTHON_CFLAGS=`python3-dbg-config --cflags` LIBPYTHON_LIBS=`python3-dbg-config --libs` LIBPYTHON_ABI_FLAGS=`python3-dbg-config --abiflags` else LIBPYTHON_CFLAGS=`python3-config --cflags` LIBPYTHON_LIBS=`python3-config --libs` LIBPYTHON_ABI_FLAGS=`python3-config --abiflags` fi AC_SUBST(LIBPYTHON_CFLAGS) AC_SUBST(LIBPYTHON_LIBS) AC_DEFINE_UNQUOTED(LIBPYTHON_ABI_FLAGS, "${LIBPYTHON_ABI_FLAGS}", [ABI flags of the linked Python library]) if test "x$enable_python_bindings" = "xyes"; then python3_version=`python3 --version | cut -d ' ' -f 2` else python3_version="`python3 --version | cut -d ' ' -f 2` (skipped)" fi else python3_version='-' fi #--- Checks for pygobject-3.0 PKG_CHECK_MODULES(LIBPYGOBJECT,pygobject-3.0 >= 3.12.1,[libpygobject_found=yes],[libpygobject_found=no]) if test "$libpygobject_found" = "yes"; then if test "x$enable_python_bindings" = "xyes"; then libpygobject_version=`pkg-config pygobject-3.0 --modversion` else libpygobject_version="`pkg-config pygobject-3.0 --modversion` (skipped)" fi else libpygobject_version='-' fi AC_SUBST(LIBPYGOBJECT_CFLAGS) AC_SUBST(LIBPYGOBJECT_LIBS) ############################################################ # Outputting files ############################################################ AC_CONFIG_FILES([stamp-h po/Makefile.in], [echo timestamp > stamp-h]) AC_CONFIG_COMMANDS([marshal], [echo -e "VOID:UINT64\nVOID:INT,UINT64,INT\nVOID:OBJECT,OBJECT\nVOID:ENUM,OBJECT\nVOID:ENUM,ENUM\nVOID:BOOLEAN,UINT64\nVOID:BOOLEAN,ULONG,ULONG\nVOID:INT,INT\nVOID:OBJECT,BOOLEAN\nVOID:ULONG,BOOLEAN\nVOID:DOUBLE,DOUBLE" > src/glibext/chrysamarshal.list]) AC_CONFIG_FILES([Makefile doc/Makefile pixmaps/Makefile plugins/Makefile plugins/arm/Makefile plugins/arm/python/Makefile plugins/arm/python/v7/Makefile plugins/arm/v7/Makefile plugins/arm/v7/opdefs/Makefile plugins/arm/v7/opcodes/Makefile plugins/arm/v7/operands/Makefile plugins/arm/v7/registers/Makefile plugins/bootimg/Makefile plugins/bootimg/python/Makefile plugins/dalvik/Makefile plugins/dalvik/operands/Makefile plugins/dalvik/pseudo/Makefile plugins/dalvik/python/Makefile plugins/dalvik/python/v35/Makefile plugins/dalvik/v35/Makefile plugins/dalvik/v35/opcodes/Makefile plugins/dalvik/v35/opdefs/Makefile plugins/devdbg/Makefile plugins/dex/Makefile plugins/dex/python/Makefile plugins/dexbnf/Makefile plugins/dexbnf/python/Makefile plugins/dwarf/Makefile plugins/dwarf/v2/Makefile plugins/dwarf/v3/Makefile plugins/dwarf/v4/Makefile plugins/elf/Makefile plugins/elf/python/Makefile plugins/fmtp/Makefile plugins/gdbrsp/Makefile plugins/gdbrsp/python/Makefile plugins/itanium/Makefile plugins/itanium/python/Makefile plugins/java/Makefile plugins/javadesc/Makefile plugins/javadesc/python/Makefile plugins/libcsem/Makefile plugins/lnxsyscalls/Makefile plugins/mobicore/Makefile plugins/pychrysalide/Makefile plugins/pychrysalide/analysis/Makefile plugins/pychrysalide/analysis/contents/Makefile plugins/pychrysalide/analysis/db/Makefile plugins/pychrysalide/analysis/db/items/Makefile plugins/pychrysalide/analysis/disass/Makefile plugins/pychrysalide/analysis/types/Makefile plugins/pychrysalide/arch/Makefile plugins/pychrysalide/arch/instructions/Makefile plugins/pychrysalide/arch/operands/Makefile plugins/pychrysalide/common/Makefile plugins/pychrysalide/core/Makefile plugins/pychrysalide/debug/Makefile plugins/pychrysalide/format/Makefile plugins/pychrysalide/glibext/Makefile plugins/pychrysalide/gtkext/Makefile plugins/pychrysalide/gtkext/graph/Makefile plugins/pychrysalide/gui/Makefile plugins/pychrysalide/gui/core/Makefile plugins/pychrysalide/mangling/Makefile plugins/python/Makefile plugins/python/abackup/Makefile plugins/python/apkfiles/Makefile plugins/python/checksec/Makefile plugins/python/liveconv/Makefile plugins/readdex/Makefile plugins/readelf/Makefile plugins/readmc/Makefile plugins/ropgadgets/Makefile plugins/yaml/Makefile plugins/yaml/python/Makefile src/Makefile src/analysis/Makefile src/analysis/contents/Makefile src/analysis/db/Makefile src/analysis/db/items/Makefile src/analysis/db/misc/Makefile src/analysis/disass/Makefile src/analysis/human/Makefile src/analysis/human/asm/Makefile src/analysis/types/Makefile src/arch/Makefile src/arch/instructions/Makefile src/arch/operands/Makefile src/common/Makefile src/core/Makefile src/debug/Makefile src/format/Makefile src/glibext/Makefile src/glibext/generators/Makefile src/gtkext/Makefile src/gtkext/graph/Makefile src/gui/Makefile src/gui/core/Makefile src/gui/dialogs/Makefile src/gui/menus/Makefile src/gui/panels/Makefile src/gui/tb/Makefile src/mangling/Makefile src/plugins/Makefile tools/Makefile tools/d2c/Makefile tools/d2c/args/Makefile tools/d2c/assert/Makefile tools/d2c/bits/Makefile tools/d2c/conv/Makefile tools/d2c/desc/Makefile tools/d2c/format/Makefile tools/d2c/hooks/Makefile tools/d2c/id/Makefile tools/d2c/pattern/Makefile tools/d2c/rules/Makefile themes/Makefile themes/Adwaita/Makefile themes/Solarized/Makefile]) AC_OUTPUT echo echo -n $PACKAGE r echo AC_PACKAGE_VERSION echo echo The GNU Image Manipulation Program Toolkit... : $libgtk_version echo The XML C parser and toolkit of Gnome........ : $libxml_version echo The flexible interface for archives I/O...... : $libarchive_version echo The small, fast and reliable database engine. : $libsqlite_version echo The cryptography and SSL/TLS toolkit......... : $libssl_version echo echo Available Python programming language........ : $python3_version echo The Python GObject bindings.................. : $libpygobject_version echo echo Found lexical analyzer generator............. : $LEX_INST echo Found general-purpose parser generator....... : $YACC_INST echo echo Print debugging messages..................... : $enable_debug echo Consider local resources..................... : $with_local_resources if test -z "$LEX_INST" -o -z "$YACC_INST"; then echo m4_define([flex_bison_warning],[m4_joinall([m4_newline([])], [Only code from a release archive can be compiled without analyzer and parser generators.], [If the sources come from a repository snapshot, please install all the requiered dependencies for the software.])]) AC_MSG_WARN([flex_bison_warning]) fi echo echo configure complete, now type \'make\' echo