1 dnl // Process this file with autoconf to produce a configure script.
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.
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"
21 dnl Detect host and target
25 AC_MSG_CHECKING(if you are configuring for another platform)
26 if test "$cross_compiling" = yes -o "$target_os" = "windows"; then
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.
39 need_dlcompat_for_plugins=0
41 *-pc-windows* | *-pc-winnt*)
42 DEFAULT_GUI=win32 # default to win32 gui
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"
53 ADD_FLAGS="-mno-cygwin -DWIN32" # required for cygwin compile+win32 gui
54 DEFAULT_GUI=win32 # default to win32 gui
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
63 DEFAULT_GUI=macos # macos defaults to macos
66 ADD_FLAGS="-Wno-multichar"
67 DEFAULT_GUI=beos # beos defaults to beos
69 *-amigaos* | *-morphos*)
70 DEFAULT_GUI=amigaos # amigaos or morphos defaults to amigaos gui
73 ADD_FLAGS="-D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__" # required for correct function prototypes
74 LIBS="$LIBS -lsocket -lnsl"
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"
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.
117 dnl Check for dlopen support
119 dnl Configure 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.
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.
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
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"
180 BX_LARGEFILE_FLAGS="-D_LARGE_FILES"
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.
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
214 # use different functions to bypass configure caching
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
224 # not sure we should warn the user, crash, etc.
225 # expect link failure
229 AC_MSG_CHECKING(for struct timeval)
230 AC_TRY_COMPILE([#include <sys/time.h>],
234 AC_DEFINE(BX_HAVE_STRUCT_TIMEVAL, 1)
238 AC_MSG_CHECKING(if compiler allows empty structs)
239 AC_TRY_COMPILE([], [typedef struct { } junk;],
242 AC_DEFINE(BX_NO_EMPTY_STRUCTS)
246 AC_MSG_CHECKING(if compiler allows __attribute__)
247 AC_TRY_COMPILE([], [typedef struct { } __attribute__ ((packed)) junk;],
251 AC_DEFINE(BX_NO_ATTRIBUTES)
256 AC_MSG_CHECKING(for hash_map)
257 AC_TRY_COMPILE([#include <hash_map>], [],
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>], [],
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>], [],
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>], [],
278 AC_DEFINE(BX_HAVE_SET_H)
279 ], AC_MSG_RESULT(no))
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.]])
287 if test "$with_beos" != yes; then
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
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
308 if test "$with_macos" != yes; then
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
317 if test "$with_carbon" != yes; then
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
326 if test "$with_win32" != yes; then
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
335 if test "$with_sdl" != yes; then
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
344 if test "$with_svga" != yes; then
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
353 if test "$with_x11" != yes; then
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
362 if test "$with_rfb" != yes; then
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 ])
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 ])
375 if test $can_compile_rfb = 1; then
380 if test "$with_term" != yes; then
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
389 if test "$with_nogui" != yes; then
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
399 AC_DEFINE(BX_USE_IDLE_HACK, 1)
402 AC_DEFINE(BX_USE_IDLE_HACK, 0)
406 AC_DEFINE(BX_USE_IDLE_HACK, 0)
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
427 if test "$bx_plugins" = 1; then
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"
437 PLUGIN_TARGET=bochs_plugins
438 INSTALL_PLUGINS_VAR=install_libtool_plugins
439 NONPLUGIN_GUI_LINK_OPTS=''
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)'
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
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
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.])
470 AC_MSG_CHECKING(if compiler allows blank labels)
471 AC_TRY_COMPILE([], [ { label1: } ],
475 AC_DEFINE(BX_NO_BLANK_LABELS)
478 AC_MSG_CHECKING(if compiler allows LL for 64-bit constants)
479 AC_TRY_COMPILE([], [ { 42LL; } ],
483 AC_DEFINE(BX_64BIT_CONSTANTS_USE_LL, 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
493 AC_DEFINE(BX_SUPPORT_X86_64, 1)
498 AC_DEFINE(BX_SUPPORT_X86_64, 0)
504 AC_DEFINE(BX_SUPPORT_X86_64, 0)
510 AC_MSG_CHECKING(for SMP support)
512 [ --enable-smp compile in support for SMP configurations],
513 [if test "$enableval" = yes; then
515 AC_DEFINE(BX_SUPPORT_SMP, 1)
516 AC_DEFINE(BX_USE_CPU_SMF, 0)
520 AC_DEFINE(BX_SUPPORT_SMP, 0)
525 AC_DEFINE(BX_SUPPORT_SMP, 0)
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
535 AC_DEFINE(BX_CPU_LEVEL, 3)
536 AC_DEFINE(BX_CPU_LEVEL_HACKED, 3)
540 AC_DEFINE(BX_CPU_LEVEL, 4)
541 AC_DEFINE(BX_CPU_LEVEL_HACKED, 4)
545 AC_DEFINE(BX_CPU_LEVEL, 5)
546 AC_DEFINE(BX_CPU_LEVEL_HACKED, 5)
550 AC_DEFINE(BX_CPU_LEVEL, 6)
551 AC_DEFINE(BX_CPU_LEVEL_HACKED, 6)
555 echo "ERROR: you must supply a valid CPU level to --enable-cpu-level"
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"
566 # for multiprocessors or x86-64, cpu level must be 6
567 if test "$use_smp" = 1 -o "$use_x86_64" = 1; then
569 AC_DEFINE(BX_CPU_LEVEL, 6)
570 AC_DEFINE(BX_CPU_LEVEL_HACKED, 6)
574 AC_DEFINE(BX_CPU_LEVEL, 5)
575 AC_DEFINE(BX_CPU_LEVEL_HACKED, 5)
582 AC_MSG_CHECKING(for APIC support)
584 [ --enable-apic enable APIC support],
585 [if test "$enableval" = yes; then
587 AC_DEFINE(BX_SUPPORT_APIC, 1)
588 IOAPIC_OBJS='ioapic.o'
591 if test "$use_smp" = 1; then
592 echo "ERROR: With SMP configuration you must use --enable-apic"
595 AC_DEFINE(BX_SUPPORT_APIC, 0)
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
603 AC_DEFINE(BX_SUPPORT_APIC, 1)
604 IOAPIC_OBJS='ioapic.o'
607 AC_DEFINE(BX_SUPPORT_APIC, 0)
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
621 AC_DEFINE(BX_COMPRESSED_HD_SUPPORT, 1)
625 AC_DEFINE(BX_COMPRESSED_HD_SUPPORT, 0)
629 AC_DEFINE(BX_COMPRESSED_HD_SUPPORT, 0)
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
639 AC_DEFINE(BX_SUPPORT_NE2K, 1)
644 AC_DEFINE(BX_SUPPORT_NE2K, 0)
650 AC_DEFINE(BX_SUPPORT_NE2K, 0)
657 AC_MSG_CHECKING(for ACPI support)
659 [ --enable-acpi enable ACPI support],
660 [if test "$enableval" = yes; then
662 AC_DEFINE(BX_SUPPORT_ACPI, 1)
665 AC_DEFINE(BX_SUPPORT_ACPI, 0)
669 AC_DEFINE(BX_SUPPORT_ACPI, 0)
672 AC_SUBST(BX_SUPPORT_ACPI)
674 AC_MSG_CHECKING(for i440FX PCI support)
676 [ --enable-pci enable limited i440FX PCI support],
677 [if test "$enableval" = yes; then
679 AC_DEFINE(BX_SUPPORT_PCI, 1)
681 PCI_OBJ='pci.o pci2isa.o pci_ide.o pcivga.o acpi.o'
684 AC_DEFINE(BX_SUPPORT_PCI, 0)
690 AC_DEFINE(BX_SUPPORT_PCI, 0)
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)],
704 if test "$enableval" = "yes"; then
706 if test "$pci" != "1"; then
707 AC_MSG_ERROR([PCI host device mapping requires PCI support])
711 AC_MSG_NOTICE([Linux detected as host for PCI host device mapping])
712 linux_version=`uname -r`
713 case "$linux_version" in
715 PCIDEV_MODULE_MAKE_ALL="all-kernel24"
716 KERNEL_MODULE_SUFFIX="o"
719 PCIDEV_MODULE_MAKE_ALL="all-kernel26"
720 KERNEL_MODULE_SUFFIX="ko"
723 AC_MSG_ERROR([Linux kernel 2.4 or 2.6 is required])
726 KERNELDIR="/lib/modules/$linux_version/build"
736 AC_SUBST(PCIDEV_MODULE_MAKE_ALL)
737 AC_SUBST(KERNEL_MODULE_SUFFIX)
740 AC_MSG_ERROR([PCI host device mapping requires Linux as host])
743 AC_DEFINE(BX_SUPPORT_PCIDEV, 1)
744 PCI_OBJ="$PCI_OBJ pcidev.o"
747 AC_DEFINE(BX_SUPPORT_PCIDEV, 0)
752 AC_DEFINE(BX_SUPPORT_PCIDEV, 0)
758 AC_MSG_CHECKING(for limited USB support)
760 [ --enable-usb enable limited USB support],
761 [if test "$enableval" = yes; then
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"
769 AC_DEFINE(BX_SUPPORT_PCIUSB, 0)
773 AC_DEFINE(BX_SUPPORT_PCIUSB, 0)
777 AC_SUBST(USBDEV_OBJS)
780 AC_MSG_CHECKING(for PCI pseudo NIC support)
782 [ --enable-pnic enable PCI pseudo NIC support],
783 [if test "$enableval" = yes; then
785 AC_DEFINE(BX_SUPPORT_PCIPNIC, 1)
786 PCI_OBJ="$PCI_OBJ pcipnic.o"
790 AC_DEFINE(BX_SUPPORT_PCIPNIC, 0)
794 AC_DEFINE(BX_SUPPORT_PCIPNIC, 0)
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")
804 *-pc-windows* | *-pc-winnt* | *-pc-cygwin* | *-pc-mingw32*)
805 NETLOW_OBJS="$NETLOW_OBJS eth_win32.o"
807 *-macosx* | *-darwin*)
808 NETLOW_OBJS="$NETLOW_OBJS eth_tuntap.o"
809 AC_DEFINE(HAVE_TUNTAP, 1)
812 AC_CHECK_HEADER(net/if.h, [
814 AC_DEFINE(BX_HAVE_NET_IF_H, 1)
817 #include <sys/types.h>
818 #include <sys/socket.h>
820 AC_CHECK_HEADER(linux/netlink.h, [
824 #include <asm/types.h>
825 #include <sys/socket.h>
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)
834 AC_CHECK_HEADER(net/if_tun.h, [
838 #include <sys/types.h>
839 #include <sys/socket.h>
842 AC_CHECK_HEADER(linux/if_tun.h, [
846 #include <asm/types.h>
847 #include <sys/socket.h>
849 if test "$use_tuntap" = yes; then
850 NETLOW_OBJS="$NETLOW_OBJS eth_tuntap.o"
851 AC_DEFINE(HAVE_TUNTAP, 1)
856 AC_DEFINE(BX_NETWORKING, 1)
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
869 AC_DEFINE(BX_SUPPORT_LARGE_PAGES, 1)
870 support_large_pages=1
873 AC_DEFINE(BX_SUPPORT_LARGE_PAGES, 0)
874 support_large_pages=0
877 if test "$bx_cpu_level" -gt 4; then
879 AC_DEFINE(BX_SUPPORT_LARGE_PAGES, 1)
880 support_large_pages=1
883 AC_DEFINE(BX_SUPPORT_LARGE_PAGES, 0)
884 support_large_pages=0
890 AC_MSG_CHECKING(for PAE support)
892 [ --enable-pae support Physical Address Extensions],
893 [if test "$enableval" = yes; then
895 AC_DEFINE(BX_SUPPORT_PAE, 1)
899 AC_DEFINE(BX_SUPPORT_PAE, 0)
903 if test "$bx_cpu_level" -gt 5; then
905 AC_DEFINE(BX_SUPPORT_PAE, 1)
909 AC_DEFINE(BX_SUPPORT_PAE, 0)
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
920 AC_DEFINE(BX_SUPPORT_GLOBAL_PAGES, 1)
921 support_global_pages=1
924 AC_DEFINE(BX_SUPPORT_GLOBAL_PAGES, 0)
925 support_global_pages=0
928 if test "$bx_cpu_level" -gt 5; then
931 AC_DEFINE(BX_SUPPORT_GLOBAL_PAGES, 1)
932 support_global_pages=1
935 AC_DEFINE(BX_SUPPORT_GLOBAL_PAGES, 0)
936 support_global_pages=0
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)
955 [ --enable-mtrr support for MTRRs],
956 [if test "$enableval" = yes; then
958 AC_DEFINE(BX_SUPPORT_MTRR, 1)
961 AC_DEFINE(BX_SUPPORT_MTRR, 0)
964 if test "$bx_cpu_level" -gt 5; then
967 AC_DEFINE(BX_SUPPORT_MTRR, 1)
970 AC_DEFINE(BX_SUPPORT_MTRR, 0)
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
980 speedup_guest2host_tlb=1
983 speedup_guest2host_tlb=0
987 speedup_guest2host_tlb=0
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
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
1012 speedup_TraceCache=1
1015 speedup_TraceCache=0
1018 if test "$speedup_TraceCache " = 1; then
1020 speedup_TraceCache=1
1023 speedup_TraceCache=0
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
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
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
1065 speedup_host_specific_asms=1
1068 speedup_host_specific_asms=0
1072 speedup_host_specific_asms=0
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
1081 AC_DEFINE(BX_IGNORE_BAD_MSR, 1)
1084 AC_DEFINE(BX_IGNORE_BAD_MSR, 0)
1088 AC_DEFINE(BX_IGNORE_BAD_MSR, 1)
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
1097 AC_DEFINE(BX_PORT_E9_HACK, 1)
1100 AC_DEFINE(BX_PORT_E9_HACK, 0)
1104 AC_DEFINE(BX_PORT_E9_HACK, 1)
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
1113 AC_DEFINE(BX_SHOW_IPS, 1)
1116 AC_DEFINE(BX_SHOW_IPS, 0)
1120 AC_DEFINE(BX_SHOW_IPS, 0)
1124 AC_MSG_CHECKING(for use of .cpp as suffix)
1126 [ --enable-cpp use .cpp as C++ suffix],
1127 [if test "$enableval" = yes; then
1129 SUFFIX_LINE='.SUFFIXES: .cpp'
1133 SUFFIX_LINE='.SUFFIXES: .cc'
1138 SUFFIX_LINE='.SUFFIXES: .cc'
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
1151 cppname=`echo $ccname | sed -e "s/\.cc$/.cpp/"`
1152 echo "mv $ccname $cppname"
1156 echo "no more .cc source files to rename"
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
1167 AC_DEFINE(BX_DEBUGGER, 1)
1168 DEBUGGER_VAR='$(DEBUGGER_LIB)'
1172 AC_DEFINE(BX_DEBUGGER, 0)
1179 AC_DEFINE(BX_DEBUGGER, 0)
1184 AC_SUBST(DEBUGGER_VAR)
1186 AC_MSG_CHECKING(for external debugger)
1188 AC_ARG_ENABLE(external-debugger,
1189 [ --enable-external-debugger enable external debugger support (win32 only)],
1190 [if test "$enableval" = yes; then
1192 *-pc-windows* | *-cygwin* | *-mingw32*)
1194 AC_DEFINE(BX_EXTERNAL_DEBUGGER, 1)
1195 EXT_DEBUG_OBJS=extdb.o
1198 echo "ERROR: external debugger is currently supported on win32 only"
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
1215 AC_DEFINE(BX_DISASM, 1)
1216 DISASM_VAR='$(DISASM_LIB)'
1219 if test "$bx_debugger" = 1; then
1220 echo "ERROR: debugger is enabled, so --enable-disasm is required"
1223 AC_DEFINE(BX_DISASM, 0)
1228 AC_DEFINE(BX_DISASM, 1)
1229 DISASM_VAR='$(DISASM_LIB)'
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
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
1260 speedup_TraceCache=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)
1271 AC_DEFINE(BX_SupportGuest2HostTLB, 0)
1274 if test "$speedup_repeat" = 1; then
1275 AC_DEFINE(BX_SupportRepeatSpeedups, 1)
1277 AC_DEFINE(BX_SupportRepeatSpeedups, 0)
1280 if test "$speedup_iCache" = 1; then
1281 AC_DEFINE(BX_SUPPORT_ICACHE, 1)
1283 AC_DEFINE(BX_SUPPORT_ICACHE, 0)
1286 if test "$speedup_host_specific_asms" = 1; then
1287 AC_DEFINE(BX_SupportHostAsms, 1)
1289 AC_DEFINE(BX_SupportHostAsms, 0)
1292 if test "$speedup_fastcall" = 1; then
1293 AC_DEFINE(BX_FAST_FUNC_CALL, 1)
1295 AC_DEFINE(BX_FAST_FUNC_CALL, 0)
1298 if test "$speedup_TraceCache" = 1; then
1299 AC_DEFINE(BX_SUPPORT_TRACE_CACHE, 1)
1301 AC_DEFINE(BX_SUPPORT_TRACE_CACHE, 0)
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
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)
1332 LIBS="$LIBS -lreadline"
1335 #include <readline/readline.h>
1336 int main() { rl_initialize(); exit(0); }
1338 [ AC_MSG_RESULT(yes)
1339 rl_without_curses_ok=yes ],
1340 [ AC_MSG_RESULT(no) ]
1342 AC_MSG_CHECKING(if readline works with -lcurses)
1343 LIBS="$LIBS -lcurses"
1346 #include <readline/readline.h>
1347 int main() { rl_initialize(); exit(0); }
1350 rl_with_curses_ok=yes ],
1351 [ AC_MSG_RESULT(no) ]
1355 if test "$rl_without_curses_ok" = yes; then
1357 AC_DEFINE(HAVE_LIBREADLINE, 1)
1358 READLINE_LIB="-lreadline"
1360 elif test "$rl_with_curses_ok" = yes; then
1362 AC_DEFINE(HAVE_LIBREADLINE, 1)
1363 READLINE_LIB="-lreadline -lcurses"
1367 echo WARNING: The readline library was disabled because it was not found.
1375 AC_SUBST(READLINE_LIB)
1377 AC_CHECK_HEADER(readline/history.h,
1378 AC_DEFINE(HAVE_READLINE_HISTORY_H)
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
1388 AC_DEFINE(BX_INSTRUMENTATION, 1)
1389 INSTRUMENT_VAR='$(INSTRUMENT_LIB)'
1390 elif test "$enableval" = no; then
1392 AC_DEFINE(BX_INSTRUMENTATION, 0)
1396 AC_DEFINE(BX_INSTRUMENTATION, 1)
1397 INSTRUMENT_DIR=$enableval
1398 INSTRUMENT_VAR='$(INSTRUMENT_LIB)'
1402 AC_DEFINE(BX_INSTRUMENTATION, 0)
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
1413 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS wsock32.lib"
1415 *-cygwin* | *-mingw32*)
1416 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwsock32"
1421 AC_MSG_CHECKING(enable logging)
1422 AC_ARG_ENABLE(logging,
1423 [ --enable-logging enable logging],
1424 [if test "$enableval" = yes; then
1426 AC_DEFINE(BX_NO_LOGGING, 0)
1429 AC_DEFINE(BX_NO_LOGGING, 1)
1433 AC_DEFINE(BX_NO_LOGGING, 0)
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
1442 AC_DEFINE(USE_RAW_SERIAL, 1)
1445 AC_DEFINE(USE_RAW_SERIAL, 0)
1449 AC_DEFINE(USE_RAW_SERIAL, 0)
1453 AC_MSG_CHECKING(for VESA BIOS extensions)
1455 [ --enable-vbe use VESA BIOS extensions],
1456 [if test "$enableval" = yes; then
1458 AC_DEFINE(BX_SUPPORT_VBE, 1)
1459 if test "$pci" = 1; then
1460 AC_DEFINE(BX_SUPPORT_PCIVGA, 1)
1464 AC_DEFINE(BX_SUPPORT_VBE, 0)
1468 AC_DEFINE(BX_SUPPORT_VBE, 1)
1469 if test "$pci" = 1; then
1470 AC_DEFINE(BX_SUPPORT_PCIVGA, 1)
1475 AC_MSG_CHECKING(for CLGD54XX emulation)
1476 AC_ARG_ENABLE(clgd54xx,
1477 [ --enable-clgd54xx enable CLGD54XX emulation],
1478 [if test "$enableval" = yes; then
1480 AC_DEFINE(BX_SUPPORT_CLGD54XX, 1)
1483 AC_DEFINE(BX_SUPPORT_CLGD54XX, 0)
1487 AC_DEFINE(BX_SUPPORT_CLGD54XX, 0)
1492 AC_MSG_CHECKING(for FPU emulation)
1495 [ --enable-fpu compile in FPU emulation],
1496 [if test "$enableval" = yes; then
1498 AC_DEFINE(BX_SUPPORT_FPU, 1)
1499 FPU_VAR='$(FPU_LIB)'
1500 elif test "$enableval" = no; then
1502 AC_DEFINE(BX_SUPPORT_FPU, 0)
1506 echo "ERROR: --enable-fpu does not accept a path"
1512 AC_DEFINE(BX_SUPPORT_FPU, 1)
1513 FPU_VAR='$(FPU_LIB)'
1518 AC_MSG_CHECKING(for VME support)
1520 [ --enable-vme virtual 8086 mode extensions],
1521 [if test "$enableval" = yes; then
1523 AC_DEFINE(BX_SUPPORT_VME, 1)
1524 elif test "$enableval" = no; then
1526 AC_DEFINE(BX_SUPPORT_VME, 0)
1530 if test "$bx_cpu_level" -ge 5; then
1532 AC_DEFINE(BX_SUPPORT_VME, 1)
1538 AC_MSG_CHECKING(for MMX support)
1540 [ --enable-mmx MMX support],
1541 [if test "$enableval" = yes; then
1543 AC_DEFINE(BX_SUPPORT_MMX, 1)
1544 elif test "$enableval" = no; then
1546 AC_DEFINE(BX_SUPPORT_MMX, 0)
1551 if test "$bx_cpu_level" -ge 5; then
1553 AC_DEFINE(BX_SUPPORT_MMX, 1)
1558 AC_MSG_CHECKING(for 3DNow! support)
1559 AC_ARG_ENABLE(3dnow,
1560 [ --enable-3dnow 3DNow! support],
1561 [if test "$enableval" = yes; then
1563 AC_DEFINE(BX_SUPPORT_3DNOW, 1)
1564 elif test "$enableval" = no; then
1566 AC_DEFINE(BX_SUPPORT_3DNOW, 0)
1571 AC_DEFINE(BX_SUPPORT_3DNOW, 0)
1576 AC_MSG_CHECKING(for SSE support)
1578 [ --enable-sse SSE support (--enable-sse=[no|1|2|3|4])],
1579 [case "$enableval" in
1601 echo "ERROR: --enable-sse=$enableval not understood. Use --enable-sse=[no|1|2|3|4]"
1607 if test "$use_x86_64" = 1; then
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)
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
1642 AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 1)
1643 support_sse_extensions=1
1644 elif test "$enableval" = no; then
1646 AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 0)
1651 AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 0)
1655 AC_MSG_CHECKING(for DAZ support)
1657 [ --enable-daz denormals-are-zeroes support],
1658 [if test "$enableval" = yes; then
1660 AC_DEFINE(BX_SUPPORT_DAZ, 1)
1661 elif test "$enableval" = no; then
1663 AC_DEFINE(BX_SUPPORT_DAZ, 0)
1667 if test "$support_sse" -ge 2; then
1669 AC_DEFINE(BX_SUPPORT_DAZ, 1)
1672 AC_DEFINE(BX_SUPPORT_DAZ, 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
1683 AC_DEFINE(BX_SUPPORT_XSAVE, 1)
1685 elif test "$enableval" = no; then
1687 AC_DEFINE(BX_SUPPORT_XSAVE, 0)
1692 AC_DEFINE(BX_SUPPORT_XSAVE, 0)
1696 if test "$support_sse" -lt 1 -a "$use_xsave" = 1; then
1697 AC_MSG_ERROR([XSAVE requires SSE support!])
1701 AC_MSG_CHECKING(for AES instructions support)
1703 [ --enable-aes support for AES instructions],
1704 [if test "$enableval" = yes; then
1706 AC_DEFINE(BX_SUPPORT_AES, 1)
1708 elif test "$enableval" = no; then
1710 AC_DEFINE(BX_SUPPORT_AES, 0)
1715 AC_DEFINE(BX_SUPPORT_AES, 0)
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
1728 AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 1)
1729 elif test "$enableval" = no; then
1731 AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 0)
1735 if test "$bx_cpu_level" -gt 3; then
1737 AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 1)
1740 AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 0)
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
1750 AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 1)
1751 elif test "$enableval" = no; then
1753 AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 0)
1758 AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 0)
1762 AC_MSG_CHECKING(for SEP support)
1764 [ --enable-sep SYSENTER/SYSEXIT support],
1765 [if test "$enableval" = yes; then
1767 AC_DEFINE(BX_SUPPORT_SEP, 1)
1768 elif test "$enableval" = no; then
1770 AC_DEFINE(BX_SUPPORT_SEP, 0)
1774 if test "$bx_cpu_level" -ge 6 -a "$support_mmx" = 1; then
1776 AC_DEFINE(BX_SUPPORT_SEP, 1)
1779 AC_DEFINE(BX_SUPPORT_SEP, 0)
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
1789 AC_DEFINE(BX_SUPPORT_POPCNT, 1)
1790 elif test "$enableval" = no; then
1792 AC_DEFINE(BX_SUPPORT_POPCNT, 0)
1796 if test "$support_sse" -ge 4 -a "$support_sse_extensions" = 1; then
1798 AC_DEFINE(BX_SUPPORT_POPCNT, 1)
1801 AC_DEFINE(BX_SUPPORT_POPCNT, 0)
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
1811 AC_DEFINE(BX_SUPPORT_MONITOR_MWAIT, 1)
1812 elif test "$enableval" = no; then
1814 AC_DEFINE(BX_SUPPORT_MONITOR_MWAIT, 0)
1819 AC_DEFINE(BX_SUPPORT_MONITOR_MWAIT, 0)
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
1828 AC_DEFINE(BX_X86_DEBUGGER, 1)
1829 elif test "$enableval" = no; then
1831 AC_DEFINE(BX_X86_DEBUGGER, 0)
1834 AC_DEFINE(BX_X86_DEBUGGER, 1)
1838 AC_DEFINE(BX_X86_DEBUGGER, 0)
1842 AC_CHECK_HEADER(IOKit/storage/IOCDMedia.h,
1843 can_use_osx_cdrom=yes
1846 AC_MSG_CHECKING(for CDROM support)
1847 AC_ARG_ENABLE(cdrom,
1848 [ --enable-cdrom CDROM support],
1849 [if test "$enableval" = no; then
1857 if test "$bx_cdrom" = 1; then
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
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)'
1871 # use the beos cdrom file instead
1872 CDROM_OBJS="$CDROM_OBJS cdrom_beos.o"
1874 AC_DEFINE(BX_SUPPORT_CDROM, 1)
1878 AC_DEFINE(BX_SUPPORT_CDROM, 0)
1881 AC_SUBST(CDROM_OBJS)
1884 AC_MSG_CHECKING(for Sound Blaster 16 support)
1890 [ --enable-sb16=xxx Sound Blaster 16 Support (xxx=dummy|win|linux|freebsd|osx)],
1891 [if test "$enableval" = no; then
1893 AC_DEFINE(BX_SUPPORT_SB16, 0)
1895 case "$enableval" in
1898 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_output_c)
1899 AC_MSG_RESULT(dummy)
1902 SOUNDLOW_OBJS='soundlnx.o'
1903 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_linux_c)
1904 AC_MSG_RESULT(linux)
1907 SOUNDLOW_OBJS='soundwin.o'
1908 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1912 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS winmm.lib"
1915 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
1920 SOUNDLOW_OBJS='soundosx.o'
1921 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_osx_c)
1923 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -framework AudioUnit -framework AudioToolbox"
1927 *-linux* | *-freebsd*)
1928 SOUNDLOW_OBJS='soundlnx.o'
1929 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_linux_c)
1930 AC_MSG_RESULT(linux)
1933 SOUNDLOW_OBJS='soundwin.o'
1934 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1936 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS winmm.lib"
1938 *-cygwin* | *-mingw32*)
1939 SOUNDLOW_OBJS='soundwin.o'
1940 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1942 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
1944 *-macosx* | *-macos*)
1945 SOUNDLOW_OBJS='soundosx.o'
1946 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_osx_c)
1948 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -framework AudioUnit -framework AudioToolbox"
1952 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_output_c)
1953 AC_MSG_RESULT(dummy)
1959 echo \!\!\!Error\!\!\!
1960 echo "You must pass one of dummy, linux, win, freebsd, osx to --enable-sb16"
1964 AC_DEFINE(BX_SUPPORT_SB16, 1)
1965 GAME_OBJS='gameport.o'
1971 AC_DEFINE(BX_SUPPORT_SB16, 0)
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
1983 AC_DEFINE(BX_SUPPORT_GAMEPORT, 1)
1984 if test "$gameport_present" = 0; then
1985 GAME_OBJS='gameport.o'
1987 *-cygwin* | *-mingw32*)
1988 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
1995 AC_DEFINE(BX_SUPPORT_GAMEPORT, 0)
1998 if test "$gameport_present" = 1; then
1999 AC_DEFINE(BX_SUPPORT_GAMEPORT, 1)
2002 AC_DEFINE(BX_SUPPORT_GAMEPORT, 0)
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
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]])
2021 AC_DEFINE(BX_GDBSTUB, 0)
2026 AC_DEFINE(BX_GDBSTUB, 0)
2030 AC_SUBST(GDBSTUB_VAR)
2033 AC_MSG_CHECKING(for I/O Interface to the debugger)
2035 AC_ARG_ENABLE(iodebug,
2036 [ --enable-iodebug enable I/O interface to debugger],
2037 [if test "$enableval" = yes; then
2039 AC_DEFINE(BX_SUPPORT_IODEBUG, 1)
2040 IODEBUG_OBJS='iodebug.o'
2043 AC_DEFINE(BX_SUPPORT_IODEBUG, 0)
2047 if test "" = 1; then
2048 # enable by default if debugger is on
2050 AC_DEFINE(BX_SUPPORT_IODEBUG, 1)
2051 IODEBUG_OBJS='iodebug.o'
2057 AC_SUBST(IODEBUG_OBJS)
2060 AC_PATH_PROG(DOCBOOK2HTML, docbook2html, not_found)
2061 AC_MSG_CHECKING(whether to build docbook documentation)
2063 AC_ARG_ENABLE(docbook,
2064 [ --enable-docbook build the Docbook documentation],
2066 if test "$enableval" = yes; then build_docbook=1; fi
2069 dnl Not specified. If they have docbook2html, then yes.
2070 if test "$DOCBOOK2HTML" != not_found; then build_docbook=1; fi
2074 if test $build_docbook = 1; then
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"
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)
2107 [ --with-x11 use X11 GUI],
2111 [ --with-beos use BeOS GUI],
2115 [ --with-win32 use Win32 GUI],
2119 [ --with-macos use Macintosh/CodeWarrior environment],
2123 [ --with-carbon compile for MacOS X with Carbon GUI],
2127 [ --with-nogui no native GUI, just use blank stubs],
2131 [ --with-term textmode terminal environment],
2135 [ --with-rfb use RFB protocol, works with VNC viewer],
2138 AC_ARG_WITH(amigaos,
2139 [ --with-amigaos use AmigaOS (or MorphOS) GUI],
2143 [ --with-sdl use SDL libraries],
2147 [ --with-svga use SVGALib libraries],
2151 [ --with-wx use wxWidgets libraries],
2154 AC_ARG_WITH(all-libs,
2155 [ --with-all-libs compile all guis that Bochs supports],
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
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"
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)
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`
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
2215 case x$WX_BASENAME in
2216 xwx_gtk2|xwx_gtk2u) wx_needs_gtk2=1 ;;
2220 x[3-9]*) ok_wx_version=1 ;; # version 3 or greater
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
2233 if test "$with_wx" = yes; then
2234 AC_MSG_WARN([Bochs for wxWidgets cannot be compiled here, disabling it])
2240 AC_MSG_CHECKING(for default gui on this platform)
2241 AC_MSG_RESULT($DEFAULT_GUI)
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
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.
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)"
2262 AC_MSG_CHECKING(whether user wants XPM support)
2264 [ --enable-xpm enable the check for XPM support],
2265 [if test "$enableval" = yes; then
2278 if test $check_xpm = 1; then
2279 AC_CHECK_HEADER(X11/xpm.h, [
2280 AC_DEFINE(BX_HAVE_XPM_H)
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
2308 EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2310 *-cygwin* | *-mingw32*)
2311 RC_CMD="windres -o "
2312 EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
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)"
2349 if test "$with_wx" != yes; then
2351 EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2353 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WIN32_VCPP)"
2355 *-cygwin* | *-mingw32*)
2356 if test "$with_wx" != yes; then
2357 RC_CMD="windres -o "
2358 EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2360 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WIN32)"
2362 *) echo Unsupported compile setup: GUI library is win32, but target is neither windows nor cygwin.
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
2382 PRIMARY_TARGET=bochs.app/.build # only for carbon application
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)"
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
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.
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`"
2414 GUI_LINK_OPTS_WX="`$WX_CONFIG --libs`"
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"
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"
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
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
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"
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."
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
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)
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"
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)
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
2505 AC_DEFINE(BX_HAVE_STRDUP, 0)
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)
2520 INSTALL_TARGET='install_win32'
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"
2533 MAKELIB="lib /nologo /subsystem:console /verbose /out:\$@"
2536 #L_OPT="/debug" # for debugging
2537 L_OPT="" # no debug info
2538 LINK="link $L_OPT /nologo /subsystem:console /incremental:no /out:\$@ "
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"
2547 COMMAND_SEPARATOR=""
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)
2572 PRIMARY_TARGET="bochs.exe"
2573 BXIMAGE_LINK_OPTS="-luser32"
2574 if test "$networking" = yes; then
2575 PRIMARY_TARGET="$PRIMARY_TARGET niclist.exe"
2577 AC_DEFINE(BX_HAVE_SELECT, 1)
2580 BXIMAGE_LINK_OPTS="-luser32"
2581 if test "$networking" = yes; then
2582 PRIMARY_TARGET="$PRIMARY_TARGET niclist"
2584 AC_DEFINE(BX_HAVE_SELECT, 1)
2587 PRIMARY_TARGET=.bochs_beos_target
2592 EXPORT_DYNAMIC="-export-dynamic"
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
2602 if test "$with_win32" != yes; then
2603 LIBS="$LIBS -lcomctl32"
2606 DIALOG_OBJS="win32dialog.o"
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.
2624 if test "$with_term" = yes; then
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))
2633 if test "$with_rfb" = yes; then
2634 # we need the socket function
2637 # is this okay without a check ?
2638 RFB_LIBS="$RFB_LIBS wsock32.lib"
2641 *-pc-winnt* | *-pc-cygwin* | *-pc-mingw32*)
2642 # is this okay without a check ?
2643 RFB_LIBS="$RFB_LIBS -lwsock32"
2647 AC_CHECK_FUNCS(socket, have_socket=yes)
2648 if test "$have_socket" != yes; then
2649 AC_CHECK_LIB(socket, socket,
2651 RFB_LIBS="$RFB_LIBS -lsocket"
2657 if test "$have_socket" != yes; then
2658 echo 'ERROR: socket function required for RFB compile'
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])
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
2684 if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
2685 save_CFLAGS="$CFLAGS"
2686 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2687 CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
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
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
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"
2740 if test x"$acx_pthread_ok" = xno; then
2741 for flag in $acx_pthread_flags; do
2745 AC_MSG_CHECKING([whether pthreads work without any flags])
2749 AC_MSG_CHECKING([whether pthreads work with $flag])
2750 PTHREAD_CFLAGS="$flag"
2754 AC_MSG_CHECKING([for the pthreads library -l$flag])
2755 PTHREAD_LIBS="-l$flag"
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])
2780 CFLAGS="$save_CFLAGS"
2782 AC_MSG_RESULT($acx_pthread_ok)
2783 if test "x$acx_pthread_ok" = xyes; then
2792 # Various other checks:
2793 if test "x$acx_pthread_ok" = xyes; then
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)
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.])
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])
2820 AC_MSG_CHECKING([if more special flags are required for pthreads])
2822 case "${host_cpu}-${host_os}" in
2823 *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";;
2824 *solaris* | alpha*-osf*) flag="-D_REENTRANT";;
2826 AC_MSG_RESULT(${flag})
2827 if test "x$flag" != xno; then
2828 PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
2832 CFLAGS="$save_CFLAGS"
2834 # More AIX lossage: must compile with cc_r
2835 AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${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])
2858 #echo Using PTHREAD_LIBS=$PTHREAD_LIBS
2859 #echo Using PTHREAD_CFLAGS=$PTHREAD_CFLAGS
2860 #echo Using PTHREAD_CC=$PTHREAD_CC
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"
2874 *-pc-windows* | *-pc-winnt* | *-cygwin* | *-mingw*)
2875 # pthread not needed for win32 platform
2878 echo ERROR: --with-rfb requires the pthread library, which could not be found.; exit 1
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])
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])
2905 # Create some subdirectories for when you run configure from some other
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)
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)
2930 AC_SUBST(LINK_CONSOLE)
2932 AC_SUBST(PRIMARY_TARGET)
2933 AC_SUBST(PLUGIN_LIBNAME_TRANSFORMATION)
2934 AC_SUBST(COMMAND_SEPARATOR)
2937 AC_SUBST(CD_UP_THREE)
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)