- added release tag for 2.3.7 to user doc
[bochs-mirror.git] / configure.in
blob94952c9952089224d5cf6630175c2a874bd0fe4e
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.369 2008/06/08 10:33:06 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(for raw serial support)
1438 AC_ARG_ENABLE(raw-serial,
1439   [  --enable-raw-serial               use raw serial port access],
1440   [if test "$enableval" = yes; then
1441     AC_MSG_RESULT(yes)
1442     AC_DEFINE(USE_RAW_SERIAL, 1)
1443    else
1444     AC_MSG_RESULT(no)
1445     AC_DEFINE(USE_RAW_SERIAL, 0)
1446    fi],
1447   [
1448     AC_MSG_RESULT(no)
1449     AC_DEFINE(USE_RAW_SERIAL, 0)
1450     ]
1451   )
1453 AC_MSG_CHECKING(for VESA BIOS extensions)
1454 AC_ARG_ENABLE(vbe,
1455   [  --enable-vbe                      use VESA BIOS extensions],
1456   [if test "$enableval" = yes; then
1457     AC_MSG_RESULT(yes)
1458     AC_DEFINE(BX_SUPPORT_VBE, 1)
1459     if test "$pci" = 1; then
1460       AC_DEFINE(BX_SUPPORT_PCIVGA, 1)
1461     fi
1462    else
1463     AC_MSG_RESULT(no)
1464     AC_DEFINE(BX_SUPPORT_VBE, 0)
1465    fi],
1466   [
1467     AC_MSG_RESULT(yes)
1468     AC_DEFINE(BX_SUPPORT_VBE, 1)
1469     if test "$pci" = 1; then
1470       AC_DEFINE(BX_SUPPORT_PCIVGA, 1)
1471     fi
1472     ]
1473   )
1475 AC_MSG_CHECKING(for CLGD54XX emulation)
1476 AC_ARG_ENABLE(clgd54xx,
1477   [  --enable-clgd54xx                 enable CLGD54XX emulation],
1478   [if test "$enableval" = yes; then
1479     AC_MSG_RESULT(yes)
1480     AC_DEFINE(BX_SUPPORT_CLGD54XX, 1)
1481    else
1482     AC_MSG_RESULT(no)
1483     AC_DEFINE(BX_SUPPORT_CLGD54XX, 0)
1484    fi],
1485   [
1486     AC_MSG_RESULT(no)
1487     AC_DEFINE(BX_SUPPORT_CLGD54XX, 0)
1488     ]
1489   )
1491 support_fpu=1
1492 AC_MSG_CHECKING(for FPU emulation)
1493 FPU_VAR=''
1494 AC_ARG_ENABLE(fpu,
1495   [  --enable-fpu                      compile in FPU emulation],
1496   [if test "$enableval" = yes; then
1497     AC_MSG_RESULT(yes)
1498     AC_DEFINE(BX_SUPPORT_FPU, 1)
1499     FPU_VAR='$(FPU_LIB)'
1500    elif test "$enableval" = no; then
1501     AC_MSG_RESULT(no)
1502     AC_DEFINE(BX_SUPPORT_FPU, 0)
1503     support_fpu=0
1504    else
1505     echo " "
1506     echo "ERROR: --enable-fpu does not accept a path"
1507     exit 1
1508    fi
1509    ],
1510   [
1511     AC_MSG_RESULT(yes)
1512     AC_DEFINE(BX_SUPPORT_FPU, 1)
1513     FPU_VAR='$(FPU_LIB)'
1514     ]
1515   )
1516 AC_SUBST(FPU_VAR)
1518 AC_MSG_CHECKING(for VME support)
1519 AC_ARG_ENABLE(vme,
1520   [  --enable-vme                      virtual 8086 mode extensions],
1521   [if test "$enableval" = yes; then
1522     AC_MSG_RESULT(yes)
1523     AC_DEFINE(BX_SUPPORT_VME, 1)
1524    elif test "$enableval" = no; then
1525     AC_MSG_RESULT(no)
1526     AC_DEFINE(BX_SUPPORT_VME, 0)
1527    fi
1528    ],
1529   [
1530     if test "$bx_cpu_level" -ge 5; then
1531       AC_MSG_RESULT(yes)
1532       AC_DEFINE(BX_SUPPORT_VME, 1)
1533     fi
1534     ]
1535   )
1537 support_mmx=1
1538 AC_MSG_CHECKING(for MMX support)
1539 AC_ARG_ENABLE(mmx,
1540   [  --enable-mmx                      MMX support],
1541   [if test "$enableval" = yes; then
1542     AC_MSG_RESULT(yes)
1543     AC_DEFINE(BX_SUPPORT_MMX, 1)
1544    elif test "$enableval" = no; then
1545     AC_MSG_RESULT(no)
1546     AC_DEFINE(BX_SUPPORT_MMX, 0)
1547     support_mmx=0
1548    fi
1549    ],
1550   [
1551     if test "$bx_cpu_level" -ge 5; then
1552       AC_MSG_RESULT(yes)
1553       AC_DEFINE(BX_SUPPORT_MMX, 1)
1554     fi
1555     ]
1556   )
1558 AC_MSG_CHECKING(for 3DNow! support)
1559 AC_ARG_ENABLE(3dnow,
1560   [  --enable-3dnow                    3DNow! support],
1561   [if test "$enableval" = yes; then
1562     AC_MSG_RESULT(yes)
1563     AC_DEFINE(BX_SUPPORT_3DNOW, 1)
1564    elif test "$enableval" = no; then
1565     AC_MSG_RESULT(no)
1566     AC_DEFINE(BX_SUPPORT_3DNOW, 0)
1567    fi
1568    ],
1569   [
1570     AC_MSG_RESULT(no)
1571     AC_DEFINE(BX_SUPPORT_3DNOW, 0)
1572   ]
1573   )
1575 support_sse=0
1576 AC_MSG_CHECKING(for SSE support)
1577 AC_ARG_ENABLE(sse,
1578   [  --enable-sse                      SSE support (--enable-sse=[no|1|2|3|4])],
1579   [case "$enableval" in
1580     no | 0)
1581       support_sse=0
1582       AC_MSG_RESULT(no)
1583       ;;
1584     yes | 1)
1585       support_sse=1
1586       AC_MSG_RESULT(SSE1)
1587       ;;
1588     2)
1589       support_sse=2
1590       AC_MSG_RESULT(SSE2)
1591       ;;
1592     3)
1593       support_sse=3
1594       AC_MSG_RESULT(SSE3)
1595       ;;
1596     4)
1597       support_sse=4
1598       AC_MSG_RESULT(SSE4)
1599       ;;
1600     *)
1601       echo "ERROR: --enable-sse=$enableval not understood. Use --enable-sse=[no|1|2|3|4]"
1602       exit 1
1603       ;;
1604    esac
1605    ],
1606   [
1607     if test "$use_x86_64" = 1; then
1608       support_sse=2
1609       AC_MSG_RESULT(SSE2)
1610     else
1611       AC_MSG_RESULT(no)
1612     fi
1613   ]
1614   )
1616 if test "$support_sse" -gt 0 -a "$bx_cpu_level" -lt 6; then
1617   AC_MSG_ERROR([for SSE support the CPU level must be set to 6])
1620 if test "$support_sse" -lt 2 -a "$use_x86_64" = 1; then
1621   AC_MSG_ERROR([x86-64 needs SSE2 support])
1624 if test "$support_sse" = 4; then
1625   AC_DEFINE(BX_SUPPORT_SSE,  4)
1626 elif test "$support_sse" = 3; then
1627   AC_DEFINE(BX_SUPPORT_SSE,  3)
1628 elif test "$support_sse" = 2; then
1629   AC_DEFINE(BX_SUPPORT_SSE,  2)
1630 elif test "$support_sse" = 1; then
1631   AC_DEFINE(BX_SUPPORT_SSE,  1)
1632 else
1633   AC_DEFINE(BX_SUPPORT_SSE,  0)
1636 support_sse_extensions=0
1637 AC_MSG_CHECKING(for SSE extensions support)
1638 AC_ARG_ENABLE(sse-extension,
1639   [  --enable-sse-extension            support for SSE extensions],
1640   [if test "$enableval" = yes; then
1641     AC_MSG_RESULT(yes)
1642     AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 1)
1643     support_sse_extensions=1
1644    elif test "$enableval" = no; then
1645     AC_MSG_RESULT(no)
1646     AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 0)
1647    fi
1648    ],
1649   [
1650     AC_MSG_RESULT(no)
1651     AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 0)
1652   ]
1653   )
1655 AC_MSG_CHECKING(for DAZ support)
1656 AC_ARG_ENABLE(daz,
1657   [  --enable-daz                      denormals-are-zeroes support],
1658   [if test "$enableval" = yes; then
1659     AC_MSG_RESULT(yes)
1660     AC_DEFINE(BX_SUPPORT_DAZ, 1)
1661    elif test "$enableval" = no; then
1662     AC_MSG_RESULT(no)
1663     AC_DEFINE(BX_SUPPORT_DAZ, 0)
1664    fi
1665    ],
1666   [
1667     if test "$support_sse" -ge 2; then
1668       AC_MSG_RESULT(yes)
1669       AC_DEFINE(BX_SUPPORT_DAZ, 1)
1670     else
1671       AC_MSG_RESULT(no)
1672       AC_DEFINE(BX_SUPPORT_DAZ, 0)
1673     fi
1674     ]
1675   )
1677 use_xsave=0
1678 AC_MSG_CHECKING(for XSAVE/XRSTOR support)
1679 AC_ARG_ENABLE(xsave,
1680   [  --enable-xsave                    support for XSAVE/XRSTOR extensions],
1681   [if test "$enableval" = yes; then
1682     AC_MSG_RESULT(yes)
1683     AC_DEFINE(BX_SUPPORT_XSAVE, 1)
1684     use_xsave=1
1685    elif test "$enableval" = no; then
1686     AC_MSG_RESULT(no)
1687     AC_DEFINE(BX_SUPPORT_XSAVE, 0)
1688    fi
1689    ],
1690   [
1691     AC_MSG_RESULT(no)
1692     AC_DEFINE(BX_SUPPORT_XSAVE, 0)
1693   ]
1694   )
1696 if test "$support_sse" -lt 1 -a "$use_xsave" = 1; then
1697   AC_MSG_ERROR([XSAVE requires SSE support!])
1700 use_aes=0
1701 AC_MSG_CHECKING(for AES instructions support)
1702 AC_ARG_ENABLE(aes,
1703   [  --enable-aes                      support for AES instructions],
1704   [if test "$enableval" = yes; then
1705     AC_MSG_RESULT(yes)
1706     AC_DEFINE(BX_SUPPORT_AES, 1)
1707     use_aes=1
1708    elif test "$enableval" = no; then
1709     AC_MSG_RESULT(no)
1710     AC_DEFINE(BX_SUPPORT_AES, 0)
1711    fi
1712    ],
1713   [
1714     AC_MSG_RESULT(no)
1715     AC_DEFINE(BX_SUPPORT_AES, 0)
1716   ]
1717   )
1719 if test "$support_sse" -lt 1 -a "$use_aes" = 1; then
1720   AC_MSG_ERROR([AES requires SSE support!])
1723 AC_MSG_CHECKING(for alignment check support)
1724 AC_ARG_ENABLE(alignment-check,
1725   [  --enable-alignment-check          alignment check (#AC) support],
1726   [if test "$enableval" = yes; then
1727     AC_MSG_RESULT(yes)
1728     AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 1)
1729    elif test "$enableval" = no; then
1730     AC_MSG_RESULT(no)
1731     AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 0)
1732    fi
1733    ],
1734   [
1735     if test "$bx_cpu_level" -gt 3; then
1736       AC_MSG_RESULT(yes)
1737       AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 1)
1738     else
1739       AC_MSG_RESULT(no)
1740       AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 0)
1741     fi
1742     ]
1743   )
1745 AC_MSG_CHECKING(for misaligned SSE support)
1746 AC_ARG_ENABLE(misaligned-sse,
1747   [  --enable-misaligned-sse           misaligned SSE support],
1748   [if test "$enableval" = yes; then
1749     AC_MSG_RESULT(yes)
1750     AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 1)
1751    elif test "$enableval" = no; then
1752     AC_MSG_RESULT(no)
1753     AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 0)
1754    fi
1755    ],
1756   [
1757     AC_MSG_RESULT(no)
1758     AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 0)
1759     ]
1760   )
1762 AC_MSG_CHECKING(for SEP support)
1763 AC_ARG_ENABLE(sep,
1764   [  --enable-sep                      SYSENTER/SYSEXIT support],
1765   [if test "$enableval" = yes; then
1766     AC_MSG_RESULT(yes)
1767     AC_DEFINE(BX_SUPPORT_SEP, 1)
1768    elif test "$enableval" = no; then
1769     AC_MSG_RESULT(no)
1770     AC_DEFINE(BX_SUPPORT_SEP, 0)
1771    fi
1772    ],
1773   [
1774     if test "$bx_cpu_level" -ge 6 -a "$support_mmx" = 1; then
1775       AC_MSG_RESULT(yes)
1776       AC_DEFINE(BX_SUPPORT_SEP, 1)
1777     else
1778       AC_MSG_RESULT(no)
1779       AC_DEFINE(BX_SUPPORT_SEP, 0)
1780     fi
1781     ]
1782   )
1784 AC_MSG_CHECKING(for POPCNT instruction support)
1785 AC_ARG_ENABLE(popcnt,
1786   [  --enable-popcnt                   support for POPCNT instruction],
1787   [if test "$enableval" = yes; then
1788     AC_MSG_RESULT(yes)
1789     AC_DEFINE(BX_SUPPORT_POPCNT, 1)
1790    elif test "$enableval" = no; then
1791     AC_MSG_RESULT(no)
1792     AC_DEFINE(BX_SUPPORT_POPCNT, 0)
1793    fi
1794    ],
1795   [
1796     if test "$support_sse" -ge 4 -a "$support_sse_extensions" = 1; then
1797       AC_MSG_RESULT(yes)
1798       AC_DEFINE(BX_SUPPORT_POPCNT, 1)
1799     else
1800       AC_MSG_RESULT(no)
1801       AC_DEFINE(BX_SUPPORT_POPCNT, 0)
1802     fi
1803     ]
1804   )
1806 AC_MSG_CHECKING(for MONITOR/MWAIT instructions support (experimental))
1807 AC_ARG_ENABLE(monitor_mwait,
1808   [  --enable-monitor-mwait            support for MONITOR/MWAIT instructions (experimental)],
1809   [if test "$enableval" = yes; then
1810     AC_MSG_RESULT(yes)
1811     AC_DEFINE(BX_SUPPORT_MONITOR_MWAIT, 1)
1812    elif test "$enableval" = no; then
1813     AC_MSG_RESULT(no)
1814     AC_DEFINE(BX_SUPPORT_MONITOR_MWAIT, 0)
1815    fi
1816    ],
1817   [
1818     AC_MSG_RESULT(no)
1819     AC_DEFINE(BX_SUPPORT_MONITOR_MWAIT, 0)
1820   ]
1821   )
1823 AC_MSG_CHECKING(for x86 debugger support)
1824 AC_ARG_ENABLE(x86-debugger,
1825   [  --enable-x86-debugger             x86 debugger support],
1826   [if test "$enableval" = yes; then
1827     AC_MSG_RESULT(yes)
1828     AC_DEFINE(BX_X86_DEBUGGER, 1)
1829    elif test "$enableval" = no; then
1830     AC_MSG_RESULT(no)
1831     AC_DEFINE(BX_X86_DEBUGGER, 0)
1832    else
1833     AC_MSG_RESULT(yes)
1834     AC_DEFINE(BX_X86_DEBUGGER, 1)
1835    fi],
1836   [
1837     AC_MSG_RESULT(no)
1838     AC_DEFINE(BX_X86_DEBUGGER, 0)
1839     ]
1840   )
1842 AC_CHECK_HEADER(IOKit/storage/IOCDMedia.h,
1843   can_use_osx_cdrom=yes
1844   )
1846 AC_MSG_CHECKING(for CDROM support)
1847 AC_ARG_ENABLE(cdrom,
1848   [  --enable-cdrom                    CDROM support],
1849   [if test "$enableval" = no; then
1850      bx_cdrom=0
1851    else
1852      bx_cdrom=1
1853    fi],
1854   [ bx_cdrom=1 ]
1855   )
1857 if test "$bx_cdrom" = 1; then
1858     AC_MSG_RESULT(yes)
1859     CDROM_OBJS='cdrom.o'
1860     if test "$with_amigaos" = yes; then
1861       # use the amiga cdrom file instead.
1862       CDROM_OBJS="cdrom_amigaos.o"
1863     elif test "$can_use_osx_cdrom" = yes; then
1864       # use cdrom_osx
1865       AC_MSG_RESULT(Using OSX IOKit CD Interface)
1866       CDROM_OBJS="cdrom.o"
1867       EXTRA_LINK_OPTS="${EXTRA_LINK_OPTS} -framework IOKit -framework CoreFoundation "'$(GUI_LINK_OPTS)'
1868     fi
1869     case $target in
1870       *-beos*)
1871         # use the beos cdrom file instead
1872         CDROM_OBJS="$CDROM_OBJS cdrom_beos.o"
1873     esac
1874     AC_DEFINE(BX_SUPPORT_CDROM, 1)
1875 else
1876     AC_MSG_RESULT(no)
1877     CDROM_OBJS=''
1878     AC_DEFINE(BX_SUPPORT_CDROM, 0)
1881 AC_SUBST(CDROM_OBJS)
1884 AC_MSG_CHECKING(for Sound Blaster 16 support)
1885 SB16_OBJS=''
1886 SOUNDLOW_OBJS=''
1887 GAME_OBJS=''
1888 gameport_present=0
1889 AC_ARG_ENABLE(sb16,
1890   [  --enable-sb16=xxx                 Sound Blaster 16 Support (xxx=dummy|win|linux|freebsd|osx)],
1891   [if test "$enableval" = no; then
1892      AC_MSG_RESULT(no)
1893      AC_DEFINE(BX_SUPPORT_SB16, 0)
1894    else
1895      case "$enableval" in
1896        dummy)
1897          SOUNDLOW_OBJS=''
1898          AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_output_c)
1899          AC_MSG_RESULT(dummy)
1900          ;;
1901        freebsd|linux)
1902          SOUNDLOW_OBJS='soundlnx.o'
1903          AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_linux_c)
1904          AC_MSG_RESULT(linux)
1905          ;;
1906        win)
1907          SOUNDLOW_OBJS='soundwin.o'
1908          AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1909          AC_MSG_RESULT(win)
1910          case $target in
1911            *-pc-windows*)
1912                  DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS winmm.lib"
1913                  ;;
1914            *)
1915                  DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
1916                  ;;
1917          esac
1918          ;;
1919        osx)
1920          SOUNDLOW_OBJS='soundosx.o'
1921          AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_osx_c)
1922          AC_MSG_RESULT(osx)
1923                  DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -framework AudioUnit -framework AudioToolbox"
1924          ;;
1925        yes)
1926          case "$target" in
1927            *-linux* | *-freebsd*)
1928              SOUNDLOW_OBJS='soundlnx.o'
1929              AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_linux_c)
1930              AC_MSG_RESULT(linux)
1931              ;;
1932            *-pc-windows*)
1933              SOUNDLOW_OBJS='soundwin.o'
1934              AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1935              AC_MSG_RESULT(win)
1936              DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS winmm.lib"
1937              ;;
1938            *-cygwin* | *-mingw32*)
1939              SOUNDLOW_OBJS='soundwin.o'
1940              AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1941              AC_MSG_RESULT(win)
1942              DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
1943              ;;
1944            *-macosx* | *-macos*)
1945              SOUNDLOW_OBJS='soundosx.o'
1946              AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_osx_c)
1947              AC_MSG_RESULT(osx)
1948              DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -framework AudioUnit -framework AudioToolbox"
1949              ;;
1950            *)
1951              SOUNDLOW_OBJS=''
1952              AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_output_c)
1953              AC_MSG_RESULT(dummy)
1954              ;;
1955          esac
1956          ;;
1957        *)
1958          echo " "
1959          echo \!\!\!Error\!\!\!
1960          echo "You must pass one of dummy, linux, win, freebsd, osx to --enable-sb16"
1961          exit 1 ;;
1962      esac
1963      SB16_OBJS='sb16.o'
1964      AC_DEFINE(BX_SUPPORT_SB16, 1)
1965      GAME_OBJS='gameport.o'
1966      gameport_present=1
1967    fi],
1969   [
1970     AC_MSG_RESULT(no)
1971     AC_DEFINE(BX_SUPPORT_SB16, 0)
1972     ]
1973   )
1974 AC_SUBST(SB16_OBJS)
1975 AC_SUBST(SOUNDLOW_OBJS)
1978 AC_MSG_CHECKING(for standard PC gameport support)
1979 AC_ARG_ENABLE(gameport,
1980   [  --enable-gameport                 enable standard PC gameport support],
1981   [if test "$enableval" = yes; then
1982     AC_MSG_RESULT(yes)
1983     AC_DEFINE(BX_SUPPORT_GAMEPORT, 1)
1984     if test "$gameport_present" = 0; then
1985       GAME_OBJS='gameport.o'
1986       case $target in
1987         *-cygwin* | *-mingw32*)
1988            DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
1989            ;;
1990       esac
1991     fi
1992    else
1993     AC_MSG_RESULT(no)
1994     GAME_OBJS=''
1995     AC_DEFINE(BX_SUPPORT_GAMEPORT, 0)
1996    fi],
1997   [
1998     if test "$gameport_present" = 1; then
1999       AC_DEFINE(BX_SUPPORT_GAMEPORT, 1)
2000       AC_MSG_RESULT(yes)
2001     else
2002       AC_DEFINE(BX_SUPPORT_GAMEPORT, 0)
2003       AC_MSG_RESULT(no)
2004     fi]
2005   )
2006 AC_SUBST(GAME_OBJS)
2009 AC_MSG_CHECKING(for gdb stub enable)
2010 AC_ARG_ENABLE(gdb-stub,
2011   [  --enable-gdb-stub                 enable gdb stub support],
2012   [if test "$enableval" = yes; then
2013     AC_MSG_RESULT(yes)
2014     AC_DEFINE(BX_GDBSTUB, 1)
2015     GDBSTUB_VAR='$(GDBSTUB_OBJS)'
2016     if test "$bx_debugger" = 1; then
2017       AC_MSG_ERROR([[--enable-debugger and --enable-gdb-stub are mutually exclusive]])
2018     fi
2019    else
2020     AC_MSG_RESULT(no)
2021     AC_DEFINE(BX_GDBSTUB, 0)
2022     GDBSTUB_VAR=''
2023    fi],
2024   [
2025     AC_MSG_RESULT(no)
2026     AC_DEFINE(BX_GDBSTUB, 0)
2027     GDBSTUB_VAR=''
2028     ]
2029   )
2030 AC_SUBST(GDBSTUB_VAR)
2033 AC_MSG_CHECKING(for I/O Interface to the debugger)
2034 IODEBUG_OBJS=''
2035 AC_ARG_ENABLE(iodebug,
2036   [  --enable-iodebug                  enable I/O interface to debugger],
2037   [if test "$enableval" = yes; then
2038     AC_MSG_RESULT(yes)
2039     AC_DEFINE(BX_SUPPORT_IODEBUG, 1)
2040     IODEBUG_OBJS='iodebug.o'
2041    else
2042     AC_MSG_RESULT(no)
2043     AC_DEFINE(BX_SUPPORT_IODEBUG, 0)
2044    fi
2045    ],
2046   [
2047     if test "" = 1; then
2048       # enable by default if debugger is on
2049       AC_MSG_RESULT(yes)
2050       AC_DEFINE(BX_SUPPORT_IODEBUG, 1)
2051       IODEBUG_OBJS='iodebug.o'
2052     else
2053       AC_MSG_RESULT(no)
2054     fi
2055     ]
2056   )
2057 AC_SUBST(IODEBUG_OBJS)
2060 AC_PATH_PROG(DOCBOOK2HTML, docbook2html, not_found)
2061 AC_MSG_CHECKING(whether to build docbook documentation)
2062 build_docbook=0
2063 AC_ARG_ENABLE(docbook,
2064   [  --enable-docbook                  build the Docbook documentation],
2065   [
2066     if test "$enableval" = yes; then build_docbook=1; fi
2067   ],
2068   [
2069     dnl Not specified. If they have docbook2html, then yes.
2070     if test "$DOCBOOK2HTML" != not_found; then build_docbook=1; fi
2071     ]
2072   )
2074 if test $build_docbook = 1; then
2075   AC_MSG_RESULT(yes)
2076   BUILD_DOCBOOK_VAR=build_docbook
2077   INSTALL_DOCBOOK_VAR=install_docbook
2078   if test "$DOCBOOK2HTML" = not_found; then
2079     echo "ERROR: docbook2html must be installed to build the documentation"
2080     exit 1
2081   fi
2082 else
2083   AC_MSG_RESULT(no)
2085 AC_SUBST(BUILD_DOCBOOK_VAR)
2086 AC_SUBST(INSTALL_DOCBOOK_VAR)
2087 AC_SUBST(DOCBOOK2HTML)
2089 PRIMARY_TARGET='bochs'
2090 PLUGIN_LIBNAME_TRANSFORMATION='%.o=libbx_%.la'
2092 AC_DEFINE(BX_PROVIDE_DEVICE_MODELS, 1)
2093 IODEV_LIB_VAR='iodev/libiodev.a'
2094 AC_DEFINE(BX_PROVIDE_CPU_MEMORY, 1)
2095 NONINLINE_VAR='$(NONINLINE_OBJS)'
2097 AC_SUBST(IODEV_LIB_VAR)
2098 AC_SUBST(EXTRA_BX_OBJS)
2099 AC_SUBST(NONINLINE_VAR)
2100 AC_SUBST(INLINE_VAR)
2101 AC_SUBST(EXTERNAL_DEPENDENCY)
2102 AC_SUBST(EXT_DEBUG_OBJS)
2103 AC_SUBST(RC_CMD)
2106 AC_ARG_WITH(x11,
2107   [  --with-x11                        use X11 GUI],
2108   )
2110 AC_ARG_WITH(beos,
2111   [  --with-beos                       use BeOS GUI],
2112   )
2114 AC_ARG_WITH(win32,
2115   [  --with-win32                      use Win32 GUI],
2116   )
2118 AC_ARG_WITH(macos,
2119   [  --with-macos                      use Macintosh/CodeWarrior environment],
2120   )
2122 AC_ARG_WITH(carbon,
2123   [  --with-carbon                     compile for MacOS X with Carbon GUI],
2124   )
2126 AC_ARG_WITH(nogui,
2127   [  --with-nogui                      no native GUI, just use blank stubs],
2128   )
2130 AC_ARG_WITH(term,
2131   [  --with-term                       textmode terminal environment],
2132   )
2134 AC_ARG_WITH(rfb,
2135   [  --with-rfb                        use RFB protocol, works with VNC viewer],
2136   )
2138 AC_ARG_WITH(amigaos,
2139   [  --with-amigaos                    use AmigaOS (or MorphOS) GUI],
2140   )
2142 AC_ARG_WITH(sdl,
2143   [  --with-sdl                        use SDL libraries],
2144   )
2146 AC_ARG_WITH(svga,
2147   [  --with-svga                       use SVGALib libraries],
2148   )
2150 AC_ARG_WITH(wx,
2151   [  --with-wx                         use wxWidgets libraries],
2152   )
2154 AC_ARG_WITH(all-libs,
2155   [  --with-all-libs                   compile all guis that Bochs supports],
2156   )
2158 dnl // DASH is option prefix for your platform
2159 dnl // SLASH is directory for your platform
2160 dnl // CXXFP is C++ File Prefix; the flag that tells the compiler
2161 dnl //   this is a C++ source file
2162 dnl // CFP is C File Prefix; the flag that tells the compiler
2163 dnl //   this is a C source file
2164 dnl // OFP is Object File Prefix; the flag that tells the compiler
2165 dnl //   generate an object file with this name
2166 DASH="-"
2167 SLASH="/"
2168 CXXFP=""
2169 CFP=""
2170 OFP="-o "
2171 MAKELIB="ar rv \$@"
2172 RMCOMMAND="rm -f "
2173 # first define link variables without libtool
2174 LINK="\$(CXX) -o \$@ \$(CXXFLAGS) \$(LDFLAGS)"
2175 LINK_CONSOLE="\$(CXX) -o \$@ \$(CXXFLAGS_CONSOLE) \$(LDFLAGS)"
2176 # unless NO_LT is set, add libtool to the front of the link command
2177 if test "$NO_LT" != 1; then
2178   LINK="\$(LIBTOOL) --mode=link $LINK"
2179   LINK_CONSOLE="\$(LIBTOOL) --mode=link $LINK_CONSOLE"
2181 EXE=""
2182 COMMAND_SEPARATOR="&& \\"
2183 CD_UP_ONE="echo done"
2184 CD_UP_TWO="echo done"
2185 CD_UP_THREE="echo done"
2187 INSTALL_TARGET=install_unix
2188 INSTALL_LIST_FOR_PLATFORM=
2190 # check for existence of and usable version of wxWidgets.  This comes
2191 # early so that it could affect which one gets chosen.
2192 if test x$WX_CONFIG = x; then
2193   AC_CHECK_PROG(WX_CONFIG, [ wx-config --version ], wx-config, not_found)
2195 AC_MSG_CHECKING(for wxWidgets configuration script)
2196 AC_MSG_RESULT($WX_CONFIG)
2198 ok_wx_version=0
2199 wx_multi_lib=0
2200 wx_needs_gtk2=0
2201 AC_MSG_CHECKING(for wxWidgets library version)
2202 if test x$WX_CONFIG != xnot_found; then
2203   WX_VERSION=`$WX_CONFIG --version`
2204   WX_BASENAME=`$WX_CONFIG --basename`
2205   [
2206   # test that version >= 2.3.2.  Anybody have a better way to do this? Yuck.
2207   case x$WX_VERSION in
2208     x2.[012]*) ;; # less than version 2.3.x
2209     x2.3.[01]) ;; # less than version 2.3.2
2210     x2.3.[2-4]*) ok_wx_version=1 ;;  # 2.3.2 or greater
2211     x2.[4-5]*) ok_wx_version=1 ;;  # version 2.4 / 2.5
2212     x2.[6-9]*)  # version 2.6 or greater
2213       ok_wx_version=1
2214       wx_multi_lib=1
2215       case x$WX_BASENAME in
2216         xwx_gtk2|xwx_gtk2u) wx_needs_gtk2=1 ;;
2217         *) ;;
2218       esac
2219       ;;
2220     x[3-9]*) ok_wx_version=1 ;;  # version 3 or greater
2221     *) ;; # who knows?
2222   esac
2223   ]
2225 AC_MSG_RESULT($WX_VERSION)
2226 if test "$cross_configure" = 0; then
2227   if test "$ok_wx_version" = 1; then
2228     # detected a usable version
2229     if test "$with_all_libs" = yes; then
2230       with_wx=yes
2231     fi
2232   else
2233     if test "$with_wx" = yes; then
2234       AC_MSG_WARN([Bochs for wxWidgets cannot be compiled here, disabling it])
2235     fi
2236     with_wx=no
2237   fi
2240 AC_MSG_CHECKING(for default gui on this platform)
2241 AC_MSG_RESULT($DEFAULT_GUI)
2243 display_libs=""
2245 # the $with_* variable tells the gui library to use, but does NOT necessarily
2246 # indicate the platform.  Settings that depend on the platform should be
2247 # handled later.
2249 XPM_LIB=''
2250 if test "$with_x11" = yes; then
2251   display_libs="$display_libs X11"
2252   if test "$no_x" = yes; then
2253     echo ERROR: X windows gui was selected, but X windows libraries were not found.
2254     exit 1
2255   fi
2256   AC_DEFINE(BX_WITH_X11, 1)
2257   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_X11)"
2258   GUI_CFLAGS="$GUI_CFLAGS \$(X_CFLAGS)"
2259   GUI_CXXFLAGS="$GUI_CXXFLAGS \$(X_CFLAGS)"
2260   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_X)"
2261   check_xpm=0
2262   AC_MSG_CHECKING(whether user wants XPM support)
2263   AC_ARG_ENABLE(xpm,
2264     [  --enable-xpm                      enable the check for XPM support],
2265     [if test "$enableval" = yes; then
2266       check_xpm=0
2267       AC_MSG_RESULT(yes)
2268       check_xpm=1
2269      else
2270       AC_MSG_RESULT(no)
2271       check_xpm=0
2272      fi],
2273     [
2274       AC_MSG_RESULT(yes)
2275       check_xpm=1
2276       ]
2277     )
2278   if test $check_xpm = 1; then
2279     AC_CHECK_HEADER(X11/xpm.h, [
2280         AC_DEFINE(BX_HAVE_XPM_H)
2281         XPM_LIB='-lXpm'
2282       ])
2283   fi
2285 AC_SUBST(XPM_LIB)
2287 if test "$with_beos" = yes; then
2288   display_libs="$display_libs beos"
2289   AC_DEFINE(BX_WITH_BEOS, 1)
2290   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_BEOS)"
2291   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_BEOS)"
2294 if test "$with_sdl" = yes; then
2295   display_libs="$display_libs sdl"
2296   AC_DEFINE(BX_WITH_SDL, 1)
2297   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_SDL)"
2298   # GUI_*FLAGS are added to the compilation of every bochs file, not just
2299   # the files in gui/*.cc.
2300   SDL_CFLAGS=`sdl-config --cflags`
2301   GUI_CFLAGS="$GUI_CFLAGS $SDL_CFLAGS"
2302   GUI_CXXFLAGS="$GUI_CXXFLAGS $SDL_CFLAGS"
2303   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_SDL)"
2304   if test "$with_win32" != yes -a "$with_wx" != yes; then
2305     case $target in
2306       *-pc-windows*)
2307          RC_CMD="rc /fo"
2308          EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2309          ;;
2310       *-cygwin* | *-mingw32*)
2311          RC_CMD="windres -o "
2312          EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2313          ;;
2314     esac
2315   fi
2318 if test "$with_svga" = yes; then
2319   display_libs="$display_libs svga"
2320   AC_DEFINE(BX_WITH_SVGA, 1)
2321   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_SVGA)"
2322   # GUI_*FLAGS are added to the compilation of every bochs file, not just
2323   # the files in gui/*.cc.
2324   GUI_CFLAGS="$GUI_CFLAGS"
2325   GUI_CXXFLAGS="$GUI_CXXFLAGS"
2326   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_SVGA)"
2329 if test "$with_rfb" = yes; then
2330   display_libs="$display_libs rfb"
2331   AC_DEFINE(BX_WITH_RFB, 1)
2332   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_RFB)"
2333   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_RFB)"
2336 if test "$with_amigaos" = yes; then
2337   display_libs="$display_libs amigaos"
2338   AC_DEFINE(BX_WITH_AMIGAOS, 1)
2339   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_AMIGAOS)"
2340   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_AMIGAOS)"
2343 if test "$with_win32" = yes; then
2344   display_libs="$display_libs win32"
2345   AC_DEFINE(BX_WITH_WIN32, 1)
2346   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_WIN32)"
2347   case $target in
2348     *-pc-windows*)
2349        if test "$with_wx" != yes; then
2350          RC_CMD="rc /fo"
2351          EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2352        fi
2353        GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WIN32_VCPP)"
2354        ;;
2355     *-cygwin* | *-mingw32*)
2356        if test "$with_wx" != yes; then
2357          RC_CMD="windres -o "
2358          EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2359        fi
2360        GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WIN32)"
2361        ;;
2362     *) echo Unsupported compile setup: GUI library is win32, but target is neither windows nor cygwin.
2363        ;;
2364   esac
2367 if test "$with_macos" = yes; then
2368   display_libs="$display_libs macos"
2369   AC_DEFINE(BX_WITH_MACOS, 1)
2370   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_MACOS)"
2371   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_MACOS)"
2374 if test "$with_carbon" = yes; then
2375   display_libs="$display_libs carbon"
2376   AC_DEFINE(BX_WITH_CARBON, 1)
2377   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_CARBON)"
2378   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_CARBON)"
2379   if test "$bx_plugins" = 1; then
2380     PRIMARY_TARGET=bochs.app/.build_plugins   # only for carbon application
2381   else
2382     PRIMARY_TARGET=bochs.app/.build   # only for carbon application
2383   fi
2384   INSTALL_TARGET='install_macosx'
2387 if test "$with_term" = yes; then
2388   display_libs="$display_libs term"
2389   AC_DEFINE(BX_WITH_TERM, 1)
2390   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_TERM)"
2391   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_TERM)"
2392   use_curses=yes
2395 if test "$with_wx" = yes; then
2396   display_libs="$display_libs wxWidgets"
2397   if test "$cross_configure" = 1; then
2398     true  # do not insist, if configuring for another machine
2399   else
2400     if test x$ok_wx_version != x1; then
2401       echo ERROR: A usable version of wxWidgets was not found.
2402       echo Upgrade the library or choose another gui.
2403       exit 1
2404     fi
2405   fi
2406   AC_DEFINE(BX_WITH_WX, 1)
2407   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_WX)"
2408   SPECIFIC_GUI_SUPPORT_OBJS="$SPECIFIC_GUI_SUPPORT_OBJS \$(GUI_OBJS_WX_SUPPORT)"
2409   WX_CFLAGS="`$WX_CONFIG --cflags`"
2410   WX_CXXFLAGS="`$WX_CONFIG --cxxflags`"
2411   if test "$wx_multi_lib" = 1; then
2412     GUI_LINK_OPTS_WX="`$WX_CONFIG --libs core,base`"
2413   else
2414     GUI_LINK_OPTS_WX="`$WX_CONFIG --libs`"
2415   fi
2416   if test "$wx_needs_gtk2" = 1; then
2417     PKG_CHECK_MODULES([GTK], [gtk+-2.0], [
2418       WX_CFLAGS="$WX_CFLAGS $GTK_CFLAGS"
2419       WX_CXXFLAGS="$WX_CXXFLAGS $GTK_CFLAGS"
2420     ])
2421   else
2422     # if gtk-config exists, then add it to the cflags.
2423     gtkconf=`gtk-config --cflags`
2424     if test $? = 0; then
2425       # gtk-config was found and returned 0, so it must return valid output
2426       WX_CFLAGS="$WX_CFLAGS $gtkconf"
2427       WX_CXXFLAGS="$WX_CXXFLAGS $gtkconf"
2428     fi
2429   fi
2430   # GUI_C*FLAGS are added to the compilation of every bochs file, not just
2431   # the files in gui/*.cc.  They are not used when building other things
2432   # such as bximage.
2433   GUI_CFLAGS="$GUI_CFLAGS $WX_CFLAGS"
2434   GUI_CXXFLAGS="$GUI_CXXFLAGS $WX_CXXFLAGS"
2435   GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WX)"
2436   # using debugger with readline is failing due to thread/signal handler
2437   # problems.
2438   case $target in
2439     *-pc-windows* | *-cygwin* | *-mingw32*)
2440        EXTRA_BX_OBJS="$EXTRA_BX_OBJS wxbochs_resources.o"
2441            GUI_LINK_OPTS_WX="$GUI_LINK_OPTS_WX --subsystem,windows -mwindows"
2442        ;;
2443   esac
2446 if test "$with_nogui" = yes; then
2447   display_libs="$display_libs nogui"
2448   AC_DEFINE(BX_WITH_NOGUI, 1)
2449   SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_NOGUI)"
2452 AC_MSG_CHECKING(for display libraries)
2453 AC_MSG_RESULT($display_libs)
2455 if test "$display_libs" = ""; then
2456   echo "No display libraries were selected. Use --with-* options to enable"
2457   echo "individual display libraries, or --with-all-libs to detect the ones"
2458   echo "that Bochs supports."
2459   exit 1
2462 dnl To use wxWidgets you must select it as both the configuration interface
2463 dnl and the display library.  In the simplest case where the user has
2464 dnl only configured with --with-wx, set both defaults to wxWidgets.
2465 dnl Without this setting, the config interface would default to the text
2466 dnl mode config interface, and then the wxWidgets display library would not
2467 dnl be usable.
2468 if test "$display_libs" = " wxWidgets"; then
2469   AC_MSG_CHECKING(for default configuration interface)
2470   AC_MSG_RESULT(wxWidgets)
2471   AC_MSG_CHECKING(for default display library)
2472   AC_MSG_RESULT(wxWidgets)
2473   AC_DEFINE(BX_DEFAULT_CONFIG_INTERFACE, "wx")
2474   AC_DEFINE(BX_DEFAULT_DISPLAY_LIBRARY, "wx")
2475   AC_DEFINE(BX_USE_TEXTCONFIG, 0)
2476 else
2477   AC_DEFINE(BX_USE_TEXTCONFIG, 1)
2480 if test "$bx_plugins" = 1; then
2481   # every item in this list will be compiled as a plugin. Do not include
2482   # support objs; they will be mentioned in plugin-specific makefile rules.
2483   GUI_PLUGIN_OBJS="$GUI_PLUGIN_OBJS $SPECIFIC_GUI_OBJS"
2484 else
2485   # include support objs
2486   GUI_NON_PLUGIN_OBJS="$GUI_NON_PLUGIN_OBJS $SPECIFIC_GUI_OBJS $SPECIFIC_GUI_SUPPORT_OBJS"
2489 AC_SUBST(GUI_CFLAGS)
2490 AC_SUBST(GUI_CXXFLAGS)
2491 AC_SUBST(WX_CONFIG)
2492 AC_SUBST(WX_CFLAGS)
2493 AC_SUBST(WX_CXXFLAGS)
2495 AC_CHECK_PROGS(WGET, wget curl fetch, not_found)
2496 if test "$WGET" = not_found; then
2497   AC_MSG_WARN([cannot find wget (or equivalent) command])
2499 # everybody has to re-invent the wheel. differently.
2500 test "${WGET}" = "curl" && WGET="curl -O"
2502 # modify settings based on target platform
2503 case "$target" in
2504   *-macosx*)
2505     AC_DEFINE(BX_HAVE_STRDUP, 0)
2506     ;;
2507   *-macos*)
2508     AC_DEFINE(BX_HAVE_STRDUP, 0)
2509     AC_DEFINE(BX_PLUGINS, 0)
2510     AC_DEFINE(BX_HAVE_DLFCN_H, 0)
2511     AC_DEFINE(BX_HAVE_SOCKLEN_T, 0)
2512     AC_DEFINE(BX_HAVE_SELECT, 0)
2513     AC_DEFINE(BX_HAVE_GETTIMEOFDAY, 0)
2514     AC_DEFINE(BX_NO_ATTRIBUTES, 1)
2515     AC_DEFINE(HAVE_TUNTAP, 0)
2516     AC_DEFINE(HAVE_ETHERTAP, 0)
2517     AC_DEFINE(BX_HAVE_HASH_MAP, 0)
2518     ;;
2519   *-pc-windows*)
2520     INSTALL_TARGET='install_win32'
2521     CC="cl"
2522     CXX="$CC"
2523     #C_OPT="/Zi"   # for debugging
2524     C_OPT="/Ox"   # optimize for speed
2525     CFLAGS="/nologo /G6 /MT /W3 /GX- /DNDEBUG /DWIN32 /D_WINDOWS $C_OPT"
2526     CXXFLAGS="$CFLAGS"
2527     DASH="/"
2528     SLASH="\\"
2529     CXXFP="/Tp"
2530     CFP="/Tc"
2531     OFP="/Fo"
2532     MAKE=nmake
2533     MAKELIB="lib /nologo /subsystem:console /verbose /out:\$@"
2534     RMCOMMAND="-del"
2535     RANLIB="echo"
2536     #L_OPT="/debug"    # for debugging
2537     L_OPT=""           # no debug info
2538     LINK="link $L_OPT /nologo /subsystem:console /incremental:no /out:\$@ "
2539     LINK_CONSOLE=$LINK
2540     EXE=".exe"
2541     PRIMARY_TARGET="bochs.exe"
2542     BXIMAGE_LINK_OPTS="user32.lib"
2543     # also compile niclist if networking is on
2544     if test "$networking" = yes; then
2545       PRIMARY_TARGET="$PRIMARY_TARGET niclist.exe"
2546     fi
2547     COMMAND_SEPARATOR=""
2548     CD_UP_ONE="cd .."
2549     CD_UP_TWO="cd ..\.."
2550     CD_UP_THREE="cd ..\..\.."
2551     have_gettimeofday=0  # even though it may exist in build environment
2552     AC_DEFINE(BX_64BIT_CONSTANTS_USE_LL, 0)
2553     AC_DEFINE(inline, __inline)
2554     AC_DEFINE(BX_NO_EMPTY_STRUCTS, 1)
2555     AC_DEFINE(BX_NO_ATTRIBUTES, 1)
2556     AC_DEFINE(BX_HAVE_HASH_MAP, 0)
2557     AC_DEFINE(BX_HAVE_HASH_MAP_H, 0)
2558     AC_DEFINE(BX_HAVE_STRTOULL, 0)
2559     AC_DEFINE(BX_HAVE_STRTOUQ, 0)
2560     AC_DEFINE(HAVE_LIBREADLINE, 0)
2561     AC_DEFINE(BX_HAVE_GETTIMEOFDAY, 0)
2562     AC_DEFINE(BX_HAVE_DLFCN_H, 0)
2563     AC_DEFINE(BX_HAVE_MKSTEMP, 0)
2564     AC_DEFINE(BX_HAVE_SYS_MMAN_H, 0)
2565     AC_DEFINE(BX_HAVE_USLEEP, 0)
2566     AC_DEFINE(HAVE_ETHERTAP, 0)
2567     AC_DEFINE(BX_HAVE_SELECT, 1)
2568     AC_DEFINE(BX_HAVE_SOCKLEN_T, 0)
2569     ;;
2570   *-pc-cygwin*)
2571     EXE=".exe"
2572     PRIMARY_TARGET="bochs.exe"
2573     BXIMAGE_LINK_OPTS="-luser32"
2574     if test "$networking" = yes; then
2575       PRIMARY_TARGET="$PRIMARY_TARGET niclist.exe"
2576     fi
2577     AC_DEFINE(BX_HAVE_SELECT, 1)
2578     ;;
2579   *-pc-mingw*)
2580     BXIMAGE_LINK_OPTS="-luser32"
2581     if test "$networking" = yes; then
2582       PRIMARY_TARGET="$PRIMARY_TARGET niclist"
2583     fi
2584     AC_DEFINE(BX_HAVE_SELECT, 1)
2585     ;;
2586   *-beos*)
2587     PRIMARY_TARGET=.bochs_beos_target
2588     ;;
2589 esac
2591 DIALOG_OBJS=""
2592 EXPORT_DYNAMIC="-export-dynamic"
2593 case $target in
2594   *-pc-windows* | *-pc-winnt* | *-cygwin* | *-mingw*)
2595     if test "$bx_plugins" = 1; then
2596       AC_CHECK_LIB(mingwex, opendir, LIBS="$LIBS -lmingwex")
2597       # set variables for building DLL plugins
2598       PRIMARY_TARGET=".win32_dll_plugin_target"
2599       PLUGIN_LIBNAME_TRANSFORMATION='%.o=bx_%.dll'
2600       INSTALL_PLUGINS_VAR=install_dll_plugins
2601     else
2602       if test "$with_win32" != yes; then
2603         LIBS="$LIBS -lcomctl32"
2604       fi
2605     fi
2606     DIALOG_OBJS="win32dialog.o"
2607     EXPORT_DYNAMIC=""
2608     ;;
2609 esac
2610 AC_SUBST(DIALOG_OBJS)
2611 AC_SUBST(EXPORT_DYNAMIC)
2613 if test "$use_curses" = yes -a "$cross_configure" = 0; then
2614   AC_CHECK_LIB(curses, mvaddch, GUI_LINK_OPTS_TERM='-lcurses')
2615   AC_CHECK_LIB(ncurses, mvaddch, GUI_LINK_OPTS_TERM='-lncurses')
2616   AC_CHECK_LIB(termlib, mvaddch, GUI_LINK_OPTS_TERM='-ltermlib')
2617   AC_CHECK_LIB(pdcurses, mvaddch, GUI_LINK_OPTS_TERM='-lpdcurses')
2618   if test "$GUI_LINK_OPTS_TERM" = ""; then
2619     echo Curses library not found: tried curses, ncurses, termlib and pdcurses.
2620     exit 1
2621   fi
2624 if test "$with_term" = yes; then
2625   old_LIBS="$LIBS"
2626   LIBS="$LIBS $GUI_LINK_OPTS_TERM"
2627   AC_CHECK_FUNCS(color_set, AC_DEFINE(BX_HAVE_COLOR_SET, 1))
2628   AC_CHECK_FUNCS(mvhline, AC_DEFINE(BX_HAVE_MVHLINE, 1))
2629   AC_CHECK_FUNCS(mvvline, AC_DEFINE(BX_HAVE_MVVLINE, 1))
2630   LIBS="$old_LIBS"
2633 if test "$with_rfb" = yes; then
2634   # we need the socket function
2635   case $target in
2636     *-pc-windows*)
2637       # is this okay without a check ?
2638       RFB_LIBS="$RFB_LIBS wsock32.lib"
2639       have_socket=yes
2640       ;;
2641     *-pc-winnt* | *-pc-cygwin* | *-pc-mingw32*)
2642       # is this okay without a check ?
2643       RFB_LIBS="$RFB_LIBS -lwsock32"
2644       have_socket=yes
2645       ;;
2646     *)
2647       AC_CHECK_FUNCS(socket, have_socket=yes)
2648       if test "$have_socket" != yes; then
2649         AC_CHECK_LIB(socket, socket,
2650           [
2651             RFB_LIBS="$RFB_LIBS -lsocket"
2652             have_socket=yes
2653           ])
2654       fi
2655       ;;
2656   esac
2657   if test "$have_socket" != yes; then
2658     echo 'ERROR: socket function required for RFB compile'
2659     exit 1
2660   fi
2663 # The ACX_PTHREAD function was written by
2664 # Steven G. Johnson <stevenj@alum.mit.edu> and
2665 # Alejandro Forero Cuervo <bachue@bachue.com>
2666 # I found it in the ac-archive project on Source Forge.
2668 AC_DEFUN([ACX_PTHREAD], [
2669 AC_REQUIRE([AC_CANONICAL_HOST])
2670 acx_pthread_ok=no
2672 # First, check if the POSIX threads header, pthread.h, is available.
2673 # If it isn't, don't bother looking for the threads libraries.
2674 AC_CHECK_HEADER(pthread.h, , acx_pthread_ok=noheader)
2676 # We must check for the threads library under a number of different
2677 # names; the ordering is very important because some systems
2678 # (e.g. DEC) have both -lpthread and -lpthreads, where one of the
2679 # libraries is broken (non-POSIX).
2681 # First of all, check if the user has set any of the PTHREAD_LIBS,
2682 # etcetera environment variables, and if threads linking works using
2683 # them:
2684 if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
2685         save_CFLAGS="$CFLAGS"
2686         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2687         CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
2688         save_LIBS="$LIBS"
2689         LIBS="$PTHREAD_LIBS $LIBS"
2690         AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
2691         AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
2692         AC_MSG_RESULT($acx_pthread_ok)
2693         if test x"$acx_pthread_ok" = xno; then
2694                 PTHREAD_LIBS=""
2695                 PTHREAD_CFLAGS=""
2696         fi
2697         LIBS="$save_LIBS"
2698         CFLAGS="$save_CFLAGS"
2701 # Create a list of thread flags to try.  Items starting with a "-" are
2702 # C compiler flags, and other items are library names, except for "none"
2703 # which indicates that we try without any flags at all.
2705 acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt"
2707 # The ordering *is* (sometimes) important.  Some notes on the
2708 # individual items follow:
2710 # pthreads: AIX (must check this before -lpthread)
2711 # none: in case threads are in libc; should be tried before -Kthread and
2712 #       other compiler flags to prevent continual compiler warnings
2713 # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
2714 # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
2715 # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
2716 # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
2717 # -pthreads: Solaris/gcc
2718 # -mthreads: Mingw32/gcc, Lynx/gcc
2719 # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
2720 #      doesn't hurt to check since this sometimes defines pthreads too;
2721 #      also defines -D_REENTRANT)
2722 # pthread: Linux, etcetera
2723 # --thread-safe: KAI C++
2725 case "${host_cpu}-${host_os}" in
2726         *solaris*)
2728         # On Solaris (at least, for some versions), libc contains stubbed
2729         # (non-functional) versions of the pthreads routines, so link-based
2730         # tests will erroneously succeed.  (We need to link with -pthread or
2731         # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
2732         # a function called by this macro, so we could check for that, but
2733         # who knows whether they'll stub that too in a future libc.)  So,
2734         # we'll just look for -pthreads and -lpthread first:
2736         acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
2737         ;;
2738 esac
2740 if test x"$acx_pthread_ok" = xno; then
2741 for flag in $acx_pthread_flags; do
2743         case $flag in
2744                 none)
2745                 AC_MSG_CHECKING([whether pthreads work without any flags])
2746                 ;;
2748                 -*)
2749                 AC_MSG_CHECKING([whether pthreads work with $flag])
2750                 PTHREAD_CFLAGS="$flag"
2751                 ;;
2753                 *)
2754                 AC_MSG_CHECKING([for the pthreads library -l$flag])
2755                 PTHREAD_LIBS="-l$flag"
2756                 ;;
2757         esac
2759         save_LIBS="$LIBS"
2760         save_CFLAGS="$CFLAGS"
2761         LIBS="$PTHREAD_LIBS $LIBS"
2762         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2764         # Check for various functions.  We must include pthread.h,
2765         # since some functions may be macros.  (On the Sequent, we
2766         # need a special flag -Kthread to make this header compile.)
2767         # We check for pthread_join because it is in -lpthread on IRIX
2768         # while pthread_create is in libc.  We check for pthread_attr_init
2769         # due to DEC craziness with -lpthreads.  We check for
2770         # pthread_cleanup_push because it is one of the few pthread
2771         # functions on Solaris that doesn't have a non-functional libc stub.
2772         # We try pthread_create on general principles.
2773         AC_TRY_LINK([#include <pthread.h>],
2774                     [pthread_t th; pthread_join(th, 0);
2775                      pthread_attr_init(0); pthread_cleanup_push(0, 0);
2776                      pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
2777                     [acx_pthread_ok=yes])
2779         LIBS="$save_LIBS"
2780         CFLAGS="$save_CFLAGS"
2782         AC_MSG_RESULT($acx_pthread_ok)
2783         if test "x$acx_pthread_ok" = xyes; then
2784                 break;
2785         fi
2787         PTHREAD_LIBS=""
2788         PTHREAD_CFLAGS=""
2789 done
2792 # Various other checks:
2793 if test "x$acx_pthread_ok" = xyes; then
2794         save_LIBS="$LIBS"
2795         LIBS="$PTHREAD_LIBS $LIBS"
2796         save_CFLAGS="$CFLAGS"
2797         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2799         # Detect AIX lossage: threads are created detached by default
2800         # and the JOINABLE attribute has a nonstandard name (UNDETACHED).
2801         AC_MSG_CHECKING([for joinable pthread attribute])
2802         AC_TRY_LINK([#include <pthread.h>],
2803                     [int attr=PTHREAD_CREATE_JOINABLE;],
2804                     ok=PTHREAD_CREATE_JOINABLE, ok=unknown)
2805         if test x"$ok" = xunknown; then
2806                 AC_TRY_LINK([#include <pthread.h>],
2807                             [int attr=PTHREAD_CREATE_UNDETACHED;],
2808                             ok=PTHREAD_CREATE_UNDETACHED, ok=unknown)
2809         fi
2810         if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then
2811                 AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok,
2812                           [Define to the necessary symbol if this constant
2813                            uses a non-standard name on your system.])
2814         fi
2815         AC_MSG_RESULT(${ok})
2816         if test x"$ok" = xunknown; then
2817                 AC_MSG_WARN([we do not know how to create joinable pthreads])
2818         fi
2820         AC_MSG_CHECKING([if more special flags are required for pthreads])
2821         flag=no
2822         case "${host_cpu}-${host_os}" in
2823                 *-aix* | *-freebsd*)     flag="-D_THREAD_SAFE";;
2824                 *solaris* | alpha*-osf*) flag="-D_REENTRANT";;
2825         esac
2826         AC_MSG_RESULT(${flag})
2827         if test "x$flag" != xno; then
2828                 PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
2829         fi
2831         LIBS="$save_LIBS"
2832         CFLAGS="$save_CFLAGS"
2834         # More AIX lossage: must compile with cc_r
2835         AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
2836 else
2837         PTHREAD_CC="$CC"
2840 AC_SUBST(PTHREAD_LIBS)
2841 AC_SUBST(PTHREAD_CFLAGS)
2842 AC_SUBST(PTHREAD_CC)
2844 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
2845 if test x"$acx_pthread_ok" = xyes; then
2846         ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
2847         :
2848 else
2849         acx_pthread_ok=no
2850         $2
2853 ])dnl ACX_PTHREAD
2855 pthread_ok=no
2856 ACX_PTHREAD([
2857   pthread_ok=yes
2858   #echo Using PTHREAD_LIBS=$PTHREAD_LIBS
2859   #echo Using PTHREAD_CFLAGS=$PTHREAD_CFLAGS
2860   #echo Using PTHREAD_CC=$PTHREAD_CC
2861   ])
2864 # since RFB (usually) needs pthread library, check that it was found.
2865 # But on win32 platforms, the pthread library is not needed.
2866 if test "$with_rfb" = yes -a "$cross_configure" = 0; then
2867   if test "$pthread_ok" = yes; then
2868     RFB_LIBS="$RFB_LIBS $PTHREAD_LIBS"
2869     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2870     CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
2871     CC="$PTHREAD_CC"
2872   else
2873     case "$target" in
2874           *-pc-windows* | *-pc-winnt* | *-cygwin* | *-mingw*)
2875             # pthread not needed for win32 platform
2876                 ;;
2877           *)
2878     echo ERROR: --with-rfb requires the pthread library, which could not be found.; exit 1
2879     esac
2880   fi
2883 dnl // DEPRECATED configure options - force users to remove them
2885 AC_MSG_CHECKING(for magic breakpoints (deprecated))
2886 AC_ARG_ENABLE(magic-breakpoints,
2887   [  --enable-magic-breakpoints        enables magic breakpoints (deprecated)],
2888   [AC_MSG_RESULT($enableval)
2889    AC_MSG_ERROR([DEPRECATED - magic breakpoints are always enabled with Bochs internal debugger])
2890   ],
2891   [
2892    AC_MSG_RESULT(no)
2893   ])
2895 AC_MSG_CHECKING(for save/restore (deprecated))
2896 AC_ARG_ENABLE(save-restore,
2897   [  --enable-save-restore             enables save/restore (deprecated)],
2898   [AC_MSG_RESULT($enableval)
2899    AC_MSG_ERROR([DEPRECATED - save/restore feature is always enabled])
2900   ],
2901   [
2902    AC_MSG_RESULT(no)
2903   ])
2905 # Create some subdirectories for when you run configure from some other
2906 # directory.
2907 if test ! -d instrument; then mkdir instrument; fi
2908 if test ! -d build; then mkdir build; fi
2909 if test ! -d build/linux; then mkdir build/linux; fi
2910 if test ! -d build/win32; then mkdir build/win32; fi
2911 if test ! -d build/win32/nsis; then mkdir build/win32/nsis; fi
2913 AC_SUBST(INSTALL_TARGET)
2914 AC_SUBST(INSTALL_LIST_FOR_PLATFORM)
2915 AC_SUBST(RFB_LIBS)
2916 AC_SUBST(GUI_OBJS)
2917 AC_SUBST(DEVICE_LINK_OPTS)
2918 AC_SUBST(GUI_LINK_OPTS)
2919 AC_SUBST(GUI_LINK_OPTS_TERM)
2920 AC_SUBST(GUI_LINK_OPTS_WX)
2921 AC_SUBST(BXIMAGE_LINK_OPTS)
2922 AC_SUBST(DASH)
2923 AC_SUBST(SLASH)
2924 AC_SUBST(CXXFP)
2925 AC_SUBST(CFP)
2926 AC_SUBST(OFP)
2927 AC_SUBST(MAKELIB)
2928 AC_SUBST(RMCOMMAND)
2929 AC_SUBST(LINK)
2930 AC_SUBST(LINK_CONSOLE)
2931 AC_SUBST(EXE)
2932 AC_SUBST(PRIMARY_TARGET)
2933 AC_SUBST(PLUGIN_LIBNAME_TRANSFORMATION)
2934 AC_SUBST(COMMAND_SEPARATOR)
2935 AC_SUBST(CD_UP_ONE)
2936 AC_SUBST(CD_UP_TWO)
2937 AC_SUBST(CD_UP_THREE)
2938 AC_SUBST(VERSION)
2939 AC_SUBST(VER_STRING)
2940 AC_SUBST(WIN_VER_STRING)
2941 AC_SUBST(REL_STRING)
2942 AC_SUBST(EXTRA_LINK_OPTS)
2943 AC_SUBST(GUI_NON_PLUGIN_OBJS)
2944 AC_SUBST(GUI_PLUGIN_OBJS)
2945 AC_SUBST(IODEV_NON_PLUGIN_OBJS)
2946 AC_SUBST(IODEV_PLUGIN_OBJS)
2947 AC_SUBST(PLUGIN_VAR)
2948 AC_SUBST(PLUGIN_TARGET)
2949 AC_SUBST(INSTALL_PLUGINS_VAR)
2951 AC_PATH_PROG(GZIP, gzip)
2952 AC_PATH_PROG(TAR, tar)
2954 AC_OUTPUT(Makefile iodev/Makefile bx_debug/Makefile bios/Makefile \
2955          cpu/Makefile memory/Makefile gui/Makefile \
2956          disasm/Makefile ${INSTRUMENT_DIR}/Makefile misc/Makefile \
2957          fpu/Makefile doc/docbook/Makefile \
2958          build/linux/bochs-dlx \
2959          bxversion.h bxversion.rc build/macosx/Info.plist \
2960          build/win32/nsis/Makefile build/win32/nsis/bochs.nsi \
2961          host/linux/pcidev/Makefile)