sdl.m4
author Sam Lantinga <slouken@libsdl.org>
Thu, 24 Jan 2008 15:50:20 +0000
branchSDL-1.2
changeset 4135 cd98d1dc385c
parent 4121 917ca146d901
child 3340 3d75acd08339
child 4440 7bb8f748a14d
permissions -rw-r--r--
Damien Carbery fixed bug #542

In SDL 1.2.13 sdl.m4 the AM_PATH_SDL function looks for sdl-config.
It sets the PATH:
PATH="$prefix/bin:$prefix/usr/bin:$PATH"
but does not save the current PATH or restore the current PATH at the end.

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