[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Macro works OK, but aclocal says "macro `AM_PATH_GSL' not found in libr
From: |
Dr. David Kirkby |
Subject: |
Macro works OK, but aclocal says "macro `AM_PATH_GSL' not found in library" |
Date: |
Mon, 07 Apr 2003 09:18:04 +0100 |
I copied the macro 'gsl.m4' from the GNU scientific library (latest
version 1.3). The macro tests for the presence, version and path of
the gsl library.
Running first automake and autoconf, no problems are reported. After
this, the macro works as expected. But 'aclocal' reports an error:
% automake
% autoconf
% aclocal
aclocal: configure.ac: 95: macro `AM_PATH_GSL' not found in library
autoreconf does likewise:
% autoreconf
aclocal: configure.ac: 95: macro `AM_PATH_GSL' not found in library
Can anyone offer any help? It is strange the macro works, yets
generates these error messages when running aclocal. I've put a
cut-down version of my configure.ac here and the gsl.m4 macro below
that (below the two rows of XXXXXXXXXXXXXXXXXXXXXXXX's) , just in case
someone on the autoconf mailing list can help and does not have gsl
installed.
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
AC_INIT(atlc, 4.2.12, address@hidden)
AM_INIT_AUTOMAKE(atlc, 4.2.12, address@hidden)
# Checks for programs.
AC_PROG_CXX
AC_ISC_POSIX
# AC_OUTPUT_COMMANDS([exit])
# Checks for libraries.
AC_CHECK_LIB(m,main)
AC_CHECK_LIB(c,memalign, AC_DEFINE(HAVE_MEMALIGN))
AC_CHECK_HEADERS([stdio.h math.h malloc.h stdlib.h string.h
strings.h])
# Checks for typedefs
AC_HEADER_STDBOOL
AC_C_CONST
AC_TYPE_SIZE_T
# checks for compiler characteristics
AC_C_BIGENDIAN
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
AC_CHECK_SIZEOF(size_t)
# checks for library functions
AC_FUNC_MALLOC
AC_FUNC_MEMCMP
AC_FUNC_STRTOD
AC_CHECK_FUNCS([memset strchr strtol])
################### TROUBLE HERE ####################
sinclude(gsl.m4)
AM_PATH_GSL(1.1)
LIBS="$GSL_LIBS $LIBS"
CFLAGS="$GSL_CFLAGS $CFLAGS"
AC_OUTPUT([\
Makefile \
src/Makefile \
src/non_gui/Makefile \
src/gui/Makefile \
man/Makefile \
man/man1/Makefile \
examples/Makefile \
tools/Makefile \
tools/src/Makefile \
tests/Makefile \
docs/html-docs/Makefile \
docs/html-docs/jpgs/Makefile \
docs/qex-december-1996/Makefile \
docs/theory/Makefile \
docs/Makefile ])
XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
sparrow /export/home/davek/atlc % cat gsl.m4
# Configure path for the GNU Scientific Library
# Christopher R. Gabriel <address@hidden>, April 2000
AC_DEFUN(AM_PATH_GSL,
[
AC_ARG_WITH(gsl-prefix,[ --with-gsl-prefix=PFX Prefix where GSL is
installed (optional)],
gsl_prefix="$withval", gsl_prefix="")
AC_ARG_WITH(gsl-exec-prefix,[ --with-gsl-exec-prefix=PFX Exec prefix
where GSL is installed (optional)],
gsl_exec_prefix="$withval", gsl_exec_prefix="")
AC_ARG_ENABLE(gsltest, [ --disable-gsltest Do not try to
compile and run a test GSL program],
, enable_gsltest=yes)
if test "x${GSL_CONFIG+set}" != xset ; then
if test "x$gsl_prefix" != x ; then
GSL_CONFIG="$gsl_prefix/bin/gsl-config"
fi
if test "x$gsl_exec_prefix" != x ; then
GSL_CONFIG="$gsl_exec_prefix/bin/gsl-config"
fi
fi
AC_PATH_PROG(GSL_CONFIG, gsl-config, no)
min_gsl_version=ifelse([$1], ,0.2.5,$1)
AC_MSG_CHECKING(for GSL - version >= $min_gsl_version)
no_gsl=""
if test "$GSL_CONFIG" = "no" ; then
no_gsl=yes
else
GSL_CFLAGS=`$GSL_CONFIG --cflags`
GSL_LIBS=`$GSL_CONFIG --libs`
gsl_major_version=`$GSL_CONFIG --version | \
sed 's/^\([[0-9]]*\).*/\1/'`
if test "x${gsl_major_version}" = "x" ; then
gsl_major_version=0
fi
gsl_minor_version=`$GSL_CONFIG --version | \
sed 's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\2/'`
if test "x${gsl_minor_version}" = "x" ; then
gsl_minor_version=0
fi
gsl_micro_version=`$GSL_CONFIG --version | \
sed
's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\3/'`
if test "x${gsl_micro_version}" = "x" ; then
gsl_micro_version=0
fi
if test "x$enable_gsltest" = "xyes" ; then
ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GSL_CFLAGS"
LIBS="$LIBS $GSL_LIBS"
rm -f conf.gsltest
AC_TRY_RUN([
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* my_strdup (const char *str);
char*
my_strdup (const char *str)
{
char *new_str;
if (str)
{
new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
strcpy (new_str, str);
}
else
new_str = NULL;
return new_str;
}
int main (void)
{
int major = 0, minor = 0, micro = 0;
int n;
char *tmp_version;
system ("touch conf.gsltest");
/* HP/UX 9 (address@hidden) writes to sscanf strings */
tmp_version = my_strdup("$min_gsl_version");
n = sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) ;
if (n != 2 && n != 3) {
printf("%s, bad version string\n", "$min_gsl_version");
exit(1);
}
if (($gsl_major_version > major) ||
(($gsl_major_version == major) && ($gsl_minor_version > minor))
||
(($gsl_major_version == major) && ($gsl_minor_version == minor)
&& ($gsl_micro_version >= micro)))
{
exit(0);
}
else
{
printf("\n*** 'gsl-config --version' returned %d.%d.%d, but the
minimum version\n", $gsl_major_version, $gsl_minor_version,
$gsl_micro_version);
printf("*** of GSL required is %d.%d.%d. If gsl-config is
correct, then it is\n", major, minor, micro);
printf("*** best to upgrade to the required version.\n");
printf("*** If gsl-config was wrong, set the environment
variable GSL_CONFIG\n");
printf("*** to point to the correct copy of gsl-config, and
remove the file\n");
printf("*** config.cache before re-running configure\n");
exit(1);
}
}
],, no_gsl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
if test "x$no_gsl" = x ; then
AC_MSG_RESULT(yes)
ifelse([$2], , :, [$2])
else
AC_MSG_RESULT(no)
if test "$GSL_CONFIG" = "no" ; then
echo "*** The gsl-config script installed by GSL could not be
found"
echo "*** If GSL was installed in PREFIX, make sure PREFIX/bin
is in"
echo "*** your path, or set the GSL_CONFIG environment variable
to the"
echo "*** full path to gsl-config."
else
if test -f conf.gsltest ; then
:
else
echo "*** Could not run GSL test program, checking why..."
CFLAGS="$CFLAGS $GSL_CFLAGS"
LIBS="$LIBS $GSL_LIBS"
AC_TRY_LINK([
#include <stdio.h>
], [ return 0; ],
[ echo "*** The test program compiled, but did not run. This
usually means"
echo "*** that the run-time linker is not finding GSL or
finding the wrong"
echo "*** version of GSL. If it is not finding GSL, you'll
need to set your"
echo "*** LD_LIBRARY_PATH environment variable, or edit
/etc/ld.so.conf to point"
echo "*** to the installed location Also, make sure you
have run ldconfig if that"
echo "*** is required on your system"
echo "***"
echo "*** If you have an old version installed, it is best
to remove it, although"
echo "*** you may also be able to get things to work by
modifying LD_LIBRARY_PATH"],
[ echo "*** The test program failed to compile or link. See
the file config.log for the"
echo "*** exact error that occured. This usually means GSL
was incorrectly installed"
echo "*** or that you have moved GSL since it was installed.
In the latter case, you"
echo "*** may want to edit the gsl-config script:
$GSL_CONFIG" ])
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
# GSL_CFLAGS=""
# GSL_LIBS=""
ifelse([$3], , :, [$3])
fi
AC_SUBST(GSL_CFLAGS)
AC_SUBST(GSL_LIBS)
rm -f conf.gsltest
])
--
Dr. David Kirkby,
Senior Research Fellow,
Department of Medical Physics,
University College London,
11-20 Capper St, London, WC1E 6JA.
Tel: 020 7679 6408 Fax: 020 7679 6269
Internal telephone: ext 46408
e-mail address@hidden