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