- FM synthesizer now usable with MIDI output (simple piano only)
[bochs-mirror.git] / configure.in
blob5dcf1aacba75d40ce7313bee945d14bf5be00873
1 dnl // Process this file with autoconf to produce a configure script.
3 AC_PREREQ(2.50)
4 AC_INIT(bochs.h)
5 AC_REVISION([[$Id: configure.in,v 1.372 2008/07/12 15:20:18 vruppert Exp $]])
6 AC_CONFIG_HEADER(config.h)
7 AC_CONFIG_HEADER(ltdlconf.h)
9 dnl // Put Bochs version information right here so that it gets substituted
10 dnl // into all the right places.
11 VERSION="2.3.7.cvs"
12 VER_STRING="2.3.7.cvs"
13 dnl // WIN_VER_STRING format is "a, b, c, d"
14 dnl // d should be 0 for release and 1 for cvs version
15 WIN_VER_STRING="2, 3, 7, 1"
16 REL_STRING="Build from CVS snapshot, after release 2.3.7"
18 changequote(<<, >>)
19 changequote([, ])
21 dnl Detect host and target
22 AC_CANONICAL_HOST
23 AC_CANONICAL_TARGET
25 AC_MSG_CHECKING(if you are configuring for another platform)
26 if test "$cross_compiling" = yes -o "$target_os" = "windows"; then
27   AC_MSG_RESULT(yes)
28   cross_configure=1
29 else
30   AC_MSG_RESULT(no)
31   cross_configure=0
34 # this case statement defines the compile flags which are needed to
35 # compile bochs on a platform.  Don't put things like optimization settings
36 # into the configure.in file, since people will want to be able to change
37 # those settings by defining CFLAGS and CXXFLAGS before running configure.
38 NO_LT=0
39 need_dlcompat_for_plugins=0
40 case "$target" in
41   *-pc-windows* | *-pc-winnt*)
42     DEFAULT_GUI=win32                 # default to win32 gui
43     ;;
44   *-pc-cygwin* | *-pc-mingw32*)
45     NO_LT=1   # do not use libtool at all on cygwin
46     if test "$with_term" = yes; then
47       # ncurses won't compile with -mno-cygwin or -DWIN32
48       # also, I can't get it to link without this -DBROKEN_LINKER=1 hack.
49       # see /usr/include/curses.h for details.
50       ADD_FLAGS="-DBROKEN_LINKER=1"
51     else
52       # default case
53       ADD_FLAGS="-mno-cygwin -DWIN32"   # required for cygwin compile+win32 gui
54       DEFAULT_GUI=win32                 # default to win32 gui
55     fi
56     ;;
57   *-macosx* | *-darwin*)
58     ADD_FLAGS="-fpascal-strings -fno-common -Wno-four-char-constants -Wno-unknown-pragmas -Dmacintosh"      # required for macosx compile
59     DEFAULT_GUI=carbon                # default to carbon
60     need_dlcompat_for_plugins=1
61     ;;
62   *-macos*)
63     DEFAULT_GUI=macos                 # macos defaults to macos
64     ;;
65   *-beos*)
66     ADD_FLAGS="-Wno-multichar"
67     DEFAULT_GUI=beos                  # beos defaults to beos
68     ;;
69   *-amigaos* | *-morphos*)
70     DEFAULT_GUI=amigaos               # amigaos or morphos defaults to amigaos gui
71     ;;
72   *-solaris*)
73     ADD_FLAGS="-D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__"      # required for correct function prototypes
74     LIBS="$LIBS -lsocket -lnsl"
75     DEFAULT_GUI=x11
76     ;;
77   *)
78     DEFAULT_GUI=x11
79     ;;
80 esac
81 if test "${ADD_FLAGS:+set}" = set; then
82       CFLAGS="$CFLAGS $ADD_FLAGS"
83       CXXFLAGS="$CXXFLAGS $ADD_FLAGS"
84       CPPFLAGS="$CPPFLAGS $ADD_FLAGS"
87 AC_MSG_CHECKING(for standard CFLAGS on this platform)
88 AC_MSG_RESULT($ADD_FLAGS)
90 dnl // make sure X Windows is default if no other chosen
91 if (test "$with_sdl" != yes) && \
92    (test "$with_svga" != yes) && \
93    (test "$with_x11" != yes) && \
94    (test "$with_beos" != yes) && \
95    (test "$with_win32" != yes) && \
96    (test "$with_nogui" != yes) && \
97    (test "$with_term" != yes) && \
98    (test "$with_rfb" != yes) && \
99    (test "$with_amigaos" != yes) && \
100    (test "$with_carbon" != yes) && \
101    (test "$with_wx" != yes) && \
102    (test "$with_macos" != yes); then
103   # use DEFAULT_GUI.  Set the appropriate variable.
104   # DEFAULT_GUI must be set to one of the names above.  Otherwise, no
105   # valid $with_* variable will be set and who knows what will happen?
106   eval "with_${DEFAULT_GUI}=yes"
109 AC_PROG_CC
110 AC_PROG_CXX
111 AC_PROG_MAKE_SET
113 dnl------------ libtool configuration
114 dnl Configure libtool, and default to shared libraries.  Libtool will only be
115 dnl used for compiling and linking plugins.
116 AC_DISABLE_STATIC
117 dnl Check for dlopen support
118 AC_LIBTOOL_DLOPEN
119 dnl Configure libtool
120 AC_PROG_LIBTOOL
121 dnl Configure the ltdl library.  This must go after AC_PROG_LIBTOOL or
122 dnl else it disables shared libraries somehow.  The values from this macro
123 dnl are written to ltdlconf.h.
124 AC_LIB_LTDL
126 AC_PATH_XTRA
128 AC_C_BIGENDIAN
129 AC_C_INLINE
130 AC_CHECK_SIZEOF(unsigned char)
131 AC_CHECK_SIZEOF(unsigned short)
132 AC_CHECK_SIZEOF(unsigned int)
133 AC_CHECK_SIZEOF(unsigned long)
134 AC_CHECK_SIZEOF(unsigned long long)
135 AC_CHECK_SIZEOF(int *)
136 AC_CHECK_FUNCS(getenv, AC_DEFINE(BX_HAVE_GETENV))
137 AC_CHECK_FUNCS(setenv, AC_DEFINE(BX_HAVE_SETENV))
138 AC_CHECK_FUNCS(select, AC_DEFINE(BX_HAVE_SELECT))
139 AC_CHECK_FUNCS(snprintf, AC_DEFINE(BX_HAVE_SNPRINTF))
140 AC_CHECK_FUNCS(vsnprintf, AC_DEFINE(BX_HAVE_VSNPRINTF))
141 AC_CHECK_FUNCS(strtoull, AC_DEFINE(BX_HAVE_STRTOULL))
142 AC_CHECK_FUNCS(strtouq, AC_DEFINE(BX_HAVE_STRTOUQ))
143 AC_CHECK_FUNCS(strdup, AC_DEFINE(BX_HAVE_STRDUP))
144 AC_CHECK_FUNCS(strrev, AC_DEFINE(BX_HAVE_STRREV))
145 AC_CHECK_FUNCS(sleep, AC_DEFINE(BX_HAVE_SLEEP))
146 AC_CHECK_FUNCS(usleep, AC_DEFINE(BX_HAVE_USLEEP))
147 AC_CHECK_FUNCS(nanosleep, AC_DEFINE(BX_HAVE_NANOSLEEP))
148 AC_CHECK_FUNCS(abort, AC_DEFINE(BX_HAVE_ABORT))
149 AC_CHECK_FUNCS(gettimeofday, AC_DEFINE(BX_HAVE_GETTIMEOFDAY))
150 AC_CHECK_TYPE(socklen_t, AC_DEFINE(BX_HAVE_SOCKLEN_T), , [#include <sys/types.h>
151 #include <sys/socket.h>])
152 AC_CHECK_MEMBER(struct sockaddr_in.sin_len, AC_DEFINE(BX_HAVE_SOCKADDR_IN_SIN_LEN), , [#include <sys/socket.h>
153 #include <netinet/in.h> ])
154 AC_CHECK_FUNCS(mkstemp, AC_DEFINE(BX_HAVE_MKSTEMP))
155 AC_CHECK_HEADER(sys/mman.h, AC_DEFINE(BX_HAVE_SYS_MMAN_H))
156 AC_CHECK_FUNCS(timelocal, AC_DEFINE(BX_HAVE_TIMELOCAL))
157 AC_CHECK_FUNCS(gmtime, AC_DEFINE(BX_HAVE_GMTIME))
158 AC_CHECK_FUNCS(mktime, AC_DEFINE(BX_HAVE_MKTIME))
160 dnl As of autoconf 2.53, the standard largefile test fails for Linux/gcc.
161 dnl It does not put the largefiles arguments into CFLAGS, even though Linux/gcc
162 dnl does need them.  Since wxWidgets had already solved this exact problem,
163 dnl Bryce asked Vadim Zeitlin of the wxWidgets project if Bochs could grab
164 dnl their largefile test, and he said it was fine.  The re-implemented
165 dnl AC_SYS_LARGEFILE test can be found in aclocal.m4.
166 AC_SYS_LARGEFILE
168 dnl This logic came from wxWidgets as well.  Bryce added the CFLAGS and
169 dnl CXXFLAGS lines, since Bochs makefiles don't use CPPFLAGS at all.
171 dnl we need to define _FILE_OFFSET_BITS or _LARGE_FILES on the compiler command
172 dnl line because otherwise the system headers risk being included before
173 dnl config.h which defines these constants leading to inconsistent
174 dnl sizeof(off_t) in different source files of the same program and linking
175 dnl problems
176 if test "x$wx_largefile" = "xyes"; then
177     if test "x$ac_cv_sys_file_offset_bits" = "x64"; then
178         BX_LARGEFILE_FLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGE_FILES"
179     else
180         BX_LARGEFILE_FLAGS="-D_LARGE_FILES"
181     fi
182     CPPFLAGS="$CPPFLAGS $BX_LARGEFILE_FLAGS"
183     CFLAGS="$CFLAGS $BX_LARGEFILE_FLAGS"
184     CXXFLAGS="$CXXFLAGS $BX_LARGEFILE_FLAGS"
186 dnl ---end of largefile tests
188 dnl Add the -lm library if math functions cannot be used without it.
189 dnl This check is important on cygwin because of the bizarre way that they
190 dnl have organized functions into libraries.  On cygwin, both libc.a and
191 dnl libm.a are symbolic links to a single lib libcygwin.a.  This means that
192 dnl   1) linking with -lm is not necessary, and
193 dnl   2) linking with -lm is dangerous if the order of libraries is wrong
194 dnl In particular, if you compile any program with -mno-cygwin and link with
195 dnl -lm, it will crash instantly when it is run.  This happens because the
196 dnl linker incorrectly links the Cygwin libm.a (==libcygwin.a), which replaces
197 dnl the ___main function instead of allowing it to be defined by
198 dnl /usr/lib/mingw/libmingw32.a as it should be.
200 dnl On MacOS X, this test will find that -lm is unnecessary and leave it out.
202 dnl Just check a few math functions. If they are all found without
203 dnl -lm, then we must not need -lm.
204 have_cos=0
205 have_floor=0
206 AC_CHECK_FUNCS(cos, have_cos=1)
207 AC_CHECK_FUNCS(floor, have_floor=1)
208 AC_MSG_CHECKING(if math functions link without -lm)
209 if test "$have_cos" = 1 -a "$have_floor" = 1; then
210     AC_MSG_RESULT(yes)
211 else
212     AC_MSG_RESULT(no)
213     LIBS="$LIBS -lm"
214     # use different functions to bypass configure caching
215     have_sin=0
216     have_ceil=0
217     AC_CHECK_FUNCS(sin, have_sin=1)
218     AC_CHECK_FUNCS(ceil, have_ceil=1)
219     AC_MSG_CHECKING(if math functions link with -lm)
220     if test "$have_sin" = 1 -a "$have_ceil" = 1; then
221         AC_MSG_RESULT(yes)
222     else
223         AC_MSG_RESULT(no)
224         # not sure we should warn the user, crash, etc.
225         # expect link failure
226     fi
229 AC_MSG_CHECKING(for struct timeval)
230 AC_TRY_COMPILE([#include <sys/time.h>],
231     [struct timeval x;],
232     [
233       AC_MSG_RESULT(yes)
234       AC_DEFINE(BX_HAVE_STRUCT_TIMEVAL, 1)
235     ],
236     AC_MSG_RESULT(no))
238 AC_MSG_CHECKING(if compiler allows empty structs)
239 AC_TRY_COMPILE([], [typedef struct { } junk;],
240     AC_MSG_RESULT(yes),
241     [
242       AC_DEFINE(BX_NO_EMPTY_STRUCTS)
243       AC_MSG_RESULT(no)
244     ])
246 AC_MSG_CHECKING(if compiler allows __attribute__)
247 AC_TRY_COMPILE([], [typedef struct { } __attribute__ ((packed)) junk;],
248     AC_MSG_RESULT(yes),
249     [
250       AC_MSG_RESULT(no)
251       AC_DEFINE(BX_NO_ATTRIBUTES)
252     ])
254 AC_LANG_SAVE
255 AC_LANG_CPLUSPLUS
256 AC_MSG_CHECKING(for hash_map)
257 AC_TRY_COMPILE([#include <hash_map>], [],
258    [
259      AC_MSG_RESULT(yes)
260      AC_DEFINE(BX_HAVE_HASH_MAP)
261    ], AC_MSG_RESULT(no))
262 AC_MSG_CHECKING(for hash_map.h)
263 AC_TRY_COMPILE([#include <hash_map.h>], [],
264    [
265      AC_MSG_RESULT(yes)
266      AC_DEFINE(BX_HAVE_HASH_MAP_H)
267    ], AC_MSG_RESULT(no))
268 AC_MSG_CHECKING(for set)
269 AC_TRY_COMPILE([#include <set>], [],
270    [
271      AC_MSG_RESULT(yes)
272      AC_DEFINE(BX_HAVE_SET)
273    ], AC_MSG_RESULT(no))
274 AC_MSG_CHECKING(for set.h)
275 AC_TRY_COMPILE([#include <set.h>], [],
276    [
277      AC_MSG_RESULT(yes)
278      AC_DEFINE(BX_HAVE_SET_H)
279    ], AC_MSG_RESULT(no))
280 AC_LANG_RESTORE
282 dnl Implement a check for each gui library to see if has a chance of compiling.
283 if test "$with_all_libs" = yes; then
284   if test "$cross_configure" = 1; then
285     AC_MSG_WARN([[Using --with-all-libs while cross configuring is very unlikely to be what you want.  You should specify the --with-* args yourself.]])
286   fi
287   if test "$with_beos" != yes; then
288     can_compile_beos=1
289     AC_CHECK_HEADER([app/Application.h], [], [ can_compile_beos=0 ])
290     AC_CHECK_HEADER([interface/Window.h], [], [ can_compile_beos=0 ])
291     AC_CHECK_HEADER([interface/View.h], [], [ can_compile_beos=0 ])
292     if test $can_compile_beos = 1; then
293       with_beos=yes
294     fi
295   fi
297   if test "$with_amigaos" != yes; then
298     can_compile_amigaos=1
299     AC_CHECK_HEADER([proto/intuition.h], [], [ can_compile_amigaos=0 ])
300     AC_CHECK_HEADER([intuition/intuitionbase.h], [], [ can_compile_amigaos=0 ])
301     AC_CHECK_HEADER([cybergraphx/cybergraphics.h], [], [ can_compile_amigaos=0 ])
302     AC_CHECK_HEADER([devices/trackdisk.h], [], [ can_compile_amigaos=0 ])
303     if test $can_compile_amigaos = 1; then
304       with_amigaos=yes
305     fi
306   fi
308   if test "$with_macos" != yes; then
309     can_compile_macos=1
310     AC_CHECK_HEADER([Quickdraw.h], [], [ can_compile_macos=0 ])
311     AC_CHECK_HEADER([Dialogs.h], [], [ can_compile_macos=0 ])
312     if test $can_compile_macos = 1; then
313       with_macos=yes
314     fi
315   fi
317   if test "$with_carbon" != yes; then
318     can_compile_carbon=1
319     AC_CHECK_HEADER([Carbon.h], [], [ can_compile_carbon=0 ])
320     AC_CHECK_HEADER([ApplicationServices/ApplicationServices.h], [], [ can_compile_carbon=0 ])
321     if test $can_compile_carbon = 1; then
322       with_carbon=yes
323     fi
324   fi
326   if test "$with_win32" != yes; then
327     can_compile_win32=1
328     AC_CHECK_HEADER([windows.h], [], [ can_compile_win32=0 ])
329     AC_CHECK_HEADER([commctrl.h], [], [ can_compile_win32=0 ])
330     if test $can_compile_win32 = 1; then
331       with_win32=yes
332     fi
333   fi
335   if test "$with_sdl" != yes; then
336     can_compile_sdl=1
337     AC_CHECK_HEADER([SDL/SDL.h], [], [ can_compile_sdl=0 ])
338     AC_CHECK_HEADER([SDL/SDL_main.h], [], [ can_compile_sdl=0 ])
339     if test $can_compile_sdl = 1; then
340       with_sdl=yes
341     fi
342   fi
344   if test "$with_svga" != yes; then
345     can_compile_svga=1
346     AC_CHECK_HEADER([vga.h], [], [ can_compile_svga=0 ])
347     AC_CHECK_HEADER([vgagl.h], [], [ can_compile_svga=0 ])
348     if test $can_compile_svga = 1; then
349       with_svga=yes
350     fi
351   fi
353   if test "$with_x11" != yes; then
354     can_compile_x11=1
355     AC_CHECK_HEADER([X11/Xlib.h], [], [ can_compile_x11=0 ])
356     AC_CHECK_HEADER([X11/Xutil.h], [], [ can_compile_x11=0 ])
357     if test $can_compile_x11 = 1; then
358       with_x11=yes
359     fi
360   fi
362   if test "$with_rfb" != yes; then
363     can_compile_rfb=1
364     case $target in
365       *-pc-windows* | *-pc-winnt* | *-pc-cygwin* | *-pc-mingw32*)
366         AC_CHECK_HEADER([winsock.h], [], [ can_compile_rfb=0 ])
367         AC_CHECK_HEADER([process.h], [], [ can_compile_rfb=0 ])
368         ;;
369       *)
370         AC_CHECK_HEADER([sys/socket.h], [], [ can_compile_rfb=0 ])
371         AC_CHECK_HEADER([netinet/tcp.h], [], [ can_compile_rfb=0 ])
372         AC_CHECK_HEADER([pthread.h], [], [ can_compile_rfb=0 ])
373         ;;
374     esac
375     if test $can_compile_rfb = 1; then
376       with_rfb=yes
377     fi
378   fi
380   if test "$with_term" != yes; then
381     can_compile_term=1
382     AC_CHECK_HEADER([curses.h], [], [ can_compile_term=0 ])
383     AC_CHECK_HEADER([signal.h], [], [ can_compile_term=0 ])
384     if test $can_compile_term = 1; then
385       with_term=yes
386     fi
387   fi
389   if test "$with_nogui" != yes; then
390     with_nogui=yes
391   fi
392 fi    # end of if $with_all_libs = yes
394 AC_MSG_CHECKING(for idle hack)
395 AC_ARG_ENABLE(idle-hack,
396   [  --enable-idle-hack                use Roland Mainz's idle hack],
397   [if test "$enableval" = yes; then
398     AC_MSG_RESULT(yes)
399     AC_DEFINE(BX_USE_IDLE_HACK, 1)
400    else
401     AC_MSG_RESULT(no)
402     AC_DEFINE(BX_USE_IDLE_HACK, 0)
403    fi],
404   [
405     AC_MSG_RESULT(no)
406     AC_DEFINE(BX_USE_IDLE_HACK, 0)
407     ]
408   )
409 AC_SUBST(BX_USE_IDLE_HACK)
411 AC_CHECK_HEADER(dlfcn.h, AC_DEFINE(BX_HAVE_DLFCN_H, 1))
412 AC_CHECK_HEADER(assert.h, AC_DEFINE(HAVE_ASSERT_H, 1))
414 AC_MSG_CHECKING(for plugins support)
415 AC_ARG_ENABLE(plugins,
416   [  --enable-plugins                  enable plugins],
417   [if test "$enableval" = yes; then
418      bx_plugins=1
419    else
420      bx_plugins=0
421    fi],
422   [
423     bx_plugins=0
424     ]
425   )
427 if test "$bx_plugins" = 1; then
428   AC_MSG_RESULT(yes)
429   AC_DEFINE(BX_PLUGINS, 1)
430   GUI_NON_PLUGIN_OBJS='$(OBJS_THAT_CANNOT_BE_PLUGINS)'
431   GUI_PLUGIN_OBJS='$(OBJS_THAT_CAN_BE_PLUGINS)'
432   DEFINE_PLUGIN_PATH='-DBX_PLUGIN_PATH="\"${plugdir}\""'
433   # and the $(OBJS_THAT_SUPPORT_OTHER_PLUGINS) will be built and linked
434   # by special link rules for the plugins that they support.
435   LIBS="$LIBS $LIBADD_DL"
436   PLUGIN_VAR='ltdl.o'
437   PLUGIN_TARGET=bochs_plugins
438   INSTALL_PLUGINS_VAR=install_libtool_plugins
439   NONPLUGIN_GUI_LINK_OPTS=''
440 else
441   AC_MSG_RESULT(no)
442   bx_plugins=0
443   AC_DEFINE(BX_PLUGINS, 0)
444   GUI_NON_PLUGIN_OBJS='$(OBJS_THAT_CANNOT_BE_PLUGINS) $(OBJS_THAT_CAN_BE_PLUGINS) $(OBJS_THAT_SUPPORT_OTHER_PLUGINS)'
445   GUI_PLUGIN_OBJS=''
446   NONPLUGIN_GUI_LINK_OPTS='$(GUI_LINK_OPTS)'
448 AC_SUBST(DEFINE_PLUGIN_PATH)
449 AC_SUBST(NONPLUGIN_GUI_LINK_OPTS)
451 # copy gui variables into iodev variables.  Later, we will add to the gui
452 # objs list, according to which display libraries are enabled.
453 IODEV_NON_PLUGIN_OBJS=$GUI_NON_PLUGIN_OBJS
454 IODEV_PLUGIN_OBJS=$GUI_PLUGIN_OBJS
456 # on MacOSX if they enabled plugins, make sure that dlopen() was found.
457 # It is provided by a library called dlcompat.
458 if test "$bx_plugins" = 1 -a "$need_dlcompat_for_plugins" = 1; then
459   have_dlopen=0
460   AC_CHECK_LIB(dl, dlopen, [have_dlopen=1])
461   AC_MSG_CHECKING(if you have dlcompat, required for MacOSX plugins)
462   if test "$have_dlopen" = 0; then
463     AC_MSG_RESULT(no)
464     AC_MSG_ERROR([To use plugins on MacOSX you must use a library called dlcompat.  The configure script was not able to find dlcompat.  If it is already installed then you must set up your environment variables to point to it, as is done in .conf.macosx.  If you cannot resolve this, you should turn off plugins.])
465   else
466     AC_MSG_RESULT(yes)
467   fi
470 AC_MSG_CHECKING(if compiler allows blank labels)
471 AC_TRY_COMPILE([], [ { label1: } ],
472     AC_MSG_RESULT(yes),
473     [
474       AC_MSG_RESULT(no)
475       AC_DEFINE(BX_NO_BLANK_LABELS)
476     ])
478 AC_MSG_CHECKING(if compiler allows LL for 64-bit constants)
479 AC_TRY_COMPILE([], [ { 42LL; } ],
480     AC_MSG_RESULT(yes),
481     [
482       AC_MSG_RESULT(no)
483       AC_DEFINE(BX_64BIT_CONSTANTS_USE_LL, 0)
484     ])
486 use_x86_64=0
487 AC_MSG_CHECKING(for x86-64 support)
488 AC_ARG_ENABLE(x86-64,
489   [  --enable-x86-64                   compile in support for x86-64 instructions],
490   [if test "$enableval" = yes; then
491     AC_MSG_RESULT(yes)
492     OBJS64='$(OBJS64)'
493     AC_DEFINE(BX_SUPPORT_X86_64, 1)
494     use_x86_64=1
495    else
496     AC_MSG_RESULT(no)
497     OBJS64=''
498     AC_DEFINE(BX_SUPPORT_X86_64, 0)
499    fi
500    ],
501   [
502     AC_MSG_RESULT(no)
503     OBJS64=''
504     AC_DEFINE(BX_SUPPORT_X86_64, 0)
505     ]
506   )
507 AC_SUBST(OBJS64)
509 use_smp=0
510 AC_MSG_CHECKING(for SMP support)
511 AC_ARG_ENABLE(smp,
512   [  --enable-smp                      compile in support for SMP configurations],
513   [if test "$enableval" = yes; then
514     AC_MSG_RESULT(yes)
515     AC_DEFINE(BX_SUPPORT_SMP, 1)
516     AC_DEFINE(BX_USE_CPU_SMF, 0)
517     use_smp=1
518    else
519     AC_MSG_RESULT(no)
520     AC_DEFINE(BX_SUPPORT_SMP, 0)
521    fi
522    ],
523   [
524     AC_MSG_RESULT(no)
525     AC_DEFINE(BX_SUPPORT_SMP, 0)
526     ]
527   )
529 AC_MSG_CHECKING(for cpu level)
530 AC_ARG_ENABLE(cpu-level,
531   [  --enable-cpu-level                select cpu level (3,4,5,6)],
532   [case "$enableval" in
533      3)
534        AC_MSG_RESULT(3)
535        AC_DEFINE(BX_CPU_LEVEL, 3)
536        AC_DEFINE(BX_CPU_LEVEL_HACKED, 3)
537        ;;
538      4)
539        AC_MSG_RESULT(4)
540        AC_DEFINE(BX_CPU_LEVEL, 4)
541        AC_DEFINE(BX_CPU_LEVEL_HACKED, 4)
542        ;;
543      5)
544        AC_MSG_RESULT(5)
545        AC_DEFINE(BX_CPU_LEVEL, 5)
546        AC_DEFINE(BX_CPU_LEVEL_HACKED, 5)
547        ;;
548      6)
549        AC_MSG_RESULT(6)
550        AC_DEFINE(BX_CPU_LEVEL, 6)
551        AC_DEFINE(BX_CPU_LEVEL_HACKED, 6)
552        ;;
553      *)
554        echo " "
555        echo "ERROR: you must supply a valid CPU level to --enable-cpu-level"
556        exit 1
557        ;;
558    esac
559    bx_cpu_level=$enableval
560    if test "$use_smp" = 1 -a "$enableval" -lt 6; then
561      echo "ERROR: with >1 processor, use --enable-cpu-level=6"
562      exit 1
563    fi
564   ],
565   [
566     # for multiprocessors or x86-64, cpu level must be 6
567     if test "$use_smp" = 1 -o "$use_x86_64" = 1; then
568       AC_MSG_RESULT(6)
569       AC_DEFINE(BX_CPU_LEVEL, 6)
570       AC_DEFINE(BX_CPU_LEVEL_HACKED, 6)
571       bx_cpu_level=6
572     else
573       AC_MSG_RESULT(5)
574       AC_DEFINE(BX_CPU_LEVEL, 5)
575       AC_DEFINE(BX_CPU_LEVEL_HACKED, 5)
576       bx_cpu_level=5
577     fi
578   ]
579   )
582 AC_MSG_CHECKING(for APIC support)
583 AC_ARG_ENABLE(apic,
584   [  --enable-apic                     enable APIC support],
585   [if test "$enableval" = yes; then
586     AC_MSG_RESULT(yes)
587     AC_DEFINE(BX_SUPPORT_APIC, 1)
588     IOAPIC_OBJS='ioapic.o'
589    else
590     AC_MSG_RESULT(no)
591     if test "$use_smp" = 1; then
592       echo "ERROR: With SMP configuration you must use --enable-apic"
593       exit 1
594     fi
595     AC_DEFINE(BX_SUPPORT_APIC, 0)
596     IOAPIC_OBJS=''
597    fi
598    ],
599   [
600     if test "$use_smp" = 1 -o "$bx_cpu_level" -gt 5; then
601       # enable APIC by default, if SMP configuration or if cpulevel>5
602       AC_MSG_RESULT(yes)
603       AC_DEFINE(BX_SUPPORT_APIC, 1)
604       IOAPIC_OBJS='ioapic.o'
605     else
606       AC_MSG_RESULT(no)
607       AC_DEFINE(BX_SUPPORT_APIC, 0)
608       IOAPIC_OBJS=''
609      fi
610    ]
611   )
612 AC_SUBST(IOAPIC_OBJS)
614 AC_CHECK_HEADER(zlib.h, [AC_CHECK_LIB(z, gzopen, AC_DEFINE(BX_HAVE_ZLIB,1))] )
616 AC_MSG_CHECKING(for compressed hard disk image support)
617 AC_ARG_ENABLE(compressed-hd,
618   [  --enable-compressed-hd            allows compressed (zlib) hard disk image (not implemented yet)],
619   [if test "$enableval" = yes; then
620     AC_MSG_RESULT(yes)
621     AC_DEFINE(BX_COMPRESSED_HD_SUPPORT, 1)
622     LIBS="$LIBS -lz"
623    else
624     AC_MSG_RESULT(no)
625     AC_DEFINE(BX_COMPRESSED_HD_SUPPORT, 0)
626    fi],
627   [
628     AC_MSG_RESULT(no)
629     AC_DEFINE(BX_COMPRESSED_HD_SUPPORT, 0)
630     ]
631   )
632 AC_SUBST(BX_COMPRESSED_HD_SUPPORT)
634 AC_MSG_CHECKING(for NE2000 support)
635 AC_ARG_ENABLE(ne2000,
636   [  --enable-ne2000                   enable limited ne2000 support],
637   [if test "$enableval" = yes; then
638     AC_MSG_RESULT(yes)
639     AC_DEFINE(BX_SUPPORT_NE2K, 1)
640     NE2K_OBJS='ne2k.o'
641     networking=yes
642    else
643     AC_MSG_RESULT(no)
644     AC_DEFINE(BX_SUPPORT_NE2K, 0)
645     NE2K_OBJS=''
646     networking=no
647    fi],
648   [
649     AC_MSG_RESULT(no)
650     AC_DEFINE(BX_SUPPORT_NE2K, 0)
651     NE2K_OBJS=''
652     networking=no
653     ]
654   )
655 AC_SUBST(NE2K_OBJS)
657 AC_MSG_CHECKING(for ACPI support)
658 AC_ARG_ENABLE(acpi,
659   [  --enable-acpi                     enable ACPI support],
660   [if test "$enableval" = yes; then
661     AC_MSG_RESULT(yes)
662     AC_DEFINE(BX_SUPPORT_ACPI, 1)
663    else
664     AC_MSG_RESULT(no)
665     AC_DEFINE(BX_SUPPORT_ACPI, 0)
666    fi],
667   [
668     AC_MSG_RESULT(no)
669     AC_DEFINE(BX_SUPPORT_ACPI, 0)
670     ]
671   )
672 AC_SUBST(BX_SUPPORT_ACPI)
674 AC_MSG_CHECKING(for i440FX PCI support)
675 AC_ARG_ENABLE(pci,
676   [  --enable-pci                      enable limited i440FX PCI support],
677   [if test "$enableval" = yes; then
678     AC_MSG_RESULT(yes)
679     AC_DEFINE(BX_SUPPORT_PCI, 1)
680     pci=1
681     PCI_OBJ='pci.o pci2isa.o pci_ide.o pcivga.o acpi.o'
682    else
683     AC_MSG_RESULT(no)
684     AC_DEFINE(BX_SUPPORT_PCI, 0)
685     pci=0
686     PCI_OBJ=''
687    fi],
688   [
689     AC_MSG_RESULT(no)
690     AC_DEFINE(BX_SUPPORT_PCI, 0)
691     pci=0
692     PCI_OBJ=''
693     ]
694   )
695 AC_SUBST(PCI_OBJ)
698 # PCI host device support
700 AC_MSG_CHECKING(for PCI host device mapping support)
701 AC_ARG_ENABLE(pcidev,
702   [  --enable-pcidev                   enable PCI host device mapping support (linux host only)],
703   [
704     if test "$enableval" = "yes"; then
705       AC_MSG_RESULT(yes)
706       if test "$pci" != "1"; then
707         AC_MSG_ERROR([PCI host device mapping requires PCI support])
708       fi
709       case "$target" in
710         *-linux*)
711           AC_MSG_NOTICE([Linux detected as host for PCI host device mapping])
712           linux_version=`uname -r`
713           case "$linux_version" in
714                 2.4*)
715                         PCIDEV_MODULE_MAKE_ALL="all-kernel24"
716                         KERNEL_MODULE_SUFFIX="o"
717                 ;;
718                 2.6*)
719                         PCIDEV_MODULE_MAKE_ALL="all-kernel26"
720                         KERNEL_MODULE_SUFFIX="ko"
721                 ;;
722                 *)
723                         AC_MSG_ERROR([Linux kernel 2.4 or 2.6 is required])
724                 ;;
725           esac
726           KERNELDIR="/lib/modules/$linux_version/build"
727           LSMOD="lsmod"
728           INSMOD="insmod"
729           RMMOD="rmmod"
730           DEPMOD="depmod"
731           AC_SUBST(KERNELDIR)
732           AC_SUBST(LSMOD)
733           AC_SUBST(INSMOD)
734           AC_SUBST(RMMOD)
735           AC_SUBST(DEPMOD)
736           AC_SUBST(PCIDEV_MODULE_MAKE_ALL)
737           AC_SUBST(KERNEL_MODULE_SUFFIX)
738         ;;
739         *)
740           AC_MSG_ERROR([PCI host device mapping requires Linux as host])
741         ;;
742       esac
743       AC_DEFINE(BX_SUPPORT_PCIDEV, 1)
744       PCI_OBJ="$PCI_OBJ pcidev.o"
745     else
746       AC_MSG_RESULT(no)
747       AC_DEFINE(BX_SUPPORT_PCIDEV, 0)
748     fi
749   ],
750   [
751     AC_MSG_RESULT(no)
752     AC_DEFINE(BX_SUPPORT_PCIDEV, 0)
753   ]
756 USBDEV_OBJS=''
757 SCSI_OBJS=''
758 AC_MSG_CHECKING(for limited USB support)
759 AC_ARG_ENABLE(usb,
760   [  --enable-usb                      enable limited USB support],
761   [if test "$enableval" = yes; then
762     AC_MSG_RESULT(yes)
763     AC_DEFINE(BX_SUPPORT_PCIUSB, 1)
764     PCI_OBJ="$PCI_OBJ pciusb.o"
765     USBDEV_OBJS="usb_hid.o usb_msd.o"
766     SCSI_OBJS="scsi_device.o"
767    else
768     AC_MSG_RESULT(no)
769     AC_DEFINE(BX_SUPPORT_PCIUSB, 0)
770    fi],
771   [
772     AC_MSG_RESULT(no)
773     AC_DEFINE(BX_SUPPORT_PCIUSB, 0)
774     ]
775   )
777 AC_SUBST(USBDEV_OBJS)
778 AC_SUBST(SCSI_OBJS)
780 AC_MSG_CHECKING(for PCI pseudo NIC support)
781 AC_ARG_ENABLE(pnic,
782   [  --enable-pnic                     enable PCI pseudo NIC support],
783   [if test "$enableval" = yes; then
784     AC_MSG_RESULT(yes)
785     AC_DEFINE(BX_SUPPORT_PCIPNIC, 1)
786     PCI_OBJ="$PCI_OBJ pcipnic.o"
787     networking=yes
788    else
789     AC_MSG_RESULT(no)
790     AC_DEFINE(BX_SUPPORT_PCIPNIC, 0)
791    fi],
792   [
793     AC_MSG_RESULT(no)
794     AC_DEFINE(BX_SUPPORT_PCIPNIC, 0)
795     ]
796   )
798 NETLOW_OBJS=''
799 if test "$networking" = yes; then
800   NETLOW_OBJS='eth.o eth_null.o eth_vnet.o'
801   AC_CHECK_HEADER(net/bpf.h, NETLOW_OBJS="$NETLOW_OBJS eth_fbsd.o")
802   AC_CHECK_HEADER(netpacket/packet.h, NETLOW_OBJS="$NETLOW_OBJS eth_linux.o")
803   case "$target" in
804     *-pc-windows* | *-pc-winnt* | *-pc-cygwin* | *-pc-mingw32*)
805     NETLOW_OBJS="$NETLOW_OBJS eth_win32.o"
806     ;;
807     *-macosx* | *-darwin*)
808     NETLOW_OBJS="$NETLOW_OBJS eth_tuntap.o"
809     AC_DEFINE(HAVE_TUNTAP, 1)
810     ;;
811     *)
812     AC_CHECK_HEADER(net/if.h, [
813         use_ethertap=yes
814         AC_DEFINE(BX_HAVE_NET_IF_H, 1)
815       ], [],
816       [
817       #include <sys/types.h>
818       #include <sys/socket.h>
819     ])
820     AC_CHECK_HEADER(linux/netlink.h, [
821         use_ethertap=yes
822       ], [],
823       [
824       #include <asm/types.h>
825       #include <sys/socket.h>
826     ])
828     if test "$use_ethertap" = yes; then
829       NETLOW_OBJS="$NETLOW_OBJS eth_tap.o eth_vde.o"
830       AC_DEFINE(HAVE_ETHERTAP, 1)
831       AC_DEFINE(HAVE_VDE, 1)
832     fi
834     AC_CHECK_HEADER(net/if_tun.h, [
835         use_tuntap=yes
836       ], [],
837       [
838       #include <sys/types.h>
839       #include <sys/socket.h>
840       #include <net/if.h>
841     ])
842     AC_CHECK_HEADER(linux/if_tun.h, [
843         use_tuntap=yes
844       ], [],
845       [
846       #include <asm/types.h>
847       #include <sys/socket.h>
848     ])
849     if test "$use_tuntap" = yes; then
850       NETLOW_OBJS="$NETLOW_OBJS eth_tuntap.o"
851       AC_DEFINE(HAVE_TUNTAP, 1)
852     fi
854     ;;
855   esac
856   AC_DEFINE(BX_NETWORKING, 1)
857 else
858   AC_DEFINE(BX_NETWORKING, 0)
861 AC_SUBST(NETLOW_OBJS)
864 AC_MSG_CHECKING(for large pages support)
865 AC_ARG_ENABLE(large-pages,
866   [  --enable-large-pages               support for large pages (2M/4M pages)],
867   [if test "$enableval" = yes; then
868     AC_MSG_RESULT(yes)
869     AC_DEFINE(BX_SUPPORT_LARGE_PAGES, 1)
870     support_large_pages=1
871    else
872     AC_MSG_RESULT(no)
873     AC_DEFINE(BX_SUPPORT_LARGE_PAGES, 0)
874     support_large_pages=0
875    fi],
876   [
877     if test "$bx_cpu_level" -gt 4; then
878       AC_MSG_RESULT(yes)
879       AC_DEFINE(BX_SUPPORT_LARGE_PAGES, 1)
880       support_large_pages=1
881     else
882       AC_MSG_RESULT(no)
883       AC_DEFINE(BX_SUPPORT_LARGE_PAGES, 0)
884       support_large_pages=0
885     fi
886     ]
887   )
890 AC_MSG_CHECKING(for PAE support)
891 AC_ARG_ENABLE(pae,
892   [  --enable-pae                      support Physical Address Extensions],
893   [if test "$enableval" = yes; then
894     AC_MSG_RESULT(yes)
895     AC_DEFINE(BX_SUPPORT_PAE, 1)
896     support_pae=1
897    else
898     AC_MSG_RESULT(no)
899     AC_DEFINE(BX_SUPPORT_PAE, 0)
900     support_pae=0
901    fi],
902   [
903     if test "$bx_cpu_level" -gt 5; then
904       AC_MSG_RESULT(yes)
905       AC_DEFINE(BX_SUPPORT_PAE, 1)
906       support_pae=1
907     else
908       AC_MSG_RESULT(no)
909       AC_DEFINE(BX_SUPPORT_PAE, 0)
910       support_pae=0
911     fi
912     ]
913   )
915 AC_MSG_CHECKING(for global pages support)
916 AC_ARG_ENABLE(global-pages,
917   [  --enable-global-pages             support for global pages in PDE/PTE],
918   [if test "$enableval" = yes; then
919     AC_MSG_RESULT(yes)
920     AC_DEFINE(BX_SUPPORT_GLOBAL_PAGES, 1)
921     support_global_pages=1
922    else
923     AC_MSG_RESULT(no)
924     AC_DEFINE(BX_SUPPORT_GLOBAL_PAGES, 0)
925     support_global_pages=0
926    fi],
927   [
928     if test "$bx_cpu_level" -gt 5; then
929       # enable by default
930       AC_MSG_RESULT(yes)
931       AC_DEFINE(BX_SUPPORT_GLOBAL_PAGES, 1)
932       support_global_pages=1
933     else
934       AC_MSG_RESULT(no)
935       AC_DEFINE(BX_SUPPORT_GLOBAL_PAGES, 0)
936       support_global_pages=0
937     fi
938     ]
939   )
941 if test "$bx_cpu_level" -lt 4 -a "$support_large_pages" = 1; then
942   AC_MSG_ERROR([for large paging support the CPU level must be >= 4])
945 if test "$bx_cpu_level" -lt 5 -a "$support_pae" = 1; then
946   AC_MSG_ERROR([for PAE support the CPU level must be >= 5])
949 if test "$bx_cpu_level" -lt 5 -a "$support_global_pages" = 1; then
950   AC_MSG_ERROR([for Global Pages support the CPU level must be >= 5])
953 AC_MSG_CHECKING(for MTRRs support)
954 AC_ARG_ENABLE(mtrr,
955   [  --enable-mtrr                     support for MTRRs],
956   [if test "$enableval" = yes; then
957     AC_MSG_RESULT(yes)
958     AC_DEFINE(BX_SUPPORT_MTRR, 1)
959    else
960     AC_MSG_RESULT(no)
961     AC_DEFINE(BX_SUPPORT_MTRR, 0)
962    fi],
963   [
964     if test "$bx_cpu_level" -gt 5; then
965       # enable by default
966       AC_MSG_RESULT(yes)
967       AC_DEFINE(BX_SUPPORT_MTRR, 1)
968     else
969       AC_MSG_RESULT(no)
970       AC_DEFINE(BX_SUPPORT_MTRR, 0)
971     fi
972     ]
973   )
975 AC_MSG_CHECKING(for guest to host TLB support)
976 AC_ARG_ENABLE(guest2host-tlb,
977   [  --enable-guest2host-tlb           support guest to host addr TLB for speed],
978   [if test "$enableval" = yes; then
979     AC_MSG_RESULT(yes)
980     speedup_guest2host_tlb=1
981    else
982     AC_MSG_RESULT(no)
983     speedup_guest2host_tlb=0
984    fi],
985   [
986     AC_MSG_RESULT(no)
987     speedup_guest2host_tlb=0
988     ]
989   )
991 AC_MSG_CHECKING(for repeated IO and mem copy speedups)
992 AC_ARG_ENABLE(repeat-speedups,
993   [  --enable-repeat-speedups          support repeated IO and mem copy speedups],
994   [if test "$enableval" = yes; then
995     AC_MSG_RESULT(yes)
996     speedup_repeat=1
997    else
998     AC_MSG_RESULT(no)
999     speedup_repeat=0
1000    fi],
1001   [
1002     AC_MSG_RESULT(no)
1003     speedup_repeat=0
1004     ]
1005   )
1007 AC_MSG_CHECKING(for instruction trace cache support)
1008 AC_ARG_ENABLE(trace-cache,
1009   [  --enable-trace-cache              support instruction trace cache],
1010   [if test "$enableval" = yes; then
1011     AC_MSG_RESULT(yes)
1012     speedup_TraceCache=1
1013    else
1014     AC_MSG_RESULT(no)
1015     speedup_TraceCache=0
1016    fi],
1017   [
1018     if test "$speedup_TraceCache " = 1; then
1019       AC_MSG_RESULT(yes)
1020       speedup_TraceCache=1
1021     else
1022       AC_MSG_RESULT(no)
1023       speedup_TraceCache=0
1024     fi
1025     ]
1026   )
1028 AC_MSG_CHECKING(for instruction cache support)
1029 AC_ARG_ENABLE(icache,
1030   [  --enable-icache                   support instruction cache],
1031   [if test "$enableval" = yes; then
1032     AC_MSG_RESULT(yes)
1033     speedup_iCache=1
1034    else
1035     AC_MSG_RESULT(no)
1036     speedup_iCache=0
1037    fi],
1038   [
1039     AC_MSG_RESULT(no)
1040     speedup_iCache=0
1041     ]
1042   )
1044 AC_MSG_CHECKING(for gcc fast function calls optimization)
1045 AC_ARG_ENABLE(fast-function-calls,
1046   [  --enable-fast-function-calls      support for fast function calls (gcc on x86 only)],
1047   [if test "$enableval" = yes; then
1048     AC_MSG_RESULT(yes)
1049     speedup_fastcall=1
1050    else
1051     AC_MSG_RESULT(no)
1052     speedup_fastcall=0
1053    fi],
1054   [
1055     AC_MSG_RESULT(no)
1056     speedup_fastcall=0
1057     ]
1058   )
1060 AC_MSG_CHECKING(for host specific inline assembly accelerations)
1061 AC_ARG_ENABLE(host-specific-asms,
1062   [  --enable-host-specific-asms       support for host specific inline assembly],
1063   [if test "$enableval" = yes; then
1064     AC_MSG_RESULT(yes)
1065     speedup_host_specific_asms=1
1066    else
1067     AC_MSG_RESULT(no)
1068     speedup_host_specific_asms=0
1069    fi],
1070   [
1071     AC_MSG_RESULT(no)
1072     speedup_host_specific_asms=0
1073     ]
1074   )
1076 AC_MSG_CHECKING(whether to ignore bad MSR references)
1077 AC_ARG_ENABLE(ignore-bad-msr,
1078   [  --enable-ignore-bad-msr           ignore bad MSR references],
1079   [if test "$enableval" = yes; then
1080     AC_MSG_RESULT(yes)
1081     AC_DEFINE(BX_IGNORE_BAD_MSR, 1)
1082    else
1083     AC_MSG_RESULT(no)
1084     AC_DEFINE(BX_IGNORE_BAD_MSR, 0)
1085    fi],
1086   [
1087     AC_MSG_RESULT(yes)
1088     AC_DEFINE(BX_IGNORE_BAD_MSR, 1)
1089     ]
1090   )
1092 AC_MSG_CHECKING(for port e9 hack)
1093 AC_ARG_ENABLE(port-e9-hack,
1094   [  --enable-port-e9-hack             writes to port e9 go to console],
1095   [if test "$enableval" = yes; then
1096     AC_MSG_RESULT(yes)
1097     AC_DEFINE(BX_PORT_E9_HACK, 1)
1098    else
1099     AC_MSG_RESULT(no)
1100     AC_DEFINE(BX_PORT_E9_HACK, 0)
1101    fi],
1102   [
1103     AC_MSG_RESULT(yes)
1104     AC_DEFINE(BX_PORT_E9_HACK, 1)
1105     ]
1106   )
1108 AC_MSG_CHECKING(show IPS)
1109 AC_ARG_ENABLE(show-ips,
1110   [  --enable-show-ips                 show IPS in Bochs log file],
1111   [if test "$enableval" = yes; then
1112     AC_MSG_RESULT(yes)
1113     AC_DEFINE(BX_SHOW_IPS, 1)
1114    else
1115     AC_MSG_RESULT(no)
1116     AC_DEFINE(BX_SHOW_IPS, 0)
1117    fi],
1118   [
1119     AC_MSG_RESULT(no)
1120     AC_DEFINE(BX_SHOW_IPS, 0)
1121     ]
1122   )
1124 AC_MSG_CHECKING(for use of .cpp as suffix)
1125 AC_ARG_ENABLE(cpp,
1126   [  --enable-cpp                      use .cpp as C++ suffix],
1127   [if test "$enableval" = yes; then
1128     AC_MSG_RESULT(yes)
1129     SUFFIX_LINE='.SUFFIXES: .cpp'
1130     CPP_SUFFIX='cpp'
1131    else
1132     AC_MSG_RESULT(no)
1133     SUFFIX_LINE='.SUFFIXES: .cc'
1134     CPP_SUFFIX='cc'
1135    fi],
1136   [
1137     AC_MSG_RESULT(no)
1138     SUFFIX_LINE='.SUFFIXES: .cc'
1139     CPP_SUFFIX='cc'
1140     ]
1141   )
1142 AC_SUBST(SUFFIX_LINE)
1143 AC_SUBST(CPP_SUFFIX)
1145 if test "$enable_cpp" = yes; then
1146   echo "moving .cc source files to .cpp"
1147   sourcefiles=`find . -name "*.cc" -print`
1148   if test "$sourcefiles" != ""; then
1149     for ccname in $sourcefiles
1150     do
1151       cppname=`echo $ccname | sed -e "s/\.cc$/.cpp/"`
1152       echo "mv $ccname $cppname"
1153       mv   $ccname $cppname
1154     done
1155   else
1156     echo "no more .cc source files to rename"
1157   fi
1162 AC_MSG_CHECKING(for Bochs internal debugger support)
1163 AC_ARG_ENABLE(debugger,
1164   [  --enable-debugger                 compile in support for Bochs internal debugger],
1165   [if test "$enableval" = yes; then
1166     AC_MSG_RESULT(yes)
1167     AC_DEFINE(BX_DEBUGGER, 1)
1168     DEBUGGER_VAR='$(DEBUGGER_LIB)'
1169     bx_debugger=1
1170    else
1171     AC_MSG_RESULT(no)
1172     AC_DEFINE(BX_DEBUGGER, 0)
1173     DEBUGGER_VAR=''
1174     bx_debugger=0
1175    fi
1176    ],
1177   [
1178     AC_MSG_RESULT(no)
1179     AC_DEFINE(BX_DEBUGGER, 0)
1180     DEBUGGER_VAR=''
1181     bx_debugger=0
1182     ]
1183   )
1184 AC_SUBST(DEBUGGER_VAR)
1186 AC_MSG_CHECKING(for external debugger)
1187 EXT_DEBUG_OBJS=''
1188 AC_ARG_ENABLE(external-debugger,
1189   [  --enable-external-debugger        enable external debugger support (win32 only)],
1190   [if test "$enableval" = yes; then
1191     case $target in
1192       *-pc-windows* | *-cygwin* | *-mingw32*)
1193         AC_MSG_RESULT(yes)
1194         AC_DEFINE(BX_EXTERNAL_DEBUGGER, 1)
1195         EXT_DEBUG_OBJS=extdb.o
1196         ;;
1197       *)
1198         echo "ERROR: external debugger is currently supported on win32 only"
1199         exit 1
1200         ;;
1201     esac
1202    else
1203     AC_MSG_RESULT(no)
1204    fi],
1205   [
1206     AC_MSG_RESULT(no)
1207   ])
1208 AC_SUBST(BX_EXTERNAL_DEBUGGER)
1210 AC_MSG_CHECKING(for disassembler support)
1211 AC_ARG_ENABLE(disasm,
1212   [  --enable-disasm                   compile in support for disassembler],
1213   [if test "$enableval" = yes; then
1214     AC_MSG_RESULT(yes)
1215     AC_DEFINE(BX_DISASM, 1)
1216     DISASM_VAR='$(DISASM_LIB)'
1217    else
1218     AC_MSG_RESULT(no)
1219     if test "$bx_debugger" = 1; then
1220       echo "ERROR: debugger is enabled, so --enable-disasm is required"
1221       exit 1
1222     fi
1223     AC_DEFINE(BX_DISASM, 0)
1224     DISASM_VAR=''
1225    fi],
1226   [
1227     AC_MSG_RESULT(yes)
1228     AC_DEFINE(BX_DISASM, 1)
1229     DISASM_VAR='$(DISASM_LIB)'
1230   ])
1231 AC_SUBST(DISASM_VAR)
1233 AC_MSG_CHECKING(for ALL optimizations enabled)
1234 AC_ARG_ENABLE(all-optimizations,
1235   [  --enable-all-optimizations        compile in all possible optimizations],
1236   [if test "$enableval" = yes; then
1237     AC_MSG_RESULT(yes)
1238     speedups_all=1
1239    else
1240     AC_MSG_RESULT(no)
1241     speedups_all=0
1242    fi
1243    ],
1244   [
1245     AC_MSG_RESULT(no)
1246     speedups_all=0
1247     ]
1248   )
1251 # Optimizations section.  Decide what the status of various optimizations
1252 # should be based on configure choices and other factors.
1255 if test "$speedups_all" = 1; then
1256   # Configure requested to force all options enabled.
1257   speedup_guest2host_tlb=1
1258   speedup_repeat=1
1259   speedup_iCache=1
1260   speedup_TraceCache=1
1261   speedup_fastcall=1
1264 if test "$speedup_iCache" = 0 -a "$speedup_TraceCache" = 1; then
1265   AC_MSG_ERROR([iCache is required to compile with trace cache optimization])
1268 if test "$speedup_guest2host_tlb" = 1; then
1269   AC_DEFINE(BX_SupportGuest2HostTLB, 1)
1270 else
1271   AC_DEFINE(BX_SupportGuest2HostTLB, 0)
1274 if test "$speedup_repeat" = 1; then
1275   AC_DEFINE(BX_SupportRepeatSpeedups, 1)
1276 else
1277   AC_DEFINE(BX_SupportRepeatSpeedups, 0)
1280 if test "$speedup_iCache" = 1; then
1281   AC_DEFINE(BX_SUPPORT_ICACHE, 1)
1282 else
1283   AC_DEFINE(BX_SUPPORT_ICACHE, 0)
1286 if test "$speedup_host_specific_asms" = 1; then
1287   AC_DEFINE(BX_SupportHostAsms, 1)
1288 else
1289   AC_DEFINE(BX_SupportHostAsms, 0)
1292 if test "$speedup_fastcall" = 1; then
1293   AC_DEFINE(BX_FAST_FUNC_CALL, 1)
1294 else
1295   AC_DEFINE(BX_FAST_FUNC_CALL, 0)
1298 if test "$speedup_TraceCache" = 1; then
1299   AC_DEFINE(BX_SUPPORT_TRACE_CACHE, 1)
1300 else
1301   AC_DEFINE(BX_SUPPORT_TRACE_CACHE, 0)
1305 READLINE_LIB=""
1306 rl_without_curses_ok=no
1307 rl_with_curses_ok=no
1309 AC_MSG_CHECKING(whether user wants readline)
1310 AC_ARG_ENABLE(readline,
1311   [  --enable-readline                 use readline library, if available],
1312   [if test "$enableval" = yes; then
1313     AC_MSG_RESULT(yes)
1314      want_readline=yes
1315    else
1316      AC_MSG_RESULT(no)
1317      want_readline=no
1318    fi],
1319   [
1320     AC_MSG_RESULT(yes)
1321     want_readline=yes
1322     ]
1325 use_readline=0
1326 AC_MSG_CHECKING(whether to use readline)
1327 if test "$want_readline" = yes; then
1328   if test "$bx_debugger" = 1; then
1330     AC_MSG_CHECKING(if readline works without -lcurses)
1331     OLD_LIBS=$LIBS
1332     LIBS="$LIBS -lreadline"
1333     AC_TRY_RUN([
1334       #include <stdio.h>
1335       #include <readline/readline.h>
1336       int main() { rl_initialize(); exit(0); }
1337       ],
1338       [ AC_MSG_RESULT(yes)
1339         rl_without_curses_ok=yes ],
1340       [ AC_MSG_RESULT(no) ]
1341     )
1342     AC_MSG_CHECKING(if readline works with -lcurses)
1343     LIBS="$LIBS -lcurses"
1344     AC_TRY_RUN([
1345       #include <stdio.h>
1346       #include <readline/readline.h>
1347       int main() { rl_initialize(); exit(0); }
1348       ],
1349       [AC_MSG_RESULT(yes)
1350        rl_with_curses_ok=yes ],
1351       [ AC_MSG_RESULT(no) ]
1352     )
1353     LIBS=$OLD_LIBS
1355     if test "$rl_without_curses_ok" = yes; then
1356       AC_MSG_RESULT(yes)
1357       AC_DEFINE(HAVE_LIBREADLINE, 1)
1358       READLINE_LIB="-lreadline"
1359       use_readline=1
1360     elif test "$rl_with_curses_ok" = yes; then
1361       AC_MSG_RESULT(yes)
1362       AC_DEFINE(HAVE_LIBREADLINE, 1)
1363       READLINE_LIB="-lreadline -lcurses"
1364       use_readline=1
1365     else
1366       AC_MSG_RESULT(no)
1367       echo WARNING: The readline library was disabled because it was not found.
1368     fi
1369   else
1370     AC_MSG_RESULT(no)
1371   fi
1372 else
1373   AC_MSG_RESULT(no)
1375 AC_SUBST(READLINE_LIB)
1377 AC_CHECK_HEADER(readline/history.h,
1378   AC_DEFINE(HAVE_READLINE_HISTORY_H)
1379   )
1381 INSTRUMENT_DIR='instrument/stubs'
1383 AC_MSG_CHECKING(for instrumentation support)
1384 AC_ARG_ENABLE(instrumentation,
1385   [  --enable-instrumentation          compile in support for instrumentation],
1386   [if test "$enableval" = yes; then
1387     AC_MSG_RESULT(yes)
1388     AC_DEFINE(BX_INSTRUMENTATION, 1)
1389     INSTRUMENT_VAR='$(INSTRUMENT_LIB)'
1390    elif test "$enableval" = no; then
1391     AC_MSG_RESULT(no)
1392     AC_DEFINE(BX_INSTRUMENTATION, 0)
1393     INSTRUMENT_VAR=''
1394    else
1395     AC_MSG_RESULT(yes)
1396     AC_DEFINE(BX_INSTRUMENTATION, 1)
1397     INSTRUMENT_DIR=$enableval
1398     INSTRUMENT_VAR='$(INSTRUMENT_LIB)'
1399    fi],
1400   [
1401     AC_MSG_RESULT(no)
1402     AC_DEFINE(BX_INSTRUMENTATION, 0)
1403     INSTRUMENT_VAR=''
1404     ]
1405   )
1406 AC_SUBST(INSTRUMENT_DIR)
1407 AC_SUBST(INSTRUMENT_VAR)
1409 dnl // serial mode 'socket' needs wsock32.dll in non-plugin mode
1410 if test "$bx_plugins" = 0; then
1411   case $target in
1412     *-pc-windows*)
1413       DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS wsock32.lib"
1414       ;;
1415     *-cygwin* | *-mingw32*)
1416       DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwsock32"
1417       ;;
1418   esac
1421 AC_MSG_CHECKING(enable logging)
1422 AC_ARG_ENABLE(logging,
1423   [  --enable-logging                  enable logging],
1424   [if test "$enableval" = yes; then
1425     AC_MSG_RESULT(yes)
1426     AC_DEFINE(BX_NO_LOGGING, 0)
1427    else
1428     AC_MSG_RESULT(no)
1429     AC_DEFINE(BX_NO_LOGGING, 1)
1430    fi],
1431   [
1432     AC_MSG_RESULT(yes)
1433     AC_DEFINE(BX_NO_LOGGING, 0)
1434     ]
1435   )
1437 AC_MSG_CHECKING(enable assert checks)
1438 AC_ARG_ENABLE(assert-checks,
1439   [  --enable-assert-checks            enable BX_ASSERT checks],
1440   [if test "$enableval" = yes; then
1441     AC_MSG_RESULT(yes)
1442     AC_DEFINE(BX_ASSERT_ENABLE, 1)
1443    else
1444     AC_MSG_RESULT(no)
1445     AC_DEFINE(BX_ASSERT_ENABLE, 0)
1446    fi],
1447   [
1448     if test "$bx_debugger" = 1; then
1449       AC_MSG_RESULT(yes)
1450       AC_DEFINE(BX_ASSERT_ENABLE, 1)
1451     else
1452       AC_MSG_RESULT(no)
1453       AC_DEFINE(BX_ASSERT_ENABLE, 0)
1454     fi
1455     ]
1456   )
1458 AC_MSG_CHECKING(for raw serial support)
1459 AC_ARG_ENABLE(raw-serial,
1460   [  --enable-raw-serial               use raw serial port access],
1461   [if test "$enableval" = yes; then
1462     AC_MSG_RESULT(yes)
1463     AC_DEFINE(USE_RAW_SERIAL, 1)
1464    else
1465     AC_MSG_RESULT(no)
1466     AC_DEFINE(USE_RAW_SERIAL, 0)
1467    fi],
1468   [
1469     AC_MSG_RESULT(no)
1470     AC_DEFINE(USE_RAW_SERIAL, 0)
1471     ]
1472   )
1474 AC_MSG_CHECKING(for VESA BIOS extensions)
1475 AC_ARG_ENABLE(vbe,
1476   [  --enable-vbe                      use VESA BIOS extensions],
1477   [if test "$enableval" = yes; then
1478     AC_MSG_RESULT(yes)
1479     AC_DEFINE(BX_SUPPORT_VBE, 1)
1480     if test "$pci" = 1; then
1481       AC_DEFINE(BX_SUPPORT_PCIVGA, 1)
1482     fi
1483    else
1484     AC_MSG_RESULT(no)
1485     AC_DEFINE(BX_SUPPORT_VBE, 0)
1486    fi],
1487   [
1488     AC_MSG_RESULT(yes)
1489     AC_DEFINE(BX_SUPPORT_VBE, 1)
1490     if test "$pci" = 1; then
1491       AC_DEFINE(BX_SUPPORT_PCIVGA, 1)
1492     fi
1493     ]
1494   )
1496 AC_MSG_CHECKING(for CLGD54XX emulation)
1497 AC_ARG_ENABLE(clgd54xx,
1498   [  --enable-clgd54xx                 enable CLGD54XX emulation],
1499   [if test "$enableval" = yes; then
1500     AC_MSG_RESULT(yes)
1501     AC_DEFINE(BX_SUPPORT_CLGD54XX, 1)
1502    else
1503     AC_MSG_RESULT(no)
1504     AC_DEFINE(BX_SUPPORT_CLGD54XX, 0)
1505    fi],
1506   [
1507     AC_MSG_RESULT(no)
1508     AC_DEFINE(BX_SUPPORT_CLGD54XX, 0)
1509     ]
1510   )
1512 support_fpu=1
1513 AC_MSG_CHECKING(for FPU emulation)
1514 FPU_VAR=''
1515 AC_ARG_ENABLE(fpu,
1516   [  --enable-fpu                      compile in FPU emulation],
1517   [if test "$enableval" = yes; then
1518     AC_MSG_RESULT(yes)
1519     AC_DEFINE(BX_SUPPORT_FPU, 1)
1520     FPU_VAR='$(FPU_LIB)'
1521    elif test "$enableval" = no; then
1522     AC_MSG_RESULT(no)
1523     AC_DEFINE(BX_SUPPORT_FPU, 0)
1524     support_fpu=0
1525    else
1526     echo " "
1527     echo "ERROR: --enable-fpu does not accept a path"
1528     exit 1
1529    fi
1530    ],
1531   [
1532     AC_MSG_RESULT(yes)
1533     AC_DEFINE(BX_SUPPORT_FPU, 1)
1534     FPU_VAR='$(FPU_LIB)'
1535     ]
1536   )
1537 AC_SUBST(FPU_VAR)
1539 AC_MSG_CHECKING(for VME support)
1540 AC_ARG_ENABLE(vme,
1541   [  --enable-vme                      virtual 8086 mode extensions],
1542   [if test "$enableval" = yes; then
1543     AC_MSG_RESULT(yes)
1544     AC_DEFINE(BX_SUPPORT_VME, 1)
1545    elif test "$enableval" = no; then
1546     AC_MSG_RESULT(no)
1547     AC_DEFINE(BX_SUPPORT_VME, 0)
1548    fi
1549    ],
1550   [
1551     if test "$bx_cpu_level" -ge 5; then
1552       AC_MSG_RESULT(yes)
1553       AC_DEFINE(BX_SUPPORT_VME, 1)
1554     else
1555       AC_MSG_RESULT(no)
1556       AC_DEFINE(BX_SUPPORT_VME, 0)
1557     fi
1558     ]
1559   )
1561 support_mmx=1
1562 AC_MSG_CHECKING(for MMX support)
1563 AC_ARG_ENABLE(mmx,
1564   [  --enable-mmx                      MMX support],
1565   [if test "$enableval" = yes; then
1566     AC_MSG_RESULT(yes)
1567     AC_DEFINE(BX_SUPPORT_MMX, 1)
1568    elif test "$enableval" = no; then
1569     AC_MSG_RESULT(no)
1570     AC_DEFINE(BX_SUPPORT_MMX, 0)
1571     support_mmx=0
1572    fi
1573    ],
1574   [
1575     if test "$bx_cpu_level" -ge 5; then
1576       AC_MSG_RESULT(yes)
1577       AC_DEFINE(BX_SUPPORT_MMX, 1)
1578     else
1579       AC_MSG_RESULT(no)
1580       AC_DEFINE(BX_SUPPORT_MMX, 0)
1581     fi
1582     ]
1583   )
1585 AC_MSG_CHECKING(for 3DNow! support)
1586 AC_ARG_ENABLE(3dnow,
1587   [  --enable-3dnow                    3DNow! support (incomplete)],
1588   [if test "$enableval" = yes; then
1589     AC_MSG_RESULT(yes)
1590     AC_DEFINE(BX_SUPPORT_3DNOW, 1)
1591    elif test "$enableval" = no; then
1592     AC_MSG_RESULT(no)
1593     AC_DEFINE(BX_SUPPORT_3DNOW, 0)
1594    fi
1595    ],
1596   [
1597     AC_MSG_RESULT(no)
1598     AC_DEFINE(BX_SUPPORT_3DNOW, 0)
1599   ]
1600   )
1602 support_sse=0
1603 AC_MSG_CHECKING(for SSE support)
1604 AC_ARG_ENABLE(sse,
1605   [  --enable-sse                      SSE support (--enable-sse=[no|1|2|3|4])],
1606   [case "$enableval" in
1607     no | 0)
1608       support_sse=0
1609       AC_MSG_RESULT(no)
1610       ;;
1611     yes | 1)
1612       support_sse=1
1613       AC_MSG_RESULT(SSE1)
1614       ;;
1615     2)
1616       support_sse=2
1617       AC_MSG_RESULT(SSE2)
1618       ;;
1619     3)
1620       support_sse=3
1621       AC_MSG_RESULT(SSE3)
1622       ;;
1623     4)
1624       support_sse=4
1625       AC_MSG_RESULT(SSE4)
1626       ;;
1627     *)
1628       echo "ERROR: --enable-sse=$enableval not understood. Use --enable-sse=[no|1|2|3|4]"
1629       exit 1
1630       ;;
1631    esac
1632    ],
1633   [
1634     if test "$use_x86_64" = 1; then
1635       support_sse=2
1636       AC_MSG_RESULT(SSE2)
1637     else
1638       AC_MSG_RESULT(no)
1639     fi
1640   ]
1641   )
1643 if test "$support_sse" -gt 0 -a "$bx_cpu_level" -lt 6; then
1644   AC_MSG_ERROR([for SSE support the CPU level must be set to 6])
1647 if test "$support_sse" -lt 2 -a "$use_x86_64" = 1; then
1648   AC_MSG_ERROR([x86-64 needs SSE2 support])
1651 if test "$support_sse" = 4; then
1652   AC_DEFINE(BX_SUPPORT_SSE,  4)
1653 elif test "$support_sse" = 3; then
1654   AC_DEFINE(BX_SUPPORT_SSE,  3)
1655 elif test "$support_sse" = 2; then
1656   AC_DEFINE(BX_SUPPORT_SSE,  2)
1657 elif test "$support_sse" = 1; then
1658   AC_DEFINE(BX_SUPPORT_SSE,  1)
1659 else
1660   AC_DEFINE(BX_SUPPORT_SSE,  0)
1663 support_sse_extensions=0
1664 AC_MSG_CHECKING(for SSE extensions support)
1665 AC_ARG_ENABLE(sse-extension,
1666   [  --enable-sse-extension            support for SSE extensions],
1667   [if test "$enableval" = yes; then
1668     AC_MSG_RESULT(yes)
1669     AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 1)
1670     support_sse_extensions=1
1671    elif test "$enableval" = no; then
1672     AC_MSG_RESULT(no)
1673     AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 0)
1674    fi
1675    ],
1676   [
1677     AC_MSG_RESULT(no)
1678     AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 0)
1679   ]
1680   )
1682 AC_MSG_CHECKING(for DAZ support)
1683 AC_ARG_ENABLE(daz,
1684   [  --enable-daz                      denormals-are-zeroes support],
1685   [if test "$enableval" = yes; then
1686     AC_MSG_RESULT(yes)
1687     AC_DEFINE(BX_SUPPORT_DAZ, 1)
1688    elif test "$enableval" = no; then
1689     AC_MSG_RESULT(no)
1690     AC_DEFINE(BX_SUPPORT_DAZ, 0)
1691    fi
1692    ],
1693   [
1694     if test "$support_sse" -ge 2; then
1695       AC_MSG_RESULT(yes)
1696       AC_DEFINE(BX_SUPPORT_DAZ, 1)
1697     else
1698       AC_MSG_RESULT(no)
1699       AC_DEFINE(BX_SUPPORT_DAZ, 0)
1700     fi
1701     ]
1702   )
1704 use_xsave=0
1705 AC_MSG_CHECKING(for XSAVE/XRSTOR support)
1706 AC_ARG_ENABLE(xsave,
1707   [  --enable-xsave                    support for XSAVE/XRSTOR extensions],
1708   [if test "$enableval" = yes; then
1709     AC_MSG_RESULT(yes)
1710     AC_DEFINE(BX_SUPPORT_XSAVE, 1)
1711     use_xsave=1
1712    elif test "$enableval" = no; then
1713     AC_MSG_RESULT(no)
1714     AC_DEFINE(BX_SUPPORT_XSAVE, 0)
1715    fi
1716    ],
1717   [
1718     AC_MSG_RESULT(no)
1719     AC_DEFINE(BX_SUPPORT_XSAVE, 0)
1720   ]
1721   )
1723 if test "$support_sse" -lt 1 -a "$use_xsave" = 1; then
1724   AC_MSG_ERROR([XSAVE requires SSE support!])
1727 use_aes=0
1728 AC_MSG_CHECKING(for AES instructions support)
1729 AC_ARG_ENABLE(aes,
1730   [  --enable-aes                      support for AES instructions],
1731   [if test "$enableval" = yes; then
1732     AC_MSG_RESULT(yes)
1733     AC_DEFINE(BX_SUPPORT_AES, 1)
1734     use_aes=1
1735    elif test "$enableval" = no; then
1736     AC_MSG_RESULT(no)
1737     AC_DEFINE(BX_SUPPORT_AES, 0)
1738    fi
1739    ],
1740   [
1741     AC_MSG_RESULT(no)
1742     AC_DEFINE(BX_SUPPORT_AES, 0)
1743   ]
1744   )
1746 if test "$support_sse" -lt 1 -a "$use_aes" = 1; then
1747   AC_MSG_ERROR([AES requires SSE support!])
1750 AC_MSG_CHECKING(for alignment check support)
1751 AC_ARG_ENABLE(alignment-check,
1752   [  --enable-alignment-check          alignment check (#AC) support],
1753   [if test "$enableval" = yes; then
1754     AC_MSG_RESULT(yes)
1755     AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 1)
1756    elif test "$enableval" = no; then
1757     AC_MSG_RESULT(no)
1758     AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 0)
1759    fi
1760    ],
1761   [
1762     if test "$bx_cpu_level" -gt 3; then
1763       AC_MSG_RESULT(yes)
1764       AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 1)
1765     else
1766       AC_MSG_RESULT(no)
1767       AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 0)
1768     fi
1769     ]
1770   )
1772 AC_MSG_CHECKING(for misaligned SSE support)
1773 AC_ARG_ENABLE(misaligned-sse,
1774   [  --enable-misaligned-sse           misaligned SSE support],
1775   [if test "$enableval" = yes; then
1776     AC_MSG_RESULT(yes)
1777     AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 1)
1778    elif test "$enableval" = no; then
1779     AC_MSG_RESULT(no)
1780     AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 0)
1781    fi
1782    ],
1783   [
1784     AC_MSG_RESULT(no)
1785     AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 0)
1786     ]
1787   )
1789 AC_MSG_CHECKING(for SEP support)
1790 AC_ARG_ENABLE(sep,
1791   [  --enable-sep                      SYSENTER/SYSEXIT support],
1792   [if test "$enableval" = yes; then
1793     AC_MSG_RESULT(yes)
1794     AC_DEFINE(BX_SUPPORT_SEP, 1)
1795    elif test "$enableval" = no; then
1796     AC_MSG_RESULT(no)
1797     AC_DEFINE(BX_SUPPORT_SEP, 0)
1798    fi
1799    ],
1800   [
1801     if test "$bx_cpu_level" -ge 6 -a "$support_mmx" = 1; then
1802       AC_MSG_RESULT(yes)
1803       AC_DEFINE(BX_SUPPORT_SEP, 1)
1804     else
1805       AC_MSG_RESULT(no)
1806       AC_DEFINE(BX_SUPPORT_SEP, 0)
1807     fi
1808     ]
1809   )
1811 AC_MSG_CHECKING(for POPCNT instruction support)
1812 AC_ARG_ENABLE(popcnt,
1813   [  --enable-popcnt                   support for POPCNT instruction],
1814   [if test "$enableval" = yes; then
1815     AC_MSG_RESULT(yes)
1816     AC_DEFINE(BX_SUPPORT_POPCNT, 1)
1817    elif test "$enableval" = no; then
1818     AC_MSG_RESULT(no)
1819     AC_DEFINE(BX_SUPPORT_POPCNT, 0)
1820    fi
1821    ],
1822   [
1823     if test "$support_sse" -ge 4 -a "$support_sse_extensions" = 1; then
1824       AC_MSG_RESULT(yes)
1825       AC_DEFINE(BX_SUPPORT_POPCNT, 1)
1826     else
1827       AC_MSG_RESULT(no)
1828       AC_DEFINE(BX_SUPPORT_POPCNT, 0)
1829     fi
1830     ]
1831   )
1833 AC_MSG_CHECKING(for MONITOR/MWAIT instructions support (experimental))
1834 AC_ARG_ENABLE(monitor_mwait,
1835   [  --enable-monitor-mwait            support for MONITOR/MWAIT instructions (experimental)],
1836   [if test "$enableval" = yes; then
1837     AC_MSG_RESULT(yes)
1838     AC_DEFINE(BX_SUPPORT_MONITOR_MWAIT, 1)
1839    elif test "$enableval" = no; then
1840     AC_MSG_RESULT(no)
1841     AC_DEFINE(BX_SUPPORT_MONITOR_MWAIT, 0)
1842    fi
1843    ],
1844   [
1845     AC_MSG_RESULT(no)
1846     AC_DEFINE(BX_SUPPORT_MONITOR_MWAIT, 0)
1847   ]
1848   )
1850 AC_MSG_CHECKING(for x86 debugger support)
1851 AC_ARG_ENABLE(x86-debugger,
1852   [  --enable-x86-debugger             x86 debugger support],
1853   [if test "$enableval" = yes; then
1854     AC_MSG_RESULT(yes)
1855     AC_DEFINE(BX_X86_DEBUGGER, 1)
1856    elif test "$enableval" = no; then
1857     AC_MSG_RESULT(no)
1858     AC_DEFINE(BX_X86_DEBUGGER, 0)
1859    fi
1860    ],
1861   [
1862     AC_MSG_RESULT(no)
1863     AC_DEFINE(BX_X86_DEBUGGER, 0)
1864     ]
1865   )
1867 AC_CHECK_HEADER(IOKit/storage/IOCDMedia.h,
1868   can_use_osx_cdrom=yes
1869   )
1871 AC_MSG_CHECKING(for CDROM support)
1872 AC_ARG_ENABLE(cdrom,
1873   [  --enable-cdrom                    CDROM support],
1874   [if test "$enableval" = no; then
1875      bx_cdrom=0
1876    else
1877      bx_cdrom=1
1878    fi],
1879   [ bx_cdrom=1 ]
1880   )
1882 if test "$bx_cdrom" = 1; then
1883     AC_MSG_RESULT(yes)
1884     CDROM_OBJS='cdrom.o'
1885     if test "$with_amigaos" = yes; then
1886       # use the amiga cdrom file instead.
1887       CDROM_OBJS="cdrom_amigaos.o"
1888     elif test "$can_use_osx_cdrom" = yes; then
1889       # use cdrom_osx
1890       AC_MSG_RESULT(Using OSX IOKit CD Interface)
1891       CDROM_OBJS="cdrom.o"
1892       EXTRA_LINK_OPTS="${EXTRA_LINK_OPTS} -framework IOKit -framework CoreFoundation "'$(GUI_LINK_OPTS)'
1893     fi
1894     case $target in
1895       *-beos*)
1896         # use the beos cdrom file instead
1897         CDROM_OBJS="$CDROM_OBJS cdrom_beos.o"
1898     esac
1899     AC_DEFINE(BX_SUPPORT_CDROM, 1)
1900 else
1901     AC_MSG_RESULT(no)
1902     CDROM_OBJS=''
1903     AC_DEFINE(BX_SUPPORT_CDROM, 0)
1906 AC_SUBST(CDROM_OBJS)
1909 bx_have_alsa=0
1910 AC_CHECK_HEADER([alsa/asoundlib.h], [bx_have_alsa=1])
1912 AC_MSG_CHECKING(for Sound Blaster 16 support)
1913 SB16_OBJS=''
1914 SOUNDLOW_OBJS=''
1915 GAME_OBJS=''
1916 gameport_present=0
1917 AC_ARG_ENABLE(sb16,
1918   [  --enable-sb16=xxx                 Sound Blaster 16 Support (xxx=dummy|win|linux|freebsd|osx)],
1919   [if test "$enableval" = no; then
1920      AC_MSG_RESULT(no)
1921      AC_DEFINE(BX_SUPPORT_SB16, 0)
1922    else
1923      case "$enableval" in
1924        dummy)
1925          SOUNDLOW_OBJS=''
1926          AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_output_c)
1927          AC_MSG_RESULT(dummy)
1928          ;;
1929        freebsd|linux)
1930          SOUNDLOW_OBJS='soundlnx.o'
1931          AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_linux_c)
1932          if test "$bx_have_alsa" = 1; then
1933            AC_DEFINE(BX_HAVE_ALSASOUND, 1)
1934            if test "$bx_plugins" = 1; then
1935              SOUND_LINK_OPTS="$SOUND_LINK_OPTS -lasound"
1936            else
1937              DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lasound"
1938            fi
1939          fi
1940          AC_MSG_RESULT(linux)
1941          ;;
1942        win)
1943          SOUNDLOW_OBJS='soundwin.o'
1944          AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1945          AC_MSG_RESULT(win)
1946          case $target in
1947            *-pc-windows*)
1948              DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS winmm.lib"
1949              ;;
1950            *)
1951              DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
1952              ;;
1953          esac
1954          ;;
1955        osx)
1956          SOUNDLOW_OBJS='soundosx.o'
1957          AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_osx_c)
1958          AC_MSG_RESULT(osx)
1959          DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -framework AudioUnit -framework AudioToolbox"
1960          ;;
1961        yes)
1962          case "$target" in
1963            *-linux* | *-freebsd*)
1964              SOUNDLOW_OBJS='soundlnx.o'
1965              AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_linux_c)
1966              if test "$bx_have_alsa" = 1; then
1967                AC_DEFINE(BX_HAVE_ALSASOUND, 1)
1968                if test "$bx_plugins" = 1; then
1969                  SOUND_LINK_OPTS="$SOUND_LINK_OPTS -lasound"
1970                else
1971                  DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lasound"
1972                fi
1973              fi
1974              AC_MSG_RESULT(linux)
1975              ;;
1976            *-pc-windows*)
1977              SOUNDLOW_OBJS='soundwin.o'
1978              AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1979              AC_MSG_RESULT(win)
1980              DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS winmm.lib"
1981              ;;
1982            *-cygwin* | *-mingw32*)
1983              SOUNDLOW_OBJS='soundwin.o'
1984              AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1985              AC_MSG_RESULT(win)
1986              DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
1987              ;;
1988            *-macosx* | *-macos*)
1989              SOUNDLOW_OBJS='soundosx.o'
1990              AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_osx_c)
1991              AC_MSG_RESULT(osx)
1992              DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -framework AudioUnit -framework AudioToolbox"
1993              ;;
1994            *)
1995              SOUNDLOW_OBJS=''
1996              AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_output_c)
1997              AC_MSG_RESULT(dummy)
1998              ;;
1999          esac
2000          ;;
2001        *)
2002          echo " "
2003          echo \!\!\!Error\!\!\!
2004          echo "You must pass one of dummy, linux, win, freebsd, osx to --enable-sb16"
2005          exit 1 ;;
2006      esac
2007      SB16_OBJS='sb16.o'
2008      AC_DEFINE(BX_SUPPORT_SB16, 1)
2009      GAME_OBJS='gameport.o'
2010      gameport_present=1
2011    fi],
2013   [
2014     AC_MSG_RESULT(no)
2015     AC_DEFINE(BX_SUPPORT_SB16, 0)
2016     ]
2017   )
2018 AC_SUBST(SB16_OBJS)
2019 AC_SUBST(SOUNDLOW_OBJS)
2020 AC_SUBST(SOUND_LINK_OPTS)
2023 AC_MSG_CHECKING(for standard PC gameport support)
2024 AC_ARG_ENABLE(gameport,
2025   [  --enable-gameport                 enable standard PC gameport support],
2026   [if test "$enableval" = yes; then
2027     AC_MSG_RESULT(yes)
2028     AC_DEFINE(BX_SUPPORT_GAMEPORT, 1)
2029     if test "$gameport_present" = 0; then
2030       GAME_OBJS='gameport.o'
2031       case $target in
2032         *-cygwin* | *-mingw32*)
2033            DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
2034            ;;
2035       esac
2036     fi
2037    else
2038     AC_MSG_RESULT(no)
2039     GAME_OBJS=''
2040     AC_DEFINE(BX_SUPPORT_GAMEPORT, 0)
2041    fi],
2042   [
2043     if test "$gameport_present" = 1; then
2044       AC_DEFINE(BX_SUPPORT_GAMEPORT, 1)
2045       AC_MSG_RESULT(yes)
2046     else
2047       AC_DEFINE(BX_SUPPORT_GAMEPORT, 0)
2048       AC_MSG_RESULT(no)
2049     fi]
2050   )
2051 AC_SUBST(GAME_OBJS)
2054 AC_MSG_CHECKING(for gdb stub enable)
2055 AC_ARG_ENABLE(gdb-stub,
2056   [  --enable-gdb-stub                 enable gdb stub support],
2057   [if test "$enableval" = yes; then
2058     AC_MSG_RESULT(yes)
2059     AC_DEFINE(BX_GDBSTUB, 1)
2060     GDBSTUB_VAR='$(GDBSTUB_OBJS)'
2061     if test "$bx_debugger" = 1; then
2062       AC_MSG_ERROR([[--enable-debugger and --enable-gdb-stub are mutually exclusive]])
2063     fi
2064    else
2065     AC_MSG_RESULT(no)
2066     AC_DEFINE(BX_GDBSTUB, 0)
2067     GDBSTUB_VAR=''
2068    fi],
2069   [
2070     AC_MSG_RESULT(no)
2071     AC_DEFINE(BX_GDBSTUB, 0)
2072     GDBSTUB_VAR=''
2073     ]
2074   )
2075 AC_SUBST(GDBSTUB_VAR)
2078 AC_MSG_CHECKING(for I/O Interface to the debugger)
2079 IODEBUG_OBJS=''
2080 AC_ARG_ENABLE(iodebug,
2081   [  --enable-iodebug                  enable I/O interface to debugger],
2082   [if test "$enableval" = yes; then
2083     AC_MSG_RESULT(yes)
2084     AC_DEFINE(BX_SUPPORT_IODEBUG, 1)
2085     IODEBUG_OBJS='iodebug.o'
2086    else
2087     AC_MSG_RESULT(no)
2088     AC_DEFINE(BX_SUPPORT_IODEBUG, 0)
2089    fi
2090    ],
2091   [
2092     if test "" = 1; then
2093       # enable by default if debugger is on
2094       AC_MSG_RESULT(yes)
2095       AC_DEFINE(BX_SUPPORT_IODEBUG, 1)
2096       IODEBUG_OBJS='iodebug.o'
2097     else
2098       AC_MSG_RESULT(no)
2099     fi
2100     ]
2101   )
2102 AC_SUBST(IODEBUG_OBJS)
2105 AC_PATH_PROG(DOCBOOK2HTML, docbook2html, not_found)
2106 AC_MSG_CHECKING(whether to build docbook documentation)
2107 build_docbook=0
2108 AC_ARG_ENABLE(docbook,
2109   [  --enable-docbook                  build the Docbook documentation],
2110   [
2111     if test "$enableval" = yes; then build_docbook=1; fi
2112   ],
2113   [
2114     dnl Not specified. If they have docbook2html, then yes.
2115     if test "$DOCBOOK2HTML" != not_found; then build_docbook=1; fi
2116     ]
2117   )
2119 if test $build_docbook = 1; then
2120   AC_MSG_RESULT(yes)
2121   BUILD_DOCBOOK_VAR=build_docbook
2122   INSTALL_DOCBOOK_VAR=install_docbook
2123   if test "$DOCBOOK2HTML" = not_found; then
2124     echo "ERROR: docbook2html must be installed to build the documentation"
2125     exit 1
2126   fi
2127 else
2128   AC_MSG_RESULT(no)
2130 AC_SUBST(BUILD_DOCBOOK_VAR)
2131 AC_SUBST(INSTALL_DOCBOOK_VAR)
2132 AC_SUBST(DOCBOOK2HTML)
2134 PRIMARY_TARGET='bochs'
2135 PLUGIN_LIBNAME_TRANSFORMATION='%.o=libbx_%.la'
2137 AC_DEFINE(BX_PROVIDE_DEVICE_MODELS, 1)
2138 IODEV_LIB_VAR='iodev/libiodev.a'
2139 AC_DEFINE(BX_PROVIDE_CPU_MEMORY, 1)
2140 NONINLINE_VAR='$(NONINLINE_OBJS)'
2142 AC_SUBST(IODEV_LIB_VAR)
2143 AC_SUBST(EXTRA_BX_OBJS)
2144 AC_SUBST(NONINLINE_VAR)
2145 AC_SUBST(INLINE_VAR)
2146 AC_SUBST(EXTERNAL_DEPENDENCY)
2147 AC_SUBST(EXT_DEBUG_OBJS)
2148 AC_SUBST(RC_CMD)
2151 AC_ARG_WITH(x11,
2152   [  --with-x11                        use X11 GUI],
2153   )
2155 AC_ARG_WITH(beos,
2156   [  --with-beos                       use BeOS GUI],
2157   )
2159 AC_ARG_WITH(win32,
2160   [  --with-win32                      use Win32 GUI],
2161   )
2163 AC_ARG_WITH(macos,
2164   [  --with-macos                      use Macintosh/CodeWarrior environment],
2165   )
2167 AC_ARG_WITH(carbon,
2168   [  --with-carbon                     compile for MacOS X with Carbon GUI],
2169   )
2171 AC_ARG_WITH(nogui,
2172   [  --with-nogui                      no native GUI, just use blank stubs],
2173   )
2175 AC_ARG_WITH(term,
2176   [  --with-term                       textmode terminal environment],
2177   )
2179 AC_ARG_WITH(rfb,
2180   [  --with-rfb                        use RFB protocol, works with VNC viewer],
2181   )
2183 AC_ARG_WITH(amigaos,
2184   [  --with-amigaos                    use AmigaOS (or MorphOS) GUI],
2185   )
2187 AC_ARG_WITH(sdl,
2188   [  --with-sdl                        use SDL libraries],
2189   )
2191 AC_ARG_WITH(svga,
2192   [  --with-svga                       use SVGALib libraries],
2193   )
2195 AC_ARG_WITH(wx,
2196   [  --with-wx                         use wxWidgets libraries],
2197   )
2199 AC_ARG_WITH(all-libs,
2200   [  --with-all-libs                   compile all guis that Bochs supports],
2201   )
2203 dnl // DASH is option prefix for your platform
2204 dnl // SLASH is directory for your platform
2205 dnl // CXXFP is C++ File Prefix; the flag that tells the compiler
2206 dnl //   this is a C++ source file
2207 dnl // CFP is C File Prefix; the flag that tells the compiler
2208 dnl //   this is a C source file
2209 dnl // OFP is Object File Prefix; the flag that tells the compiler
2210 dnl //   generate an object file with this name
2211 DASH="-"
2212 SLASH="/"
2213 CXXFP=""
2214 CFP=""
2215 OFP="-o "
2216 MAKELIB="ar rv \$@"
2217 RMCOMMAND="rm -f "
2218 # first define link variables without libtool
2219 LINK="\$(CXX) -o \$@ \$(CXXFLAGS) \$(LDFLAGS)"
2220 LINK_CONSOLE="\$(CXX) -o \$@ \$(CXXFLAGS_CONSOLE) \$(LDFLAGS)"
2221 # unless NO_LT is set, add libtool to the front of the link command
2222 if test "$NO_LT" != 1; then
2223   LINK="\$(LIBTOOL) --mode=link $LINK"
2224   LINK_CONSOLE="\$(LIBTOOL) --mode=link $LINK_CONSOLE"
2226 EXE=""
2227 COMMAND_SEPARATOR="&& \\"
2228 CD_UP_ONE="echo done"
2229 CD_UP_TWO="echo done"
2230 CD_UP_THREE="echo done"
2232 INSTALL_TARGET=install_unix
2233 INSTALL_LIST_FOR_PLATFORM=
2235 # check for existence of and usable version of wxWidgets.  This comes
2236 # early so that it could affect which one gets chosen.
2237 if test x$WX_CONFIG = x; then
2238   AC_CHECK_PROG(WX_CONFIG, [ wx-config --version ], wx-config, not_found)
2240 AC_MSG_CHECKING(for wxWidgets configuration script)
2241 AC_MSG_RESULT($WX_CONFIG)
2243 ok_wx_version=0
2244 wx_multi_lib=0
2245 wx_needs_gtk2=0
2246 AC_MSG_CHECKING(for wxWidgets library version)
2247 if test x$WX_CONFIG != xnot_found; then
2248   WX_VERSION=`$WX_CONFIG --version`
2249   WX_BASENAME=`$WX_CONFIG --basename`
2250   [
2251   # test that version >= 2.3.2.  Anybody have a better way to do this? Yuck.
2252   case x$WX_VERSION in
2253     x2.[012]*) ;; # less than version 2.3.x
2254     x2.3.[01]) ;; # less than version 2.3.2
2255     x2.3.[2-4]*) ok_wx_version=1 ;;  # 2.3.2 or greater
2256     x2.[4-5]*) ok_wx_version=1 ;;  # version 2.4 / 2.5
2257     x2.[6-9]*)  # version 2.6 or greater
2258       ok_wx_version=1
2259       wx_multi_lib=1
2260       case x$WX_BASENAME in
2261         xwx_gtk2|xwx_gtk2u) wx_needs_gtk2=1 ;;
2262         *) ;;
2263       esac
2264       ;;
2265     x[3-9]*) ok_wx_version=1 ;;  # version 3 or greater
2266     *) ;; # who knows?
2267   esac
2268   ]
2270 AC_MSG_RESULT($WX_VERSION)
2271 if test "$cross_configure" = 0; then
2272   if test "$ok_wx_version" = 1; then
2273     # detected a usable version
2274     if test "$with_all_libs" = yes; then
2275       with_wx=yes
2276     fi
2277   else
2278     if test "$with_wx" = yes; then
2279       AC_MSG_WARN([Bochs for wxWidgets cannot be compiled here, disabling it])
2280     fi
2281     with_wx=no
2282   fi
2285 AC_MSG_CHECKING(for default gui on this platform)
2286 AC_MSG_RESULT($DEFAULT_GUI)
2288 display_libs=""
2290 # the $with_* variable tells the gui library to use, but does NOT necessarily
2291 # indicate the platform.  Settings that depend on the platform should be
2292 # handled later.
2294 XPM_LIB=''
2295 if test "$with_x11" = yes; then
2296   display_libs="$display_libs X11"
2297   if test "$no_x" = yes; then
2298     echo ERROR: X windows gui was selected, but X windows libraries were not found.
2299     exit 1
2300   fi
2301   AC_DEFINE(BX_WITH_X11, 1)
2302   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_X11)"
2303   GUI_CFLAGS="$GUI_CFLAGS \$(X_CFLAGS)"
2304   GUI_CXXFLAGS="$GUI_CXXFLAGS \$(X_CFLAGS)"
2305   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_X)"
2306   check_xpm=0
2307   AC_MSG_CHECKING(whether user wants XPM support)
2308   AC_ARG_ENABLE(xpm,
2309     [  --enable-xpm                      enable the check for XPM support],
2310     [if test "$enableval" = yes; then
2311       check_xpm=0
2312       AC_MSG_RESULT(yes)
2313       check_xpm=1
2314      else
2315       AC_MSG_RESULT(no)
2316       check_xpm=0
2317      fi],
2318     [
2319       AC_MSG_RESULT(yes)
2320       check_xpm=1
2321       ]
2322     )
2323   if test $check_xpm = 1; then
2324     AC_CHECK_HEADER(X11/xpm.h, [
2325         AC_DEFINE(BX_HAVE_XPM_H)
2326         XPM_LIB='-lXpm'
2327       ])
2328   fi
2330 AC_SUBST(XPM_LIB)
2332 if test "$with_beos" = yes; then
2333   display_libs="$display_libs beos"
2334   AC_DEFINE(BX_WITH_BEOS, 1)
2335   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_BEOS)"
2336   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_BEOS)"
2339 if test "$with_sdl" = yes; then
2340   display_libs="$display_libs sdl"
2341   AC_DEFINE(BX_WITH_SDL, 1)
2342   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_SDL)"
2343   # GUI_*FLAGS are added to the compilation of every bochs file, not just
2344   # the files in gui/*.cc.
2345   SDL_CFLAGS=`sdl-config --cflags`
2346   GUI_CFLAGS="$GUI_CFLAGS $SDL_CFLAGS"
2347   GUI_CXXFLAGS="$GUI_CXXFLAGS $SDL_CFLAGS"
2348   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_SDL)"
2349   if test "$with_win32" != yes -a "$with_wx" != yes; then
2350     case $target in
2351       *-pc-windows*)
2352          RC_CMD="rc /fo"
2353          EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2354          ;;
2355       *-cygwin* | *-mingw32*)
2356          RC_CMD="windres -o "
2357          EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2358          ;;
2359     esac
2360   fi
2363 if test "$with_svga" = yes; then
2364   display_libs="$display_libs svga"
2365   AC_DEFINE(BX_WITH_SVGA, 1)
2366   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_SVGA)"
2367   # GUI_*FLAGS are added to the compilation of every bochs file, not just
2368   # the files in gui/*.cc.
2369   GUI_CFLAGS="$GUI_CFLAGS"
2370   GUI_CXXFLAGS="$GUI_CXXFLAGS"
2371   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_SVGA)"
2374 if test "$with_rfb" = yes; then
2375   display_libs="$display_libs rfb"
2376   AC_DEFINE(BX_WITH_RFB, 1)
2377   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_RFB)"
2378   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_RFB)"
2381 if test "$with_amigaos" = yes; then
2382   display_libs="$display_libs amigaos"
2383   AC_DEFINE(BX_WITH_AMIGAOS, 1)
2384   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_AMIGAOS)"
2385   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_AMIGAOS)"
2388 if test "$with_win32" = yes; then
2389   display_libs="$display_libs win32"
2390   AC_DEFINE(BX_WITH_WIN32, 1)
2391   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_WIN32)"
2392   case $target in
2393     *-pc-windows*)
2394        if test "$with_wx" != yes; then
2395          RC_CMD="rc /fo"
2396          EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2397        fi
2398        GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WIN32_VCPP)"
2399        ;;
2400     *-cygwin* | *-mingw32*)
2401        if test "$with_wx" != yes; then
2402          RC_CMD="windres -o "
2403          EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2404        fi
2405        GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WIN32)"
2406        ;;
2407     *) echo Unsupported compile setup: GUI library is win32, but target is neither windows nor cygwin.
2408        ;;
2409   esac
2412 if test "$with_macos" = yes; then
2413   display_libs="$display_libs macos"
2414   AC_DEFINE(BX_WITH_MACOS, 1)
2415   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_MACOS)"
2416   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_MACOS)"
2419 if test "$with_carbon" = yes; then
2420   display_libs="$display_libs carbon"
2421   AC_DEFINE(BX_WITH_CARBON, 1)
2422   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_CARBON)"
2423   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_CARBON)"
2424   if test "$bx_plugins" = 1; then
2425     PRIMARY_TARGET=bochs.app/.build_plugins   # only for carbon application
2426   else
2427     PRIMARY_TARGET=bochs.app/.build   # only for carbon application
2428   fi
2429   INSTALL_TARGET='install_macosx'
2432 if test "$with_term" = yes; then
2433   display_libs="$display_libs term"
2434   AC_DEFINE(BX_WITH_TERM, 1)
2435   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_TERM)"
2436   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_TERM)"
2437   use_curses=yes
2440 if test "$with_wx" = yes; then
2441   display_libs="$display_libs wxWidgets"
2442   if test "$cross_configure" = 1; then
2443     true  # do not insist, if configuring for another machine
2444   else
2445     if test x$ok_wx_version != x1; then
2446       echo ERROR: A usable version of wxWidgets was not found.
2447       echo Upgrade the library or choose another gui.
2448       exit 1
2449     fi
2450   fi
2451   AC_DEFINE(BX_WITH_WX, 1)
2452   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_WX)"
2453   SPECIFIC_GUI_SUPPORT_OBJS="$SPECIFIC_GUI_SUPPORT_OBJS \$(GUI_OBJS_WX_SUPPORT)"
2454   WX_CFLAGS="`$WX_CONFIG --cflags`"
2455   WX_CXXFLAGS="`$WX_CONFIG --cxxflags`"
2456   if test "$wx_multi_lib" = 1; then
2457     GUI_LINK_OPTS_WX="`$WX_CONFIG --libs core,base`"
2458   else
2459     GUI_LINK_OPTS_WX="`$WX_CONFIG --libs`"
2460   fi
2461   if test "$wx_needs_gtk2" = 1; then
2462     PKG_CHECK_MODULES([GTK], [gtk+-2.0], [
2463       WX_CFLAGS="$WX_CFLAGS $GTK_CFLAGS"
2464       WX_CXXFLAGS="$WX_CXXFLAGS $GTK_CFLAGS"
2465     ])
2466   else
2467     # if gtk-config exists, then add it to the cflags.
2468     gtkconf=`gtk-config --cflags`
2469     if test $? = 0; then
2470       # gtk-config was found and returned 0, so it must return valid output
2471       WX_CFLAGS="$WX_CFLAGS $gtkconf"
2472       WX_CXXFLAGS="$WX_CXXFLAGS $gtkconf"
2473     fi
2474   fi
2475   # GUI_C*FLAGS are added to the compilation of every bochs file, not just
2476   # the files in gui/*.cc.  They are not used when building other things
2477   # such as bximage.
2478   GUI_CFLAGS="$GUI_CFLAGS $WX_CFLAGS"
2479   GUI_CXXFLAGS="$GUI_CXXFLAGS $WX_CXXFLAGS"
2480   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WX)"
2481   # using debugger with readline is failing due to thread/signal handler
2482   # problems.
2483   case $target in
2484     *-pc-windows* | *-cygwin* | *-mingw32*)
2485        EXTRA_BX_OBJS="$EXTRA_BX_OBJS wxbochs_resources.o"
2486            GUI_LINK_OPTS_WX="$GUI_LINK_OPTS_WX --subsystem,windows -mwindows"
2487        ;;
2488   esac
2491 if test "$with_nogui" = yes; then
2492   display_libs="$display_libs nogui"
2493   AC_DEFINE(BX_WITH_NOGUI, 1)
2494   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_NOGUI)"
2497 AC_MSG_CHECKING(for display libraries)
2498 AC_MSG_RESULT($display_libs)
2500 if test "$display_libs" = ""; then
2501   echo "No display libraries were selected. Use --with-* options to enable"
2502   echo "individual display libraries, or --with-all-libs to detect the ones"
2503   echo "that Bochs supports."
2504   exit 1
2507 dnl To use wxWidgets you must select it as both the configuration interface
2508 dnl and the display library.  In the simplest case where the user has
2509 dnl only configured with --with-wx, set both defaults to wxWidgets.
2510 dnl Without this setting, the config interface would default to the text
2511 dnl mode config interface, and then the wxWidgets display library would not
2512 dnl be usable.
2513 if test "$display_libs" = " wxWidgets"; then
2514   AC_MSG_CHECKING(for default configuration interface)
2515   AC_MSG_RESULT(wxWidgets)
2516   AC_MSG_CHECKING(for default display library)
2517   AC_MSG_RESULT(wxWidgets)
2518   AC_DEFINE(BX_DEFAULT_CONFIG_INTERFACE, "wx")
2519   AC_DEFINE(BX_DEFAULT_DISPLAY_LIBRARY, "wx")
2520   AC_DEFINE(BX_USE_TEXTCONFIG, 0)
2521 else
2522   AC_DEFINE(BX_USE_TEXTCONFIG, 1)
2525 if test "$bx_plugins" = 1; then
2526   # every item in this list will be compiled as a plugin. Do not include
2527   # support objs; they will be mentioned in plugin-specific makefile rules.
2528   GUI_PLUGIN_OBJS="$GUI_PLUGIN_OBJS $SPECIFIC_GUI_OBJS"
2529 else
2530   # include support objs
2531   GUI_NON_PLUGIN_OBJS="$GUI_NON_PLUGIN_OBJS $SPECIFIC_GUI_OBJS $SPECIFIC_GUI_SUPPORT_OBJS"
2534 AC_SUBST(GUI_CFLAGS)
2535 AC_SUBST(GUI_CXXFLAGS)
2536 AC_SUBST(WX_CONFIG)
2537 AC_SUBST(WX_CFLAGS)
2538 AC_SUBST(WX_CXXFLAGS)
2540 AC_CHECK_PROGS(WGET, wget curl fetch, not_found)
2541 if test "$WGET" = not_found; then
2542   AC_MSG_WARN([cannot find wget (or equivalent) command])
2544 # everybody has to re-invent the wheel. differently.
2545 test "${WGET}" = "curl" && WGET="curl -O"
2547 # modify settings based on target platform
2548 case "$target" in
2549   *-macosx*)
2550     AC_DEFINE(BX_HAVE_STRDUP, 0)
2551     ;;
2552   *-macos*)
2553     AC_DEFINE(BX_HAVE_STRDUP, 0)
2554     AC_DEFINE(BX_PLUGINS, 0)
2555     AC_DEFINE(BX_HAVE_DLFCN_H, 0)
2556     AC_DEFINE(BX_HAVE_SOCKLEN_T, 0)
2557     AC_DEFINE(BX_HAVE_SELECT, 0)
2558     AC_DEFINE(BX_HAVE_GETTIMEOFDAY, 0)
2559     AC_DEFINE(BX_NO_ATTRIBUTES, 1)
2560     AC_DEFINE(HAVE_TUNTAP, 0)
2561     AC_DEFINE(HAVE_ETHERTAP, 0)
2562     AC_DEFINE(BX_HAVE_HASH_MAP, 0)
2563     ;;
2564   *-pc-windows*)
2565     INSTALL_TARGET='install_win32'
2566     CC="cl"
2567     CXX="$CC"
2568     #C_OPT="/Zi"   # for debugging
2569     C_OPT="/Ox"   # optimize for speed
2570     CFLAGS="/nologo /G6 /MT /W3 /GX- /DNDEBUG /DWIN32 /D_WINDOWS $C_OPT"
2571     CXXFLAGS="$CFLAGS"
2572     DASH="/"
2573     SLASH="\\"
2574     CXXFP="/Tp"
2575     CFP="/Tc"
2576     OFP="/Fo"
2577     MAKE=nmake
2578     MAKELIB="lib /nologo /subsystem:console /verbose /out:\$@"
2579     RMCOMMAND="-del"
2580     RANLIB="echo"
2581     #L_OPT="/debug"    # for debugging
2582     L_OPT=""           # no debug info
2583     LINK="link $L_OPT /nologo /subsystem:console /incremental:no /out:\$@ "
2584     LINK_CONSOLE=$LINK
2585     EXE=".exe"
2586     PRIMARY_TARGET="bochs.exe"
2587     BXIMAGE_LINK_OPTS="user32.lib"
2588     # also compile niclist if networking is on
2589     if test "$networking" = yes; then
2590       PRIMARY_TARGET="$PRIMARY_TARGET niclist.exe"
2591     fi
2592     COMMAND_SEPARATOR=""
2593     CD_UP_ONE="cd .."
2594     CD_UP_TWO="cd ..\.."
2595     CD_UP_THREE="cd ..\..\.."
2596     have_gettimeofday=0  # even though it may exist in build environment
2597     AC_DEFINE(BX_64BIT_CONSTANTS_USE_LL, 0)
2598     AC_DEFINE(inline, __inline)
2599     AC_DEFINE(BX_NO_EMPTY_STRUCTS, 1)
2600     AC_DEFINE(BX_NO_ATTRIBUTES, 1)
2601     AC_DEFINE(BX_HAVE_HASH_MAP, 0)
2602     AC_DEFINE(BX_HAVE_HASH_MAP_H, 0)
2603     AC_DEFINE(BX_HAVE_STRTOULL, 0)
2604     AC_DEFINE(BX_HAVE_STRTOUQ, 0)
2605     AC_DEFINE(HAVE_LIBREADLINE, 0)
2606     AC_DEFINE(BX_HAVE_GETTIMEOFDAY, 0)
2607     AC_DEFINE(BX_HAVE_DLFCN_H, 0)
2608     AC_DEFINE(BX_HAVE_MKSTEMP, 0)
2609     AC_DEFINE(BX_HAVE_SYS_MMAN_H, 0)
2610     AC_DEFINE(BX_HAVE_USLEEP, 0)
2611     AC_DEFINE(HAVE_ETHERTAP, 0)
2612     AC_DEFINE(BX_HAVE_SELECT, 1)
2613     AC_DEFINE(BX_HAVE_SOCKLEN_T, 0)
2614     ;;
2615   *-pc-cygwin*)
2616     EXE=".exe"
2617     PRIMARY_TARGET="bochs.exe"
2618     BXIMAGE_LINK_OPTS="-luser32"
2619     if test "$networking" = yes; then
2620       PRIMARY_TARGET="$PRIMARY_TARGET niclist.exe"
2621     fi
2622     AC_DEFINE(BX_HAVE_SELECT, 1)
2623     ;;
2624   *-pc-mingw*)
2625     BXIMAGE_LINK_OPTS="-luser32"
2626     if test "$networking" = yes; then
2627       PRIMARY_TARGET="$PRIMARY_TARGET niclist"
2628     fi
2629     AC_DEFINE(BX_HAVE_SELECT, 1)
2630     ;;
2631   *-beos*)
2632     PRIMARY_TARGET=.bochs_beos_target
2633     ;;
2634 esac
2636 DIALOG_OBJS=""
2637 EXPORT_DYNAMIC="-export-dynamic"
2638 case $target in
2639   *-pc-windows* | *-pc-winnt* | *-cygwin* | *-mingw*)
2640     if test "$bx_plugins" = 1; then
2641       AC_CHECK_LIB(mingwex, opendir, LIBS="$LIBS -lmingwex")
2642       # set variables for building DLL plugins
2643       PRIMARY_TARGET=".win32_dll_plugin_target"
2644       PLUGIN_LIBNAME_TRANSFORMATION='%.o=bx_%.dll'
2645       INSTALL_PLUGINS_VAR=install_dll_plugins
2646     else
2647       if test "$with_win32" != yes; then
2648         LIBS="$LIBS -lcomctl32"
2649       fi
2650     fi
2651     DIALOG_OBJS="win32dialog.o"
2652     EXPORT_DYNAMIC=""
2653     ;;
2654 esac
2655 AC_SUBST(DIALOG_OBJS)
2656 AC_SUBST(EXPORT_DYNAMIC)
2658 if test "$use_curses" = yes -a "$cross_configure" = 0; then
2659   AC_CHECK_LIB(curses, mvaddch, GUI_LINK_OPTS_TERM='-lcurses')
2660   AC_CHECK_LIB(ncurses, mvaddch, GUI_LINK_OPTS_TERM='-lncurses')
2661   AC_CHECK_LIB(termlib, mvaddch, GUI_LINK_OPTS_TERM='-ltermlib')
2662   AC_CHECK_LIB(pdcurses, mvaddch, GUI_LINK_OPTS_TERM='-lpdcurses')
2663   if test "$GUI_LINK_OPTS_TERM" = ""; then
2664     echo Curses library not found: tried curses, ncurses, termlib and pdcurses.
2665     exit 1
2666   fi
2669 if test "$with_term" = yes; then
2670   old_LIBS="$LIBS"
2671   LIBS="$LIBS $GUI_LINK_OPTS_TERM"
2672   AC_CHECK_FUNCS(color_set, AC_DEFINE(BX_HAVE_COLOR_SET, 1))
2673   AC_CHECK_FUNCS(mvhline, AC_DEFINE(BX_HAVE_MVHLINE, 1))
2674   AC_CHECK_FUNCS(mvvline, AC_DEFINE(BX_HAVE_MVVLINE, 1))
2675   LIBS="$old_LIBS"
2678 if test "$with_rfb" = yes; then
2679   # we need the socket function
2680   case $target in
2681     *-pc-windows*)
2682       # is this okay without a check ?
2683       RFB_LIBS="$RFB_LIBS wsock32.lib"
2684       have_socket=yes
2685       ;;
2686     *-pc-winnt* | *-pc-cygwin* | *-pc-mingw32*)
2687       # is this okay without a check ?
2688       RFB_LIBS="$RFB_LIBS -lwsock32"
2689       have_socket=yes
2690       ;;
2691     *)
2692       AC_CHECK_FUNCS(socket, have_socket=yes)
2693       if test "$have_socket" != yes; then
2694         AC_CHECK_LIB(socket, socket,
2695           [
2696             RFB_LIBS="$RFB_LIBS -lsocket"
2697             have_socket=yes
2698           ])
2699       fi
2700       ;;
2701   esac
2702   if test "$have_socket" != yes; then
2703     echo 'ERROR: socket function required for RFB compile'
2704     exit 1
2705   fi
2708 # The ACX_PTHREAD function was written by
2709 # Steven G. Johnson <stevenj@alum.mit.edu> and
2710 # Alejandro Forero Cuervo <bachue@bachue.com>
2711 # I found it in the ac-archive project on Source Forge.
2713 AC_DEFUN([ACX_PTHREAD], [
2714 AC_REQUIRE([AC_CANONICAL_HOST])
2715 acx_pthread_ok=no
2717 # First, check if the POSIX threads header, pthread.h, is available.
2718 # If it isn't, don't bother looking for the threads libraries.
2719 AC_CHECK_HEADER(pthread.h, , acx_pthread_ok=noheader)
2721 # We must check for the threads library under a number of different
2722 # names; the ordering is very important because some systems
2723 # (e.g. DEC) have both -lpthread and -lpthreads, where one of the
2724 # libraries is broken (non-POSIX).
2726 # First of all, check if the user has set any of the PTHREAD_LIBS,
2727 # etcetera environment variables, and if threads linking works using
2728 # them:
2729 if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
2730         save_CFLAGS="$CFLAGS"
2731         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2732         CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
2733         save_LIBS="$LIBS"
2734         LIBS="$PTHREAD_LIBS $LIBS"
2735         AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
2736         AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
2737         AC_MSG_RESULT($acx_pthread_ok)
2738         if test x"$acx_pthread_ok" = xno; then
2739                 PTHREAD_LIBS=""
2740                 PTHREAD_CFLAGS=""
2741         fi
2742         LIBS="$save_LIBS"
2743         CFLAGS="$save_CFLAGS"
2746 # Create a list of thread flags to try.  Items starting with a "-" are
2747 # C compiler flags, and other items are library names, except for "none"
2748 # which indicates that we try without any flags at all.
2750 acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt"
2752 # The ordering *is* (sometimes) important.  Some notes on the
2753 # individual items follow:
2755 # pthreads: AIX (must check this before -lpthread)
2756 # none: in case threads are in libc; should be tried before -Kthread and
2757 #       other compiler flags to prevent continual compiler warnings
2758 # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
2759 # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
2760 # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
2761 # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
2762 # -pthreads: Solaris/gcc
2763 # -mthreads: Mingw32/gcc, Lynx/gcc
2764 # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
2765 #      doesn't hurt to check since this sometimes defines pthreads too;
2766 #      also defines -D_REENTRANT)
2767 # pthread: Linux, etcetera
2768 # --thread-safe: KAI C++
2770 case "${host_cpu}-${host_os}" in
2771         *solaris*)
2773         # On Solaris (at least, for some versions), libc contains stubbed
2774         # (non-functional) versions of the pthreads routines, so link-based
2775         # tests will erroneously succeed.  (We need to link with -pthread or
2776         # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
2777         # a function called by this macro, so we could check for that, but
2778         # who knows whether they'll stub that too in a future libc.)  So,
2779         # we'll just look for -pthreads and -lpthread first:
2781         acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
2782         ;;
2783 esac
2785 if test x"$acx_pthread_ok" = xno; then
2786 for flag in $acx_pthread_flags; do
2788         case $flag in
2789                 none)
2790                 AC_MSG_CHECKING([whether pthreads work without any flags])
2791                 ;;
2793                 -*)
2794                 AC_MSG_CHECKING([whether pthreads work with $flag])
2795                 PTHREAD_CFLAGS="$flag"
2796                 ;;
2798                 *)
2799                 AC_MSG_CHECKING([for the pthreads library -l$flag])
2800                 PTHREAD_LIBS="-l$flag"
2801                 ;;
2802         esac
2804         save_LIBS="$LIBS"
2805         save_CFLAGS="$CFLAGS"
2806         LIBS="$PTHREAD_LIBS $LIBS"
2807         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2809         # Check for various functions.  We must include pthread.h,
2810         # since some functions may be macros.  (On the Sequent, we
2811         # need a special flag -Kthread to make this header compile.)
2812         # We check for pthread_join because it is in -lpthread on IRIX
2813         # while pthread_create is in libc.  We check for pthread_attr_init
2814         # due to DEC craziness with -lpthreads.  We check for
2815         # pthread_cleanup_push because it is one of the few pthread
2816         # functions on Solaris that doesn't have a non-functional libc stub.
2817         # We try pthread_create on general principles.
2818         AC_TRY_LINK([#include <pthread.h>],
2819                     [pthread_t th; pthread_join(th, 0);
2820                      pthread_attr_init(0); pthread_cleanup_push(0, 0);
2821                      pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
2822                     [acx_pthread_ok=yes])
2824         LIBS="$save_LIBS"
2825         CFLAGS="$save_CFLAGS"
2827         AC_MSG_RESULT($acx_pthread_ok)
2828         if test "x$acx_pthread_ok" = xyes; then
2829                 break;
2830         fi
2832         PTHREAD_LIBS=""
2833         PTHREAD_CFLAGS=""
2834 done
2837 # Various other checks:
2838 if test "x$acx_pthread_ok" = xyes; then
2839         save_LIBS="$LIBS"
2840         LIBS="$PTHREAD_LIBS $LIBS"
2841         save_CFLAGS="$CFLAGS"
2842         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2844         # Detect AIX lossage: threads are created detached by default
2845         # and the JOINABLE attribute has a nonstandard name (UNDETACHED).
2846         AC_MSG_CHECKING([for joinable pthread attribute])
2847         AC_TRY_LINK([#include <pthread.h>],
2848                     [int attr=PTHREAD_CREATE_JOINABLE;],
2849                     ok=PTHREAD_CREATE_JOINABLE, ok=unknown)
2850         if test x"$ok" = xunknown; then
2851                 AC_TRY_LINK([#include <pthread.h>],
2852                             [int attr=PTHREAD_CREATE_UNDETACHED;],
2853                             ok=PTHREAD_CREATE_UNDETACHED, ok=unknown)
2854         fi
2855         if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then
2856                 AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok,
2857                           [Define to the necessary symbol if this constant
2858                            uses a non-standard name on your system.])
2859         fi
2860         AC_MSG_RESULT(${ok})
2861         if test x"$ok" = xunknown; then
2862                 AC_MSG_WARN([we do not know how to create joinable pthreads])
2863         fi
2865         AC_MSG_CHECKING([if more special flags are required for pthreads])
2866         flag=no
2867         case "${host_cpu}-${host_os}" in
2868                 *-aix* | *-freebsd*)     flag="-D_THREAD_SAFE";;
2869                 *solaris* | alpha*-osf*) flag="-D_REENTRANT";;
2870         esac
2871         AC_MSG_RESULT(${flag})
2872         if test "x$flag" != xno; then
2873                 PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
2874         fi
2876         LIBS="$save_LIBS"
2877         CFLAGS="$save_CFLAGS"
2879         # More AIX lossage: must compile with cc_r
2880         AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
2881 else
2882         PTHREAD_CC="$CC"
2885 AC_SUBST(PTHREAD_LIBS)
2886 AC_SUBST(PTHREAD_CFLAGS)
2887 AC_SUBST(PTHREAD_CC)
2889 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
2890 if test x"$acx_pthread_ok" = xyes; then
2891         ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
2892         :
2893 else
2894         acx_pthread_ok=no
2895         $2
2898 ])dnl ACX_PTHREAD
2900 pthread_ok=no
2901 ACX_PTHREAD([
2902   pthread_ok=yes
2903   #echo Using PTHREAD_LIBS=$PTHREAD_LIBS
2904   #echo Using PTHREAD_CFLAGS=$PTHREAD_CFLAGS
2905   #echo Using PTHREAD_CC=$PTHREAD_CC
2906   ])
2909 # since RFB (usually) needs pthread library, check that it was found.
2910 # But on win32 platforms, the pthread library is not needed.
2911 if test "$with_rfb" = yes -a "$cross_configure" = 0; then
2912   if test "$pthread_ok" = yes; then
2913     RFB_LIBS="$RFB_LIBS $PTHREAD_LIBS"
2914     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2915     CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
2916     CC="$PTHREAD_CC"
2917   else
2918     case "$target" in
2919           *-pc-windows* | *-pc-winnt* | *-cygwin* | *-mingw*)
2920             # pthread not needed for win32 platform
2921                 ;;
2922           *)
2923     echo ERROR: --with-rfb requires the pthread library, which could not be found.; exit 1
2924     esac
2925   fi
2928 dnl // DEPRECATED configure options - force users to remove them
2930 AC_MSG_CHECKING(for magic breakpoints (deprecated))
2931 AC_ARG_ENABLE(magic-breakpoints,
2932   [  --enable-magic-breakpoints        enables magic breakpoints (deprecated)],
2933   [AC_MSG_RESULT($enableval)
2934    AC_MSG_ERROR([DEPRECATED - magic breakpoints are always enabled with Bochs internal debugger])
2935   ],
2936   [
2937    AC_MSG_RESULT(no)
2938   ])
2940 AC_MSG_CHECKING(for save/restore (deprecated))
2941 AC_ARG_ENABLE(save-restore,
2942   [  --enable-save-restore             enables save/restore (deprecated)],
2943   [AC_MSG_RESULT($enableval)
2944    AC_MSG_ERROR([DEPRECATED - save/restore feature is always enabled])
2945   ],
2946   [
2947    AC_MSG_RESULT(no)
2948   ])
2950 # Create some subdirectories for when you run configure from some other
2951 # directory.
2952 if test ! -d instrument; then mkdir instrument; fi
2953 if test ! -d build; then mkdir build; fi
2954 if test ! -d build/linux; then mkdir build/linux; fi
2955 if test ! -d build/win32; then mkdir build/win32; fi
2956 if test ! -d build/win32/nsis; then mkdir build/win32/nsis; fi
2958 AC_SUBST(INSTALL_TARGET)
2959 AC_SUBST(INSTALL_LIST_FOR_PLATFORM)
2960 AC_SUBST(RFB_LIBS)
2961 AC_SUBST(GUI_OBJS)
2962 AC_SUBST(DEVICE_LINK_OPTS)
2963 AC_SUBST(GUI_LINK_OPTS)
2964 AC_SUBST(GUI_LINK_OPTS_TERM)
2965 AC_SUBST(GUI_LINK_OPTS_WX)
2966 AC_SUBST(BXIMAGE_LINK_OPTS)
2967 AC_SUBST(DASH)
2968 AC_SUBST(SLASH)
2969 AC_SUBST(CXXFP)
2970 AC_SUBST(CFP)
2971 AC_SUBST(OFP)
2972 AC_SUBST(MAKELIB)
2973 AC_SUBST(RMCOMMAND)
2974 AC_SUBST(LINK)
2975 AC_SUBST(LINK_CONSOLE)
2976 AC_SUBST(EXE)
2977 AC_SUBST(PRIMARY_TARGET)
2978 AC_SUBST(PLUGIN_LIBNAME_TRANSFORMATION)
2979 AC_SUBST(COMMAND_SEPARATOR)
2980 AC_SUBST(CD_UP_ONE)
2981 AC_SUBST(CD_UP_TWO)
2982 AC_SUBST(CD_UP_THREE)
2983 AC_SUBST(VERSION)
2984 AC_SUBST(VER_STRING)
2985 AC_SUBST(WIN_VER_STRING)
2986 AC_SUBST(REL_STRING)
2987 AC_SUBST(EXTRA_LINK_OPTS)
2988 AC_SUBST(GUI_NON_PLUGIN_OBJS)
2989 AC_SUBST(GUI_PLUGIN_OBJS)
2990 AC_SUBST(IODEV_NON_PLUGIN_OBJS)
2991 AC_SUBST(IODEV_PLUGIN_OBJS)
2992 AC_SUBST(PLUGIN_VAR)
2993 AC_SUBST(PLUGIN_TARGET)
2994 AC_SUBST(INSTALL_PLUGINS_VAR)
2996 AC_PATH_PROG(GZIP, gzip)
2997 AC_PATH_PROG(TAR, tar)
2999 AC_OUTPUT(Makefile iodev/Makefile bx_debug/Makefile bios/Makefile \
3000          cpu/Makefile memory/Makefile gui/Makefile \
3001          disasm/Makefile ${INSTRUMENT_DIR}/Makefile misc/Makefile \
3002          fpu/Makefile doc/docbook/Makefile \
3003          build/linux/bochs-dlx \
3004          bxversion.h bxversion.rc build/macosx/Info.plist \
3005          build/win32/nsis/Makefile build/win32/nsis/bochs.nsi \
3006          host/linux/pcidev/Makefile)