sdl2.m4
author David Ludwig <dludwig@pobox.com>
Wed, 25 Dec 2013 21:39:48 -0500
changeset 8563 c0e68f3b6bbb
parent 7492 98de3e4f1c36
child 10382 9befd0acb9ef
permissions -rw-r--r--
WinRT: compiled the d3d11 renderer's shaders into SDL itself

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