sdl.m4
author Ryan C. Gordon <icculus@icculus.org>
Mon, 12 Dec 2005 09:22:36 +0000
changeset 1200 8f418dce02b2
parent 1118 65f4b2dd46b7
child 1550 31c2b8e4885e
permissions -rw-r--r--
Date: Sun, 11 Dec 2005 20:37:04 +0100
From: Olivier Boudeville <olivier.boudeville@online.fr>
To: "A list for developers using the SDL library. \(includes SDL-announce\)" <sdl@libsdl.org>
Subject: [SDL] NetBSD build patch


Hi everybody,

apparently the SDL-1.2.9 source archive could not compile "as is" on
NetBSD 2.0_STABLE due to a pthread detection issue in the configure script.

I attached a small patch that can be applied to configure.in so that SDL
can be directly (i.e. without the NetBSD package manager) configured and
built successfully on NetBSD (at least on the one I tried !).

Hope this helps,

Olivier.
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@172
    35
  AC_REQUIRE([AC_CANONICAL_TARGET])
slouken@489
    36
  PATH="$prefix/bin:$prefix/usr/bin:$PATH"
slouken@489
    37
  AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH])
slouken@0
    38
  min_sdl_version=ifelse([$1], ,0.11.0,$1)
slouken@0
    39
  AC_MSG_CHECKING(for SDL - version >= $min_sdl_version)
slouken@0
    40
  no_sdl=""
slouken@0
    41
  if test "$SDL_CONFIG" = "no" ; then
slouken@0
    42
    no_sdl=yes
slouken@0
    43
  else
slouken@0
    44
    SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags`
slouken@0
    45
    SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs`
slouken@0
    46
slouken@0
    47
    sdl_major_version=`$SDL_CONFIG $sdl_args --version | \
slouken@0
    48
           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
slouken@0
    49
    sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \
slouken@0
    50
           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
slouken@0
    51
    sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \
slouken@0
    52
           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
slouken@0
    53
    if test "x$enable_sdltest" = "xyes" ; then
slouken@0
    54
      ac_save_CFLAGS="$CFLAGS"
icculus@1118
    55
      ac_save_CXXFLAGS="$CXXFLAGS"
slouken@0
    56
      ac_save_LIBS="$LIBS"
slouken@0
    57
      CFLAGS="$CFLAGS $SDL_CFLAGS"
icculus@1118
    58
      CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
slouken@0
    59
      LIBS="$LIBS $SDL_LIBS"
slouken@0
    60
dnl
slouken@0
    61
dnl Now check if the installed SDL is sufficiently new. (Also sanity
slouken@0
    62
dnl checks the results of sdl-config to some extent
slouken@0
    63
dnl
slouken@0
    64
      rm -f conf.sdltest
slouken@0
    65
      AC_TRY_RUN([
slouken@0
    66
#include <stdio.h>
slouken@0
    67
#include <stdlib.h>
slouken@0
    68
#include <string.h>
slouken@0
    69
#include "SDL.h"
slouken@0
    70
slouken@0
    71
char*
slouken@0
    72
my_strdup (char *str)
slouken@0
    73
{
slouken@0
    74
  char *new_str;
slouken@0
    75
  
slouken@0
    76
  if (str)
slouken@0
    77
    {
slouken@0
    78
      new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
slouken@0
    79
      strcpy (new_str, str);
slouken@0
    80
    }
slouken@0
    81
  else
slouken@0
    82
    new_str = NULL;
slouken@0
    83
  
slouken@0
    84
  return new_str;
slouken@0
    85
}
slouken@0
    86
slouken@0
    87
int main (int argc, char *argv[])
slouken@0
    88
{
slouken@0
    89
  int major, minor, micro;
slouken@0
    90
  char *tmp_version;
slouken@0
    91
slouken@0
    92
  /* This hangs on some systems (?)
slouken@0
    93
  system ("touch conf.sdltest");
slouken@0
    94
  */
slouken@0
    95
  { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); }
slouken@0
    96
slouken@0
    97
  /* HP/UX 9 (%@#!) writes to sscanf strings */
slouken@0
    98
  tmp_version = my_strdup("$min_sdl_version");
slouken@0
    99
  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
slouken@0
   100
     printf("%s, bad version string\n", "$min_sdl_version");
slouken@0
   101
     exit(1);
slouken@0
   102
   }
slouken@0
   103
slouken@0
   104
   if (($sdl_major_version > major) ||
slouken@0
   105
      (($sdl_major_version == major) && ($sdl_minor_version > minor)) ||
slouken@0
   106
      (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro)))
slouken@0
   107
    {
slouken@0
   108
      return 0;
slouken@0
   109
    }
slouken@0
   110
  else
slouken@0
   111
    {
slouken@0
   112
      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
   113
      printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro);
slouken@0
   114
      printf("*** best to upgrade to the required version.\n");
slouken@0
   115
      printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n");
slouken@0
   116
      printf("*** to point to the correct copy of sdl-config, and remove the file\n");
slouken@0
   117
      printf("*** config.cache before re-running configure\n");
slouken@0
   118
      return 1;
slouken@0
   119
    }
slouken@0
   120
}
slouken@0
   121
slouken@0
   122
],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
slouken@0
   123
       CFLAGS="$ac_save_CFLAGS"
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"
icculus@1118
   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"
icculus@1118
   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=""
icculus@1118
   173
     SDL_CXXFLAGS=""
slouken@0
   174
     SDL_LIBS=""
slouken@0
   175
     ifelse([$3], , :, [$3])
slouken@0
   176
  fi
slouken@0
   177
  AC_SUBST(SDL_CFLAGS)
slouken@0
   178
  AC_SUBST(SDL_LIBS)
slouken@0
   179
  rm -f conf.sdltest
slouken@0
   180
])