1 dnl // Process this file with autoconf to produce a configure script.
5 AC_REVISION([[$Id: configure.in,v 1.339 2007/07/31 20:25:51 sshwarts 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.
13 REL_STRING="Build from CVS snapshot, after release 2.3"
18 dnl Detect host and target
22 AC_MSG_CHECKING(if you are configuring for another platform)
23 if test "$cross_compiling" = yes -o "$target_os" = "windows"; then
31 # this case statement defines the compile flags which are needed to
32 # compile bochs on a platform. Don't put things like optimization settings
33 # into the configure.in file, since people will want to be able to change
34 # those settings by defining CFLAGS and CXXFLAGS before running configure.
36 need_dlcompat_for_plugins=0
38 *-pc-windows* | *-pc-winnt*)
39 DEFAULT_GUI=win32 # default to win32 gui
41 *-pc-cygwin* | *-pc-mingw32*)
42 NO_LT=1 # do not use libtool at all on cygwin
43 if test "$with_term" = yes; then
44 # ncurses won't compile with -mno-cygwin or -DWIN32
45 # also, I can't get it to link without this -DBROKEN_LINKER=1 hack.
46 # see /usr/include/curses.h for details.
47 ADD_FLAGS="-DBROKEN_LINKER=1"
50 ADD_FLAGS="-mno-cygwin -DWIN32" # required for cygwin compile+win32 gui
51 DEFAULT_GUI=win32 # default to win32 gui
54 *-macosx* | *-darwin*)
55 ADD_FLAGS="-fpascal-strings -fno-common -arch ppc -Wno-four-char-constants -Wno-unknown-pragmas -Dmacintosh" # required for macosx compile
56 DEFAULT_GUI=carbon # default to carbon
57 need_dlcompat_for_plugins=1
60 DEFAULT_GUI=macos # macos defaults to macos
63 ADD_FLAGS="-Wno-multichar"
64 DEFAULT_GUI=beos # beos defaults to beos
66 *-amigaos* | *-morphos*)
67 DEFAULT_GUI=amigaos # amigaos or morphos defaults to amigaos gui
70 ADD_FLAGS="-D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__" # required for correct function prototypes
71 LIBS="$LIBS -lsocket -lnsl"
78 if test "${ADD_FLAGS:+set}" = set; then
79 CFLAGS="$CFLAGS $ADD_FLAGS"
80 CXXFLAGS="$CXXFLAGS $ADD_FLAGS"
81 CPPFLAGS="$CPPFLAGS $ADD_FLAGS"
84 AC_MSG_CHECKING(for standard CFLAGS on this platform)
85 AC_MSG_RESULT($ADD_FLAGS)
87 dnl // make sure X Windows is default if no other chosen
88 if (test "$with_sdl" != yes) && \
89 (test "$with_svga" != yes) && \
90 (test "$with_x11" != yes) && \
91 (test "$with_beos" != yes) && \
92 (test "$with_win32" != yes) && \
93 (test "$with_nogui" != yes) && \
94 (test "$with_term" != yes) && \
95 (test "$with_rfb" != yes) && \
96 (test "$with_amigaos" != yes) && \
97 (test "$with_carbon" != yes) && \
98 (test "$with_wx" != yes) && \
99 (test "$with_macos" != yes); then
100 # use DEFAULT_GUI. Set the appropriate variable.
101 # DEFAULT_GUI must be set to one of the names above. Otherwise, no
102 # valid $with_* variable will be set and who knows what will happen?
103 eval "with_${DEFAULT_GUI}=yes"
110 dnl------------ libtool configuration
111 dnl Configure libtool, and default to shared libraries. Libtool will only be
112 dnl used for compiling and linking plugins.
114 dnl Check for dlopen support
116 dnl Configure libtool
118 dnl Configure the ltdl library. This must go after AC_PROG_LIBTOOL or
119 dnl else it disables shared libraries somehow. The values from this macro
120 dnl are written to ltdlconf.h.
127 AC_CHECK_SIZEOF(unsigned char)
128 AC_CHECK_SIZEOF(unsigned short)
129 AC_CHECK_SIZEOF(unsigned int)
130 AC_CHECK_SIZEOF(unsigned long)
131 AC_CHECK_SIZEOF(unsigned long long)
132 AC_CHECK_SIZEOF(int *)
133 AC_CHECK_FUNCS(getenv, AC_DEFINE(BX_HAVE_GETENV))
134 AC_CHECK_FUNCS(setenv, AC_DEFINE(BX_HAVE_SETENV))
135 AC_CHECK_FUNCS(select, AC_DEFINE(BX_HAVE_SELECT))
136 AC_CHECK_FUNCS(snprintf, AC_DEFINE(BX_HAVE_SNPRINTF))
137 AC_CHECK_FUNCS(vsnprintf, AC_DEFINE(BX_HAVE_VSNPRINTF))
138 AC_CHECK_FUNCS(strtoull, AC_DEFINE(BX_HAVE_STRTOULL))
139 AC_CHECK_FUNCS(strtouq, AC_DEFINE(BX_HAVE_STRTOUQ))
140 AC_CHECK_FUNCS(strdup, AC_DEFINE(BX_HAVE_STRDUP))
141 AC_CHECK_FUNCS(strrev, AC_DEFINE(BX_HAVE_STRREV))
142 AC_CHECK_FUNCS(sleep, AC_DEFINE(BX_HAVE_SLEEP))
143 AC_CHECK_FUNCS(usleep, AC_DEFINE(BX_HAVE_USLEEP))
144 AC_CHECK_FUNCS(nanosleep, AC_DEFINE(BX_HAVE_NANOSLEEP))
145 AC_CHECK_FUNCS(abort, AC_DEFINE(BX_HAVE_ABORT))
146 AC_CHECK_FUNCS(gettimeofday, AC_DEFINE(BX_HAVE_GETTIMEOFDAY))
147 AC_CHECK_TYPE(socklen_t, AC_DEFINE(BX_HAVE_SOCKLEN_T), , [#include <sys/types.h>
148 #include <sys/socket.h>])
149 AC_CHECK_MEMBER(struct sockaddr_in.sin_len, AC_DEFINE(BX_HAVE_SOCKADDR_IN_SIN_LEN), , [#include <sys/socket.h>
150 #include <netinet/in.h> ])
151 AC_CHECK_FUNCS(mkstemp, AC_DEFINE(BX_HAVE_MKSTEMP))
152 AC_CHECK_HEADER(sys/mman.h, AC_DEFINE(BX_HAVE_SYS_MMAN_H))
153 AC_CHECK_FUNCS(timelocal, AC_DEFINE(BX_HAVE_TIMELOCAL))
154 AC_CHECK_FUNCS(gmtime, AC_DEFINE(BX_HAVE_GMTIME))
155 AC_CHECK_FUNCS(mktime, AC_DEFINE(BX_HAVE_MKTIME))
157 dnl As of autoconf 2.53, the standard largefile test fails for Linux/gcc.
158 dnl It does not put the largefiles arguments into CFLAGS, even though Linux/gcc
159 dnl does need them. Since wxWidgets had already solved this exact problem,
160 dnl Bryce asked Vadim Zeitlin of the wxWidgets project if Bochs could grab
161 dnl their largefile test, and he said it was fine. The re-implemented
162 dnl AC_SYS_LARGEFILE test can be found in aclocal.m4.
165 dnl This logic came from wxWidgets as well. Bryce added the CFLAGS and
166 dnl CXXFLAGS lines, since Bochs makefiles don't use CPPFLAGS at all.
168 dnl we need to define _FILE_OFFSET_BITS or _LARGE_FILES on the compiler command
169 dnl line because otherwise the system headers risk being included before
170 dnl config.h which defines these constants leading to inconsistent
171 dnl sizeof(off_t) in different source files of the same program and linking
173 if test "x$wx_largefile" = "xyes"; then
174 if test "x$ac_cv_sys_file_offset_bits" = "x64"; then
175 BX_LARGEFILE_FLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGE_FILES"
177 BX_LARGEFILE_FLAGS="-D_LARGE_FILES"
179 CPPFLAGS="$CPPFLAGS $BX_LARGEFILE_FLAGS"
180 CFLAGS="$CFLAGS $BX_LARGEFILE_FLAGS"
181 CXXFLAGS="$CXXFLAGS $BX_LARGEFILE_FLAGS"
183 dnl ---end of largefile tests
185 dnl Add the -lm library if math functions cannot be used without it.
186 dnl This check is important on cygwin because of the bizarre way that they
187 dnl have organized functions into libraries. On cygwin, both libc.a and
188 dnl libm.a are symbolic links to a single lib libcygwin.a. This means that
189 dnl 1) linking with -lm is not necessary, and
190 dnl 2) linking with -lm is dangerous if the order of libraries is wrong
191 dnl In particular, if you compile any program with -mno-cygwin and link with
192 dnl -lm, it will crash instantly when it is run. This happens because the
193 dnl linker incorrectly links the Cygwin libm.a (==libcygwin.a), which replaces
194 dnl the ___main function instead of allowing it to be defined by
195 dnl /usr/lib/mingw/libmingw32.a as it should be.
197 dnl On MacOS X, this test will find that -lm is unnecessary and leave it out.
199 dnl Just check a few math functions. If they are all found without
200 dnl -lm, then we must not need -lm.
203 AC_CHECK_FUNCS(cos, have_cos=1)
204 AC_CHECK_FUNCS(floor, have_floor=1)
205 AC_MSG_CHECKING(if math functions link without -lm)
206 if test "$have_cos" = 1 -a "$have_floor" = 1; then
211 # use different functions to bypass configure caching
214 AC_CHECK_FUNCS(sin, have_sin=1)
215 AC_CHECK_FUNCS(ceil, have_ceil=1)
216 AC_MSG_CHECKING(if math functions link with -lm)
217 if test "$have_sin" = 1 -a "$have_ceil" = 1; then
221 # not sure we should warn the user, crash, etc.
222 # expect link failure
226 AC_MSG_CHECKING(for struct timeval)
227 AC_TRY_COMPILE([#include <sys/time.h>],
231 AC_DEFINE(BX_HAVE_STRUCT_TIMEVAL, 1)
235 AC_MSG_CHECKING(if compiler allows empty structs)
236 AC_TRY_COMPILE([], [typedef struct { } junk;],
239 AC_DEFINE(BX_NO_EMPTY_STRUCTS)
243 AC_MSG_CHECKING(if compiler allows __attribute__)
244 AC_TRY_COMPILE([], [typedef struct { } __attribute__ ((packed)) junk;],
248 AC_DEFINE(BX_NO_ATTRIBUTES)
253 AC_MSG_CHECKING(for hash_map)
254 AC_TRY_COMPILE([#include <hash_map>], [],
257 AC_DEFINE(BX_HAVE_HASH_MAP)
258 ], AC_MSG_RESULT(no))
259 AC_MSG_CHECKING(for hash_map.h)
260 AC_TRY_COMPILE([#include <hash_map.h>], [],
263 AC_DEFINE(BX_HAVE_HASH_MAP_H)
264 ], AC_MSG_RESULT(no))
265 AC_MSG_CHECKING(for set)
266 AC_TRY_COMPILE([#include <set>], [],
269 AC_DEFINE(BX_HAVE_SET)
270 ], AC_MSG_RESULT(no))
271 AC_MSG_CHECKING(for set.h)
272 AC_TRY_COMPILE([#include <set.h>], [],
275 AC_DEFINE(BX_HAVE_SET_H)
276 ], AC_MSG_RESULT(no))
279 dnl Implement a check for each gui library to see if has a chance of compiling.
280 if test "$with_all_libs" = yes; then
281 if test "$cross_configure" = 1; then
282 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.]])
284 if test "$with_beos" != yes; then
286 AC_CHECK_HEADER([app/Application.h], [], [ can_compile_beos=0 ])
287 AC_CHECK_HEADER([interface/Window.h], [], [ can_compile_beos=0 ])
288 AC_CHECK_HEADER([interface/View.h], [], [ can_compile_beos=0 ])
289 if test $can_compile_beos = 1; then
294 if test "$with_amigaos" != yes; then
295 can_compile_amigaos=1
296 AC_CHECK_HEADER([proto/intuition.h], [], [ can_compile_amigaos=0 ])
297 AC_CHECK_HEADER([intuition/intuitionbase.h], [], [ can_compile_amigaos=0 ])
298 AC_CHECK_HEADER([cybergraphx/cybergraphics.h], [], [ can_compile_amigaos=0 ])
299 AC_CHECK_HEADER([devices/trackdisk.h], [], [ can_compile_amigaos=0 ])
300 if test $can_compile_amigaos = 1; then
305 if test "$with_macos" != yes; then
307 AC_CHECK_HEADER([Quickdraw.h], [], [ can_compile_macos=0 ])
308 AC_CHECK_HEADER([Dialogs.h], [], [ can_compile_macos=0 ])
309 if test $can_compile_macos = 1; then
314 if test "$with_carbon" != yes; then
316 AC_CHECK_HEADER([Carbon.h], [], [ can_compile_carbon=0 ])
317 AC_CHECK_HEADER([ApplicationServices/ApplicationServices.h], [], [ can_compile_carbon=0 ])
318 if test $can_compile_carbon = 1; then
323 if test "$with_win32" != yes; then
325 AC_CHECK_HEADER([windows.h], [], [ can_compile_win32=0 ])
326 AC_CHECK_HEADER([commctrl.h], [], [ can_compile_win32=0 ])
327 if test $can_compile_win32 = 1; then
332 if test "$with_sdl" != yes; then
334 AC_CHECK_HEADER([SDL/SDL.h], [], [ can_compile_sdl=0 ])
335 AC_CHECK_HEADER([SDL/SDL_main.h], [], [ can_compile_sdl=0 ])
336 if test $can_compile_sdl = 1; then
341 if test "$with_svga" != yes; then
343 AC_CHECK_HEADER([vga.h], [], [ can_compile_svga=0 ])
344 AC_CHECK_HEADER([vgagl.h], [], [ can_compile_svga=0 ])
345 if test $can_compile_svga = 1; then
350 if test "$with_x11" != yes; then
352 AC_CHECK_HEADER([X11/Xlib.h], [], [ can_compile_x11=0 ])
353 AC_CHECK_HEADER([X11/Xutil.h], [], [ can_compile_x11=0 ])
354 if test $can_compile_x11 = 1; then
359 if test "$with_rfb" != yes; then
362 *-pc-windows* | *-pc-winnt* | *-pc-cygwin* | *-pc-mingw32*)
363 AC_CHECK_HEADER([winsock.h], [], [ can_compile_rfb=0 ])
364 AC_CHECK_HEADER([process.h], [], [ can_compile_rfb=0 ])
367 AC_CHECK_HEADER([sys/socket.h], [], [ can_compile_rfb=0 ])
368 AC_CHECK_HEADER([netinet/tcp.h], [], [ can_compile_rfb=0 ])
369 AC_CHECK_HEADER([pthread.h], [], [ can_compile_rfb=0 ])
372 if test $can_compile_rfb = 1; then
377 if test "$with_term" != yes; then
379 AC_CHECK_HEADER([curses.h], [], [ can_compile_term=0 ])
380 AC_CHECK_HEADER([signal.h], [], [ can_compile_term=0 ])
381 if test $can_compile_term = 1; then
386 if test "$with_nogui" != yes; then
389 fi # end of if $with_all_libs = yes
391 AC_MSG_CHECKING(for idle hack)
392 AC_ARG_ENABLE(idle-hack,
393 [ --enable-idle-hack use Roland Mainz's idle hack],
394 [if test "$enableval" = yes; then
396 AC_DEFINE(BX_USE_IDLE_HACK, 1)
399 AC_DEFINE(BX_USE_IDLE_HACK, 0)
403 AC_DEFINE(BX_USE_IDLE_HACK, 0)
406 AC_SUBST(BX_USE_IDLE_HACK)
408 AC_CHECK_HEADER(dlfcn.h, AC_DEFINE(BX_HAVE_DLFCN_H, 1))
409 AC_CHECK_HEADER(assert.h, AC_DEFINE(HAVE_ASSERT_H, 1))
411 AC_MSG_CHECKING(for plugins support)
412 AC_ARG_ENABLE(plugins,
413 [ --enable-plugins enable plugins],
414 [if test "$enableval" = yes; then
424 if test "$bx_plugins" = 1; then
426 AC_DEFINE(BX_PLUGINS, 1)
427 GUI_NON_PLUGIN_OBJS='$(OBJS_THAT_CANNOT_BE_PLUGINS)'
428 GUI_PLUGIN_OBJS='$(OBJS_THAT_CAN_BE_PLUGINS)'
429 DEFINE_PLUGIN_PATH='-DBX_PLUGIN_PATH="\"${plugdir}\""'
430 # and the $(OBJS_THAT_SUPPORT_OTHER_PLUGINS) will be built and linked
431 # by special link rules for the plugins that they support.
432 LIBS="$LIBS $LIBADD_DL"
434 PLUGIN_TARGET=bochs_plugins
435 INSTALL_PLUGINS_VAR=install_libtool_plugins
436 NONPLUGIN_GUI_LINK_OPTS=''
440 AC_DEFINE(BX_PLUGINS, 0)
441 GUI_NON_PLUGIN_OBJS='$(OBJS_THAT_CANNOT_BE_PLUGINS) $(OBJS_THAT_CAN_BE_PLUGINS) $(OBJS_THAT_SUPPORT_OTHER_PLUGINS)'
443 NONPLUGIN_GUI_LINK_OPTS='$(GUI_LINK_OPTS)'
445 AC_SUBST(DEFINE_PLUGIN_PATH)
446 AC_SUBST(NONPLUGIN_GUI_LINK_OPTS)
448 # copy gui variables into iodev variables. Later, we will add to the gui
449 # objs list, according to which display libraries are enabled.
450 IODEV_NON_PLUGIN_OBJS=$GUI_NON_PLUGIN_OBJS
451 IODEV_PLUGIN_OBJS=$GUI_PLUGIN_OBJS
453 # on MacOSX if they enabled plugins, make sure that dlopen() was found.
454 # It is provided by a library called dlcompat.
455 if test "$bx_plugins" = 1 -a "$need_dlcompat_for_plugins" = 1; then
457 AC_CHECK_LIB(dl, dlopen, [have_dlopen=1])
458 AC_MSG_CHECKING(if you have dlcompat, required for MacOSX plugins)
459 if test "$have_dlopen" = 0; then
461 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.])
467 AC_MSG_CHECKING(if compiler allows blank labels)
468 AC_TRY_COMPILE([], [ { label1: } ],
472 AC_DEFINE(BX_NO_BLANK_LABELS)
475 AC_MSG_CHECKING(if compiler allows LL for 64-bit constants)
476 AC_TRY_COMPILE([], [ { 42LL; } ],
480 AC_DEFINE(BX_64BIT_CONSTANTS_USE_LL, 0)
484 AC_MSG_CHECKING(for x86-64 support)
485 AC_ARG_ENABLE(x86-64,
486 [ --enable-x86-64 compile in support for x86-64 instructions],
487 [if test "$enableval" = yes; then
490 AC_DEFINE(BX_SUPPORT_X86_64, 1)
495 AC_DEFINE(BX_SUPPORT_X86_64, 0)
501 AC_DEFINE(BX_SUPPORT_X86_64, 0)
507 AC_MSG_CHECKING(for SMP support)
509 [ --enable-smp compile in support for SMP configurations],
510 [if test "$enableval" = yes; then
512 AC_DEFINE(BX_SUPPORT_SMP, 1)
513 AC_DEFINE(BX_USE_CPU_SMF, 0)
517 AC_DEFINE(BX_SUPPORT_SMP, 0)
522 AC_DEFINE(BX_SUPPORT_SMP, 0)
526 AC_MSG_CHECKING(for cpu level)
527 AC_ARG_ENABLE(cpu-level,
528 [ --enable-cpu-level select cpu level (3,4,5,6)],
529 [case "$enableval" in
532 AC_DEFINE(BX_CPU_LEVEL, 3)
533 AC_DEFINE(BX_CPU_LEVEL_HACKED, 3)
537 AC_DEFINE(BX_CPU_LEVEL, 4)
538 AC_DEFINE(BX_CPU_LEVEL_HACKED, 4)
542 AC_DEFINE(BX_CPU_LEVEL, 5)
543 AC_DEFINE(BX_CPU_LEVEL_HACKED, 5)
547 AC_DEFINE(BX_CPU_LEVEL, 6)
548 AC_DEFINE(BX_CPU_LEVEL_HACKED, 6)
552 echo "ERROR: you must supply a valid CPU level to --enable-cpu-level"
556 bx_cpu_level=$enableval
557 if test "$use_smp" = 1 -a "$enableval" -lt 6; then
558 echo "ERROR: with >1 processor, use --enable-cpu-level=6"
563 # for multiprocessors or x86-64, cpu level must be 6
564 if test "$use_smp" = 1 -o "$use_x86_64" = 1; then
566 AC_DEFINE(BX_CPU_LEVEL, 6)
567 AC_DEFINE(BX_CPU_LEVEL_HACKED, 6)
571 AC_DEFINE(BX_CPU_LEVEL, 5)
572 AC_DEFINE(BX_CPU_LEVEL_HACKED, 5)
579 AC_MSG_CHECKING(for APIC support)
581 [ --enable-apic enable APIC support],
582 [if test "$enableval" = yes; then
584 AC_DEFINE(BX_SUPPORT_APIC, 1)
585 IOAPIC_OBJS='ioapic.o'
589 if test "$use_smp" = 1; then
590 echo "ERROR: With SMP configuration you must use --enable-apic"
593 AC_DEFINE(BX_SUPPORT_APIC, 0)
599 if test "$use_smp" = 1 -o "$bx_cpu_level" -gt 5; then
600 # enable APIC by default, if SMP configuration or if cpulevel>5
602 AC_DEFINE(BX_SUPPORT_APIC, 1)
603 IOAPIC_OBJS='ioapic.o'
607 AC_DEFINE(BX_SUPPORT_APIC, 0)
613 AC_SUBST(IOAPIC_OBJS)
616 AC_CHECK_HEADER(zlib.h, [AC_CHECK_LIB(z, gzopen, AC_DEFINE(BX_HAVE_ZLIB,1))] )
618 AC_MSG_CHECKING(for compressed hard disk image support)
619 AC_ARG_ENABLE(compressed-hd,
620 [ --enable-compressed-hd allows compressed (zlib) hard disk image (not implemented yet)],
621 [if test "$enableval" = yes; then
623 AC_DEFINE(BX_COMPRESSED_HD_SUPPORT, 1)
627 AC_DEFINE(BX_COMPRESSED_HD_SUPPORT, 0)
631 AC_DEFINE(BX_COMPRESSED_HD_SUPPORT, 0)
634 AC_SUBST(BX_COMPRESSED_HD_SUPPORT)
636 AC_MSG_CHECKING(for NE2000 support)
637 AC_ARG_ENABLE(ne2000,
638 [ --enable-ne2000 enable limited ne2000 support],
639 [if test "$enableval" = yes; then
641 AC_DEFINE(BX_SUPPORT_NE2K, 1)
646 AC_DEFINE(BX_SUPPORT_NE2K, 0)
652 AC_DEFINE(BX_SUPPORT_NE2K, 0)
659 AC_MSG_CHECKING(for ACPI support)
661 [ --enable-acpi enable ACPI support],
662 [if test "$enableval" = yes; then
664 AC_DEFINE(BX_SUPPORT_ACPI, 1)
667 AC_DEFINE(BX_SUPPORT_ACPI, 0)
671 AC_DEFINE(BX_SUPPORT_ACPI, 0)
674 AC_SUBST(BX_SUPPORT_ACPI)
676 AC_MSG_CHECKING(for i440FX PCI support)
678 [ --enable-pci enable limited i440FX PCI support],
679 [if test "$enableval" = yes; then
681 AC_DEFINE(BX_SUPPORT_PCI, 1)
683 PCI_OBJ='pci.o pci2isa.o pci_ide.o pcivga.o acpi.o'
686 AC_DEFINE(BX_SUPPORT_PCI, 0)
692 AC_DEFINE(BX_SUPPORT_PCI, 0)
700 # PCI host device support
702 AC_MSG_CHECKING(for PCI host device mapping support)
703 AC_ARG_ENABLE(pcidev,
704 [ --enable-pcidev enable PCI host device mapping support (linux host only)],
706 if test "$enableval" = "yes"; then
708 if test "$pci" != "1"; then
709 AC_MSG_ERROR([PCI host device mapping requires PCI support])
713 AC_MSG_NOTICE([Linux detected as host for PCI host device mapping])
714 linux_version=`uname -r`
715 case "$linux_version" in
717 PCIDEV_MODULE_MAKE_ALL="all-kernel24"
718 KERNEL_MODULE_SUFFIX="o"
721 PCIDEV_MODULE_MAKE_ALL="all-kernel26"
722 KERNEL_MODULE_SUFFIX="ko"
725 AC_MSG_ERROR([Linux kernel 2.4 or 2.6 is required])
728 KERNELDIR="/lib/modules/$linux_version/build"
738 AC_SUBST(PCIDEV_MODULE_MAKE_ALL)
739 AC_SUBST(KERNEL_MODULE_SUFFIX)
742 AC_MSG_ERROR([PCI host device mapping requires Linux as host])
745 AC_DEFINE(BX_SUPPORT_PCIDEV, 1)
746 PCI_OBJ="$PCI_OBJ pcidev.o"
749 AC_DEFINE(BX_SUPPORT_PCIDEV, 0)
754 AC_DEFINE(BX_SUPPORT_PCIDEV, 0)
760 AC_MSG_CHECKING(for limited USB support)
762 [ --enable-usb enable limited USB support],
763 [if test "$enableval" = yes; then
765 AC_DEFINE(BX_SUPPORT_PCIUSB, 1)
766 PCI_OBJ="$PCI_OBJ pciusb.o"
767 USBDEV_OBJS="usb_hid.o usb_msd.o"
768 SCSI_OBJS="scsi_device.o"
771 AC_DEFINE(BX_SUPPORT_PCIUSB, 0)
775 AC_DEFINE(BX_SUPPORT_PCIUSB, 0)
779 AC_SUBST(USBDEV_OBJS)
782 AC_MSG_CHECKING(for PCI pseudo NIC support)
784 [ --enable-pnic enable PCI pseudo NIC support],
785 [if test "$enableval" = yes; then
787 AC_DEFINE(BX_SUPPORT_PCIPNIC, 1)
788 PCI_OBJ="$PCI_OBJ pcipnic.o"
792 AC_DEFINE(BX_SUPPORT_PCIPNIC, 0)
796 AC_DEFINE(BX_SUPPORT_PCIPNIC, 0)
801 if test "$networking" = yes; then
802 NETLOW_OBJS='eth.o eth_null.o eth_vnet.o'
803 AC_CHECK_HEADER(net/bpf.h, NETLOW_OBJS="$NETLOW_OBJS eth_fbsd.o")
804 AC_CHECK_HEADER(netpacket/packet.h, NETLOW_OBJS="$NETLOW_OBJS eth_linux.o")
806 *-pc-windows* | *-pc-winnt* | *-pc-cygwin* | *-pc-mingw32*)
807 NETLOW_OBJS="$NETLOW_OBJS eth_win32.o"
809 *-macosx* | *-darwin*)
810 NETLOW_OBJS="$NETLOW_OBJS eth_tuntap.o"
811 AC_DEFINE(HAVE_TUNTAP, 1)
814 AC_CHECK_HEADER(net/if.h, [
816 AC_DEFINE(BX_HAVE_NET_IF_H, 1)
819 #include <sys/types.h>
820 #include <sys/socket.h>
822 AC_CHECK_HEADER(linux/netlink.h, [
826 #include <asm/types.h>
827 #include <sys/socket.h>
830 if test "$use_ethertap" = yes; then
831 NETLOW_OBJS="$NETLOW_OBJS eth_tap.o eth_vde.o"
832 AC_DEFINE(HAVE_ETHERTAP, 1)
833 AC_DEFINE(HAVE_VDE, 1)
836 AC_CHECK_HEADER(net/if_tun.h, [
840 #include <sys/types.h>
841 #include <sys/socket.h>
844 AC_CHECK_HEADER(linux/if_tun.h, [
848 #include <asm/types.h>
849 #include <sys/socket.h>
851 if test "$use_tuntap" = yes; then
852 NETLOW_OBJS="$NETLOW_OBJS eth_tuntap.o"
853 AC_DEFINE(HAVE_TUNTAP, 1)
858 AC_DEFINE(BX_NETWORKING, 1)
860 AC_DEFINE(BX_NETWORKING, 0)
863 AC_SUBST(NETLOW_OBJS)
866 AC_MSG_CHECKING(for 4Meg pages support)
867 AC_ARG_ENABLE(4meg-pages,
868 [ --enable-4meg-pages support 4Megabyte pages extensions],
869 [if test "$enableval" = yes; then
871 AC_DEFINE(BX_SUPPORT_4MEG_PAGES, 1)
875 AC_DEFINE(BX_SUPPORT_4MEG_PAGES, 0)
879 if test "$bx_cpu_level" -gt 4; then
881 AC_DEFINE(BX_SUPPORT_4MEG_PAGES, 1)
885 AC_DEFINE(BX_SUPPORT_4MEG_PAGES, 0)
892 AC_MSG_CHECKING(for PAE support)
894 [ --enable-pae support Physical Address Extensions],
895 [if test "$enableval" = yes; then
897 AC_DEFINE(BX_SUPPORT_PAE, 1)
901 AC_DEFINE(BX_SUPPORT_PAE, 0)
905 if test "$bx_cpu_level" -gt 5; then
907 AC_DEFINE(BX_SUPPORT_PAE, 1)
911 AC_DEFINE(BX_SUPPORT_PAE, 0)
917 AC_MSG_CHECKING(for global pages support)
918 AC_ARG_ENABLE(global-pages,
919 [ --enable-global-pages support for global pages in PDE/PTE],
920 [if test "$enableval" = yes; then
922 AC_DEFINE(BX_SUPPORT_GLOBAL_PAGES, 1)
923 support_global_pages=1
926 AC_DEFINE(BX_SUPPORT_GLOBAL_PAGES, 0)
927 support_global_pages=0
930 if test "$bx_cpu_level" -gt 5; then
933 AC_DEFINE(BX_SUPPORT_GLOBAL_PAGES, 1)
934 support_global_pages=1
937 AC_DEFINE(BX_SUPPORT_GLOBAL_PAGES, 0)
938 support_global_pages=0
943 if test "$bx_cpu_level" -lt 4 -a "$support_4M_pages" = 1; then
944 AC_MSG_ERROR([for 4M paging support the CPU level must be >= 4])
947 if test "$bx_cpu_level" -lt 5 -a "$support_pae" = 1; then
948 AC_MSG_ERROR([for PAE support the CPU level must be >= 5])
951 if test "$bx_cpu_level" -lt 5 -a "$support_global_pages" = 1; then
952 AC_MSG_ERROR([for Global Pages support the CPU level must be >= 5])
955 AC_MSG_CHECKING(for guest to host TLB support)
956 AC_ARG_ENABLE(guest2host-tlb,
957 [ --enable-guest2host-tlb support guest to host addr TLB for speed],
958 [if test "$enableval" = yes; then
960 speedup_guest2host_tlb=1
963 speedup_guest2host_tlb=0
967 speedup_guest2host_tlb=0
971 AC_MSG_CHECKING(for repeated IO and mem copy speedups)
972 AC_ARG_ENABLE(repeat-speedups,
973 [ --enable-repeat-speedups support repeated IO and mem copy speedups],
974 [if test "$enableval" = yes; then
987 AC_MSG_CHECKING(for instruction cache support)
988 AC_ARG_ENABLE(icache,
989 [ --enable-icache support instruction cache],
990 [if test "$enableval" = yes; then
1003 AC_MSG_CHECKING(for gcc fast function calls optimization)
1004 AC_ARG_ENABLE(fast-function-calls,
1005 [ --enable-fast-function-calls support for fast function calls (gcc on x86 only)],
1006 [if test "$enableval" = yes; then
1019 AC_MSG_CHECKING(for host specific inline assembly accelerations)
1020 AC_ARG_ENABLE(host-specific-asms,
1021 [ --enable-host-specific-asms support for host specific inline assembly],
1022 [if test "$enableval" = yes; then
1024 speedup_host_specific_asms=1
1027 speedup_host_specific_asms=0
1031 speedup_host_specific_asms=1
1035 AC_MSG_CHECKING(whether to ignore bad MSR references)
1036 AC_ARG_ENABLE(ignore-bad-msr,
1037 [ --enable-ignore-bad-msr ignore bad MSR references ],
1038 [if test "$enableval" = yes; then
1040 AC_DEFINE(BX_IGNORE_BAD_MSR, 1)
1043 AC_DEFINE(BX_IGNORE_BAD_MSR, 0)
1047 AC_DEFINE(BX_IGNORE_BAD_MSR, 1)
1051 AC_MSG_CHECKING(for port e9 hack)
1052 AC_ARG_ENABLE(port-e9-hack,
1053 [ --enable-port-e9-hack writes to port e9 go to console],
1054 [if test "$enableval" = yes; then
1056 AC_DEFINE(BX_PORT_E9_HACK, 1)
1059 AC_DEFINE(BX_PORT_E9_HACK, 0)
1063 AC_DEFINE(BX_PORT_E9_HACK, 1)
1067 AC_MSG_CHECKING(show IPS)
1068 AC_ARG_ENABLE(show-ips,
1069 [ --enable-show-ips show IPS in Bochs log file],
1070 [if test "$enableval" = yes; then
1072 AC_DEFINE(BX_SHOW_IPS, 1)
1075 AC_DEFINE(BX_SHOW_IPS, 0)
1079 AC_DEFINE(BX_SHOW_IPS, 0)
1083 AC_MSG_CHECKING(save/restore support)
1084 AC_ARG_ENABLE(save-restore,
1085 [ --enable-save-restore support for simulation save and restore],
1086 [if test "$enableval" = yes; then
1088 AC_DEFINE(BX_SUPPORT_SAVE_RESTORE, 1)
1091 AC_DEFINE(BX_SUPPORT_SAVE_RESTORE, 0)
1095 AC_DEFINE(BX_SUPPORT_SAVE_RESTORE, 1)
1099 AC_MSG_CHECKING(for use of .cpp as suffix)
1101 [ --enable-cpp use .cpp as C++ suffix],
1102 [if test "$enableval" = yes; then
1104 SUFFIX_LINE='.SUFFIXES: .cpp'
1108 SUFFIX_LINE='.SUFFIXES: .cc'
1113 SUFFIX_LINE='.SUFFIXES: .cc'
1117 AC_SUBST(SUFFIX_LINE)
1118 AC_SUBST(CPP_SUFFIX)
1120 if test "$enable_cpp" = yes; then
1121 echo "moving .cc source files to .cpp"
1122 sourcefiles=`find . -name "*.cc" -print`
1123 if test "$sourcefiles" != ""; then
1124 for ccname in $sourcefiles
1126 cppname=`echo $ccname | sed -e "s/\.cc$/.cpp/"`
1127 echo "mv $ccname $cppname"
1131 echo "no more .cc source files to rename"
1137 AC_MSG_CHECKING(for Bochs internal debugger support)
1138 AC_ARG_ENABLE(debugger,
1139 [ --enable-debugger compile in support for Bochs internal debugger],
1140 [if test "$enableval" = yes; then
1142 AC_DEFINE(BX_DEBUGGER, 1)
1143 DEBUGGER_VAR='$(DEBUGGER_LIB)'
1147 AC_DEFINE(BX_DEBUGGER, 0)
1154 AC_DEFINE(BX_DEBUGGER, 0)
1159 AC_SUBST(DEBUGGER_VAR)
1161 AC_MSG_CHECKING(for external debugger)
1163 AC_ARG_ENABLE(external-debugger,
1164 [ --enable-external-debugger enable external debugger support (win32 only)],
1165 [if test "$enableval" = yes; then
1167 *-pc-windows* | *-cygwin* | *-mingw32*)
1169 AC_DEFINE(BX_EXTERNAL_DEBUGGER, 1)
1170 EXT_DEBUG_OBJS=extdb.o
1173 echo "ERROR: external debugger is currently supported on win32 only"
1183 AC_SUBST(BX_EXTERNAL_DEBUGGER)
1185 AC_MSG_CHECKING(for magic breakpoints)
1186 AC_ARG_ENABLE(magic-breakpoints,
1187 [ --enable-magic-breakpoints enable magic debugger breakpoints],
1188 [if test "$enableval" = yes; then
1190 AC_DEFINE(BX_MAGIC_BREAKPOINT, 1)
1193 AC_DEFINE(BX_MAGIC_BREAKPOINT, 0)
1196 if test "$bx_debugger" = 1; then
1198 AC_DEFINE(BX_MAGIC_BREAKPOINT, 1)
1201 AC_DEFINE(BX_MAGIC_BREAKPOINT, 0)
1204 AC_SUBST(BX_MAGIC_BREAKPOINT)
1206 AC_MSG_CHECKING(for disassembler support)
1207 AC_ARG_ENABLE(disasm,
1208 [ --enable-disasm compile in support for disassembler],
1209 [if test "$enableval" = yes; then
1211 AC_DEFINE(BX_DISASM, 1)
1212 DISASM_VAR='$(DISASM_LIB)'
1215 if test "$bx_debugger" = 1; then
1216 echo "ERROR: debugger is enabled, so --enable-disasm is required"
1219 AC_DEFINE(BX_DISASM, 0)
1224 AC_DEFINE(BX_DISASM, 1)
1225 DISASM_VAR='$(DISASM_LIB)'
1227 AC_SUBST(DISASM_VAR)
1229 AC_MSG_CHECKING(for ALL optimizations enabled)
1230 AC_ARG_ENABLE(all-optimizations,
1231 [ --enable-all-optimizations compile in all possible optimizations],
1232 [if test "$enableval" = yes; then
1247 # Optimizations section. Decide what the status of various optimizations
1248 # should be based on configure choices and other factors.
1251 if test "$speedups_all" = 1; then
1252 # Configure requested to force all options enabled.
1253 speedup_guest2host_tlb=1
1256 speedup_host_specific_asms=1
1260 if test "$speedup_guest2host_tlb" = 1; then
1261 AC_DEFINE(BX_SupportGuest2HostTLB, 1)
1263 AC_DEFINE(BX_SupportGuest2HostTLB, 0)
1266 if test "$speedup_repeat" = 1; then
1267 AC_DEFINE(BX_SupportRepeatSpeedups, 1)
1269 AC_DEFINE(BX_SupportRepeatSpeedups, 0)
1272 if test "$speedup_iCache" = 1; then
1273 AC_DEFINE(BX_SUPPORT_ICACHE, 1)
1275 AC_DEFINE(BX_SUPPORT_ICACHE, 0)
1278 if test "$speedup_host_specific_asms" = 1; then
1279 AC_DEFINE(BX_SupportHostAsms, 1)
1281 AC_DEFINE(BX_SupportHostAsms, 0)
1284 if test "$speedup_fastcall" = 1; then
1285 AC_DEFINE(BX_FAST_FUNC_CALL, 1)
1287 AC_DEFINE(BX_FAST_FUNC_CALL, 0)
1292 rl_without_curses_ok=no
1293 rl_with_curses_ok=no
1295 AC_MSG_CHECKING(whether user wants readline)
1296 AC_ARG_ENABLE(readline,
1297 [ --enable-readline use readline library, if available],
1298 [if test "$enableval" = yes; then
1312 AC_MSG_CHECKING(whether to use readline)
1313 if test "$want_readline" = yes; then
1314 if test "$bx_debugger" = 1; then
1316 AC_MSG_CHECKING(if readline works without -lcurses)
1318 LIBS="$LIBS -lreadline"
1321 #include <readline/readline.h>
1322 int main() { rl_initialize(); exit(0); }
1324 [ AC_MSG_RESULT(yes)
1325 rl_without_curses_ok=yes ],
1326 [ AC_MSG_RESULT(no) ]
1328 AC_MSG_CHECKING(if readline works with -lcurses)
1329 LIBS="$LIBS -lcurses"
1332 #include <readline/readline.h>
1333 int main() { rl_initialize(); exit(0); }
1336 rl_with_curses_ok=yes ],
1337 [ AC_MSG_RESULT(no) ]
1341 if test "$rl_without_curses_ok" = yes; then
1343 AC_DEFINE(HAVE_LIBREADLINE, 1)
1344 READLINE_LIB="-lreadline"
1346 elif test "$rl_with_curses_ok" = yes; then
1348 AC_DEFINE(HAVE_LIBREADLINE, 1)
1349 READLINE_LIB="-lreadline -lcurses"
1353 echo WARNING: The readline library was disabled because it was not found.
1361 AC_SUBST(READLINE_LIB)
1363 AC_CHECK_HEADER(readline/history.h,
1364 AC_DEFINE(HAVE_READLINE_HISTORY_H)
1367 INSTRUMENT_DIR='instrument/stubs'
1369 AC_MSG_CHECKING(for instrumentation support)
1370 AC_ARG_ENABLE(instrumentation,
1371 [ --enable-instrumentation compile in support for instrumentation],
1372 [if test "$enableval" = yes; then
1374 AC_DEFINE(BX_INSTRUMENTATION, 1)
1375 INSTRUMENT_VAR='$(INSTRUMENT_LIB)'
1376 elif test "$enableval" = no; then
1378 AC_DEFINE(BX_INSTRUMENTATION, 0)
1382 AC_DEFINE(BX_INSTRUMENTATION, 1)
1383 INSTRUMENT_DIR=$enableval
1384 INSTRUMENT_VAR='$(INSTRUMENT_LIB)'
1388 AC_DEFINE(BX_INSTRUMENTATION, 0)
1392 AC_SUBST(INSTRUMENT_DIR)
1393 AC_SUBST(INSTRUMENT_VAR)
1395 dnl // serial mode 'socket' needs wsock32.dll in non-plugin mode
1396 if test "$bx_plugins" = 0; then
1399 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS wsock32.lib"
1401 *-cygwin* | *-mingw32*)
1402 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwsock32"
1407 AC_MSG_CHECKING(for raw serial support)
1408 AC_ARG_ENABLE(raw-serial,
1409 [ --enable-raw-serial use raw serial port access],
1410 [if test "$enableval" = yes; then
1412 AC_DEFINE(USE_RAW_SERIAL, 1)
1415 AC_DEFINE(USE_RAW_SERIAL, 0)
1419 AC_DEFINE(USE_RAW_SERIAL, 0)
1423 AC_MSG_CHECKING(for VESA BIOS extensions)
1425 [ --enable-vbe use VESA BIOS extensions],
1426 [if test "$enableval" = yes; then
1428 AC_DEFINE(BX_SUPPORT_VBE, 1)
1429 if test "$pci" = 1; then
1430 AC_DEFINE(BX_SUPPORT_PCIVGA, 1)
1434 AC_DEFINE(BX_SUPPORT_VBE, 0)
1438 AC_DEFINE(BX_SUPPORT_VBE, 1)
1439 if test "$pci" = 1; then
1440 AC_DEFINE(BX_SUPPORT_PCIVGA, 1)
1445 AC_MSG_CHECKING(for CLGD54XX emulation)
1446 AC_ARG_ENABLE(clgd54xx,
1447 [ --enable-clgd54xx enable CLGD54XX emulation],
1448 [if test "$enableval" = yes; then
1450 AC_DEFINE(BX_SUPPORT_CLGD54XX, 1)
1451 if test "$pci" = 1; then
1452 AC_DEFINE(BX_SUPPORT_CLGD54XX_PCI, 1)
1456 AC_DEFINE(BX_SUPPORT_CLGD54XX, 0)
1460 AC_DEFINE(BX_SUPPORT_CLGD54XX, 0)
1465 AC_MSG_CHECKING(for FPU emulation)
1468 [ --enable-fpu compile in FPU emulation],
1469 [if test "$enableval" = yes; then
1471 AC_DEFINE(BX_SUPPORT_FPU, 1)
1472 FPU_VAR='$(FPU_LIB)'
1473 elif test "$enableval" = no; then
1475 AC_DEFINE(BX_SUPPORT_FPU, 0)
1479 echo "ERROR: --enable-fpu does not accept a path"
1485 AC_DEFINE(BX_SUPPORT_FPU, 1)
1486 FPU_VAR='$(FPU_LIB)'
1491 AC_MSG_CHECKING(for VME support)
1493 [ --enable-vme virtual 8086 mode extensions],
1494 [if test "$enableval" = yes; then
1496 AC_DEFINE(BX_SUPPORT_VME, 1)
1497 elif test "$enableval" = no; then
1499 AC_DEFINE(BX_SUPPORT_VME, 0)
1503 if test "$bx_cpu_level" -ge 5; then
1505 AC_DEFINE(BX_SUPPORT_VME, 1)
1511 AC_MSG_CHECKING(for MMX support)
1513 [ --enable-mmx MMX support],
1514 [if test "$enableval" = yes; then
1516 AC_DEFINE(BX_SUPPORT_MMX, 1)
1517 elif test "$enableval" = no; then
1519 AC_DEFINE(BX_SUPPORT_MMX, 0)
1524 if test "$bx_cpu_level" -ge 5; then
1526 AC_DEFINE(BX_SUPPORT_MMX, 1)
1531 AC_MSG_CHECKING(for 3DNow! support)
1532 AC_ARG_ENABLE(3dnow,
1533 [ --enable-3dnow 3DNow! support],
1534 [if test "$enableval" = yes; then
1536 AC_DEFINE(BX_SUPPORT_3DNOW, 1)
1537 elif test "$enableval" = no; then
1539 AC_DEFINE(BX_SUPPORT_3DNOW, 0)
1544 AC_DEFINE(BX_SUPPORT_3DNOW, 0)
1549 AC_MSG_CHECKING(for SSE support)
1551 [ --enable-sse SSE support (--enable-sse=[no|1|2|3|4])],
1552 [case "$enableval" in
1574 echo "ERROR: --enable-sse=$enableval not understood. Use --enable-sse=[no|1|2|3|4]"
1580 if test "$use_x86_64" = 1; then
1589 if test "$support_sse" -gt 0 -a "$bx_cpu_level" -lt 6; then
1590 AC_MSG_ERROR([for SSE support the CPU level must be set to 6])
1593 if test "$support_sse" -lt 2 -a "$use_x86_64" = 1; then
1594 AC_MSG_ERROR([x86-64 needs SSE2 support])
1597 if test "$support_sse" = 4; then
1598 AC_DEFINE(BX_SUPPORT_SSE, 4)
1599 elif test "$support_sse" = 3; then
1600 AC_DEFINE(BX_SUPPORT_SSE, 3)
1601 elif test "$support_sse" = 2; then
1602 AC_DEFINE(BX_SUPPORT_SSE, 2)
1603 elif test "$support_sse" = 1; then
1604 AC_DEFINE(BX_SUPPORT_SSE, 1)
1606 AC_DEFINE(BX_SUPPORT_SSE, 0)
1609 AC_MSG_CHECKING(for SSE extensions support)
1610 AC_ARG_ENABLE(sse-extension,
1611 [ --enable-sse-extension support for SSE extensions],
1612 [if test "$enableval" = yes; then
1614 AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 1)
1615 elif test "$enableval" = no; then
1617 AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 0)
1622 AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 0)
1626 AC_MSG_CHECKING(for DAZ support)
1628 [ --enable-daz denormals-are-zeroes support],
1629 [if test "$enableval" = yes; then
1631 AC_DEFINE(BX_SUPPORT_DAZ, 1)
1632 elif test "$enableval" = no; then
1634 AC_DEFINE(BX_SUPPORT_DAZ, 0)
1638 if test "$support_sse" -ge 2; then
1640 AC_DEFINE(BX_SUPPORT_DAZ, 1)
1643 AC_DEFINE(BX_SUPPORT_DAZ, 0)
1648 AC_MSG_CHECKING(for alignment check support)
1649 AC_ARG_ENABLE(alignment-check,
1650 [ --enable-alignment-check alignment check (#AC) support],
1651 [if test "$enableval" = yes; then
1653 AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 1)
1654 elif test "$enableval" = no; then
1656 AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 0)
1661 AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 0)
1665 AC_MSG_CHECKING(for misaligned SSE support)
1666 AC_ARG_ENABLE(misaligned-sse,
1667 [ --enable-misaligned-sse misaligned SSE support],
1668 [if test "$enableval" = yes; then
1670 AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 1)
1671 elif test "$enableval" = no; then
1673 AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 0)
1678 AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 0)
1682 AC_MSG_CHECKING(for SEP support)
1684 [ --enable-sep SYSENTER/SYSEXIT support],
1685 [if test "$enableval" = yes; then
1687 AC_DEFINE(BX_SUPPORT_SEP, 1)
1688 elif test "$enableval" = no; then
1690 AC_DEFINE(BX_SUPPORT_SEP, 0)
1694 if test "$bx_cpu_level" -ge 6 -a "$support_mmx" = 1; then
1696 AC_DEFINE(BX_SUPPORT_SEP, 1)
1699 AC_DEFINE(BX_SUPPORT_SEP, 0)
1704 AC_MSG_CHECKING(for x86 debugger support)
1705 AC_ARG_ENABLE(x86-debugger,
1706 [ --enable-x86-debugger x86 debugger support],
1707 [if test "$enableval" = yes; then
1709 AC_DEFINE(BX_X86_DEBUGGER, 1)
1710 elif test "$enableval" = no; then
1712 AC_DEFINE(BX_X86_DEBUGGER, 0)
1715 AC_DEFINE(BX_X86_DEBUGGER, 1)
1719 AC_DEFINE(BX_X86_DEBUGGER, 0)
1723 AC_CHECK_HEADER(IOKit/storage/IOCDMedia.h,
1724 can_use_osx_cdrom=yes
1727 AC_MSG_CHECKING(for CDROM support)
1728 AC_ARG_ENABLE(cdrom,
1729 [ --enable-cdrom CDROM support],
1730 [if test "$enableval" = no; then
1738 if test "$bx_cdrom" = 1; then
1740 CDROM_OBJS='cdrom.o'
1741 if test "$with_amigaos" = yes; then
1742 # use the amiga cdrom file instead.
1743 CDROM_OBJS="cdrom_amigaos.o"
1744 elif test "$can_use_osx_cdrom" = yes; then
1746 AC_MSG_RESULT(Using OSX IOKit CD Interface)
1747 CDROM_OBJS="cdrom.o"
1748 EXTRA_LINK_OPTS="${EXTRA_LINK_OPTS} -framework IOKit -framework CoreFoundation "'$(GUI_LINK_OPTS)'
1752 # use the beos cdrom file instead
1753 CDROM_OBJS="$CDROM_OBJS cdrom_beos.o"
1755 AC_DEFINE(BX_SUPPORT_CDROM, 1)
1759 AC_DEFINE(BX_SUPPORT_CDROM, 0)
1762 AC_SUBST(CDROM_OBJS)
1765 AC_MSG_CHECKING(for Sound Blaster 16 support)
1771 [ --enable-sb16=xxx Sound Blaster 16 Support (xxx=dummy|win|linux|freebsd|osx)],
1772 [if test "$enableval" = no; then
1774 AC_DEFINE(BX_SUPPORT_SB16, 0)
1776 case "$enableval" in
1779 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_output_c)
1780 AC_MSG_RESULT(dummy)
1783 SOUNDLOW_OBJS='soundlnx.o'
1784 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_linux_c)
1785 AC_MSG_RESULT(linux)
1788 SOUNDLOW_OBJS='soundwin.o'
1789 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1793 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS winmm.lib"
1796 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
1801 SOUNDLOW_OBJS='soundosx.o'
1802 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_osx_c)
1804 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -framework AudioUnit -framework AudioToolbox"
1808 *-linux* | *-freebsd*)
1809 SOUNDLOW_OBJS='soundlnx.o'
1810 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_linux_c)
1811 AC_MSG_RESULT(linux)
1814 SOUNDLOW_OBJS='soundwin.o'
1815 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1817 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS winmm.lib"
1819 *-cygwin* | *-mingw32*)
1820 SOUNDLOW_OBJS='soundwin.o'
1821 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1823 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
1825 *-macosx* | *-macos*)
1826 SOUNDLOW_OBJS='soundosx.o'
1827 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_osx_c)
1829 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -framework AudioUnit -framework AudioToolbox"
1833 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_output_c)
1834 AC_MSG_RESULT(dummy)
1840 echo \!\!\!Error\!\!\!
1841 echo "You must pass one of dummy, linux, win, freebsd, osx to --enable-sb16"
1845 AC_DEFINE(BX_SUPPORT_SB16, 1)
1846 GAME_OBJS='gameport.o'
1852 AC_DEFINE(BX_SUPPORT_SB16, 0)
1856 AC_SUBST(SOUNDLOW_OBJS)
1859 AC_MSG_CHECKING(for standard PC gameport support)
1860 AC_ARG_ENABLE(gameport,
1861 [ --enable-gameport enable standard PC gameport support],
1862 [if test "$enableval" = yes; then
1864 AC_DEFINE(BX_SUPPORT_GAMEPORT, 1)
1865 if test "$gameport_present" = 0; then
1866 GAME_OBJS='gameport.o'
1868 *-cygwin* | *-mingw32*)
1869 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
1876 AC_DEFINE(BX_SUPPORT_GAMEPORT, 0)
1879 if test "$gameport_present" = 1; then
1880 AC_DEFINE(BX_SUPPORT_GAMEPORT, 1)
1883 AC_DEFINE(BX_SUPPORT_GAMEPORT, 0)
1890 AC_MSG_CHECKING(for gdb stub enable)
1891 AC_ARG_ENABLE(gdb-stub,
1892 [ --enable-gdb-stub enable gdb stub support],
1893 [if test "$enableval" = yes; then
1895 AC_DEFINE(BX_GDBSTUB, 1)
1896 GDBSTUB_VAR='$(GDBSTUB_OBJS)'
1897 if test "$bx_debugger" = 1; then
1898 AC_MSG_ERROR([[--enable-debugger and --enable-gdb-stub are mutually exclusive]])
1902 AC_DEFINE(BX_GDBSTUB, 0)
1907 AC_DEFINE(BX_GDBSTUB, 0)
1911 AC_SUBST(GDBSTUB_VAR)
1914 AC_MSG_CHECKING(for I/O Interface to the debugger)
1916 AC_ARG_ENABLE(iodebug,
1917 [ --enable-iodebug enable I/O interface to debugger],
1918 [if test "$enableval" = yes; then
1920 AC_DEFINE(BX_SUPPORT_IODEBUG, 1)
1921 IODEBUG_OBJS='iodebug.o'
1924 AC_DEFINE(BX_SUPPORT_IODEBUG, 0)
1928 if test "" = 1; then
1929 # enable by default if debugger is on
1931 AC_DEFINE(BX_SUPPORT_IODEBUG, 1)
1932 IODEBUG_OBJS='iodebug.o'
1938 AC_SUBST(IODEBUG_OBJS)
1941 AC_PATH_PROG(DOCBOOK2HTML, docbook2html, not_found)
1942 AC_MSG_CHECKING(whether to build docbook documentation)
1944 AC_ARG_ENABLE(docbook,
1945 [ --enable-docbook build the Docbook documentation],
1947 if test "$enableval" = yes; then build_docbook=1; fi
1950 dnl Not specified. If they have docbook2html, then yes.
1951 if test "$DOCBOOK2HTML" != not_found; then build_docbook=1; fi
1955 if test $build_docbook = 1; then
1957 BUILD_DOCBOOK_VAR=build_docbook
1958 INSTALL_DOCBOOK_VAR=install_docbook
1959 if test "$DOCBOOK2HTML" = not_found; then
1960 echo "ERROR: docbook2html must be installed to build the documentation"
1966 AC_SUBST(BUILD_DOCBOOK_VAR)
1967 AC_SUBST(INSTALL_DOCBOOK_VAR)
1968 AC_SUBST(DOCBOOK2HTML)
1970 PRIMARY_TARGET='bochs'
1971 PLUGIN_LIBNAME_TRANSFORMATION='%.o=libbx_%.la'
1973 AC_DEFINE(BX_PROVIDE_DEVICE_MODELS, 1)
1974 IODEV_LIB_VAR='iodev/libiodev.a'
1975 AC_DEFINE(BX_PROVIDE_CPU_MEMORY, 1)
1976 NONINLINE_VAR='$(NONINLINE_OBJS)'
1978 AC_SUBST(IODEV_LIB_VAR)
1979 AC_SUBST(EXTRA_BX_OBJS)
1980 AC_SUBST(NONINLINE_VAR)
1981 AC_SUBST(INLINE_VAR)
1982 AC_SUBST(EXTERNAL_DEPENDENCY)
1983 AC_SUBST(EXT_DEBUG_OBJS)
1988 [ --with-x11 use X11 GUI],
1992 [ --with-beos use BeOS GUI],
1996 [ --with-win32 use Win32 GUI],
2000 [ --with-macos use Macintosh/CodeWarrior environment],
2004 [ --with-carbon compile for MacOS X with Carbon GUI],
2008 [ --with-nogui no native GUI, just use blank stubs],
2012 [ --with-term textmode terminal environment],
2016 [ --with-rfb use RFB protocol, works with VNC viewer],
2019 AC_ARG_WITH(amigaos,
2020 [ --with-amigaos use AmigaOS (or MorphOS) GUI],
2024 [ --with-sdl use SDL libraries],
2028 [ --with-svga use SVGALib libraries],
2032 [ --with-wx use wxWidgets libraries],
2035 AC_ARG_WITH(all-libs,
2036 [ --with-all-libs compile all guis that Bochs supports],
2039 dnl // DASH is option prefix for your platform
2040 dnl // SLASH is directory for your platform
2041 dnl // CXXFP is C++ File Prefix; the flag that tells the compiler
2042 dnl // this is a C++ source file
2043 dnl // CFP is C File Prefix; the flag that tells the compiler
2044 dnl // this is a C source file
2045 dnl // OFP is Object File Prefix; the flag that tells the compiler
2046 dnl // generate an object file with this name
2054 # first define link variables without libtool
2055 LINK="\$(CXX) -o \$@ \$(CXXFLAGS) \$(LDFLAGS)"
2056 LINK_CONSOLE="\$(CXX) -o \$@ \$(CXXFLAGS_CONSOLE) \$(LDFLAGS)"
2057 # unless NO_LT is set, add libtool to the front of the link command
2058 if test "$NO_LT" != 1; then
2059 LINK="\$(LIBTOOL) --mode=link $LINK"
2060 LINK_CONSOLE="\$(LIBTOOL) --mode=link $LINK_CONSOLE"
2063 COMMAND_SEPARATOR="&& \\"
2064 CD_UP_ONE="echo done"
2065 CD_UP_TWO="echo done"
2066 CD_UP_THREE="echo done"
2068 INSTALL_TARGET=install_unix
2069 INSTALL_LIST_FOR_PLATFORM=
2071 # check for existence of and usable version of wxWidgets. This comes
2072 # early so that it could affect which one gets chosen.
2073 if test x$WX_CONFIG = x; then
2074 AC_CHECK_PROG(WX_CONFIG, [ wx-config --version ], wx-config, not_found)
2076 AC_MSG_CHECKING(for wxWidgets configuration script)
2077 AC_MSG_RESULT($WX_CONFIG)
2082 AC_MSG_CHECKING(for wxWidgets library version)
2083 if test x$WX_CONFIG != xnot_found; then
2084 WX_VERSION=`$WX_CONFIG --version`
2085 WX_BASENAME=`$WX_CONFIG --basename`
2087 # test that version >= 2.3.2. Anybody have a better way to do this? Yuck.
2088 case x$WX_VERSION in
2089 x2.[012]*) ;; # less than version 2.3.x
2090 x2.3.[01]) ;; # less than version 2.3.2
2091 x2.3.[2-4]*) ok_wx_version=1 ;; # 2.3.2 or greater
2092 x2.[4-5]*) ok_wx_version=1 ;; # version 2.4 / 2.5
2093 x2.[6-9]*) # version 2.6 or greater
2096 case x$WX_BASENAME in
2097 xwx_gtk2|xwx_gtk2u) wx_needs_gtk2=1 ;;
2101 x[3-9]*) ok_wx_version=1 ;; # version 3 or greater
2106 AC_MSG_RESULT($WX_VERSION)
2107 if test "$cross_configure" = 0; then
2108 if test "$ok_wx_version" = 1; then
2109 # detected a usable version
2110 if test "$with_all_libs" = yes; then
2114 if test "$with_wx" = yes; then
2115 AC_MSG_WARN([Bochs for wxWidgets cannot be compiled here, disabling it])
2121 AC_MSG_CHECKING(for default gui on this platform)
2122 AC_MSG_RESULT($DEFAULT_GUI)
2126 # the $with_* variable tells the gui library to use, but does NOT necessarily
2127 # indicate the platform. Settings that depend on the platform should be
2131 if test "$with_x11" = yes; then
2132 display_libs="$display_libs X11"
2133 if test "$no_x" = yes; then
2134 echo ERROR: X windows gui was selected, but X windows libraries were not found.
2137 AC_DEFINE(BX_WITH_X11, 1)
2138 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_X11)"
2139 GUI_CFLAGS="$GUI_CFLAGS \$(X_CFLAGS)"
2140 GUI_CXXFLAGS="$GUI_CXXFLAGS \$(X_CFLAGS)"
2141 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_X)"
2143 AC_MSG_CHECKING(whether user wants XPM support)
2145 [ --enable-xpm enable the check for XPM support],
2146 [if test "$enableval" = yes; then
2159 if test $check_xpm = 1; then
2160 AC_CHECK_HEADER(X11/xpm.h, [
2161 AC_DEFINE(BX_HAVE_XPM_H)
2168 if test "$with_beos" = yes; then
2169 display_libs="$display_libs beos"
2170 AC_DEFINE(BX_WITH_BEOS, 1)
2171 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_BEOS)"
2172 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_BEOS)"
2175 if test "$with_sdl" = yes; then
2176 display_libs="$display_libs sdl"
2177 AC_DEFINE(BX_WITH_SDL, 1)
2178 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_SDL)"
2179 # GUI_*FLAGS are added to the compilation of every bochs file, not just
2180 # the files in gui/*.cc.
2181 SDL_CFLAGS=`sdl-config --cflags`
2182 GUI_CFLAGS="$GUI_CFLAGS $SDL_CFLAGS"
2183 GUI_CXXFLAGS="$GUI_CXXFLAGS $SDL_CFLAGS"
2184 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_SDL)"
2185 if test "$with_win32" != yes -a "$with_wx" != yes; then
2189 EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2191 *-cygwin* | *-mingw32*)
2192 RC_CMD="windres -o "
2193 EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2199 if test "$with_svga" = yes; then
2200 display_libs="$display_libs svga"
2201 AC_DEFINE(BX_WITH_SVGA, 1)
2202 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_SVGA)"
2203 # GUI_*FLAGS are added to the compilation of every bochs file, not just
2204 # the files in gui/*.cc.
2205 GUI_CFLAGS="$GUI_CFLAGS"
2206 GUI_CXXFLAGS="$GUI_CXXFLAGS"
2207 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_SVGA)"
2210 if test "$with_rfb" = yes; then
2211 display_libs="$display_libs rfb"
2212 AC_DEFINE(BX_WITH_RFB, 1)
2213 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_RFB)"
2214 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_RFB)"
2217 if test "$with_amigaos" = yes; then
2218 display_libs="$display_libs amigaos"
2219 AC_DEFINE(BX_WITH_AMIGAOS, 1)
2220 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_AMIGAOS)"
2221 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_AMIGAOS)"
2224 if test "$with_win32" = yes; then
2225 display_libs="$display_libs win32"
2226 AC_DEFINE(BX_WITH_WIN32, 1)
2227 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_WIN32)"
2230 if test "$with_wx" != yes; then
2232 EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2234 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WIN32_VCPP)"
2236 *-cygwin* | *-mingw32*)
2237 if test "$with_wx" != yes; then
2238 RC_CMD="windres -o "
2239 EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2241 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WIN32)"
2243 *) echo Unsupported compile setup: GUI library is win32, but target is neither windows nor cygwin.
2248 if test "$with_macos" = yes; then
2249 display_libs="$display_libs macos"
2250 AC_DEFINE(BX_WITH_MACOS, 1)
2251 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_MACOS)"
2252 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_MACOS)"
2255 if test "$with_carbon" = yes; then
2256 display_libs="$display_libs carbon"
2257 AC_DEFINE(BX_WITH_CARBON, 1)
2258 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_CARBON)"
2259 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_CARBON)"
2260 if test "$bx_plugins" = 1; then
2261 PRIMARY_TARGET=bochs.app/.build_plugins # only for carbon application
2263 PRIMARY_TARGET=bochs.app/.build # only for carbon application
2265 INSTALL_TARGET='install_macosx'
2268 if test "$with_term" = yes; then
2269 display_libs="$display_libs term"
2270 AC_DEFINE(BX_WITH_TERM, 1)
2271 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_TERM)"
2272 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_TERM)"
2276 if test "$with_wx" = yes; then
2277 display_libs="$display_libs wxWidgets"
2278 if test "$cross_configure" = 1; then
2279 true # do not insist, if configuring for another machine
2281 if test x$ok_wx_version != x1; then
2282 echo ERROR: A usable version of wxWidgets was not found.
2283 echo Upgrade the library or choose another gui.
2287 AC_DEFINE(BX_WITH_WX, 1)
2288 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_WX)"
2289 SPECIFIC_GUI_SUPPORT_OBJS="$SPECIFIC_GUI_SUPPORT_OBJS \$(GUI_OBJS_WX_SUPPORT)"
2290 WX_CFLAGS="`$WX_CONFIG --cflags`"
2291 WX_CXXFLAGS="`$WX_CONFIG --cxxflags`"
2292 if test "$wx_multi_lib" = 1; then
2293 GUI_LINK_OPTS_WX="`$WX_CONFIG --libs core,base`"
2295 GUI_LINK_OPTS_WX="`$WX_CONFIG --libs`"
2297 if test "$wx_needs_gtk2" = 1; then
2298 PKG_CHECK_MODULES([GTK], [gtk+-2.0], [
2299 WX_CFLAGS="$WX_CFLAGS $GTK_CFLAGS"
2300 WX_CXXFLAGS="$WX_CXXFLAGS $GTK_CFLAGS"
2303 # if gtk-config exists, then add it to the cflags.
2304 gtkconf=`gtk-config --cflags`
2305 if test $? = 0; then
2306 # gtk-config was found and returned 0, so it must return valid output
2307 WX_CFLAGS="$WX_CFLAGS $gtkconf"
2308 WX_CXXFLAGS="$WX_CXXFLAGS $gtkconf"
2311 # GUI_C*FLAGS are added to the compilation of every bochs file, not just
2312 # the files in gui/*.cc. They are not used when building other things
2314 GUI_CFLAGS="$GUI_CFLAGS $WX_CFLAGS"
2315 GUI_CXXFLAGS="$GUI_CXXFLAGS $WX_CXXFLAGS"
2316 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WX)"
2317 # using debugger with readline is failing due to thread/signal handler
2320 *-pc-windows* | *-cygwin* | *-mingw32*)
2321 EXTRA_BX_OBJS="$EXTRA_BX_OBJS wxbochs_resources.o"
2322 GUI_LINK_OPTS_WX="$GUI_LINK_OPTS_WX --subsystem,windows -mwindows"
2327 if test "$with_nogui" = yes; then
2328 display_libs="$display_libs nogui"
2329 AC_DEFINE(BX_WITH_NOGUI, 1)
2330 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_NOGUI)"
2333 AC_MSG_CHECKING(for display libraries)
2334 AC_MSG_RESULT($display_libs)
2336 if test "$display_libs" = ""; then
2337 echo "No display libraries were selected. Use --with-* options to enable"
2338 echo "individual display libraries, or --with-all-libs to detect the ones"
2339 echo "that Bochs supports."
2343 dnl To use wxWidgets you must select it as both the configuration interface
2344 dnl and the display library. In the simplest case where the user has
2345 dnl only configured with --with-wx, set both defaults to wxWidgets.
2346 dnl Without this setting, the config interface would default to the text
2347 dnl mode config interface, and then the wxWidgets display library would not
2349 if test "$display_libs" = " wxWidgets"; then
2350 AC_MSG_CHECKING(for default configuration interface)
2351 AC_MSG_RESULT(wxWidgets)
2352 AC_MSG_CHECKING(for default display library)
2353 AC_MSG_RESULT(wxWidgets)
2354 AC_DEFINE(BX_DEFAULT_CONFIG_INTERFACE, "wx")
2355 AC_DEFINE(BX_DEFAULT_DISPLAY_LIBRARY, "wx")
2356 AC_DEFINE(BX_USE_TEXTCONFIG, 0)
2358 AC_DEFINE(BX_USE_TEXTCONFIG, 1)
2361 if test "$bx_plugins" = 1; then
2362 # every item in this list will be compiled as a plugin. Do not include
2363 # support objs; they will be mentioned in plugin-specific makefile rules.
2364 GUI_PLUGIN_OBJS="$GUI_PLUGIN_OBJS $SPECIFIC_GUI_OBJS"
2366 # include support objs
2367 GUI_NON_PLUGIN_OBJS="$GUI_NON_PLUGIN_OBJS $SPECIFIC_GUI_OBJS $SPECIFIC_GUI_SUPPORT_OBJS"
2370 AC_SUBST(GUI_CFLAGS)
2371 AC_SUBST(GUI_CXXFLAGS)
2374 AC_SUBST(WX_CXXFLAGS)
2376 AC_CHECK_PROGS(WGET, wget curl fetch, not_found)
2377 if test "$WGET" = not_found; then
2378 AC_MSG_WARN([cannot find wget (or equivalent) command])
2380 # everybody has to re-invent the wheel. differently.
2381 test "${WGET}" = "curl" && WGET="curl -O"
2383 # modify settings based on target platform
2386 AC_DEFINE(BX_HAVE_STRDUP, 0)
2389 AC_DEFINE(BX_HAVE_STRDUP, 0)
2390 AC_DEFINE(BX_PLUGINS, 0)
2391 AC_DEFINE(BX_HAVE_DLFCN_H, 0)
2392 AC_DEFINE(BX_HAVE_SOCKLEN_T, 0)
2393 AC_DEFINE(BX_HAVE_SELECT, 0)
2394 AC_DEFINE(BX_HAVE_GETTIMEOFDAY, 0)
2395 AC_DEFINE(BX_NO_ATTRIBUTES, 1)
2396 AC_DEFINE(HAVE_TUNTAP, 0)
2397 AC_DEFINE(HAVE_ETHERTAP, 0)
2398 AC_DEFINE(BX_HAVE_HASH_MAP, 0)
2401 INSTALL_TARGET='install_win32'
2404 #C_OPT="/Zi" # for debugging
2405 C_OPT="/Ox" # optimize for speed
2406 CFLAGS="/nologo /G6 /MT /W3 /GX- /DNDEBUG /DWIN32 /D_WINDOWS $C_OPT"
2414 MAKELIB="lib /nologo /subsystem:console /machine:I386 /verbose /out:\$@"
2417 #L_OPT="/debug" # for debugging
2418 L_OPT="" # no debug info
2419 LINK="link $L_OPT /nologo /subsystem:console /incremental:no /machine:I386 /out:\$@ "
2422 PRIMARY_TARGET="bochs.exe"
2423 BXIMAGE_LINK_OPTS="user32.lib"
2424 # also compile niclist if networking is on
2425 if test "$networking" = yes; then
2426 PRIMARY_TARGET="$PRIMARY_TARGET niclist.exe"
2428 COMMAND_SEPARATOR=""
2430 CD_UP_TWO="cd ..\.."
2431 CD_UP_THREE="cd ..\..\.."
2432 have_gettimeofday=0 # even though it may exist in build environment
2433 AC_DEFINE(BX_64BIT_CONSTANTS_USE_LL, 0)
2434 AC_DEFINE(inline, __inline)
2435 AC_DEFINE(BX_NO_EMPTY_STRUCTS, 1)
2436 AC_DEFINE(BX_NO_ATTRIBUTES, 1)
2437 AC_DEFINE(BX_HAVE_HASH_MAP, 0)
2438 AC_DEFINE(BX_HAVE_HASH_MAP_H, 0)
2439 AC_DEFINE(BX_HAVE_STRTOULL, 0)
2440 AC_DEFINE(BX_HAVE_STRTOUQ, 0)
2441 AC_DEFINE(HAVE_LIBREADLINE, 0)
2442 AC_DEFINE(BX_HAVE_GETTIMEOFDAY, 0)
2443 AC_DEFINE(BX_HAVE_DLFCN_H, 0)
2444 AC_DEFINE(BX_HAVE_MKSTEMP, 0)
2445 AC_DEFINE(BX_HAVE_SYS_MMAN_H, 0)
2446 AC_DEFINE(BX_HAVE_USLEEP, 0)
2447 AC_DEFINE(HAVE_ETHERTAP, 0)
2448 AC_DEFINE(BX_HAVE_SELECT, 1)
2449 AC_DEFINE(BX_HAVE_SOCKLEN_T, 0)
2453 PRIMARY_TARGET="bochs.exe"
2454 BXIMAGE_LINK_OPTS="-luser32"
2455 if test "$networking" = yes; then
2456 PRIMARY_TARGET="$PRIMARY_TARGET niclist.exe"
2458 AC_DEFINE(BX_HAVE_SELECT, 1)
2461 BXIMAGE_LINK_OPTS="-luser32"
2462 if test "$networking" = yes; then
2463 PRIMARY_TARGET="$PRIMARY_TARGET niclist"
2465 AC_DEFINE(BX_HAVE_SELECT, 1)
2468 PRIMARY_TARGET=.bochs_beos_target
2473 EXPORT_DYNAMIC="-export-dynamic"
2475 *-pc-windows* | *-pc-winnt* | *-cygwin* | *-mingw*)
2476 if test "$bx_plugins" = 1; then
2477 AC_CHECK_LIB(mingwex, opendir, LIBS="$LIBS -lmingwex")
2478 # set variables for building DLL plugins
2479 PRIMARY_TARGET=".win32_dll_plugin_target"
2480 PLUGIN_LIBNAME_TRANSFORMATION='%.o=bx_%.dll'
2481 INSTALL_PLUGINS_VAR=install_dll_plugins
2483 if test "$with_win32" != yes; then
2484 LIBS="$LIBS -lcomctl32"
2487 DIALOG_OBJS="win32dialog.o"
2491 AC_SUBST(DIALOG_OBJS)
2492 AC_SUBST(EXPORT_DYNAMIC)
2494 if test "$use_curses" = yes -a "$cross_configure" = 0; then
2495 AC_CHECK_LIB(curses, mvaddch, GUI_LINK_OPTS_TERM='-lcurses')
2496 AC_CHECK_LIB(ncurses, mvaddch, GUI_LINK_OPTS_TERM='-lncurses')
2497 AC_CHECK_LIB(termlib, mvaddch, GUI_LINK_OPTS_TERM='-ltermlib')
2498 AC_CHECK_LIB(pdcurses, mvaddch, GUI_LINK_OPTS_TERM='-lpdcurses')
2499 if test "$GUI_LINK_OPTS_TERM" = ""; then
2500 echo Curses library not found: tried curses, ncurses, termlib and pdcurses.
2505 if test "$with_term" = yes; then
2507 LIBS="$LIBS $GUI_LINK_OPTS_TERM"
2508 AC_CHECK_FUNCS(color_set, AC_DEFINE(BX_HAVE_COLOR_SET, 1))
2509 AC_CHECK_FUNCS(mvhline, AC_DEFINE(BX_HAVE_MVHLINE, 1))
2510 AC_CHECK_FUNCS(mvvline, AC_DEFINE(BX_HAVE_MVVLINE, 1))
2514 if test "$with_rfb" = yes; then
2515 # we need the socket function
2518 # is this okay without a check ?
2519 RFB_LIBS="$RFB_LIBS wsock32.lib"
2522 *-pc-winnt* | *-pc-cygwin* | *-pc-mingw32*)
2523 # is this okay without a check ?
2524 RFB_LIBS="$RFB_LIBS -lwsock32"
2528 AC_CHECK_FUNCS(socket, have_socket=yes)
2529 if test "$have_socket" != yes; then
2530 AC_CHECK_LIB(socket, socket,
2532 RFB_LIBS="$RFB_LIBS -lsocket"
2538 if test "$have_socket" != yes; then
2539 echo 'ERROR: socket function required for RFB compile'
2544 # The ACX_PTHREAD function was written by
2545 # Steven G. Johnson <stevenj@alum.mit.edu> and
2546 # Alejandro Forero Cuervo <bachue@bachue.com>
2547 # I found it in the ac-archive project on Source Forge.
2549 AC_DEFUN([ACX_PTHREAD], [
2550 AC_REQUIRE([AC_CANONICAL_HOST])
2553 # First, check if the POSIX threads header, pthread.h, is available.
2554 # If it isn't, don't bother looking for the threads libraries.
2555 AC_CHECK_HEADER(pthread.h, , acx_pthread_ok=noheader)
2557 # We must check for the threads library under a number of different
2558 # names; the ordering is very important because some systems
2559 # (e.g. DEC) have both -lpthread and -lpthreads, where one of the
2560 # libraries is broken (non-POSIX).
2562 # First of all, check if the user has set any of the PTHREAD_LIBS,
2563 # etcetera environment variables, and if threads linking works using
2565 if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
2566 save_CFLAGS="$CFLAGS"
2567 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2568 CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
2570 LIBS="$PTHREAD_LIBS $LIBS"
2571 AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
2572 AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
2573 AC_MSG_RESULT($acx_pthread_ok)
2574 if test x"$acx_pthread_ok" = xno; then
2579 CFLAGS="$save_CFLAGS"
2582 # Create a list of thread flags to try. Items starting with a "-" are
2583 # C compiler flags, and other items are library names, except for "none"
2584 # which indicates that we try without any flags at all.
2586 acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt"
2588 # The ordering *is* (sometimes) important. Some notes on the
2589 # individual items follow:
2591 # pthreads: AIX (must check this before -lpthread)
2592 # none: in case threads are in libc; should be tried before -Kthread and
2593 # other compiler flags to prevent continual compiler warnings
2594 # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
2595 # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
2596 # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
2597 # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
2598 # -pthreads: Solaris/gcc
2599 # -mthreads: Mingw32/gcc, Lynx/gcc
2600 # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
2601 # doesn't hurt to check since this sometimes defines pthreads too;
2602 # also defines -D_REENTRANT)
2603 # pthread: Linux, etcetera
2604 # --thread-safe: KAI C++
2606 case "${host_cpu}-${host_os}" in
2609 # On Solaris (at least, for some versions), libc contains stubbed
2610 # (non-functional) versions of the pthreads routines, so link-based
2611 # tests will erroneously succeed. (We need to link with -pthread or
2612 # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
2613 # a function called by this macro, so we could check for that, but
2614 # who knows whether they'll stub that too in a future libc.) So,
2615 # we'll just look for -pthreads and -lpthread first:
2617 acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
2621 if test x"$acx_pthread_ok" = xno; then
2622 for flag in $acx_pthread_flags; do
2626 AC_MSG_CHECKING([whether pthreads work without any flags])
2630 AC_MSG_CHECKING([whether pthreads work with $flag])
2631 PTHREAD_CFLAGS="$flag"
2635 AC_MSG_CHECKING([for the pthreads library -l$flag])
2636 PTHREAD_LIBS="-l$flag"
2641 save_CFLAGS="$CFLAGS"
2642 LIBS="$PTHREAD_LIBS $LIBS"
2643 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2645 # Check for various functions. We must include pthread.h,
2646 # since some functions may be macros. (On the Sequent, we
2647 # need a special flag -Kthread to make this header compile.)
2648 # We check for pthread_join because it is in -lpthread on IRIX
2649 # while pthread_create is in libc. We check for pthread_attr_init
2650 # due to DEC craziness with -lpthreads. We check for
2651 # pthread_cleanup_push because it is one of the few pthread
2652 # functions on Solaris that doesn't have a non-functional libc stub.
2653 # We try pthread_create on general principles.
2654 AC_TRY_LINK([#include <pthread.h>],
2655 [pthread_t th; pthread_join(th, 0);
2656 pthread_attr_init(0); pthread_cleanup_push(0, 0);
2657 pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
2658 [acx_pthread_ok=yes])
2661 CFLAGS="$save_CFLAGS"
2663 AC_MSG_RESULT($acx_pthread_ok)
2664 if test "x$acx_pthread_ok" = xyes; then
2673 # Various other checks:
2674 if test "x$acx_pthread_ok" = xyes; then
2676 LIBS="$PTHREAD_LIBS $LIBS"
2677 save_CFLAGS="$CFLAGS"
2678 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2680 # Detect AIX lossage: threads are created detached by default
2681 # and the JOINABLE attribute has a nonstandard name (UNDETACHED).
2682 AC_MSG_CHECKING([for joinable pthread attribute])
2683 AC_TRY_LINK([#include <pthread.h>],
2684 [int attr=PTHREAD_CREATE_JOINABLE;],
2685 ok=PTHREAD_CREATE_JOINABLE, ok=unknown)
2686 if test x"$ok" = xunknown; then
2687 AC_TRY_LINK([#include <pthread.h>],
2688 [int attr=PTHREAD_CREATE_UNDETACHED;],
2689 ok=PTHREAD_CREATE_UNDETACHED, ok=unknown)
2691 if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then
2692 AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok,
2693 [Define to the necessary symbol if this constant
2694 uses a non-standard name on your system.])
2696 AC_MSG_RESULT(${ok})
2697 if test x"$ok" = xunknown; then
2698 AC_MSG_WARN([we do not know how to create joinable pthreads])
2701 AC_MSG_CHECKING([if more special flags are required for pthreads])
2703 case "${host_cpu}-${host_os}" in
2704 *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";;
2705 *solaris* | alpha*-osf*) flag="-D_REENTRANT";;
2707 AC_MSG_RESULT(${flag})
2708 if test "x$flag" != xno; then
2709 PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
2713 CFLAGS="$save_CFLAGS"
2715 # More AIX lossage: must compile with cc_r
2716 AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
2721 AC_SUBST(PTHREAD_LIBS)
2722 AC_SUBST(PTHREAD_CFLAGS)
2723 AC_SUBST(PTHREAD_CC)
2725 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
2726 if test x"$acx_pthread_ok" = xyes; then
2727 ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
2739 #echo Using PTHREAD_LIBS=$PTHREAD_LIBS
2740 #echo Using PTHREAD_CFLAGS=$PTHREAD_CFLAGS
2741 #echo Using PTHREAD_CC=$PTHREAD_CC
2745 # since RFB (usually) needs pthread library, check that it was found.
2746 # But on win32 platforms, the pthread library is not needed.
2747 if test "$with_rfb" = yes -a "$cross_configure" = 0; then
2748 if test "$pthread_ok" = yes; then
2749 RFB_LIBS="$RFB_LIBS $PTHREAD_LIBS"
2750 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2751 CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
2755 *-pc-windows* | *-pc-winnt* | *-cygwin* | *-mingw*)
2756 # pthread not needed for win32 platform
2759 echo ERROR: --with-rfb requires the pthread library, which could not be found.; exit 1
2764 dnl // DEPRECATED configure options - force users to remove them
2766 AC_MSG_CHECKING(for specified CMOS start time (deprecated))
2767 AC_ARG_ENABLE(time0,
2768 [ --enable-time0=n start at n (deprecated)],
2769 [AC_MSG_RESULT($enableval)
2770 AC_MSG_ERROR([DEPRECATED - use runtime option 'clock' instead])
2776 AC_MSG_CHECKING(for configuration interface (deprecated))
2777 AC_ARG_ENABLE(config-interface,
2778 [ --enable-config-interface turns on/off configuration interface (deprecated)],
2779 [AC_MSG_RESULT($enableval)
2780 AC_MSG_ERROR([DEPRECATED - configuration interface is always enabled])
2786 AC_MSG_CHECKING(for control panel (deprecated))
2787 AC_ARG_ENABLE(control-panel,
2788 [ --enable-control-panel turns on/off contol panel (deprecated)],
2789 [AC_MSG_RESULT($enableval)
2790 AC_MSG_ERROR([DEPRECATED - configuration interface is always enabled])
2796 AC_MSG_CHECKING(for VGA emulation (deprecated))
2798 [ --enable-vga use VGA emulation (deprecated)],
2799 [AC_MSG_RESULT($enableval)
2800 AC_MSG_ERROR([DEPRECATED - standard VGA emulation is always enabled])
2806 AC_MSG_CHECKING(for number of processors (deprecated))
2807 AC_ARG_ENABLE(processors,
2808 [ --enable-processors select number of processors (deprecated)],
2809 [AC_MSG_RESULT($enableval)
2810 AC_MSG_ERROR([DEPRECATED - use option --enable-smp instead])
2816 AC_MSG_CHECKING(whether to reset on triple fault (deprecated))
2817 AC_ARG_ENABLE(reset-on-triple-fault,
2818 [ --enable-reset-on-triple-fault reset when cpu detects a triple fault (deprecated)],
2819 [AC_MSG_RESULT($enableval)
2820 AC_MSG_ERROR([DEPRECATED - could be configured directly from .bochsrc instead])
2826 AC_MSG_CHECKING(PNI support (deprecated))
2827 AC_ARG_ENABLE(--enable-pni,
2828 [ --enable-pni PNI support (deprecated)],
2829 [AC_MSG_RESULT($enableval)
2830 AC_MSG_ERROR([DEPRECATED - use --enable-sse=3 instead])
2836 AC_MSG_CHECKING(for new PIT model (deprecated))
2837 AC_ARG_ENABLE(new-pit,
2838 [ --enable-new-pit use Greg Alexander's new PIT model (deprecated)],
2839 [AC_MSG_RESULT($enableval)
2840 AC_MSG_ERROR([DEPRECATED - the new PIT model is always present and the old one has been removed])
2846 # Create some subdirectories for when you run configure from some other
2848 if test ! -d instrument; then mkdir instrument; fi
2849 if test ! -d build; then mkdir build; fi
2850 if test ! -d build/linux; then mkdir build/linux; fi
2851 if test ! -d build/win32; then mkdir build/win32; fi
2852 if test ! -d build/win32/nsis; then mkdir build/win32/nsis; fi
2854 AC_SUBST(INSTALL_TARGET)
2855 AC_SUBST(INSTALL_LIST_FOR_PLATFORM)
2858 AC_SUBST(DEVICE_LINK_OPTS)
2859 AC_SUBST(GUI_LINK_OPTS)
2860 AC_SUBST(GUI_LINK_OPTS_TERM)
2861 AC_SUBST(GUI_LINK_OPTS_WX)
2862 AC_SUBST(BXIMAGE_LINK_OPTS)
2871 AC_SUBST(LINK_CONSOLE)
2873 AC_SUBST(PRIMARY_TARGET)
2874 AC_SUBST(PLUGIN_LIBNAME_TRANSFORMATION)
2875 AC_SUBST(COMMAND_SEPARATOR)
2878 AC_SUBST(CD_UP_THREE)
2880 AC_SUBST(VER_STRING)
2881 AC_SUBST(REL_STRING)
2882 AC_SUBST(EXTRA_LINK_OPTS)
2883 AC_SUBST(GUI_NON_PLUGIN_OBJS)
2884 AC_SUBST(GUI_PLUGIN_OBJS)
2885 AC_SUBST(IODEV_NON_PLUGIN_OBJS)
2886 AC_SUBST(IODEV_PLUGIN_OBJS)
2887 AC_SUBST(PLUGIN_VAR)
2888 AC_SUBST(PLUGIN_TARGET)
2889 AC_SUBST(INSTALL_PLUGINS_VAR)
2891 AC_PATH_PROG(GZIP, gzip)
2892 AC_PATH_PROG(TAR, tar)
2894 AC_OUTPUT(Makefile iodev/Makefile bx_debug/Makefile bios/Makefile \
2895 cpu/Makefile memory/Makefile gui/Makefile \
2896 disasm/Makefile ${INSTRUMENT_DIR}/Makefile misc/Makefile \
2897 fpu/Makefile doc/docbook/Makefile \
2898 build/linux/bochs-dlx \
2899 bxversion.h build/macosx/Info.plist \
2900 build/win32/nsis/Makefile build/win32/nsis/bochs.nsi \
2901 host/linux/pcidev/Makefile)