Import Debian changes 1.23-12
[debian-dgen.git] / configure.in
blob81e9b386a6629f8dff05cd0dfe251e969856e1c2
1 dnl DGen/SDL v1.22
2 dnl At long last, the configure script!
4 AC_INIT(decode.c)
6 dnl We'll need machine type later
7 AC_CANONICAL_SYSTEM
8 machtype=$target_cpu
10 AM_INIT_AUTOMAKE(dgen-sdl, 1.23)
12 dnl Before we check for cc and c++, check for the --with-extra-opt switch, so
13 dnl we can add the optimizations.
14 AC_ARG_WITH(extra-opt,
15             [  --with-extra-opt        Add extra optimizations (egcs/GCC >= 2.95 only)],
16             ADD_OPT=$withval,
17             ADD_OPT=no)
19 if test x$ADD_OPT \!= xno; then
20         case $machtype in
21         i?86)
22                 CFLAGS="$CFLAGS -O3 -mpentium -march=pentium -fstrength-reduce -fomit-frame-pointer -frerun-cse-after-loop -funroll-loops -ffast-math -malign-functions=5 -malign-jumps=5 -malign-loops=5 -malign-double -fno-exceptions -fno-rtti"
23                 CXXFLAGS="$CXXFLAGS -O3 -mpentium -march=pentium -fstrength-reduce -fomit-frame-pointer -frerun-cse-after-loop -funroll-loops -ffast-math -malign-functions=5 -malign-jumps=5 -malign-loops=5 -malign-double -fno-exceptions -fno-rtti"
24                 ;;
25         *)
26                 CFLAGS="$CFLAGS -O3 -ffast-math -fomit-frame-pointer -fno-exceptions -fno-rtti -funroll-loops -frerun-cse-after-loop"
27                 CXXFLAGS="$CXXFLAGS -O3 -ffast-math -fomit-frame-pointer -fno-exceptions -fno-rtti -funroll-loops -frerun-cse-after-loop"
28                 ;;
29         esac
32 dnl Check for standard programs
33 AC_PROG_AWK
34 AC_PROG_CC
35 AC_PROG_CPP
36 AC_PROG_CXX
37 AC_PROG_CXXCPP
38 AC_PROG_INSTALL
39 AC_PROG_LN_S
40 AC_PROG_RANLIB
42 dnl Set the value of make, if make doesn't already
43 AC_PROG_MAKE_SET
45 dnl We're using C
46 AC_LANG_C
48 dnl Check endianness
49 AC_C_BIGENDIAN
51 dnl Check for SDL libs
52 AM_PATH_SDL(1.0.0, true, AC_MSG_ERROR([*** SDL version >= 1.0.0 not found.]))
54 CFLAGS="$CFLAGS $SDL_CFLAGS"
55 CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
56 INTERFACE=sdl
58 dnl Add SDL cflags to CPPFLAGS, just to check for SDL_joystick header
59 OLD_CPPFLAGS=$CPPFLAGS
60 CPPFLAGS="$CPPFLAGS $SDL_CFLAGS"
62 EXTRAOBJS=
64 dnl Check for SDL joystick
65 JOYSTICK_SUPPORT=no
66 AC_CHECK_HEADER(SDL_joystick.h, JOYSTICK_SUPPORT=SDL,
67         dnl Check for Linux joystick as a backup
68         AC_CHECK_HEADER(linux/joystick.h, JOYSTICK_SUPPORT=LINUX))
70 dnl Check for X (so we can find the OpenGL headers)
71 AC_PATH_XTRA
72 CFLAGS="$CFLAGS $X_CFLAGS"
73 CXXFLAGS="$CXXFLAGS $X_CFLAGS"
74 LIBS="$LIBS $X_LIBS"
76 dnl Check for OpenGL support in SDL
77 AC_ARG_WITH(opengl,
78             [  --without-opengl        Don't use SDL OpenGL support],
79             OPENGL_SUPPORT=$withval, OPENGL_SUPPORT=yes)
80 if test x$OPENGL_SUPPORT \!= xno; then
81   AC_MSG_CHECKING([for OpenGL support in SDL])
82   AC_TRY_COMPILE([#include <SDL.h>], [int foo() { int x = SDL_OPENGL; }],
83                  OPENGL_SUPPORT=yes, OPENGL_SUPPORT=no)
84   AC_MSG_RESULT($OPENGL_SUPPORT)
85   # Check for the GL libs
86   if test x$OPENGL_SUPPORT \!= xno; then
87     oldCPPFLAGS=$CPPFLAGS
88     oldLIBS=$LIBS
89     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
90     LIBS="$LIBS $SDL_LIBS"
91     AC_CHECK_LIB(GL, glBegin,
92       AC_CHECK_HEADER(GL/gl.h, , OPENGL_SUPPORT=no),
93       OPENGL_SUPPORT=no
94     )
95     LIBS=$oldLIBS
96     CPPFLAGS=$oldCPPFLAGS
97   fi
101 if test x$OPENGL_SUPPORT \!= xno; then
102   AC_DEFINE(SDL_OPENGL_SUPPORT)
103   SDL_LIBS="$SDL_LIBS -lGL"
106 CPPFLAGS=$OLD_CPPFLAGS
108 if test x$JOYSTICK_SUPPORT \!= xno; then
109         AC_DEFINE(JOYSTICK_SUPPORT)
110         AC_DEFINE_UNQUOTED(${JOYSTICK_SUPPORT}_JOYSTICK_SUPPORT)
111         EXTRAOBJS="$EXTRAOBJS md-phil.o"
114 oldLIBS=$LIBS
115 LIBS="$LIBS $SDL_LIBS"
116 dnl Check for the SDL_WM_ToggleFullScreen function
117 AC_CHECK_FUNCS(SDL_WM_ToggleFullScreen)
118 LIBS=$oldLIBS
120 dnl Check for an Intel chip
121 AC_MSG_CHECKING([for x86 processor])
122 case $machtype in
123 i?86|BePC)
124         AC_MSG_RESULT([yes])
125         dnl Check if the user explicitly asked to not use nasm
126         AC_ARG_WITH(nasm,
127                     [  --without-nasm          Don't use NASM for assembler routines],
128                     USENASM=$withval,
129                     USENASM=yes)
130         if test x$USENASM \!= xno; then
131                 dnl Check for NASM
132                 AC_CHECK_PROG(NASM, nasm, nasm, [not found])
133                 if test x$NASM \!= "xnot found"; then
134                         dnl Find NASM object format
135                         AC_MSG_CHECKING([for NASM object format])
136                         cat >___DgSdFmTTeSt.asm <<EOF
137 bits 32
138 section .text
139 global main
140 global _main
141 global main_
142 main:
143 _main:
144 main_:
145         ret
147                         test -z $NASM_FMT &&
148                         for FMT in elf aout aoutb coff; do
149                                 $NASM -f $FMT ___DgSdFmTTeSt.asm
150                                 if $CC -o ___DgSdFmTTeSt ___DgSdFmTTeSt.o >&5
151                                 then
152                                         NASM_FMT=$FMT
153                                         break
154                                 fi
155                         done
156                         rm ___DgSdFmTTeSt*
157                         if test \! -z "$NASM_FMT"; then
158                                 AC_MSG_RESULT([$NASM_FMT])
159                                 ASM=true
161                                 dnl ELF doesn't use underscores, aout&coff do
162                                 if test x$NASM_FMT = xelf; then
163 changequote(<<,>>)
164                                         CHOP_="sed -e '/^_/s/^_//' -e '/_/s/\([][,.+    *:-]\)_/\1/g'"
165 changequote([,])
166                                 else
167                                         CHOP_=cat
168                                 fi
169                                 AM_CONDITIONAL(NO_USCORE,
170                                                test x$NASM_FMT = xelf)
172                                 dnl Check for MMX
173                                 AC_ARG_WITH(mmx,
174                                             [  --without-mmx           Don't use MMX routines, even if supported],
175                                             USEMMX=$withval,
176                                             USEMMX=yes)
177                                 AC_MSG_CHECKING([for MMX])
178                                 cat >___DgSdMmXTeSt.asm <<EOF
179 bits 32
180 section .text
181 global main
182 global _main
183 global main_
184 main:
185 _main:
186 main_:
187         emms
188         xor eax, eax    ; Return value of 0
189         ret
191                                 $NASM -f $NASM_FMT ___DgSdMmXTeSt.asm
192                                 $CC -o ___DgSdMmXTeSt ___DgSdMmXTeSt.o >&5
193                                 ./___DgSdMmXTeSt
194                                 MMXE=$?
195                                 rm ___DgSdMmXTeSt*
196                                 if test x$USEMMX \!= xno -a x$MMXE = x0; then
197                                         MMX=true
198                                         AC_MSG_RESULT([yes])
199                                 else
200                                         MMX=false
201                                         AC_MSG_RESULT([no])
202                                 fi
203                         else
204                                 AC_MSG_RESULT([not found])
205                                 ASM=false
206                                 MMX=false
207                         fi
208                 else
209                         ASM=false
210                         MMX=false
211                 fi
212         else
213                 ASM=false
214                 MMX=false
215         fi
216         if test x$ASM = xfalse; then
217                 AC_MSG_ERROR([
218 *** NASM is necessary on x86 platforms for assembler optimizations.
219 *** A package most likely came with your Unix distribution, but if one didn't,
220 *** it can be found at http://www.web-sites.co.uk/nasm/ (or at
221 *** http://www.bebits.com/ for BeOS)
222                 ])
223         fi
224         ;;
226         AC_MSG_RESULT([no])
227         ASM=false
228         MMX=false
229         ;;
230 esac
233 dnl We are free to use assembler! :)
234 if $ASM; then
235         EXTRAOBJS="$EXTRAOBJS asm_tiles.o ctv.o"
236         AC_DEFINE(ASM_TILES)
237         AC_DEFINE(ASM_CTV)
238         if $MMX; then
239                 EXTRAOBJS="$EXTRAOBJS mmx_memcpy.o"
240                 AC_DEFINE(MMX)
241                 AC_DEFINE(memcpy, mmx_memcpy)
242         else
243                 EXTRAOBJS="$EXTRAOBJS asm_memcpy.o"
244                 AC_DEFINE(memcpy, asm_memcpy)
245         fi
246         if test -f mz80/makez80.c; then
247                 CPUDIRS=mz80
248                 MZ80="mz80/mz80.o"
249         fi
252 dnl Use ZZ80 if MZ80 isn't here
253 AC_MSG_CHECKING([whether MZ80 is available])
254 if test -z "$MZ80"; then
255         AC_MSG_RESULT([no])
256         EXTRAOBJS="$EXTRAOBJS zz80.o"
257 else
258         AC_MSG_RESULT([yes])
261 dnl Figure out what emus we're using (StarScream, Musashi, or both)
262 AC_ARG_WITH(star,
263             [  --without-star          Don't use StarScream assembler CPU core if available], 
264             USESTAR=$withval, USESTAR=yes)
265 AC_ARG_WITH(musa,
266             [  --without-musa          Don't use Musashi C CPU core], 
267             USEMUSA=$withval, USEMUSA=yes)
269 AC_MSG_CHECKING([whether StarScream is available])
270 if test x$ASM = xfalse -o \! -f star/star.c -o x$USESTAR = xno; then
271         AC_MSG_RESULT([no])
272         dnl We have to use musa
273         if test x$USEMUSA = xno; then
274                 AC_MSG_ERROR([*** You have disabled both CPU cores. You need at least one.])
275         fi
276         CPUDIRS="$CPUDIRS musa"
277         MUSA="-Lmusa -lmusa68"
278         AC_DEFINE(COMPILE_WITH_MUSA)
279 else
280         AC_MSG_RESULT([yes])
281         if test x$USEMUSA \!= xno; then
282                 CPUDIRS="$CPUDIRS musa"
283                 MUSA="-Lmusa -lmusa68"
284                 AC_DEFINE(COMPILE_WITH_MUSA)
285         fi
286         CPUDIRS="$CPUDIRS star"
287         STAR="star/starcpu.o"
288         AC_DEFINE(COMPILE_WITH_STAR)
291 dnl Output variables
292 AC_SUBST(INTERFACE)
293 AC_SUBST(NASM)
294 AC_SUBST(NASM_FMT)
295 AC_SUBST(CHOP_)
296 AC_SUBST(CPUDIRS)
297 AC_SUBST(MUSA)
298 AC_SUBST(STAR)
299 AC_SUBST(MZ80)
300 AC_SUBST(EXTRAOBJS)
302 dnl Done!
303 AC_OUTPUT([
304         Makefile
305         star/Makefile
306         musa/Makefile
307         mz80/Makefile
308         sdl/Makefile