diff --git a/macros/openhbci.m4 b/macros/openhbci.m4 index 6dd4da12d6..3f9f56471c 100644 --- a/macros/openhbci.m4 +++ b/macros/openhbci.m4 @@ -5,8 +5,8 @@ dnl AM_PATH_OPENHBCI([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl Test for OPENHBCI, and define OPENHBCI_CFLAGS, OPENHBCI_CXXFLAGS and OPENHBCI_LIBS dnl -AC_DEFUN(AM_PATH_OPENHBCI, -[dnl +AC_DEFUN(AM_PATH_OPENHBCI, [ +dnl dnl Get the c[xx]flags and libraries from openhbci-config dnl AC_MSG_CHECKING(for OpenHBCI) @@ -34,8 +34,6 @@ if test -x "${hbci_config}" ; then OPENHBCI_LIBS="`${hbci_config} --libraries`" OPENHBCI_CFLAGS="`${hbci_config} --includes`" OPENHBCI_CXXFLAGS="`${hbci_config} --includes`" - AS_SCRUB_INCLUDE(OPENHBCI_CFLAGS) - AS_SCRUB_INCLUDE(OPENHBCI_CXXFLAGS) else AC_MSG_ERROR([ Could not find bin/openhbci-config in prefix ${OPENHBCI_PREFIX}. @@ -44,13 +42,14 @@ else fi AC_MSG_RESULT($hbci_dir) -min_openhbci_version=ifelse([$1], ,0.9.0,$1) +min_openhbci_version=ifelse([$1], ,0.9.0.0,$1) AC_MSG_CHECKING(for OpenHBCI - version >= $min_openhbci_version) +AC_LANG(C++) if test "x$enable_openhbcitest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" + ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $OPENHBCI_CFLAGS" + CXXFLAGS="$CXXFLAGS $OPENHBCI_CXXFLAGS" LIBS="$OPENHBCI_LIBS $LIBS" dnl dnl Now check if the installed OpenHBCI is sufficiently new. (Also sanity @@ -63,63 +62,97 @@ dnl #include #include +#ifndef OPENHBCI_VERSION_BUILD +# define OPENHBCI_VERSION_BUILD 0 +#endif int main () { - int major, minor, micro; - int getmajor, getminor, getmicro; + int major, minor, micro, build; + int getmajor, getminor, getmicro, getbuild; char *tmp_version; system ("touch conf.openhbcitest"); /* HP/UX 9 writes to sscanf strings */ tmp_version = strdup("$min_openhbci_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_openhbci_version"); - exit(1); + build=0; + if (sscanf(tmp_version, "%d.%d.%d.%d", &major, &minor, µ, &build) != 4) + { + build = 0; + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) + { + micro = 0; + if (sscanf(tmp_version, "%d.%d", &major, &minor) != 2) + { + minor = 0; + if (sscanf(tmp_version, "%d", &major) != 1) + { + printf("\n*** AM PATH OPENHBCI: bad version string: %s\n", "$min_openhbci_version"); + exit(1); + } + } + } } - HBCI_Hbci_libraryVersion(&getmajor, &getminor, &getmicro); + /* in C: HBCI_Hbci_libraryVersion(&getmajor, &getminor, &getmicro); */ +#if ((OPENHBCI_VERSION_MAJOR>0) || (OPENHBCI_VERSION_MINOR>9) || \ + (OPENHBCI_VERSION_PATCHLEVEL>9) || (OPENHBCI_VERSION_BUILD>8)) + /* Four-argument libraryVersion() was introduced with 0.9.9.9. */ + HBCI::Hbci::libraryVersion(getmajor, getminor, getmicro, getbuild); +#else + HBCI::Hbci::libraryVersion(getmajor, getminor, getmicro); + getbuild = OPENHBCI_VERSION_BUILD; +#endif if ((getmajor != OPENHBCI_VERSION_MAJOR) || (getminor != OPENHBCI_VERSION_MINOR) || - (getmicro != OPENHBCI_VERSION_PATCHLEVEL)) + (getmicro != OPENHBCI_VERSION_PATCHLEVEL) || + (getbuild != OPENHBCI_VERSION_BUILD)) { - printf("*** OpenHBCI header files (version %d.%d.%d) do not match\n", + printf("\n*** OpenHBCI header files openhbci.h " + "(version %d.%d.%d build %d) do not match\n", OPENHBCI_VERSION_MAJOR, OPENHBCI_VERSION_MINOR, - OPENHBCI_VERSION_PATCHLEVEL); - printf("*** installed library (version %d.%d.%d)\n", - getmajor, getminor, getmicro); + OPENHBCI_VERSION_PATCHLEVEL, + OPENHBCI_VERSION_BUILD); + printf("*** installed library libopenhbci.so " + "(version %d.%d.%d build %d)\n", + getmajor, getminor, getmicro, getbuild); exit(1); } else { if ((getmajor > major) || ((getmajor == major) && (getminor > minor)) || - ((getmajor == major) && (getminor == minor) && (getmicro >= micro))) + ((getmajor == major) && (getminor == minor) && (getmicro > micro)) || + ((getmajor == major) && (getminor == minor) && + (getmicro == micro) && (getbuild >= build))) { return 0; } else { - printf("\n*** An old version of OpenHBCI (%d.%d.%d) was found.\n", - getmajor, getminor, getmicro); - printf("*** You need OpenHBCI in version %d.%d.%d or newer. The latest version\n", - major, minor, micro); - printf("*** of OpenHBCI is always available from http://www.openhbci.de.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that you need to specify the right path by\n"); - printf("*** --with-openhbci-prefix=PATH. (Also, check that your LD_LIBRARY_PATH\n"); - printf("*** enviroment variable is correct, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); + printf("\n*** An old version of OpenHBCI (%d.%d.%d build %d) was found.\n", + getmajor, getminor, getmicro, getbuild); + printf("*** You need OpenHBCI in version %d.%d.%d build %d or newer. The latest\n", + major, minor, micro, build); + printf("*** version of OpenHBCI is always available from http://www.openhbci.de.\n"); + if (build > 0) + printf("*** Note: The non-zero build number '%d' indicates that the latest CVS \n" + "*** version of openhbci is required.\n", build); + printf("***\n" + "*** If you have already installed a sufficiently new version, this error\n" + "*** probably means that you need to specify the right path by\n" + "*** --with-openhbci-prefix=PATH. (Also, check that your LD_LIBRARY_PATH\n" + "*** enviroment variable is correct, or edit /etc/ld.so.conf\n" + "*** so that the correct libraries are found at run-time)\n"); } } return 1; } ],, no_openhbci=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi if test "x$no_openhbci" = x ; then @@ -128,17 +161,17 @@ if test "x$no_openhbci" = x ; then else AC_MSG_RESULT(no) if test -f conf.openhbcitest ; then - : + : else echo "*** Could not run OpenHBCI test program, checking why..." - ac_save_CFLAGS="$CFLAGS" + ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $OPENHBCI_CFLAGS" + CXXFLAGS="$CXXFLAGS $OPENHBCI_CXXFLAGS" LIBS="$LIBS $OPENHBCI_LIBS" AC_TRY_LINK([ #include #include -], [ return ((OPENHBCI_VERSION_MAJOR) || (OPENHBCI_VERSION_MINOR) || (OPENHBCI_VERSION_PATCHLEVEL)); ], +], [ return ((OPENHBCI_VERSION_MAJOR) || (OPENHBCI_VERSION_MINOR)); ], [ echo "***" echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding OpenHBCI or finding the wrong" @@ -153,10 +186,10 @@ else [ echo "***" echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means OpenHBCI is incorrectly installed."]) - CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi - OPENHBCI_CFLAGS="" + OPENHBCI_CXXFLAGS="" OPENHBCI_LIBS="" ifelse([$3], , :, [$3]) exit 1;