test/acinclude.m4
author Sam Lantinga <slouken@libsdl.org>
Sun, 19 Mar 2006 05:27:22 +0000
changeset 1550 31c2b8e4885e
parent 1380 d94b080ff6ce
child 1659 14717b52abc0
permissions -rw-r--r--
Fixed bug #166

From the autoconf obsolete macros documentation:
Macro: AC_CANONICAL_SYSTEM

Determine the system type and set output variables to the names of the canonical system types. See section Getting the Canonical System Type, for details about the variables this macro sets.

The user is encouraged to use either AC_CANONICAL_BUILD, or AC_CANONICAL_HOST, or AC_CANONICAL_TARGET, depending on the needs. Using AC_CANONICAL_TARGET is enough to run the two other macros.

From the documentation for the canonical environments:
case $target in
i386-*-mach* | i386-*-gnu*)
obj_format=aout emulation=mach bfd_gas=yes ;;
i960-*-bout) obj_format=bout ;;
esac

Note that the above example uses $target because it's taken from a tool which can be built on some architecture ($build), run on another ($host), but yet handle data for a third architecture ($target). Such tools are usually part of a compiler suite, they generate code for a specific $target.

However $target should be meaningless for most packages. If you want to base a decision on the system where your program will be run, make sure you use the $host variable.
     1 # Configure paths for SDL
     2 # Sam Lantinga 9/21/99
     3 # stolen from Manish Singh
     4 # stolen back from Frank Belew
     5 # stolen from Manish Singh
     6 # Shamelessly stolen from Owen Taylor
     7 
     8 dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
     9 dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS
    10 dnl
    11 AC_DEFUN([AM_PATH_SDL],
    12 [dnl 
    13 dnl Get the cflags and libraries from the sdl-config script
    14 dnl
    15 AC_ARG_WITH(sdl-prefix,[  --with-sdl-prefix=PFX   Prefix where SDL is installed (optional)],
    16             sdl_prefix="$withval", sdl_prefix="")
    17 AC_ARG_WITH(sdl-exec-prefix,[  --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)],
    18             sdl_exec_prefix="$withval", sdl_exec_prefix="")
    19 AC_ARG_ENABLE(sdltest, [  --disable-sdltest       Do not try to compile and run a test SDL program],
    20 		    , enable_sdltest=yes)
    21 
    22   if test x$sdl_exec_prefix != x ; then
    23      sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix"
    24      if test x${SDL_CONFIG+set} != xset ; then
    25         SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config
    26      fi
    27   fi
    28   if test x$sdl_prefix != x ; then
    29      sdl_args="$sdl_args --prefix=$sdl_prefix"
    30      if test x${SDL_CONFIG+set} != xset ; then
    31         SDL_CONFIG=$sdl_prefix/bin/sdl-config
    32      fi
    33   fi
    34 
    35   PATH="$prefix/bin:$prefix/usr/bin:$PATH"
    36   AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH])
    37   min_sdl_version=ifelse([$1], ,0.11.0,$1)
    38   AC_MSG_CHECKING(for SDL - version >= $min_sdl_version)
    39   no_sdl=""
    40   if test "$SDL_CONFIG" = "no" ; then
    41     no_sdl=yes
    42   else
    43     SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags`
    44     SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs`
    45 
    46     sdl_major_version=`$SDL_CONFIG $sdl_args --version | \
    47            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
    48     sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \
    49            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
    50     sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \
    51            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
    52     if test "x$enable_sdltest" = "xyes" ; then
    53       ac_save_CFLAGS="$CFLAGS"
    54       ac_save_CXXFLAGS="$CXXFLAGS"
    55       ac_save_LIBS="$LIBS"
    56       CFLAGS="$CFLAGS $SDL_CFLAGS"
    57       CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
    58       LIBS="$LIBS $SDL_LIBS"
    59 dnl
    60 dnl Now check if the installed SDL is sufficiently new. (Also sanity
    61 dnl checks the results of sdl-config to some extent
    62 dnl
    63       rm -f conf.sdltest
    64       AC_TRY_RUN([
    65 #include <stdio.h>
    66 #include <stdlib.h>
    67 #include <string.h>
    68 #include "SDL.h"
    69 
    70 char*
    71 my_strdup (char *str)
    72 {
    73   char *new_str;
    74   
    75   if (str)
    76     {
    77       new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
    78       strcpy (new_str, str);
    79     }
    80   else
    81     new_str = NULL;
    82   
    83   return new_str;
    84 }
    85 
    86 int main (int argc, char *argv[])
    87 {
    88   int major, minor, micro;
    89   char *tmp_version;
    90 
    91   /* This hangs on some systems (?)
    92   system ("touch conf.sdltest");
    93   */
    94   { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); }
    95 
    96   /* HP/UX 9 (%@#!) writes to sscanf strings */
    97   tmp_version = my_strdup("$min_sdl_version");
    98   if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
    99      printf("%s, bad version string\n", "$min_sdl_version");
   100      exit(1);
   101    }
   102 
   103    if (($sdl_major_version > major) ||
   104       (($sdl_major_version == major) && ($sdl_minor_version > minor)) ||
   105       (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro)))
   106     {
   107       return 0;
   108     }
   109   else
   110     {
   111       printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version);
   112       printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro);
   113       printf("*** best to upgrade to the required version.\n");
   114       printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n");
   115       printf("*** to point to the correct copy of sdl-config, and remove the file\n");
   116       printf("*** config.cache before re-running configure\n");
   117       return 1;
   118     }
   119 }
   120 
   121 ],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
   122        CFLAGS="$ac_save_CFLAGS"
   123        CXXFLAGS="$ac_save_CXXFLAGS"
   124        LIBS="$ac_save_LIBS"
   125      fi
   126   fi
   127   if test "x$no_sdl" = x ; then
   128      AC_MSG_RESULT(yes)
   129      ifelse([$2], , :, [$2])     
   130   else
   131      AC_MSG_RESULT(no)
   132      if test "$SDL_CONFIG" = "no" ; then
   133        echo "*** The sdl-config script installed by SDL could not be found"
   134        echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in"
   135        echo "*** your path, or set the SDL_CONFIG environment variable to the"
   136        echo "*** full path to sdl-config."
   137      else
   138        if test -f conf.sdltest ; then
   139         :
   140        else
   141           echo "*** Could not run SDL test program, checking why..."
   142           CFLAGS="$CFLAGS $SDL_CFLAGS"
   143           CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
   144           LIBS="$LIBS $SDL_LIBS"
   145           AC_TRY_LINK([
   146 #include <stdio.h>
   147 #include "SDL.h"
   148 
   149 int main(int argc, char *argv[])
   150 { return 0; }
   151 #undef  main
   152 #define main K_and_R_C_main
   153 ],      [ return 0; ],
   154         [ echo "*** The test program compiled, but did not run. This usually means"
   155           echo "*** that the run-time linker is not finding SDL or finding the wrong"
   156           echo "*** version of SDL. If it is not finding SDL, you'll need to set your"
   157           echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
   158           echo "*** to the installed location  Also, make sure you have run ldconfig if that"
   159           echo "*** is required on your system"
   160 	  echo "***"
   161           echo "*** If you have an old version installed, it is best to remove it, although"
   162           echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
   163         [ echo "*** The test program failed to compile or link. See the file config.log for the"
   164           echo "*** exact error that occured. This usually means SDL was incorrectly installed"
   165           echo "*** or that you have moved SDL since it was installed. In the latter case, you"
   166           echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ])
   167           CFLAGS="$ac_save_CFLAGS"
   168           CXXFLAGS="$ac_save_CXXFLAGS"
   169           LIBS="$ac_save_LIBS"
   170        fi
   171      fi
   172      SDL_CFLAGS=""
   173      SDL_LIBS=""
   174      ifelse([$3], , :, [$3])
   175   fi
   176   AC_SUBST(SDL_CFLAGS)
   177   AC_SUBST(SDL_LIBS)
   178   rm -f conf.sdltest
   179 ])