| 1 | dnl configure.ac -> Part of Crules Programming language |
|---|
| 2 | dnl |
|---|
| 3 | dnl Crules is the legal property of its developers. Please refer to the |
|---|
| 4 | dnl COPYRIGHT file distributed with this source distribution. |
|---|
| 5 | dnl |
|---|
| 6 | dnl This program is free software: you can redistribute it and/or modify |
|---|
| 7 | dnl it under the terms of the GNU General Public License as published by |
|---|
| 8 | dnl the Free Software Foundation, either version 3 of the License, or |
|---|
| 9 | dnl (at your option) any later version. |
|---|
| 10 | dnl |
|---|
| 11 | dnl This program is distributed in the hope that it will be useful, |
|---|
| 12 | dnl but WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 13 | dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|---|
| 14 | dnl GNU General Public License for more details. |
|---|
| 15 | dnl |
|---|
| 16 | dnl You should have received a copy of the GNU General Public License |
|---|
| 17 | dnl along with this program. If not, see <http://www.gnu.org/licenses/>. |
|---|
| 18 | dnl |
|---|
| 19 | |
|---|
| 20 | AC_PREREQ(2.59) |
|---|
| 21 | AC_REVISION($Revision$) |
|---|
| 22 | |
|---|
| 23 | AC_INIT(Crules, 0.46, http://crules.org) |
|---|
| 24 | AC_CONFIG_SRCDIR([src/mm_crules.c]) |
|---|
| 25 | AC_CONFIG_HEADER([src/config.h]) |
|---|
| 26 | dnl keep the autoconf generated stuff neatly in a folder :) |
|---|
| 27 | AC_CONFIG_AUX_DIR([config]) |
|---|
| 28 | AC_CONFIG_MACRO_DIR([m4]) |
|---|
| 29 | AM_SANITY_CHECK |
|---|
| 30 | |
|---|
| 31 | dnl Last slash shouldn't be stripped if prefix=/ |
|---|
| 32 | if test "$prefix" != "/"; then |
|---|
| 33 | prefix=`echo "$prefix" | sed -e 's/\/$//g'` |
|---|
| 34 | fi |
|---|
| 35 | |
|---|
| 36 | dnl Checks for programs. |
|---|
| 37 | AC_PROG_CC([icc cl gcc cc]) |
|---|
| 38 | AC_DEFINE_UNQUOTED([CONFIG_CC], "$CC", [C Compiler used]) |
|---|
| 39 | |
|---|
| 40 | AC_PROG_AWK |
|---|
| 41 | AC_PROG_CPP |
|---|
| 42 | AC_PROG_INSTALL |
|---|
| 43 | AC_PROG_LN_S |
|---|
| 44 | AC_PROG_MAKE_SET |
|---|
| 45 | AC_PROG_RANLIB |
|---|
| 46 | AC_CHECK_PROGS(AR, ar aal, ar) |
|---|
| 47 | AC_PROG_CC_C99 |
|---|
| 48 | AC_PROG_CXX |
|---|
| 49 | |
|---|
| 50 | AC_MSG_CHECKING([Checking for a valid Perl interpreter!]) |
|---|
| 51 | AC_CHECK_PROGS(PERL, perl, ) |
|---|
| 52 | AC_PATH_PROGS(PERL, perl, ) |
|---|
| 53 | if test "x${PERL}" == "x"; then |
|---|
| 54 | AC_MSG_NOTICE([A valid Perl installation is \ |
|---|
| 55 | required to run the test suite!]) |
|---|
| 56 | XPERL="no" |
|---|
| 57 | else |
|---|
| 58 | XPERL="yes" |
|---|
| 59 | fi |
|---|
| 60 | |
|---|
| 61 | AC_AIX |
|---|
| 62 | AC_EXEEXT |
|---|
| 63 | AC_GNU_SOURCE |
|---|
| 64 | |
|---|
| 65 | AC_PROG_INSTALL |
|---|
| 66 | |
|---|
| 67 | AC_LIBTOOL_DLOPEN |
|---|
| 68 | AC_PROG_LIBTOOL |
|---|
| 69 | AM_PROG_LIBTOOL |
|---|
| 70 | |
|---|
| 71 | AM_PROG_CC_C_O |
|---|
| 72 | |
|---|
| 73 | AC_PROG_YACC |
|---|
| 74 | AC_PROG_LEX |
|---|
| 75 | |
|---|
| 76 | AC_C_BIGENDIAN |
|---|
| 77 | AC_C_INLINE |
|---|
| 78 | AC_C_VOLATILE |
|---|
| 79 | |
|---|
| 80 | AC_CANONICAL_HOST |
|---|
| 81 | |
|---|
| 82 | |
|---|
| 83 | # CFLAGS_save="$CFLAGS" |
|---|
| 84 | # CFLAGS="$" |
|---|
| 85 | |
|---|
| 86 | xpkgs="" |
|---|
| 87 | AC_ARG_WITH(maint-str, |
|---|
| 88 | [AS_HELP_STRING([--with-maint-str=""], |
|---|
| 89 | [A Simple Maintainer string!])], |
|---|
| 90 | [xpkgs="$withval"]) |
|---|
| 91 | if test "x$xpkgs" != "x"; then |
|---|
| 92 | AC_DEFINE_UNQUOTED([MAINTAINER_INFO], "$xpkgs", \ |
|---|
| 93 | [Maintainer String]) |
|---|
| 94 | fi |
|---|
| 95 | |
|---|
| 96 | # Just to make sure we dont do debug on default! |
|---|
| 97 | debug=no |
|---|
| 98 | AC_ARG_WITH(debug, |
|---|
| 99 | [AS_HELP_STRING([--with-debug=yes/no], |
|---|
| 100 | [With Debug symbols, default no.])], |
|---|
| 101 | [debug="$withval"]) |
|---|
| 102 | if test "x$debug" == "xyes"; then |
|---|
| 103 | AC_DEFINE([DEBUG], 1, [Debug Symbols Flag]) |
|---|
| 104 | #turn on extra debug compiler options :) |
|---|
| 105 | if test "x$CC" == "xgcc -std=gnu99"; then |
|---|
| 106 | CFLAGS="$CFLAGS -g -O2 -D_DEBUG -ggdb3 -pedantic -Wall -Wextra -fstrict-aliasing" |
|---|
| 107 | fi |
|---|
| 108 | fi |
|---|
| 109 | |
|---|
| 110 | # turn on some optimizations for gcc |
|---|
| 111 | # support for other compilers soon |
|---|
| 112 | if test "x$debug" == "xno"; then |
|---|
| 113 | if test "x$CC" == "xgcc -std=gnu99"; then |
|---|
| 114 | CFLAGS="$CFLAGS -g -O3 -fwrapv -fstrict-aliasing -ffast-math -fstack-protector" |
|---|
| 115 | fi |
|---|
| 116 | fi |
|---|
| 117 | # lets get the gcc version :) |
|---|
| 118 | CC_VER="" |
|---|
| 119 | if test "x$CC" == "xgcc -std=gnu99"; then |
|---|
| 120 | CC_VER=`$CC -dumpversion` |
|---|
| 121 | else |
|---|
| 122 | CC_VER="undefined" |
|---|
| 123 | fi |
|---|
| 124 | AC_DEFINE_UNQUOTED([CONFIG_CC_VER], "$CC_VER", [C Compiler Version]) |
|---|
| 125 | |
|---|
| 126 | ACX_PTHREAD(,AC_MSG_ERROR(could not find libpthread)) |
|---|
| 127 | LIBS="${PTHREAD_LIBS} ${LIBS}" |
|---|
| 128 | AM_CFLAGS="${PTHREAD_CFLAGS} ${AM_CFLAGS}" |
|---|
| 129 | CFLAGS="$CFLAGS $PTHREAD_CFLAGS" |
|---|
| 130 | CC="$PTHREAD_CC" |
|---|
| 131 | pthread="yes" |
|---|
| 132 | |
|---|
| 133 | # a lang needs math functions... |
|---|
| 134 | AC_CHECK_LIB([m], [pow], , |
|---|
| 135 | [AC_MSG_ERROR([System Math library is required!])]) |
|---|
| 136 | |
|---|
| 137 | # used for constant folding and rounding |
|---|
| 138 | AC_CHECK_LIB([gmp], [__gmpz_init], , |
|---|
| 139 | [AC_MSG_ERROR([GNU MP not found, see http://gmplib.org/])]) |
|---|
| 140 | AC_CHECK_LIB([mpfr],[mpfr_init] , , |
|---|
| 141 | [AC_MSG_ERROR([MPFR not found, see http://www.mpfr.org/])]) |
|---|
| 142 | AC_CHECK_SIZEOF(mp_limb_t, , [#include <gmp.h>]) |
|---|
| 143 | |
|---|
| 144 | AC_CHECK_LIB([pcre], [pcre_compile], , |
|---|
| 145 | [AC_MSG_ERROR([Libpcre3 - Perl Regex not found. \ |
|---|
| 146 | On Debfian can be found via libpcre3-dev])]) |
|---|
| 147 | |
|---|
| 148 | VL_LIB_READLINE |
|---|
| 149 | AS_IF([test "x$vl_cv_lib_readline" = "xno"], |
|---|
| 150 | AC_MSG_ERROR([libreadline is required for Crules. \ |
|---|
| 151 | On Debian this can be found in libreadline5-dev. On RedHat \ |
|---|
| 152 | this can be found in readline-devel.])) |
|---|
| 153 | AC_CHECK_FUNCS(dlopen) |
|---|
| 154 | |
|---|
| 155 | gl_VISIBILITY |
|---|
| 156 | |
|---|
| 157 | GCOV="no" |
|---|
| 158 | AC_ARG_WITH(gcov, |
|---|
| 159 | [AS_HELP_STRING([--with-gcov=yes/no], |
|---|
| 160 | [With GCC Code Coverage reporting.])], |
|---|
| 161 | [GCOV="$withval"]) |
|---|
| 162 | if test "x$GCOV" == "xyes"; then |
|---|
| 163 | if test "x$CC" == "xgcc -std=gnu99"; then |
|---|
| 164 | AC_MSG_NOTICE([Pushing GCC GCOV Support!]) |
|---|
| 165 | CFLAGS="$CFLAGS -DGCOV -fprofile-arcs -ftest-coverage" |
|---|
| 166 | else |
|---|
| 167 | AC_MSG_ERROR([GCOV support requires GCC!]) |
|---|
| 168 | fi |
|---|
| 169 | fi |
|---|
| 170 | |
|---|
| 171 | AC_SUBST(CFLAGS) |
|---|
| 172 | AC_SUBST(LDFLAGS) |
|---|
| 173 | |
|---|
| 174 | AC_PATH_PROG(MV, mv, mv) |
|---|
| 175 | AC_PATH_PROG(RM, rm, rm) |
|---|
| 176 | AC_PATH_PROG(CP, cp, cp) |
|---|
| 177 | AC_PATH_PROG(SED, sed, sed) |
|---|
| 178 | AC_PATH_PROG(CMP, cmp, cmp) |
|---|
| 179 | AC_PATH_PROG(CHMOD, chmod, chmod) |
|---|
| 180 | AC_PATH_PROG(HOSTNAME, hostname, hostname) |
|---|
| 181 | |
|---|
| 182 | # Check whether --with-system-type or --without-system-type was given. |
|---|
| 183 | AC_ARG_WITH([system-type], |
|---|
| 184 | [AS_HELP_STRING([--with-system-type], |
|---|
| 185 | [Set the system type, like "sun-solaris10"])], |
|---|
| 186 | [SYSTEM_TYPE="$withval"], |
|---|
| 187 | [SYSTEM_TYPE="$host_vendor-$host_os"]) |
|---|
| 188 | AC_ARG_WITH([machine-type], |
|---|
| 189 | [AS_HELP_STRING([--with-machine-type], |
|---|
| 190 | [Set the machine type, like "sparc"])], |
|---|
| 191 | [MACHINE_TYPE="$withval"], |
|---|
| 192 | [MACHINE_TYPE="$host_cpu"]) |
|---|
| 193 | AC_SUBST(SYSTEM_TYPE) |
|---|
| 194 | AC_DEFINE_UNQUOTED([SYSTEM_TYPE], ["$SYSTEM_TYPE"], |
|---|
| 195 | [Name of system, eg sun-solaris]) |
|---|
| 196 | AC_SUBST(MACHINE_TYPE) |
|---|
| 197 | AC_DEFINE_UNQUOTED([MACHINE_TYPE], ["$MACHINE_TYPE"], |
|---|
| 198 | [Machine type name, eg sparc]) |
|---|
| 199 | |
|---|
| 200 | AM_INIT_AUTOMAKE |
|---|
| 201 | |
|---|
| 202 | AC_CHECK_SIZEOF(long) |
|---|
| 203 | AC_CHECK_SIZEOF(char) |
|---|
| 204 | AC_CHECK_SIZEOF(int) |
|---|
| 205 | AC_CHECK_SIZEOF(void*) |
|---|
| 206 | AC_CHECK_SIZEOF(short) |
|---|
| 207 | AC_CHECK_SIZEOF(double) |
|---|
| 208 | AC_CHECK_SIZEOF(float) |
|---|
| 209 | AC_CHECK_SIZEOF(size_t) |
|---|
| 210 | AC_CHECK_SIZEOF(long int) |
|---|
| 211 | AC_CHECK_SIZEOF(long long) |
|---|
| 212 | AC_CHECK_SIZEOF(crl_symbol_obj, , \ |
|---|
| 213 | [#include "include/crules/symbols.h"]) |
|---|
| 214 | |
|---|
| 215 | # Checks for header files. |
|---|
| 216 | AC_HEADER_SYS_WAIT |
|---|
| 217 | AC_HEADER_STDBOOL |
|---|
| 218 | AC_HEADER_STDC |
|---|
| 219 | AC_CHECK_HEADERS([stdlib.h string.h stdarg.h unistd.h \ |
|---|
| 220 | stdint.h stdio.h getopt.h \ |
|---|
| 221 | assert.h sys/types.h signal.h \ |
|---|
| 222 | fcntl.h pthread.h sys/wait.h \ |
|---|
| 223 | gmp.h mpfr.h pcre.h]) |
|---|
| 224 | |
|---|
| 225 | # Checks for typedefs, structures, and compiler characteristics. |
|---|
| 226 | AC_C_CONST |
|---|
| 227 | AC_TYPE_PID_T |
|---|
| 228 | AC_TYPE_SIZE_T |
|---|
| 229 | AC_CHECK_FUNCS([popen fopen fclose sprintf fprintf strdup \ |
|---|
| 230 | strlen strcpy strcmp getopt_long \ |
|---|
| 231 | memcpy calloc system sysconf atoi \ |
|---|
| 232 | getpid execl fork wait exit atof \ |
|---|
| 233 | vfprintf memcmp getc fgets pipe \ |
|---|
| 234 | waitpid fdopen]) |
|---|
| 235 | |
|---|
| 236 | # Checks for library functions. |
|---|
| 237 | AC_FUNC_MALLOC |
|---|
| 238 | AC_FUNC_UTIME_NULL |
|---|
| 239 | AC_FUNC_VPRINTF |
|---|
| 240 | AC_CONFIG_FILES([Makefile |
|---|
| 241 | include/Makefile |
|---|
| 242 | src/Makefile |
|---|
| 243 | tests/Makefile |
|---|
| 244 | config/pkg-config/crules.pc]) |
|---|
| 245 | AC_OUTPUT |
|---|
| 246 | |
|---|
| 247 | echo "---" |
|---|
| 248 | echo "Configuration summary for $PACKAGE_NAME version $VERSION" |
|---|
| 249 | echo "" |
|---|
| 250 | echo " * Installation prefix: $prefix" |
|---|
| 251 | echo " * System type: $SYSTEM_TYPE" |
|---|
| 252 | echo " * Host CPU: $host_cpu" |
|---|
| 253 | echo " * C Compiler: $CC" |
|---|
| 254 | echo " * YACC version: $YACC" |
|---|
| 255 | echo " * LEX version: $LEX" |
|---|
| 256 | echo " * Perl support: $XPERL" |
|---|
| 257 | echo " * GMP & MPFR support: yes" |
|---|
| 258 | echo " * Perl Regex Support: yes" |
|---|
| 259 | echo " * POSIX pthreads: $pthread" |
|---|
| 260 | echo " * DEBUG Symbols: $debug" |
|---|
| 261 | echo " * GCOV Support: $GCOV" |
|---|
| 262 | echo "" |
|---|
| 263 | echo "---" |
|---|
| 264 | |
|---|
| 265 | dnl libtoolize scans configure.ac and needs to see some text |
|---|
| 266 | m4_define([LIBTOOLIZE_AC_INIT], []) |
|---|