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