|
| 1 | +# MALHEUR - Automatic Malware Analysis on Steroids |
| 2 | +# Copyright (c) 2009 Konrad Rieck (rieck@cs.tu-berlin.de) |
| 3 | +# Berlin Institute of Technology (TU Berlin). |
| 4 | +# |
| 5 | + |
| 6 | +# Malheur version |
| 7 | +AC_INIT([malheur], [0.1.0], [rieck@cs.tu-berlin.de]) |
| 8 | + |
| 9 | +# Defines (suitable for loading and saving versioned files) |
| 10 | +AC_DEFINE(MALHEUR_MAJOR, 0, Major version number) |
| 11 | +AC_DEFINE(MALHEUR_MINOR, 1, Minor version number) |
| 12 | +AC_DEFINE(MALHEUR_PATCH, 0, Patch version number) |
| 13 | + |
| 14 | +echo |
| 15 | +echo " :: MALHEUR - Automatic Malware Analysis on Steroids" |
| 16 | +echo " Copyright (c) 2009 Konrad Rieck (rieck@cs.tu-berlin.de)" |
| 17 | +echo " Berlin Institute of Technology (TU Berlin)." |
| 18 | +echo |
| 19 | + |
| 20 | +# Init automake & config.h |
| 21 | +AM_INIT_AUTOMAKE |
| 22 | +AM_CONFIG_HEADER([config.h]) |
| 23 | + |
| 24 | +# Check for important programs |
| 25 | +AC_PROG_CC |
| 26 | +AC_PROG_LD |
| 27 | +AC_PROG_INSTALL |
| 28 | + |
| 29 | +# Libtool stuff |
| 30 | +AC_CONFIG_MACRO_DIR(m4) |
| 31 | +AC_PROG_LIBTOOL |
| 32 | + |
| 33 | +# Set GCC and C99 flags if present |
| 34 | +if test "${GCC}" = "yes" ; then |
| 35 | + CFLAGS="${CFLAGS} -std=c99 -Wall" |
| 36 | +fi |
| 37 | + |
| 38 | +AC_ARG_ENABLE(openmp, |
| 39 | + [ --enable-openmp enable support for OpenMP (experimental) ], |
| 40 | + [ |
| 41 | + if test "x$enableval" = "xyes" ; then |
| 42 | + MALHEUR_OPENMP=yes |
| 43 | + AC_DEFINE(MALHEUR_OPENMP, 1, [Enable support for OpenMP (experimental)]) |
| 44 | + else |
| 45 | + MALHEUR_OPENMP=no |
| 46 | + fi |
| 47 | + ], [ MALHEUR_OPENMP=no ] |
| 48 | +) |
| 49 | + |
| 50 | +# OpenMP support |
| 51 | +AX_OPENMP([ |
| 52 | + HAVE_OPENMP=yes |
| 53 | + AC_DEFINE(HAVE_OPENMP, 1, [Enable OpenMP support]) |
| 54 | +],[ |
| 55 | + HAVE_OPENMP=no |
| 56 | +]) |
| 57 | + |
| 58 | +if test "x$MALHEUR_OPENMP" = "xyes" ; then |
| 59 | + if test "x$HAVE_OPENMP" = "xno" ; then |
| 60 | + AC_MSG_ERROR([OpenMP support enabled but OpenMP not available]) |
| 61 | + fi |
| 62 | + CFLAGS="$CFLAGS $OPENMP_CFLAGS" |
| 63 | +fi |
| 64 | + |
| 65 | +# Library checks |
| 66 | +PKG_CHECK_MODULES([PKGCONFIG], [libconfig >= 1.3.1]) |
| 67 | +CFLAGS="$CFLAGS $PKGCONFIG_CFLAGS" |
| 68 | +LIBS="$LIBS $PKGCONFIG_LIBS" |
| 69 | +INCLUDES="$INCLUDES `pkg-config --cflags-only-I libconfig`" |
| 70 | + |
| 71 | +# Math library |
| 72 | +AC_CHECK_HEADERS([math.h], HEADER_MATH="yes") |
| 73 | +AC_CHECK_LIB([m], pow, LIBRARY_MATH="yes") |
| 74 | +if test "x$LIBRARY_MATH" != "x" && test "x$HEADER_MATH" != "x" ; then |
| 75 | + LIBS="-lm $LIBS" |
| 76 | +else |
| 77 | + AC_MSG_ERROR([The math library (libm) is required for compilation]) |
| 78 | +fi |
| 79 | + |
| 80 | +# Check headers |
| 81 | +AC_CHECK_HEADERS([string.h strings.h]) |
| 82 | + |
| 83 | +# Check functions |
| 84 | +AC_CHECK_FUNC(round, AC_DEFINE(HAVE_FUNC_ROUND, 1, |
| 85 | + [Define to 1 if you have the function round])) |
| 86 | +AC_CHECK_FUNC(log2, AC_DEFINE(HAVE_FUNC_LOG2, 1, |
| 87 | + [Define to 1 if you have the function log2])) |
| 88 | + |
| 89 | +# Check matlab support |
| 90 | +AC_ARG_ENABLE(matlab, |
| 91 | + [ --enable-matlab enable optional Matlab tools], |
| 92 | + [ |
| 93 | + if test "x$enableval" = "xyes" ; then |
| 94 | + MATLAB_TOOLS=yes |
| 95 | + else |
| 96 | + MATLAB_TOOLS=no |
| 97 | + fi |
| 98 | + ], [ MATLAB_TOOLS=no ] |
| 99 | +) |
| 100 | +if test $MATLAB_TOOLS = yes ; then |
| 101 | + AX_MATLAB |
| 102 | + AX_MATLAB_ARCH |
| 103 | + AX_MATLAB_VERSION |
| 104 | + AX_MATLAB_DIR |
| 105 | + AX_MEX_OPTIONS |
| 106 | + AX_PATH_MEX |
| 107 | + AX_MEXEXT |
| 108 | + if test x$ax_enable_matlab = xyes ; then |
| 109 | + HAVE_MATLAB="yes" |
| 110 | + else |
| 111 | + HAVE_MATLAB="no" |
| 112 | + fi |
| 113 | +fi |
| 114 | + |
| 115 | +if test "x$MATLAB_TOOLS" = "xyes" && test "x$HAVE_MATLAB" = "xno" ; then |
| 116 | + AC_MSG_ERROR([Matlab tools enabled but Matlab not available]) |
| 117 | +fi |
| 118 | +AM_CONDITIONAL(MATLAB_TOOLS, test "x$MATLAB_TOOLS" = "xyes") |
| 119 | + |
| 120 | +AC_SUBST([INCLUDES]) |
| 121 | + |
| 122 | +AC_CONFIG_FILES([ |
| 123 | + Makefile \ |
| 124 | +]) |
| 125 | + |
| 126 | +AC_OUTPUT_COMMANDS([],[ |
| 127 | + MALHEUR_OPENMP=$MALHEUR_OPENMP |
| 128 | +]) |
| 129 | + |
| 130 | +AC_OUTPUT |
| 131 | + |
| 132 | +echo |
| 133 | +echo " :: Environment: " |
| 134 | +echo " CC: '$CC'" |
| 135 | +echo " CFLAGS: '$CFLAGS'" |
| 136 | +echo " LD: '$LD'" |
| 137 | +echo " LDFLAGS: '$LDFLAGS'" |
| 138 | +echo " :: Features:" |
| 139 | +echo " Matlab tools: $MATLAB_TOOLS " |
| 140 | +echo " OpenMP support: $MALHEUR_OPENMP " |
0 commit comments