Ignore:
Timestamp:
Sep 1, 2009, 12:08:15 AM (14 years ago)
Author:
Peter
Message:

fixes #558

Replaced GSL runtime test with a link test. I tried to keep the error
messages as before, but I pass them through AC_MSG_WARN while some
were previously printed from the test program and some were created
through echo calls.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/0.5-stable/m4/gsl.m4

    r1903 r2043  
    99AC_ARG_WITH(gsl-exec-prefix,[  --with-gsl-exec-prefix=PFX Exec prefix where GSL is installed (optional)],
    1010            gsl_exec_prefix="$withval", gsl_exec_prefix="")
    11 AC_ARG_ENABLE(gsltest, [  --disable-gsltest       Do not try to compile and run a test GSL program],
    12         , enable_gsltest=yes)
    1311
    1412  if test "x${GSL_CONFIG+set}" != xset ; then
     
    2725  if test "$GSL_CONFIG" = "no" ; then
    2826    no_gsl=yes
     27    AC_MSG_RESULT([no])
     28    AC_MSG_WARN([
     29       The gsl-config script installed by GSL could not be found
     30       If GSL was installed in PREFIX, make sure PREFIX/bin is in
     31       your path, or set the GSL_CONFIG environment variable to the
     32       full path to gsl-config.
     33    ])
    2934  else
    3035    GSL_CFLAGS=`$GSL_CONFIG --cflags`
    3136    GSL_LIBS=`$GSL_CONFIG --libs`
     37    ac_save_LIBS="$LIBS"
     38    CXXFLAGS="$CXXFLAGS $GSL_CFLAGS"
     39    LIBS="$GSL_LIBS $LIBS"
     40    AC_LINK_IFELSE([AC_LANG_PROGRAM(, [return 0])],,[no_gsl=yes]) 
     41    LIBS="$ac_save_LIBS"
     42  fi
    3243
    33     gsl_major_version=`$GSL_CONFIG --version | \
    34            sed 's/^\([[0-9]]*\).*/\1/'`
    35     if test "x${gsl_major_version}" = "x" ; then
    36        gsl_major_version=0
    37     fi
     44  if test "x$no_gsl" = xyes ; then
     45    AC_MSG_RESULT([no])
     46    AC_MSG_WARN([
     47     The test program failed to compile or link. See the config.log
     48     for the exact error that occured. This usually means GSL was
     49     incorrectly installed or that you have moved GSL since it was
     50     installed. In the latter case, you may want to edit the
     51     gsl-config script: $GSL_CONFIG.
     52    ])
     53  else
     54    ac_gsl_version=`$GSL_CONFIG --version`
     55    AX_COMPARE_VERSION([$ac_gsl_version], [ge], [$min_gsl_version],,[no_gsl=yes])
     56    AC_MSG_RESULT([$ac_gsl_version])
     57    if test "x$no_gsl" = xyes ; then
     58      AC_MSG_WARN([
     59       gsl-config --version returned $ac_gsl_version, but the minimum
     60       version of GSL required is $min_gsl_version. If gsl-config is
     61       correct, then it is best to upgrade to the required version. If
     62       gsl-config was wrong, set the environment variable GSL_CONFIG to
     63       point to the correct copy of gsl-config, and remove the file
     64       config.cache before re-running configure. 
     65      ])
     66    fi
     67  fi
    3868
    39     gsl_minor_version=`$GSL_CONFIG --version | \
    40            sed 's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\2/'`
    41     if test "x${gsl_minor_version}" = "x" ; then
    42        gsl_minor_version=0
    43     fi
    44 
    45     gsl_micro_version=`$GSL_CONFIG --version | \
    46            sed 's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\3/'`
    47     if test "x${gsl_micro_version}" = "x" ; then
    48        gsl_micro_version=0
    49     fi
    50 
    51     if test "x$enable_gsltest" = "xyes" ; then
    52       ac_save_CFLAGS="$CFLAGS"
    53       ac_save_LIBS="$LIBS"
    54       CFLAGS="$CFLAGS $GSL_CFLAGS"
    55       LIBS="$GSL_LIBS $LIBS"
    56 
    57       rm -f conf.gsltest
    58       AC_TRY_RUN([
    59 #include <stdio.h>
    60 #include <stdlib.h>
    61 #include <string.h>
    62 
    63 char* my_strdup (const char *str);
    64 
    65 char*
    66 my_strdup (const char *str)
    67 {
    68   char *new_str;
    69  
    70   if (str)
    71     {
    72       new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
    73       strcpy (new_str, str);
    74     }
    75   else
    76     new_str = NULL;
    77  
    78   return new_str;
    79 }
    80 
    81 int main (void)
    82 {
    83   int major = 0, minor = 0, micro = 0;
    84   int n;
    85   char *tmp_version;
    86 
    87   system ("touch conf.gsltest");
    88 
    89   /* HP/UX 9 (%@#!) writes to sscanf strings */
    90   tmp_version = my_strdup("$min_gsl_version");
    91 
    92   n = sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) ;
    93 
    94   if (n != 2 && n != 3) {
    95      printf("%s, bad version string\n", "$min_gsl_version");
    96      exit(1);
    97    }
    98 
    99    if (($gsl_major_version > major) ||
    100       (($gsl_major_version == major) && ($gsl_minor_version > minor)) ||
    101       (($gsl_major_version == major) && ($gsl_minor_version == minor) && ($gsl_micro_version >= micro)))
    102     {
    103       exit(0);
    104     }
    105   else
    106     {
    107       printf("\n*** 'gsl-config --version' returned %d.%d.%d, but the minimum version\n", $gsl_major_version, $gsl_minor_version, $gsl_micro_version);
    108       printf("*** of GSL required is %d.%d.%d. If gsl-config is correct, then it is\n", major, minor, micro);
    109       printf("*** best to upgrade to the required version.\n");
    110       printf("*** If gsl-config was wrong, set the environment variable GSL_CONFIG\n");
    111       printf("*** to point to the correct copy of gsl-config, and remove the file\n");
    112       printf("*** config.cache before re-running configure\n");
    113       exit(1);
    114     }
    115 }
    116 
    117 ],, no_gsl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
    118        CFLAGS="$ac_save_CFLAGS"
    119        LIBS="$ac_save_LIBS"
    120      fi
    121   fi
    12269  if test "x$no_gsl" = x ; then
    123      AC_MSG_RESULT(yes)
    12470     ifelse([$2], , :, [$2])     
    12571  else
    126      AC_MSG_RESULT(no)
    127      if test "$GSL_CONFIG" = "no" ; then
    128        echo "*** The gsl-config script installed by GSL could not be found"
    129        echo "*** If GSL was installed in PREFIX, make sure PREFIX/bin is in"
    130        echo "*** your path, or set the GSL_CONFIG environment variable to the"
    131        echo "*** full path to gsl-config."
    132      else
    133        if test -f conf.gsltest ; then
    134         :
    135        else
    136           echo "*** Could not run GSL test program, checking why..."
    137           CFLAGS="$CFLAGS $GSL_CFLAGS"
    138           LIBS="$GSL_LIBS $LIBS"
    139           AC_TRY_LINK([
    140 #include <stdio.h>
    141 ],      [ return 0; ],
    142         [ echo "*** The test program compiled, but did not run. This usually means"
    143           echo "*** that the run-time linker is not finding GSL or finding the wrong"
    144           echo "*** version of GSL. If it is not finding GSL, you'll need to set your"
    145           echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
    146           echo "*** to the installed location  Also, make sure you have run ldconfig if that"
    147           echo "*** is required on your system"
    148     echo "***"
    149           echo "*** If you have an old version installed, it is best to remove it, although"
    150           echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
    151         [ echo "*** The test program failed to compile or link. See the file config.log for the"
    152           echo "*** exact error that occured. This usually means GSL was incorrectly installed"
    153           echo "*** or that you have moved GSL since it was installed. In the latter case, you"
    154           echo "*** may want to edit the gsl-config script: $GSL_CONFIG" ])
    155           CFLAGS="$ac_save_CFLAGS"
    156           LIBS="$ac_save_LIBS"
    157        fi
    158      fi
    159 #     GSL_CFLAGS=""
    160 #     GSL_LIBS=""
    16172     ifelse([$3], , :, [$3])
    16273  fi
    16374  AC_SUBST(GSL_CFLAGS)
    16475  AC_SUBST(GSL_LIBS)
    165   rm -f conf.gsltest
    16676])
    16777
Note: See TracChangeset for help on using the changeset viewer.