X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=configure.in;h=9d6c90f64c2f4eac9654dd37500aa0bd32967207;hp=79e546e8aebe49d590e228834bd0fa083950d217;hb=ee22f119de8c9dab5e7b39bba4fa8563ce0940d0;hpb=c8bc0bb1aee7e7280229a6ec0c104a8fb512782f diff --git a/configure.in b/configure.in index 79e546e8ae..9d6c90f64c 100644 --- a/configure.in +++ b/configure.in @@ -1,17 +1,38 @@ -AC_PREREQ(2.59) -AC_INIT(configure.in) +AC_PREREQ(2.60) +AC_INIT([openocd], [0.2.0-in-development], + [OpenOCD Mailing List ]) +AC_CONFIG_SRCDIR([src/openocd.c]) AC_CANONICAL_HOST 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(net/if.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/poll.h) +AC_CHECK_HEADERS(sys/select.h) +AC_CHECK_HEADERS(sys/socket.h) +AC_CHECK_HEADERS(sys/stat.h) AC_CHECK_HEADERS(sys/time.h) -AC_CHECK_HEADERS(elf.h) -AC_CHECK_HEADERS(strings.h) +AC_CHECK_HEADERS(sys/types.h) +AC_CHECK_HEADERS(unistd.h) +AC_HEADER_ASSERT +AC_HEADER_STDBOOL AC_HEADER_TIME AC_C_BIGENDIAN @@ -27,6 +48,19 @@ build_bitq=no is_cygwin=no is_mingw=no is_win32=no +is_darwin=no +build_release=yes + +AC_ARG_ENABLE(release, + AS_HELP_STRING([--enable-release], [Enable Release Build, default no]), + [build_release=$enableval], [build_release=no]) + +if test $cross_compiling = no; then + if test $build_release = no; then + # check we can find guess-rev.sh + AC_CHECK_FILE("$srcdir/guess-rev.sh", build_release=no, build_release=yes) + fi +fi # We are not *ALWAYS* being installed in the standard place. # We may be installed in a "tool-build" specific location. @@ -67,7 +101,7 @@ AC_ARG_WITH(ftd2xx, # Option Given. cat << __EOF__ -The option: --with-ftd2xx= has been removed replaced. +The option: --with-ftd2xx= has been removed. On Linux, the new option is: --with-ftd2xx-linux-tardir=/path/to/files @@ -97,10 +131,11 @@ true ) #======================================== -# FTD2XXX support comes in 3 forms. +# FTD2XXX support comes in 4 forms. # (1) win32 - via a zip file # (2) linux - via a tar file # (3) linux/cygwin/mingw - via libftdi +# (4) darwin - installed under /usr/local # # In case (1) and (2) we need to know where the package was unpacked. @@ -165,9 +200,76 @@ esac ) AC_ARG_ENABLE(gccwarnings, - AS_HELP_STRING([--enable-gccwarnings], [Enable compiler warnings, default yes]), + AS_HELP_STRING([--disable-gccwarnings], [Disable compiler warnings]), [gcc_warnings=$enableval], [gcc_warnings=yes]) +AC_ARG_ENABLE(wextra, + AS_HELP_STRING([--disable-wextra], [Disable extra compiler warnings]), + [gcc_wextra=$enableval], [gcc_wextra=$gcc_warnings]) + +AC_ARG_ENABLE(werror, + AS_HELP_STRING([--disable-werror], [Do not treat warnings as errors]), + [gcc_werror=$enableval], [gcc_werror=$gcc_warnings]) + +# set default verbose options, overridden by following options +debug_jtag_io=no +debug_usb_io=no +debug_usb_comms=no + +AC_ARG_ENABLE(verbose, + AS_HELP_STRING([--enable-verbose], + [Enable verbose JTAG I/O messages (for debugging).]), + [ + debug_jtag_io=$enableval + debug_usb_io=$enableval + debug_usb_comms=$enableval + ], []) + +AC_ARG_ENABLE(verbose_jtag_io, + AS_HELP_STRING([--enable-verbose-jtag-io], + [Enable verbose JTAG I/O messages (for debugging).]), + [debug_jtag_io=$enableval], []) +AC_ARG_ENABLE(verbose_usb_io, + AS_HELP_STRING([--enable-verbose-usb-io], + [Enable verbose USB I/O messages (for debugging)]), + [debug_usb_io=$enableval], []) +AC_ARG_ENABLE(verbose_usb_comms, + AS_HELP_STRING([--enable-verbose-usb-comms], + [Enable verbose USB communication messages (for debugging)]), + [debug_usb_comms=$enableval], []) + +AC_MSG_CHECKING([whether to enable verbose JTAG I/O messages]); +AC_MSG_RESULT($debug_jtag_io) +if test $debug_jtag_io = yes; then + AC_DEFINE([_DEBUG_JTAG_IO_],[1], [Print verbose JTAG I/O messages]) +fi + +AC_MSG_CHECKING([whether to enable verbose USB I/O messages]); +AC_MSG_RESULT($debug_usb_io) +if test $debug_usb_io = yes; then + AC_DEFINE([_DEBUG_USB_IO_],[1], [Print verbose USB I/O messages]) +fi + +AC_MSG_CHECKING([whether to enable verbose USB communication messages]); +AC_MSG_RESULT($debug_usb_comms) +if test $debug_usb_comms = yes; then + AC_DEFINE([_DEBUG_USB_COMMS_],[1], [Print verbose USB communication messages]) +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]) @@ -260,6 +362,10 @@ AC_ARG_ENABLE(rlink, AS_HELP_STRING([--enable-rlink], [Enable building support for the Raisonance RLink JTAG Programmer]), [build_rlink=$enableval], [build_rlink=no]) +AC_ARG_ENABLE(arm-jtag-ew, + AS_HELP_STRING([--enable-arm-jtag-ew], [Enable building support for the Olimex ARM-JTAG-EW Programmer]), + [build_armjtagew=$enableval], [build_armjtagew=no]) + case $host in *-cygwin*) is_win32=yes @@ -279,6 +385,7 @@ case $host in fi AC_DEFINE(IS_WIN32, 1, [1 if building for Win32.]) + AC_DEFINE(IS_DARWIN, 0, [0 if not building for Darwin.]) ;; *-mingw*) is_mingw=yes @@ -288,11 +395,22 @@ case $host in AC_DEFINE(IS_MINGW, 1, [1 if building for MinGW.]) AC_DEFINE(IS_WIN32, 1, [1 if building for Win32.]) + AC_DEFINE(IS_DARWIN, 0, [0 if not building for Darwin.]) ;; + *darwin*) + is_darwin=yes + + parport_use_giveio=no + + AC_DEFINE(IS_CYGWIN, 0, [0 if not building for Cygwin.]) + AC_DEFINE(IS_WIN32, 0, [0 if not building for Win32.]) + AC_DEFINE(IS_DARWIN, 1, [1 if building for Darwin.]) + ;; *) parport_use_giveio=no AC_DEFINE(IS_CYGWIN, 0, [0 if not building for Cygwin.]) AC_DEFINE(IS_WIN32, 0, [0 if not building for Win32.]) + AC_DEFINE(IS_DARWIN, 0, [0 if not building for Darwin.]) ;; esac @@ -435,6 +553,12 @@ else AC_DEFINE(BUILD_RLINK, 0, [0 if you don't want the RLink JTAG driver.]) fi +if test $build_armjtagew = yes; then + AC_DEFINE(BUILD_ARMJTAGEW, 1, [1 if you want the ARM-JTAG-EW JTAG driver.]) +else + AC_DEFINE(BUILD_ARMJTAGEW, 0, [0 if you don't want the ARM-JTAG-EW JTAG driver.]) +fi + #-- Deal with MingW/Cygwin FTD2XX issues if test $is_win32 = yes; then @@ -443,7 +567,7 @@ then 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... @@ -482,47 +606,65 @@ AC_MSG_CHECKING([for ftd2xx.lib exists (win32)]) fi fi -if test $is_win32 = no; then +if test $is_darwin = yes ; then +if test "${with_ftd2xx_win32_zipdir+set}" = set +then + AC_MSG_ERROR([The option: --with-ftd2xx-win32-zipdir is for win32 only]) +fi +if test "${with_ftd2xx_linux_tardir+set}" = set +then + AC_MSG_ERROR([The option: with_ftd2xx_linux_tardir is for LINUX only.]) +fi + +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([ftd2xx library from FTDICHIP.com seems to be missing, cannot find: /usr/local/include/ftd2xx.h]) + fi + + CFLAGS="$CFLAGS -I/usr/local/include" + LDFLAGS="$LDFLAGS -L/usr/local/lib" + LIBS="$LIBS -lftd2xx" + AC_MSG_RESULT([-L/usr/local/lib -lftd2xx]) +fi +fi + +if test $is_win32 = no && test $is_darwin = no ; then if test "${with_ftd2xx_win32_zipdir+set}" = set then AC_MSG_ERROR([The option: --with-ftd2xx-win32-zipdir is for win32 only]) fi -if test $build_ft2232_ftd2xx = yes ; then - AC_MSG_CHECKING([for libftd2xx.a (linux)]) - # Must be linux - - # Cause FTDICHIP does not supply a MAC-OS version +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 # Are we given a TAR directory? if test "${with_ftd2xx_linux_tardir+set}" = set then + AC_MSG_CHECKING([uninstalled ftd2xx distribution]) # The .H file is simple.. - f=$with_ftd2xx_linux_tardir/ftd2xx.h - if test ! -f $f ; then - AC_MSG_ERROR([Option: --with-ftd2xx-linux-tardir appears wrong, cannot find: $f]) + FTD2XX_H=$with_ftd2xx_linux_tardir/ftd2xx.h + if test ! -f "${FTD2XX_H}"; then + AC_MSG_ERROR([Option: --with-ftd2xx-linux-tardir appears wrong, cannot find: ${FTD2XX_H}]) fi CFLAGS="$CFLAGS -I$with_ftd2xx_linux_tardir" - if test $with_ftd2xx_lib = shared - then - LDFLAGS="$LDFLAGS -L$with_ftd2xx_linux_tardir" - LIBS="$LIBS -lftd2xx" - AC_MSG_RESULT([ Assuming: -L$with_ftd2xx_linux_tardir -lftd2xx]) - else + FTD2XX_LDFLAGS="-L$with_ftd2xx_linux_tardir" + FTD2XX_LIB="-lftd2xx" + if test $with_ftd2xx_lib != shared; then # Test #1 - Future proof - if/when ftdichip fixes their distro. # Try it with the simple ".a" suffix. - f=$with_ftd2xx_linux_tardir/static_lib/libftd2xx.a - if test -f $f ; then - # Yea we are done - LDFLAGS="$LDFLAGS -L$with_ftd2xx_linux_tardir/static_lib" - LIBS="$LIBS -lftd2xx" + FTD2XX_LIB="$with_ftd2xx_linux_tardir/static_lib/libftd2xx.a" + if test -f "${FTD2XX_LIB}"; then + FTD2XX_LDFLAGS="${FTD2XX_LDFLAGS}/static_lib" else # Test Number2. # Grr.. perhaps it exists as a version number? - f="$with_ftd2xx_linux_tardir/static_lib/libftd2xx.a.*.*.*" - count=`ls $f | wc -l` + FTD2XX_LIB="$with_ftd2xx_linux_tardir/static_lib/libftd2xx.a.*.*.*" + count=`ls ${FTD2XX_LIB} | wc -l` if test $count -gt 1 ; then AC_MSG_ERROR([Multiple libftd2xx.a files found in: $with_ftd2xx_linux_tardir/static_lib sorry cannot handle this yet]) fi @@ -531,27 +673,30 @@ if test $build_ft2232_ftd2xx = yes ; then fi # Because the "-l" rules do not understand version numbers... # we will just stuff the absolute path onto the LIBS variable - f=`ls $f` - # - LIBS="$LIBS $f -lpthread" - # No need to bother with LDFLAGS... + FTD2XX_LIB="`ls ${FTD2XX_LIB}` -lpthread" + FTD2XX_LDFLAGS="" fi - AC_MSG_RESULT([Found: $f]) fi + LDFLAGS="${LDFLAGS} ${FTD2XX_LDFLAGS}" + LIBS="${LIBS} ${FTD2XX_LIB}" + AC_MSG_RESULT([${FTD2XX_LDFLAGS} ${FTD2XX_LIB}]) else - LIBS="$LIBS -lftd2xx" - AC_MSG_RESULT([Assumed: installed]) - AC_MSG_WARN([The (linux) FTDICHIP.COM files ftd2xx.h and libftd2xx.so are assumed to be in a proper place]) + AC_CHECK_HEADER([ftd2xx.h],[],[ + AC_MSG_ERROR([You seem to be missing the FTD2xx driver header file.]) + ]) + AC_SEARCH_LIBS([FT_GetLibraryVersion],[ftd2xx],,[ + AC_MSG_ERROR([You appear to be missing the FTD2xx driver library.]) + ],[]) fi 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 # We should be able to compile, link and run this test program now - AC_MSG_CHECKING([Test: Build & Link with ftd2xx]) + AC_MSG_CHECKING([whether ftd2xx library works]) # # Save the LDFLAGS for later.. @@ -624,9 +769,19 @@ LDFLAGS=$LDFLAGS_SAVE 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) -AM_INIT_AUTOMAKE(openocd, 1.0) +AM_INIT_AUTOMAKE([-Wall -Wno-portability]) +AM_MAINTAINER_MODE +AM_CONDITIONAL(RELEASE, test $build_release = yes) AM_CONDITIONAL(PARPORT, test $build_parport = yes) AM_CONDITIONAL(DUMMY, test $build_dummy = yes) AM_CONDITIONAL(GIVEIO, test $parport_use_giveio = yes) @@ -647,17 +802,63 @@ AM_CONDITIONAL(OOCD_TRACE, test $build_oocd_trace = yes) AM_CONDITIONAL(JLINK, test $build_jlink = yes) AM_CONDITIONAL(VSLLINK, test $build_vsllink = yes) AM_CONDITIONAL(RLINK, test $build_rlink = yes) +AM_CONDITIONAL(ARMJTAGEW, test $build_armjtagew = yes) AM_CONDITIONAL(IS_CYGWIN, test $is_cygwin = yes) AM_CONDITIONAL(IS_MINGW, test $is_mingw = yes) AM_CONDITIONAL(IS_WIN32, test $is_win32 = yes) +AM_CONDITIONAL(IS_DARWIN, test $is_darwin = yes) AM_CONDITIONAL(BITQ, test $build_bitq = yes) AC_LANG_C AC_PROG_CC +AC_PROG_CC_C99 +AM_PROG_CC_C_O AC_PROG_RANLIB +AC_PROG_LIBTOOL + +# 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 +#include +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 + # set default gcc warnings -GCC_WARNINGS="-Wall -Wstrict-prototypes" +GCC_WARNINGS="-Wall -Wstrict-prototypes -Wformat-security" +if test "${gcc_wextra}" = yes; then + GCC_WARNINGS="${GCC_WARNINGS} -Wextra -Wno-unused-parameter" + GCC_WARNINGS="${GCC_WARNINGS} -Wbad-function-cast" + GCC_WARNINGS="${GCC_WARNINGS} -Wcast-align" + GCC_WARNINGS="${GCC_WARNINGS} -Wredundant-decls" +fi +if test "${gcc_werror}" = yes; then + GCC_WARNINGS="${GCC_WARNINGS} -Werror" +fi # overide default gcc cflags if test $gcc_warnings = yes; then