-AC_PREREQ(2.59)
+AC_PREREQ(2.60)
AC_INIT([openocd], [0.2.0-in-development],
[OpenOCD Mailing List <openocd-development@lists.berlios.de>])
AC_CONFIG_SRCDIR([src/openocd.c])
AC_SEARCH_LIBS([ioperm], [ioperm])
AC_SEARCH_LIBS([dlopen], [dl])
+AC_CHECK_HEADERS(arpa/inet.h)
+AC_CHECK_HEADERS(elf.h)
+AC_CHECK_HEADERS(dirent.h)
+AC_CHECK_HEADERS(fcntl.h)
+AC_CHECK_HEADERS(ifaddrs.h)
AC_CHECK_HEADERS(jtag_minidriver.h)
+AC_CHECK_HEADERS(malloc.h)
+AC_CHECK_HEADERS(netdb.h)
+AC_CHECK_HEADERS(netinet/in.h)
+AC_CHECK_HEADERS(netinet/tcp.h)
+AC_CHECK_HEADERS(pthread.h)
+AC_CHECK_HEADERS(strings.h)
+AC_CHECK_HEADERS(sys/ioctl.h)
AC_CHECK_HEADERS(sys/param.h)
-AC_CHECK_HEADERS(sys/time.h)
+AC_CHECK_HEADERS(sys/poll.h)
AC_CHECK_HEADERS(sys/select.h)
-AC_CHECK_HEADERS(elf.h)
-AC_CHECK_HEADERS(strings.h)
-AC_CHECK_HEADERS(stdbool.h)
+AC_CHECK_HEADERS(sys/socket.h)
+AC_CHECK_HEADERS(sys/stat.h)
+AC_CHECK_HEADERS(sys/time.h)
+AC_CHECK_HEADERS(sys/types.h)
+AC_CHECK_HEADERS(unistd.h)
+
+AC_CHECK_HEADERS([net/if.h], [], [], [dnl
+#include <stdio.h>
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#endif
+])
+AC_HEADER_ASSERT
+AC_HEADER_STDBOOL
AC_HEADER_TIME
AC_C_BIGENDIAN
fi
+debug_malloc=no
+AC_ARG_ENABLE(malloc_logging,
+ AS_HELP_STRING([--enable-malloc-logging],
+ [Include free space in logging messages (requires malloc.h).]),
+ [debug_malloc=$enableval], [])
+
+AC_MSG_CHECKING([whether to enable malloc free space logging]);
+AC_MSG_RESULT($debug_malloc)
+if test $debug_malloc = yes; then
+ AC_DEFINE([_DEBUG_FREE_SPACE_],[1], [Include malloc free space in logging])
+fi
+
+
AC_ARG_ENABLE(parport,
AS_HELP_STRING([--enable-parport], [Enable building the pc parallel port driver]),
[build_parport=$enableval], [build_parport=no])
AC_MSG_ERROR([The option: with_ftd2xx_linux_tardir is for LINUX only.])
fi
-if test $build_ft2232_ftd2xx = yes ; then
+if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes ; then
AC_MSG_CHECKING([for ftd2xx.lib exists (win32)])
# if we are given a zipdir...
AC_MSG_ERROR([The option: with_ftd2xx_linux_tardir is for LINUX only.])
fi
-if test $build_ft2232_ftd2xx = yes ; then
+if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes ; then
AC_MSG_CHECKING([for libftd2xx.a (darwin)])
if test ! -f /usr/local/include/ftd2xx.h ; then
AC_MSG_ERROR([The option: --with-ftd2xx-win32-zipdir is for win32 only])
fi
-if test $build_ft2232_ftd2xx = yes ; then
+if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes ; then
# Must be linux
if test $host_os != linux-gnu && test $host_os != linux ; then
AC_MSG_ERROR([The (linux) ftd2xx library from FTDICHIP.com is linux only. Try --enable-ft2232-libftdi instead])
fi
fi
-if test $build_ft2232_ftd2xx = yes; then
+if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes; then
# Before we go any further - make sure we can *BUILD* and *RUN*
# a simple app with the "ftd2xx.lib" file - in what ever form we where given
CFLAGS=$CFLAGS_SAVE
fi
+# check for usb.h when a driver will require it
+if test $build_jlink = yes -o $build_vsllink = yes -o $build_usbprog = yes -o \
+ $build_rlink = yes -o $build_armjtagew = yes
+then
+ AC_CHECK_HEADERS([usb.h],[],
+ [AC_MSG_ERROR([usb.h is required to build some OpenOCD driver(s)])])
+fi
+
AM_CONFIG_HEADER(config.h)
+AH_BOTTOM([
+#include "system.h"
+#include "replacements.h"
+])
+
AM_INIT_AUTOMAKE([-Wall -Wno-portability])
AM_MAINTAINER_MODE
AC_LANG_C
AC_PROG_CC
+AC_PROG_CC_C99
AM_PROG_CC_C_O
AC_PROG_RANLIB
+AC_PROG_LIBTOOL
+
+dnl configure checks required for Jim files (these are obsolete w/ C99)
+AC_C_CONST
+AC_TYPE_LONG_LONG_INT
+
+# Look for environ alternatives. Possibility #1: is environ in unistd.h or stdlib.h?
+AC_MSG_CHECKING([for environ in unistd.h and stdlib.h])
+AC_COMPILE_IFELSE([
+#define _GNU_SOURCE
+#include <unistd.h>
+#include <stdlib.h>
+int main(int argc, char **argv) { char **ep = environ; }
+ ], [
+ AC_MSG_RESULT([yes])
+ has_environ=yes
+ ], [
+ AC_MSG_RESULT([no])
+
+ # Possibility #2: can environ be found in an available library?
+ AC_MSG_CHECKING([for extern environ])
+ AC_LINK_IFELSE([
+extern char **environ;
+int main(int argc, char **argv) { char **ep = environ; }
+ ], [
+ AC_DEFINE(NEED_ENVIRON_EXTERN, [1], [Must declare 'environ' to use it.])
+ has_environ=yes
+ ], [
+ has_environ=no
+ ])
+ AC_MSG_RESULT([${has_environ}])
+ ])
+
+if test "${has_environ}" != "yes" ; then
+ AC_MSG_FAILURE([Could not find 'environ' in unistd.h or available libraries.])
+fi
+
+AC_DEFINE([_GNU_SOURCE],[1],[Use GNU C library extensions (e.g. stdndup).])
# set default gcc warnings
GCC_WARNINGS="-Wall -Wstrict-prototypes -Wformat-security"