Mercurial > sdl-ios-xcode
annotate sdl.m4 @ 4426:1bceff8f008f
Fixed bug #943
Ozkan Sezer 2010-02-06 12:31:06 PST
Hi:
Here are some small fixes for compiling SDL against mingw-w64.
(see http://mingw-w64.sourceforge.net/ . Despite the name, it
supports both win32 and win64.)
src/audio/windx5/directx.h and src/video/windx5/directx.h (both
SDL-1.2 and SDL-1.3.) I get compilation errors about some union
not having a member named u1 and alike, because of other system
headers being included before this one and them already defining
DUMMYUNIONNAME and stuff. This header probably assumes that those
stuff are defined in windef.h, but mingw-w64 headers define them
in _mingw.h. Easily fixed by moving NONAMELESSUNION definition to
the top of the file.
src/thread/win32/SDL_systhread.c (both SDL-1.2 and SDL-1.3.) :
The __GNUC__ case for pfnSDL_CurrentBeginThread is 32-bit centric
because _beginthreadex returns uintptr_t, not unsigned long which
is 32 bits in win64. Changing the return type to uintptr_t fixes
it.
video/SDL_blit.h (and configure.in) (SDL-1.3-only) : MinGW-w64
uses msvcrt version of _aligned_malloc and _aligned_free and
they are defined in intrin.h (similar to VC). Adding proper
ifdefs fixes it. (Notes about macros to check: __MINGW32__ is
defined for both mingw.org and for mingw-w64 for both win32 and
win64, __MINGW64__ is only defined for _WIN64, so __MINGW64__
can't be used to detect mingw-w64: including _mingw.h and then
checking for __MINGW64_VERSION_MAJOR does the trick.)
SDL_win32video.h (SDL-1.3-only) : Tweaked the VINWER definition
and location in order to avoid multiple redefinition warnings.
Hope these are useful. Thanks.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Wed, 10 Mar 2010 15:02:58 +0000 |
parents | 3dd59e993979 |
children | e3033ab628a1 |
rev | line source |
---|---|
0 | 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 | |
794
a5defa3b93e1
Updated for the latest version of automake
Sam Lantinga <slouken@libsdl.org>
parents:
489
diff
changeset
|
11 AC_DEFUN([AM_PATH_SDL], |
0 | 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 | |
3340 | 22 min_sdl_version=ifelse([$1], ,1.2.0,$1) |
23 | |
24 if test "x$sdl_prefix$sdl_exec_prefix" = x ; then | |
25 PKG_CHECK_MODULES(SDL, [sdl >= $min_sdl_version], | |
26 [sdl_pc=yes], | |
27 [dnl | |
28 AC_MSG_RESULT(no) | |
29 sdl_pc=no | |
30 ]) | |
31 else | |
32 sdl_pc=no | |
33 if test x$sdl_exec_prefix != x ; then | |
34 sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" | |
35 if test x${SDL_CONFIG+set} != xset ; then | |
36 SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config | |
37 fi | |
1755
91063c450171
Don't add NONE/bin to the path - inexplicably fixes building on mingw+msys, apparently
Sam Lantinga <slouken@libsdl.org>
parents:
1550
diff
changeset
|
38 fi |
3340 | 39 if test x$sdl_prefix != x ; then |
40 sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" | |
41 if test x${SDL_CONFIG+set} != xset ; then | |
42 SDL_CONFIG=$sdl_prefix/bin/sdl-config | |
43 fi | |
1755
91063c450171
Don't add NONE/bin to the path - inexplicably fixes building on mingw+msys, apparently
Sam Lantinga <slouken@libsdl.org>
parents:
1550
diff
changeset
|
44 fi |
0 | 45 fi |
46 | |
3340 | 47 if test "x$sdl_pc" = xyes ; then |
48 no_sdl="" | |
3379
3dd59e993979
pkg-config replaced sdl-config in these cases.
Sam Lantinga <slouken@libsdl.org>
parents:
3340
diff
changeset
|
49 SDL_CONFIG="pkg-config sdl" |
0 | 50 else |
3340 | 51 as_save_PATH="$PATH" |
52 if test "x$prefix" != xNONE && test "$cross_compiling" != yes; then | |
53 PATH="$prefix/bin:$prefix/usr/bin:$PATH" | |
54 fi | |
55 AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) | |
56 PATH="$as_save_PATH" | |
57 AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) | |
58 no_sdl="" | |
0 | 59 |
3340 | 60 if test "$SDL_CONFIG" = "no" ; then |
61 no_sdl=yes | |
62 else | |
63 SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags` | |
64 SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs` | |
65 | |
66 sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \ | |
67 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` | |
68 sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \ | |
69 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` | |
70 sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ | |
71 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` | |
72 if test "x$enable_sdltest" = "xyes" ; then | |
73 ac_save_CFLAGS="$CFLAGS" | |
74 ac_save_CXXFLAGS="$CXXFLAGS" | |
75 ac_save_LIBS="$LIBS" | |
76 CFLAGS="$CFLAGS $SDL_CFLAGS" | |
77 CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" | |
78 LIBS="$LIBS $SDL_LIBS" | |
0 | 79 dnl |
80 dnl Now check if the installed SDL is sufficiently new. (Also sanity | |
81 dnl checks the results of sdl-config to some extent | |
82 dnl | |
83 rm -f conf.sdltest | |
84 AC_TRY_RUN([ | |
85 #include <stdio.h> | |
86 #include <stdlib.h> | |
87 #include <string.h> | |
88 #include "SDL.h" | |
89 | |
90 char* | |
91 my_strdup (char *str) | |
92 { | |
93 char *new_str; | |
94 | |
95 if (str) | |
96 { | |
97 new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); | |
98 strcpy (new_str, str); | |
99 } | |
100 else | |
101 new_str = NULL; | |
102 | |
103 return new_str; | |
104 } | |
105 | |
106 int main (int argc, char *argv[]) | |
107 { | |
108 int major, minor, micro; | |
109 char *tmp_version; | |
110 | |
111 /* This hangs on some systems (?) | |
112 system ("touch conf.sdltest"); | |
113 */ | |
114 { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } | |
115 | |
116 /* HP/UX 9 (%@#!) writes to sscanf strings */ | |
117 tmp_version = my_strdup("$min_sdl_version"); | |
118 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { | |
119 printf("%s, bad version string\n", "$min_sdl_version"); | |
120 exit(1); | |
121 } | |
122 | |
123 if (($sdl_major_version > major) || | |
124 (($sdl_major_version == major) && ($sdl_minor_version > minor)) || | |
125 (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) | |
126 { | |
127 return 0; | |
128 } | |
129 else | |
130 { | |
131 printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); | |
132 printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); | |
133 printf("*** best to upgrade to the required version.\n"); | |
134 printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); | |
135 printf("*** to point to the correct copy of sdl-config, and remove the file\n"); | |
136 printf("*** config.cache before re-running configure\n"); | |
137 return 1; | |
138 } | |
139 } | |
140 | |
141 ],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) | |
3340 | 142 CFLAGS="$ac_save_CFLAGS" |
143 CXXFLAGS="$ac_save_CXXFLAGS" | |
144 LIBS="$ac_save_LIBS" | |
145 fi | |
146 fi | |
147 if test "x$no_sdl" = x ; then | |
148 AC_MSG_RESULT(yes) | |
149 else | |
150 AC_MSG_RESULT(no) | |
151 fi | |
0 | 152 fi |
153 if test "x$no_sdl" = x ; then | |
3340 | 154 ifelse([$2], , :, [$2]) |
0 | 155 else |
156 if test "$SDL_CONFIG" = "no" ; then | |
157 echo "*** The sdl-config script installed by SDL could not be found" | |
158 echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" | |
159 echo "*** your path, or set the SDL_CONFIG environment variable to the" | |
160 echo "*** full path to sdl-config." | |
161 else | |
162 if test -f conf.sdltest ; then | |
163 : | |
164 else | |
165 echo "*** Could not run SDL test program, checking why..." | |
166 CFLAGS="$CFLAGS $SDL_CFLAGS" | |
1118
65f4b2dd46b7
Date: Wed, 17 Aug 2005 11:23:40 -0400
Ryan C. Gordon <icculus@icculus.org>
parents:
794
diff
changeset
|
167 CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" |
0 | 168 LIBS="$LIBS $SDL_LIBS" |
169 AC_TRY_LINK([ | |
170 #include <stdio.h> | |
171 #include "SDL.h" | |
1
cf2af46e9e2a
Changes since SDL 1.2.0 release
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
172 |
cf2af46e9e2a
Changes since SDL 1.2.0 release
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
173 int main(int argc, char *argv[]) |
cf2af46e9e2a
Changes since SDL 1.2.0 release
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
174 { return 0; } |
cf2af46e9e2a
Changes since SDL 1.2.0 release
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
175 #undef main |
cf2af46e9e2a
Changes since SDL 1.2.0 release
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
176 #define main K_and_R_C_main |
0 | 177 ], [ return 0; ], |
178 [ echo "*** The test program compiled, but did not run. This usually means" | |
179 echo "*** that the run-time linker is not finding SDL or finding the wrong" | |
180 echo "*** version of SDL. If it is not finding SDL, you'll need to set your" | |
181 echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" | |
182 echo "*** to the installed location Also, make sure you have run ldconfig if that" | |
183 echo "*** is required on your system" | |
184 echo "***" | |
185 echo "*** If you have an old version installed, it is best to remove it, although" | |
186 echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], | |
187 [ echo "*** The test program failed to compile or link. See the file config.log for the" | |
188 echo "*** exact error that occured. This usually means SDL was incorrectly installed" | |
189 echo "*** or that you have moved SDL since it was installed. In the latter case, you" | |
190 echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) | |
191 CFLAGS="$ac_save_CFLAGS" | |
1118
65f4b2dd46b7
Date: Wed, 17 Aug 2005 11:23:40 -0400
Ryan C. Gordon <icculus@icculus.org>
parents:
794
diff
changeset
|
192 CXXFLAGS="$ac_save_CXXFLAGS" |
0 | 193 LIBS="$ac_save_LIBS" |
194 fi | |
195 fi | |
196 SDL_CFLAGS="" | |
197 SDL_LIBS="" | |
198 ifelse([$3], , :, [$3]) | |
199 fi | |
200 AC_SUBST(SDL_CFLAGS) | |
201 AC_SUBST(SDL_LIBS) | |
202 rm -f conf.sdltest | |
203 ]) |