1 dnl // Process this file with autoconf to produce a configure script.
5 AC_REVISION([[$Id: configure.in,v 1.372 2008/07/12 15:20:18 vruppert Exp $]])
6 AC_CONFIG_HEADER(config.h)
7 AC_CONFIG_HEADER(ltdlconf.h)
9 dnl // Put Bochs version information right here so that it gets substituted
10 dnl // into all the right places.
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(enable assert checks)
1438 AC_ARG_ENABLE(assert-checks,
1439 [ --enable-assert-checks enable BX_ASSERT checks],
1440 [if test "$enableval" = yes; then
1442 AC_DEFINE(BX_ASSERT_ENABLE, 1)
1445 AC_DEFINE(BX_ASSERT_ENABLE, 0)
1448 if test "$bx_debugger" = 1; then
1450 AC_DEFINE(BX_ASSERT_ENABLE, 1)
1453 AC_DEFINE(BX_ASSERT_ENABLE, 0)
1458 AC_MSG_CHECKING(for raw serial support)
1459 AC_ARG_ENABLE(raw-serial,
1460 [ --enable-raw-serial use raw serial port access],
1461 [if test "$enableval" = yes; then
1463 AC_DEFINE(USE_RAW_SERIAL, 1)
1466 AC_DEFINE(USE_RAW_SERIAL, 0)
1470 AC_DEFINE(USE_RAW_SERIAL, 0)
1474 AC_MSG_CHECKING(for VESA BIOS extensions)
1476 [ --enable-vbe use VESA BIOS extensions],
1477 [if test "$enableval" = yes; then
1479 AC_DEFINE(BX_SUPPORT_VBE, 1)
1480 if test "$pci" = 1; then
1481 AC_DEFINE(BX_SUPPORT_PCIVGA, 1)
1485 AC_DEFINE(BX_SUPPORT_VBE, 0)
1489 AC_DEFINE(BX_SUPPORT_VBE, 1)
1490 if test "$pci" = 1; then
1491 AC_DEFINE(BX_SUPPORT_PCIVGA, 1)
1496 AC_MSG_CHECKING(for CLGD54XX emulation)
1497 AC_ARG_ENABLE(clgd54xx,
1498 [ --enable-clgd54xx enable CLGD54XX emulation],
1499 [if test "$enableval" = yes; then
1501 AC_DEFINE(BX_SUPPORT_CLGD54XX, 1)
1504 AC_DEFINE(BX_SUPPORT_CLGD54XX, 0)
1508 AC_DEFINE(BX_SUPPORT_CLGD54XX, 0)
1513 AC_MSG_CHECKING(for FPU emulation)
1516 [ --enable-fpu compile in FPU emulation],
1517 [if test "$enableval" = yes; then
1519 AC_DEFINE(BX_SUPPORT_FPU, 1)
1520 FPU_VAR='$(FPU_LIB)'
1521 elif test "$enableval" = no; then
1523 AC_DEFINE(BX_SUPPORT_FPU, 0)
1527 echo "ERROR: --enable-fpu does not accept a path"
1533 AC_DEFINE(BX_SUPPORT_FPU, 1)
1534 FPU_VAR='$(FPU_LIB)'
1539 AC_MSG_CHECKING(for VME support)
1541 [ --enable-vme virtual 8086 mode extensions],
1542 [if test "$enableval" = yes; then
1544 AC_DEFINE(BX_SUPPORT_VME, 1)
1545 elif test "$enableval" = no; then
1547 AC_DEFINE(BX_SUPPORT_VME, 0)
1551 if test "$bx_cpu_level" -ge 5; then
1553 AC_DEFINE(BX_SUPPORT_VME, 1)
1556 AC_DEFINE(BX_SUPPORT_VME, 0)
1562 AC_MSG_CHECKING(for MMX support)
1564 [ --enable-mmx MMX support],
1565 [if test "$enableval" = yes; then
1567 AC_DEFINE(BX_SUPPORT_MMX, 1)
1568 elif test "$enableval" = no; then
1570 AC_DEFINE(BX_SUPPORT_MMX, 0)
1575 if test "$bx_cpu_level" -ge 5; then
1577 AC_DEFINE(BX_SUPPORT_MMX, 1)
1580 AC_DEFINE(BX_SUPPORT_MMX, 0)
1585 AC_MSG_CHECKING(for 3DNow! support)
1586 AC_ARG_ENABLE(3dnow,
1587 [ --enable-3dnow 3DNow! support (incomplete)],
1588 [if test "$enableval" = yes; then
1590 AC_DEFINE(BX_SUPPORT_3DNOW, 1)
1591 elif test "$enableval" = no; then
1593 AC_DEFINE(BX_SUPPORT_3DNOW, 0)
1598 AC_DEFINE(BX_SUPPORT_3DNOW, 0)
1603 AC_MSG_CHECKING(for SSE support)
1605 [ --enable-sse SSE support (--enable-sse=[no|1|2|3|4])],
1606 [case "$enableval" in
1628 echo "ERROR: --enable-sse=$enableval not understood. Use --enable-sse=[no|1|2|3|4]"
1634 if test "$use_x86_64" = 1; then
1643 if test "$support_sse" -gt 0 -a "$bx_cpu_level" -lt 6; then
1644 AC_MSG_ERROR([for SSE support the CPU level must be set to 6])
1647 if test "$support_sse" -lt 2 -a "$use_x86_64" = 1; then
1648 AC_MSG_ERROR([x86-64 needs SSE2 support])
1651 if test "$support_sse" = 4; then
1652 AC_DEFINE(BX_SUPPORT_SSE, 4)
1653 elif test "$support_sse" = 3; then
1654 AC_DEFINE(BX_SUPPORT_SSE, 3)
1655 elif test "$support_sse" = 2; then
1656 AC_DEFINE(BX_SUPPORT_SSE, 2)
1657 elif test "$support_sse" = 1; then
1658 AC_DEFINE(BX_SUPPORT_SSE, 1)
1660 AC_DEFINE(BX_SUPPORT_SSE, 0)
1663 support_sse_extensions=0
1664 AC_MSG_CHECKING(for SSE extensions support)
1665 AC_ARG_ENABLE(sse-extension,
1666 [ --enable-sse-extension support for SSE extensions],
1667 [if test "$enableval" = yes; then
1669 AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 1)
1670 support_sse_extensions=1
1671 elif test "$enableval" = no; then
1673 AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 0)
1678 AC_DEFINE(BX_SUPPORT_SSE_EXTENSION, 0)
1682 AC_MSG_CHECKING(for DAZ support)
1684 [ --enable-daz denormals-are-zeroes support],
1685 [if test "$enableval" = yes; then
1687 AC_DEFINE(BX_SUPPORT_DAZ, 1)
1688 elif test "$enableval" = no; then
1690 AC_DEFINE(BX_SUPPORT_DAZ, 0)
1694 if test "$support_sse" -ge 2; then
1696 AC_DEFINE(BX_SUPPORT_DAZ, 1)
1699 AC_DEFINE(BX_SUPPORT_DAZ, 0)
1705 AC_MSG_CHECKING(for XSAVE/XRSTOR support)
1706 AC_ARG_ENABLE(xsave,
1707 [ --enable-xsave support for XSAVE/XRSTOR extensions],
1708 [if test "$enableval" = yes; then
1710 AC_DEFINE(BX_SUPPORT_XSAVE, 1)
1712 elif test "$enableval" = no; then
1714 AC_DEFINE(BX_SUPPORT_XSAVE, 0)
1719 AC_DEFINE(BX_SUPPORT_XSAVE, 0)
1723 if test "$support_sse" -lt 1 -a "$use_xsave" = 1; then
1724 AC_MSG_ERROR([XSAVE requires SSE support!])
1728 AC_MSG_CHECKING(for AES instructions support)
1730 [ --enable-aes support for AES instructions],
1731 [if test "$enableval" = yes; then
1733 AC_DEFINE(BX_SUPPORT_AES, 1)
1735 elif test "$enableval" = no; then
1737 AC_DEFINE(BX_SUPPORT_AES, 0)
1742 AC_DEFINE(BX_SUPPORT_AES, 0)
1746 if test "$support_sse" -lt 1 -a "$use_aes" = 1; then
1747 AC_MSG_ERROR([AES requires SSE support!])
1750 AC_MSG_CHECKING(for alignment check support)
1751 AC_ARG_ENABLE(alignment-check,
1752 [ --enable-alignment-check alignment check (#AC) support],
1753 [if test "$enableval" = yes; then
1755 AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 1)
1756 elif test "$enableval" = no; then
1758 AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 0)
1762 if test "$bx_cpu_level" -gt 3; then
1764 AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 1)
1767 AC_DEFINE(BX_SUPPORT_ALIGNMENT_CHECK, 0)
1772 AC_MSG_CHECKING(for misaligned SSE support)
1773 AC_ARG_ENABLE(misaligned-sse,
1774 [ --enable-misaligned-sse misaligned SSE support],
1775 [if test "$enableval" = yes; then
1777 AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 1)
1778 elif test "$enableval" = no; then
1780 AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 0)
1785 AC_DEFINE(BX_SUPPORT_MISALIGNED_SSE, 0)
1789 AC_MSG_CHECKING(for SEP support)
1791 [ --enable-sep SYSENTER/SYSEXIT support],
1792 [if test "$enableval" = yes; then
1794 AC_DEFINE(BX_SUPPORT_SEP, 1)
1795 elif test "$enableval" = no; then
1797 AC_DEFINE(BX_SUPPORT_SEP, 0)
1801 if test "$bx_cpu_level" -ge 6 -a "$support_mmx" = 1; then
1803 AC_DEFINE(BX_SUPPORT_SEP, 1)
1806 AC_DEFINE(BX_SUPPORT_SEP, 0)
1811 AC_MSG_CHECKING(for POPCNT instruction support)
1812 AC_ARG_ENABLE(popcnt,
1813 [ --enable-popcnt support for POPCNT instruction],
1814 [if test "$enableval" = yes; then
1816 AC_DEFINE(BX_SUPPORT_POPCNT, 1)
1817 elif test "$enableval" = no; then
1819 AC_DEFINE(BX_SUPPORT_POPCNT, 0)
1823 if test "$support_sse" -ge 4 -a "$support_sse_extensions" = 1; then
1825 AC_DEFINE(BX_SUPPORT_POPCNT, 1)
1828 AC_DEFINE(BX_SUPPORT_POPCNT, 0)
1833 AC_MSG_CHECKING(for MONITOR/MWAIT instructions support (experimental))
1834 AC_ARG_ENABLE(monitor_mwait,
1835 [ --enable-monitor-mwait support for MONITOR/MWAIT instructions (experimental)],
1836 [if test "$enableval" = yes; then
1838 AC_DEFINE(BX_SUPPORT_MONITOR_MWAIT, 1)
1839 elif test "$enableval" = no; then
1841 AC_DEFINE(BX_SUPPORT_MONITOR_MWAIT, 0)
1846 AC_DEFINE(BX_SUPPORT_MONITOR_MWAIT, 0)
1850 AC_MSG_CHECKING(for x86 debugger support)
1851 AC_ARG_ENABLE(x86-debugger,
1852 [ --enable-x86-debugger x86 debugger support],
1853 [if test "$enableval" = yes; then
1855 AC_DEFINE(BX_X86_DEBUGGER, 1)
1856 elif test "$enableval" = no; then
1858 AC_DEFINE(BX_X86_DEBUGGER, 0)
1863 AC_DEFINE(BX_X86_DEBUGGER, 0)
1867 AC_CHECK_HEADER(IOKit/storage/IOCDMedia.h,
1868 can_use_osx_cdrom=yes
1871 AC_MSG_CHECKING(for CDROM support)
1872 AC_ARG_ENABLE(cdrom,
1873 [ --enable-cdrom CDROM support],
1874 [if test "$enableval" = no; then
1882 if test "$bx_cdrom" = 1; then
1884 CDROM_OBJS='cdrom.o'
1885 if test "$with_amigaos" = yes; then
1886 # use the amiga cdrom file instead.
1887 CDROM_OBJS="cdrom_amigaos.o"
1888 elif test "$can_use_osx_cdrom" = yes; then
1890 AC_MSG_RESULT(Using OSX IOKit CD Interface)
1891 CDROM_OBJS="cdrom.o"
1892 EXTRA_LINK_OPTS="${EXTRA_LINK_OPTS} -framework IOKit -framework CoreFoundation "'$(GUI_LINK_OPTS)'
1896 # use the beos cdrom file instead
1897 CDROM_OBJS="$CDROM_OBJS cdrom_beos.o"
1899 AC_DEFINE(BX_SUPPORT_CDROM, 1)
1903 AC_DEFINE(BX_SUPPORT_CDROM, 0)
1906 AC_SUBST(CDROM_OBJS)
1910 AC_CHECK_HEADER([alsa/asoundlib.h], [bx_have_alsa=1])
1912 AC_MSG_CHECKING(for Sound Blaster 16 support)
1918 [ --enable-sb16=xxx Sound Blaster 16 Support (xxx=dummy|win|linux|freebsd|osx)],
1919 [if test "$enableval" = no; then
1921 AC_DEFINE(BX_SUPPORT_SB16, 0)
1923 case "$enableval" in
1926 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_output_c)
1927 AC_MSG_RESULT(dummy)
1930 SOUNDLOW_OBJS='soundlnx.o'
1931 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_linux_c)
1932 if test "$bx_have_alsa" = 1; then
1933 AC_DEFINE(BX_HAVE_ALSASOUND, 1)
1934 if test "$bx_plugins" = 1; then
1935 SOUND_LINK_OPTS="$SOUND_LINK_OPTS -lasound"
1937 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lasound"
1940 AC_MSG_RESULT(linux)
1943 SOUNDLOW_OBJS='soundwin.o'
1944 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1948 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS winmm.lib"
1951 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
1956 SOUNDLOW_OBJS='soundosx.o'
1957 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_osx_c)
1959 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -framework AudioUnit -framework AudioToolbox"
1963 *-linux* | *-freebsd*)
1964 SOUNDLOW_OBJS='soundlnx.o'
1965 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_linux_c)
1966 if test "$bx_have_alsa" = 1; then
1967 AC_DEFINE(BX_HAVE_ALSASOUND, 1)
1968 if test "$bx_plugins" = 1; then
1969 SOUND_LINK_OPTS="$SOUND_LINK_OPTS -lasound"
1971 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lasound"
1974 AC_MSG_RESULT(linux)
1977 SOUNDLOW_OBJS='soundwin.o'
1978 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1980 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS winmm.lib"
1982 *-cygwin* | *-mingw32*)
1983 SOUNDLOW_OBJS='soundwin.o'
1984 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_windows_c)
1986 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
1988 *-macosx* | *-macos*)
1989 SOUNDLOW_OBJS='soundosx.o'
1990 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_osx_c)
1992 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -framework AudioUnit -framework AudioToolbox"
1996 AC_DEFINE(BX_SOUND_OUTPUT_C, bx_sound_output_c)
1997 AC_MSG_RESULT(dummy)
2003 echo \!\!\!Error\!\!\!
2004 echo "You must pass one of dummy, linux, win, freebsd, osx to --enable-sb16"
2008 AC_DEFINE(BX_SUPPORT_SB16, 1)
2009 GAME_OBJS='gameport.o'
2015 AC_DEFINE(BX_SUPPORT_SB16, 0)
2019 AC_SUBST(SOUNDLOW_OBJS)
2020 AC_SUBST(SOUND_LINK_OPTS)
2023 AC_MSG_CHECKING(for standard PC gameport support)
2024 AC_ARG_ENABLE(gameport,
2025 [ --enable-gameport enable standard PC gameport support],
2026 [if test "$enableval" = yes; then
2028 AC_DEFINE(BX_SUPPORT_GAMEPORT, 1)
2029 if test "$gameport_present" = 0; then
2030 GAME_OBJS='gameport.o'
2032 *-cygwin* | *-mingw32*)
2033 DEVICE_LINK_OPTS="$DEVICE_LINK_OPTS -lwinmm"
2040 AC_DEFINE(BX_SUPPORT_GAMEPORT, 0)
2043 if test "$gameport_present" = 1; then
2044 AC_DEFINE(BX_SUPPORT_GAMEPORT, 1)
2047 AC_DEFINE(BX_SUPPORT_GAMEPORT, 0)
2054 AC_MSG_CHECKING(for gdb stub enable)
2055 AC_ARG_ENABLE(gdb-stub,
2056 [ --enable-gdb-stub enable gdb stub support],
2057 [if test "$enableval" = yes; then
2059 AC_DEFINE(BX_GDBSTUB, 1)
2060 GDBSTUB_VAR='$(GDBSTUB_OBJS)'
2061 if test "$bx_debugger" = 1; then
2062 AC_MSG_ERROR([[--enable-debugger and --enable-gdb-stub are mutually exclusive]])
2066 AC_DEFINE(BX_GDBSTUB, 0)
2071 AC_DEFINE(BX_GDBSTUB, 0)
2075 AC_SUBST(GDBSTUB_VAR)
2078 AC_MSG_CHECKING(for I/O Interface to the debugger)
2080 AC_ARG_ENABLE(iodebug,
2081 [ --enable-iodebug enable I/O interface to debugger],
2082 [if test "$enableval" = yes; then
2084 AC_DEFINE(BX_SUPPORT_IODEBUG, 1)
2085 IODEBUG_OBJS='iodebug.o'
2088 AC_DEFINE(BX_SUPPORT_IODEBUG, 0)
2092 if test "" = 1; then
2093 # enable by default if debugger is on
2095 AC_DEFINE(BX_SUPPORT_IODEBUG, 1)
2096 IODEBUG_OBJS='iodebug.o'
2102 AC_SUBST(IODEBUG_OBJS)
2105 AC_PATH_PROG(DOCBOOK2HTML, docbook2html, not_found)
2106 AC_MSG_CHECKING(whether to build docbook documentation)
2108 AC_ARG_ENABLE(docbook,
2109 [ --enable-docbook build the Docbook documentation],
2111 if test "$enableval" = yes; then build_docbook=1; fi
2114 dnl Not specified. If they have docbook2html, then yes.
2115 if test "$DOCBOOK2HTML" != not_found; then build_docbook=1; fi
2119 if test $build_docbook = 1; then
2121 BUILD_DOCBOOK_VAR=build_docbook
2122 INSTALL_DOCBOOK_VAR=install_docbook
2123 if test "$DOCBOOK2HTML" = not_found; then
2124 echo "ERROR: docbook2html must be installed to build the documentation"
2130 AC_SUBST(BUILD_DOCBOOK_VAR)
2131 AC_SUBST(INSTALL_DOCBOOK_VAR)
2132 AC_SUBST(DOCBOOK2HTML)
2134 PRIMARY_TARGET='bochs'
2135 PLUGIN_LIBNAME_TRANSFORMATION='%.o=libbx_%.la'
2137 AC_DEFINE(BX_PROVIDE_DEVICE_MODELS, 1)
2138 IODEV_LIB_VAR='iodev/libiodev.a'
2139 AC_DEFINE(BX_PROVIDE_CPU_MEMORY, 1)
2140 NONINLINE_VAR='$(NONINLINE_OBJS)'
2142 AC_SUBST(IODEV_LIB_VAR)
2143 AC_SUBST(EXTRA_BX_OBJS)
2144 AC_SUBST(NONINLINE_VAR)
2145 AC_SUBST(INLINE_VAR)
2146 AC_SUBST(EXTERNAL_DEPENDENCY)
2147 AC_SUBST(EXT_DEBUG_OBJS)
2152 [ --with-x11 use X11 GUI],
2156 [ --with-beos use BeOS GUI],
2160 [ --with-win32 use Win32 GUI],
2164 [ --with-macos use Macintosh/CodeWarrior environment],
2168 [ --with-carbon compile for MacOS X with Carbon GUI],
2172 [ --with-nogui no native GUI, just use blank stubs],
2176 [ --with-term textmode terminal environment],
2180 [ --with-rfb use RFB protocol, works with VNC viewer],
2183 AC_ARG_WITH(amigaos,
2184 [ --with-amigaos use AmigaOS (or MorphOS) GUI],
2188 [ --with-sdl use SDL libraries],
2192 [ --with-svga use SVGALib libraries],
2196 [ --with-wx use wxWidgets libraries],
2199 AC_ARG_WITH(all-libs,
2200 [ --with-all-libs compile all guis that Bochs supports],
2203 dnl // DASH is option prefix for your platform
2204 dnl // SLASH is directory for your platform
2205 dnl // CXXFP is C++ File Prefix; the flag that tells the compiler
2206 dnl // this is a C++ source file
2207 dnl // CFP is C File Prefix; the flag that tells the compiler
2208 dnl // this is a C source file
2209 dnl // OFP is Object File Prefix; the flag that tells the compiler
2210 dnl // generate an object file with this name
2218 # first define link variables without libtool
2219 LINK="\$(CXX) -o \$@ \$(CXXFLAGS) \$(LDFLAGS)"
2220 LINK_CONSOLE="\$(CXX) -o \$@ \$(CXXFLAGS_CONSOLE) \$(LDFLAGS)"
2221 # unless NO_LT is set, add libtool to the front of the link command
2222 if test "$NO_LT" != 1; then
2223 LINK="\$(LIBTOOL) --mode=link $LINK"
2224 LINK_CONSOLE="\$(LIBTOOL) --mode=link $LINK_CONSOLE"
2227 COMMAND_SEPARATOR="&& \\"
2228 CD_UP_ONE="echo done"
2229 CD_UP_TWO="echo done"
2230 CD_UP_THREE="echo done"
2232 INSTALL_TARGET=install_unix
2233 INSTALL_LIST_FOR_PLATFORM=
2235 # check for existence of and usable version of wxWidgets. This comes
2236 # early so that it could affect which one gets chosen.
2237 if test x$WX_CONFIG = x; then
2238 AC_CHECK_PROG(WX_CONFIG, [ wx-config --version ], wx-config, not_found)
2240 AC_MSG_CHECKING(for wxWidgets configuration script)
2241 AC_MSG_RESULT($WX_CONFIG)
2246 AC_MSG_CHECKING(for wxWidgets library version)
2247 if test x$WX_CONFIG != xnot_found; then
2248 WX_VERSION=`$WX_CONFIG --version`
2249 WX_BASENAME=`$WX_CONFIG --basename`
2251 # test that version >= 2.3.2. Anybody have a better way to do this? Yuck.
2252 case x$WX_VERSION in
2253 x2.[012]*) ;; # less than version 2.3.x
2254 x2.3.[01]) ;; # less than version 2.3.2
2255 x2.3.[2-4]*) ok_wx_version=1 ;; # 2.3.2 or greater
2256 x2.[4-5]*) ok_wx_version=1 ;; # version 2.4 / 2.5
2257 x2.[6-9]*) # version 2.6 or greater
2260 case x$WX_BASENAME in
2261 xwx_gtk2|xwx_gtk2u) wx_needs_gtk2=1 ;;
2265 x[3-9]*) ok_wx_version=1 ;; # version 3 or greater
2270 AC_MSG_RESULT($WX_VERSION)
2271 if test "$cross_configure" = 0; then
2272 if test "$ok_wx_version" = 1; then
2273 # detected a usable version
2274 if test "$with_all_libs" = yes; then
2278 if test "$with_wx" = yes; then
2279 AC_MSG_WARN([Bochs for wxWidgets cannot be compiled here, disabling it])
2285 AC_MSG_CHECKING(for default gui on this platform)
2286 AC_MSG_RESULT($DEFAULT_GUI)
2290 # the $with_* variable tells the gui library to use, but does NOT necessarily
2291 # indicate the platform. Settings that depend on the platform should be
2295 if test "$with_x11" = yes; then
2296 display_libs="$display_libs X11"
2297 if test "$no_x" = yes; then
2298 echo ERROR: X windows gui was selected, but X windows libraries were not found.
2301 AC_DEFINE(BX_WITH_X11, 1)
2302 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_X11)"
2303 GUI_CFLAGS="$GUI_CFLAGS \$(X_CFLAGS)"
2304 GUI_CXXFLAGS="$GUI_CXXFLAGS \$(X_CFLAGS)"
2305 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_X)"
2307 AC_MSG_CHECKING(whether user wants XPM support)
2309 [ --enable-xpm enable the check for XPM support],
2310 [if test "$enableval" = yes; then
2323 if test $check_xpm = 1; then
2324 AC_CHECK_HEADER(X11/xpm.h, [
2325 AC_DEFINE(BX_HAVE_XPM_H)
2332 if test "$with_beos" = yes; then
2333 display_libs="$display_libs beos"
2334 AC_DEFINE(BX_WITH_BEOS, 1)
2335 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_BEOS)"
2336 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_BEOS)"
2339 if test "$with_sdl" = yes; then
2340 display_libs="$display_libs sdl"
2341 AC_DEFINE(BX_WITH_SDL, 1)
2342 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_SDL)"
2343 # GUI_*FLAGS are added to the compilation of every bochs file, not just
2344 # the files in gui/*.cc.
2345 SDL_CFLAGS=`sdl-config --cflags`
2346 GUI_CFLAGS="$GUI_CFLAGS $SDL_CFLAGS"
2347 GUI_CXXFLAGS="$GUI_CXXFLAGS $SDL_CFLAGS"
2348 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_SDL)"
2349 if test "$with_win32" != yes -a "$with_wx" != yes; then
2353 EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2355 *-cygwin* | *-mingw32*)
2356 RC_CMD="windres -o "
2357 EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2363 if test "$with_svga" = yes; then
2364 display_libs="$display_libs svga"
2365 AC_DEFINE(BX_WITH_SVGA, 1)
2366 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_SVGA)"
2367 # GUI_*FLAGS are added to the compilation of every bochs file, not just
2368 # the files in gui/*.cc.
2369 GUI_CFLAGS="$GUI_CFLAGS"
2370 GUI_CXXFLAGS="$GUI_CXXFLAGS"
2371 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_SVGA)"
2374 if test "$with_rfb" = yes; then
2375 display_libs="$display_libs rfb"
2376 AC_DEFINE(BX_WITH_RFB, 1)
2377 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_RFB)"
2378 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_RFB)"
2381 if test "$with_amigaos" = yes; then
2382 display_libs="$display_libs amigaos"
2383 AC_DEFINE(BX_WITH_AMIGAOS, 1)
2384 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_AMIGAOS)"
2385 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_AMIGAOS)"
2388 if test "$with_win32" = yes; then
2389 display_libs="$display_libs win32"
2390 AC_DEFINE(BX_WITH_WIN32, 1)
2391 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_WIN32)"
2394 if test "$with_wx" != yes; then
2396 EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2398 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WIN32_VCPP)"
2400 *-cygwin* | *-mingw32*)
2401 if test "$with_wx" != yes; then
2402 RC_CMD="windres -o "
2403 EXTRA_BX_OBJS="$EXTRA_BX_OBJS win32res.o"
2405 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WIN32)"
2407 *) echo Unsupported compile setup: GUI library is win32, but target is neither windows nor cygwin.
2412 if test "$with_macos" = yes; then
2413 display_libs="$display_libs macos"
2414 AC_DEFINE(BX_WITH_MACOS, 1)
2415 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_MACOS)"
2416 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_MACOS)"
2419 if test "$with_carbon" = yes; then
2420 display_libs="$display_libs carbon"
2421 AC_DEFINE(BX_WITH_CARBON, 1)
2422 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_CARBON)"
2423 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_CARBON)"
2424 if test "$bx_plugins" = 1; then
2425 PRIMARY_TARGET=bochs.app/.build_plugins # only for carbon application
2427 PRIMARY_TARGET=bochs.app/.build # only for carbon application
2429 INSTALL_TARGET='install_macosx'
2432 if test "$with_term" = yes; then
2433 display_libs="$display_libs term"
2434 AC_DEFINE(BX_WITH_TERM, 1)
2435 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_TERM)"
2436 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_TERM)"
2440 if test "$with_wx" = yes; then
2441 display_libs="$display_libs wxWidgets"
2442 if test "$cross_configure" = 1; then
2443 true # do not insist, if configuring for another machine
2445 if test x$ok_wx_version != x1; then
2446 echo ERROR: A usable version of wxWidgets was not found.
2447 echo Upgrade the library or choose another gui.
2451 AC_DEFINE(BX_WITH_WX, 1)
2452 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_WX)"
2453 SPECIFIC_GUI_SUPPORT_OBJS="$SPECIFIC_GUI_SUPPORT_OBJS \$(GUI_OBJS_WX_SUPPORT)"
2454 WX_CFLAGS="`$WX_CONFIG --cflags`"
2455 WX_CXXFLAGS="`$WX_CONFIG --cxxflags`"
2456 if test "$wx_multi_lib" = 1; then
2457 GUI_LINK_OPTS_WX="`$WX_CONFIG --libs core,base`"
2459 GUI_LINK_OPTS_WX="`$WX_CONFIG --libs`"
2461 if test "$wx_needs_gtk2" = 1; then
2462 PKG_CHECK_MODULES([GTK], [gtk+-2.0], [
2463 WX_CFLAGS="$WX_CFLAGS $GTK_CFLAGS"
2464 WX_CXXFLAGS="$WX_CXXFLAGS $GTK_CFLAGS"
2467 # if gtk-config exists, then add it to the cflags.
2468 gtkconf=`gtk-config --cflags`
2469 if test $? = 0; then
2470 # gtk-config was found and returned 0, so it must return valid output
2471 WX_CFLAGS="$WX_CFLAGS $gtkconf"
2472 WX_CXXFLAGS="$WX_CXXFLAGS $gtkconf"
2475 # GUI_C*FLAGS are added to the compilation of every bochs file, not just
2476 # the files in gui/*.cc. They are not used when building other things
2478 GUI_CFLAGS="$GUI_CFLAGS $WX_CFLAGS"
2479 GUI_CXXFLAGS="$GUI_CXXFLAGS $WX_CXXFLAGS"
2480 GUI_LINK_OPTS="$GUI_LINK_OPTS \$(GUI_LINK_OPTS_WX)"
2481 # using debugger with readline is failing due to thread/signal handler
2484 *-pc-windows* | *-cygwin* | *-mingw32*)
2485 EXTRA_BX_OBJS="$EXTRA_BX_OBJS wxbochs_resources.o"
2486 GUI_LINK_OPTS_WX="$GUI_LINK_OPTS_WX --subsystem,windows -mwindows"
2491 if test "$with_nogui" = yes; then
2492 display_libs="$display_libs nogui"
2493 AC_DEFINE(BX_WITH_NOGUI, 1)
2494 SPECIFIC_GUI_OBJS="$SPECIFIC_GUI_OBJS \$(GUI_OBJS_NOGUI)"
2497 AC_MSG_CHECKING(for display libraries)
2498 AC_MSG_RESULT($display_libs)
2500 if test "$display_libs" = ""; then
2501 echo "No display libraries were selected. Use --with-* options to enable"
2502 echo "individual display libraries, or --with-all-libs to detect the ones"
2503 echo "that Bochs supports."
2507 dnl To use wxWidgets you must select it as both the configuration interface
2508 dnl and the display library. In the simplest case where the user has
2509 dnl only configured with --with-wx, set both defaults to wxWidgets.
2510 dnl Without this setting, the config interface would default to the text
2511 dnl mode config interface, and then the wxWidgets display library would not
2513 if test "$display_libs" = " wxWidgets"; then
2514 AC_MSG_CHECKING(for default configuration interface)
2515 AC_MSG_RESULT(wxWidgets)
2516 AC_MSG_CHECKING(for default display library)
2517 AC_MSG_RESULT(wxWidgets)
2518 AC_DEFINE(BX_DEFAULT_CONFIG_INTERFACE, "wx")
2519 AC_DEFINE(BX_DEFAULT_DISPLAY_LIBRARY, "wx")
2520 AC_DEFINE(BX_USE_TEXTCONFIG, 0)
2522 AC_DEFINE(BX_USE_TEXTCONFIG, 1)
2525 if test "$bx_plugins" = 1; then
2526 # every item in this list will be compiled as a plugin. Do not include
2527 # support objs; they will be mentioned in plugin-specific makefile rules.
2528 GUI_PLUGIN_OBJS="$GUI_PLUGIN_OBJS $SPECIFIC_GUI_OBJS"
2530 # include support objs
2531 GUI_NON_PLUGIN_OBJS="$GUI_NON_PLUGIN_OBJS $SPECIFIC_GUI_OBJS $SPECIFIC_GUI_SUPPORT_OBJS"
2534 AC_SUBST(GUI_CFLAGS)
2535 AC_SUBST(GUI_CXXFLAGS)
2538 AC_SUBST(WX_CXXFLAGS)
2540 AC_CHECK_PROGS(WGET, wget curl fetch, not_found)
2541 if test "$WGET" = not_found; then
2542 AC_MSG_WARN([cannot find wget (or equivalent) command])
2544 # everybody has to re-invent the wheel. differently.
2545 test "${WGET}" = "curl" && WGET="curl -O"
2547 # modify settings based on target platform
2550 AC_DEFINE(BX_HAVE_STRDUP, 0)
2553 AC_DEFINE(BX_HAVE_STRDUP, 0)
2554 AC_DEFINE(BX_PLUGINS, 0)
2555 AC_DEFINE(BX_HAVE_DLFCN_H, 0)
2556 AC_DEFINE(BX_HAVE_SOCKLEN_T, 0)
2557 AC_DEFINE(BX_HAVE_SELECT, 0)
2558 AC_DEFINE(BX_HAVE_GETTIMEOFDAY, 0)
2559 AC_DEFINE(BX_NO_ATTRIBUTES, 1)
2560 AC_DEFINE(HAVE_TUNTAP, 0)
2561 AC_DEFINE(HAVE_ETHERTAP, 0)
2562 AC_DEFINE(BX_HAVE_HASH_MAP, 0)
2565 INSTALL_TARGET='install_win32'
2568 #C_OPT="/Zi" # for debugging
2569 C_OPT="/Ox" # optimize for speed
2570 CFLAGS="/nologo /G6 /MT /W3 /GX- /DNDEBUG /DWIN32 /D_WINDOWS $C_OPT"
2578 MAKELIB="lib /nologo /subsystem:console /verbose /out:\$@"
2581 #L_OPT="/debug" # for debugging
2582 L_OPT="" # no debug info
2583 LINK="link $L_OPT /nologo /subsystem:console /incremental:no /out:\$@ "
2586 PRIMARY_TARGET="bochs.exe"
2587 BXIMAGE_LINK_OPTS="user32.lib"
2588 # also compile niclist if networking is on
2589 if test "$networking" = yes; then
2590 PRIMARY_TARGET="$PRIMARY_TARGET niclist.exe"
2592 COMMAND_SEPARATOR=""
2594 CD_UP_TWO="cd ..\.."
2595 CD_UP_THREE="cd ..\..\.."
2596 have_gettimeofday=0 # even though it may exist in build environment
2597 AC_DEFINE(BX_64BIT_CONSTANTS_USE_LL, 0)
2598 AC_DEFINE(inline, __inline)
2599 AC_DEFINE(BX_NO_EMPTY_STRUCTS, 1)
2600 AC_DEFINE(BX_NO_ATTRIBUTES, 1)
2601 AC_DEFINE(BX_HAVE_HASH_MAP, 0)
2602 AC_DEFINE(BX_HAVE_HASH_MAP_H, 0)
2603 AC_DEFINE(BX_HAVE_STRTOULL, 0)
2604 AC_DEFINE(BX_HAVE_STRTOUQ, 0)
2605 AC_DEFINE(HAVE_LIBREADLINE, 0)
2606 AC_DEFINE(BX_HAVE_GETTIMEOFDAY, 0)
2607 AC_DEFINE(BX_HAVE_DLFCN_H, 0)
2608 AC_DEFINE(BX_HAVE_MKSTEMP, 0)
2609 AC_DEFINE(BX_HAVE_SYS_MMAN_H, 0)
2610 AC_DEFINE(BX_HAVE_USLEEP, 0)
2611 AC_DEFINE(HAVE_ETHERTAP, 0)
2612 AC_DEFINE(BX_HAVE_SELECT, 1)
2613 AC_DEFINE(BX_HAVE_SOCKLEN_T, 0)
2617 PRIMARY_TARGET="bochs.exe"
2618 BXIMAGE_LINK_OPTS="-luser32"
2619 if test "$networking" = yes; then
2620 PRIMARY_TARGET="$PRIMARY_TARGET niclist.exe"
2622 AC_DEFINE(BX_HAVE_SELECT, 1)
2625 BXIMAGE_LINK_OPTS="-luser32"
2626 if test "$networking" = yes; then
2627 PRIMARY_TARGET="$PRIMARY_TARGET niclist"
2629 AC_DEFINE(BX_HAVE_SELECT, 1)
2632 PRIMARY_TARGET=.bochs_beos_target
2637 EXPORT_DYNAMIC="-export-dynamic"
2639 *-pc-windows* | *-pc-winnt* | *-cygwin* | *-mingw*)
2640 if test "$bx_plugins" = 1; then
2641 AC_CHECK_LIB(mingwex, opendir, LIBS="$LIBS -lmingwex")
2642 # set variables for building DLL plugins
2643 PRIMARY_TARGET=".win32_dll_plugin_target"
2644 PLUGIN_LIBNAME_TRANSFORMATION='%.o=bx_%.dll'
2645 INSTALL_PLUGINS_VAR=install_dll_plugins
2647 if test "$with_win32" != yes; then
2648 LIBS="$LIBS -lcomctl32"
2651 DIALOG_OBJS="win32dialog.o"
2655 AC_SUBST(DIALOG_OBJS)
2656 AC_SUBST(EXPORT_DYNAMIC)
2658 if test "$use_curses" = yes -a "$cross_configure" = 0; then
2659 AC_CHECK_LIB(curses, mvaddch, GUI_LINK_OPTS_TERM='-lcurses')
2660 AC_CHECK_LIB(ncurses, mvaddch, GUI_LINK_OPTS_TERM='-lncurses')
2661 AC_CHECK_LIB(termlib, mvaddch, GUI_LINK_OPTS_TERM='-ltermlib')
2662 AC_CHECK_LIB(pdcurses, mvaddch, GUI_LINK_OPTS_TERM='-lpdcurses')
2663 if test "$GUI_LINK_OPTS_TERM" = ""; then
2664 echo Curses library not found: tried curses, ncurses, termlib and pdcurses.
2669 if test "$with_term" = yes; then
2671 LIBS="$LIBS $GUI_LINK_OPTS_TERM"
2672 AC_CHECK_FUNCS(color_set, AC_DEFINE(BX_HAVE_COLOR_SET, 1))
2673 AC_CHECK_FUNCS(mvhline, AC_DEFINE(BX_HAVE_MVHLINE, 1))
2674 AC_CHECK_FUNCS(mvvline, AC_DEFINE(BX_HAVE_MVVLINE, 1))
2678 if test "$with_rfb" = yes; then
2679 # we need the socket function
2682 # is this okay without a check ?
2683 RFB_LIBS="$RFB_LIBS wsock32.lib"
2686 *-pc-winnt* | *-pc-cygwin* | *-pc-mingw32*)
2687 # is this okay without a check ?
2688 RFB_LIBS="$RFB_LIBS -lwsock32"
2692 AC_CHECK_FUNCS(socket, have_socket=yes)
2693 if test "$have_socket" != yes; then
2694 AC_CHECK_LIB(socket, socket,
2696 RFB_LIBS="$RFB_LIBS -lsocket"
2702 if test "$have_socket" != yes; then
2703 echo 'ERROR: socket function required for RFB compile'
2708 # The ACX_PTHREAD function was written by
2709 # Steven G. Johnson <stevenj@alum.mit.edu> and
2710 # Alejandro Forero Cuervo <bachue@bachue.com>
2711 # I found it in the ac-archive project on Source Forge.
2713 AC_DEFUN([ACX_PTHREAD], [
2714 AC_REQUIRE([AC_CANONICAL_HOST])
2717 # First, check if the POSIX threads header, pthread.h, is available.
2718 # If it isn't, don't bother looking for the threads libraries.
2719 AC_CHECK_HEADER(pthread.h, , acx_pthread_ok=noheader)
2721 # We must check for the threads library under a number of different
2722 # names; the ordering is very important because some systems
2723 # (e.g. DEC) have both -lpthread and -lpthreads, where one of the
2724 # libraries is broken (non-POSIX).
2726 # First of all, check if the user has set any of the PTHREAD_LIBS,
2727 # etcetera environment variables, and if threads linking works using
2729 if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
2730 save_CFLAGS="$CFLAGS"
2731 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2732 CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
2734 LIBS="$PTHREAD_LIBS $LIBS"
2735 AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
2736 AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
2737 AC_MSG_RESULT($acx_pthread_ok)
2738 if test x"$acx_pthread_ok" = xno; then
2743 CFLAGS="$save_CFLAGS"
2746 # Create a list of thread flags to try. Items starting with a "-" are
2747 # C compiler flags, and other items are library names, except for "none"
2748 # which indicates that we try without any flags at all.
2750 acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt"
2752 # The ordering *is* (sometimes) important. Some notes on the
2753 # individual items follow:
2755 # pthreads: AIX (must check this before -lpthread)
2756 # none: in case threads are in libc; should be tried before -Kthread and
2757 # other compiler flags to prevent continual compiler warnings
2758 # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
2759 # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
2760 # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
2761 # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
2762 # -pthreads: Solaris/gcc
2763 # -mthreads: Mingw32/gcc, Lynx/gcc
2764 # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
2765 # doesn't hurt to check since this sometimes defines pthreads too;
2766 # also defines -D_REENTRANT)
2767 # pthread: Linux, etcetera
2768 # --thread-safe: KAI C++
2770 case "${host_cpu}-${host_os}" in
2773 # On Solaris (at least, for some versions), libc contains stubbed
2774 # (non-functional) versions of the pthreads routines, so link-based
2775 # tests will erroneously succeed. (We need to link with -pthread or
2776 # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
2777 # a function called by this macro, so we could check for that, but
2778 # who knows whether they'll stub that too in a future libc.) So,
2779 # we'll just look for -pthreads and -lpthread first:
2781 acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
2785 if test x"$acx_pthread_ok" = xno; then
2786 for flag in $acx_pthread_flags; do
2790 AC_MSG_CHECKING([whether pthreads work without any flags])
2794 AC_MSG_CHECKING([whether pthreads work with $flag])
2795 PTHREAD_CFLAGS="$flag"
2799 AC_MSG_CHECKING([for the pthreads library -l$flag])
2800 PTHREAD_LIBS="-l$flag"
2805 save_CFLAGS="$CFLAGS"
2806 LIBS="$PTHREAD_LIBS $LIBS"
2807 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2809 # Check for various functions. We must include pthread.h,
2810 # since some functions may be macros. (On the Sequent, we
2811 # need a special flag -Kthread to make this header compile.)
2812 # We check for pthread_join because it is in -lpthread on IRIX
2813 # while pthread_create is in libc. We check for pthread_attr_init
2814 # due to DEC craziness with -lpthreads. We check for
2815 # pthread_cleanup_push because it is one of the few pthread
2816 # functions on Solaris that doesn't have a non-functional libc stub.
2817 # We try pthread_create on general principles.
2818 AC_TRY_LINK([#include <pthread.h>],
2819 [pthread_t th; pthread_join(th, 0);
2820 pthread_attr_init(0); pthread_cleanup_push(0, 0);
2821 pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
2822 [acx_pthread_ok=yes])
2825 CFLAGS="$save_CFLAGS"
2827 AC_MSG_RESULT($acx_pthread_ok)
2828 if test "x$acx_pthread_ok" = xyes; then
2837 # Various other checks:
2838 if test "x$acx_pthread_ok" = xyes; then
2840 LIBS="$PTHREAD_LIBS $LIBS"
2841 save_CFLAGS="$CFLAGS"
2842 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2844 # Detect AIX lossage: threads are created detached by default
2845 # and the JOINABLE attribute has a nonstandard name (UNDETACHED).
2846 AC_MSG_CHECKING([for joinable pthread attribute])
2847 AC_TRY_LINK([#include <pthread.h>],
2848 [int attr=PTHREAD_CREATE_JOINABLE;],
2849 ok=PTHREAD_CREATE_JOINABLE, ok=unknown)
2850 if test x"$ok" = xunknown; then
2851 AC_TRY_LINK([#include <pthread.h>],
2852 [int attr=PTHREAD_CREATE_UNDETACHED;],
2853 ok=PTHREAD_CREATE_UNDETACHED, ok=unknown)
2855 if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then
2856 AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok,
2857 [Define to the necessary symbol if this constant
2858 uses a non-standard name on your system.])
2860 AC_MSG_RESULT(${ok})
2861 if test x"$ok" = xunknown; then
2862 AC_MSG_WARN([we do not know how to create joinable pthreads])
2865 AC_MSG_CHECKING([if more special flags are required for pthreads])
2867 case "${host_cpu}-${host_os}" in
2868 *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";;
2869 *solaris* | alpha*-osf*) flag="-D_REENTRANT";;
2871 AC_MSG_RESULT(${flag})
2872 if test "x$flag" != xno; then
2873 PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
2877 CFLAGS="$save_CFLAGS"
2879 # More AIX lossage: must compile with cc_r
2880 AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
2885 AC_SUBST(PTHREAD_LIBS)
2886 AC_SUBST(PTHREAD_CFLAGS)
2887 AC_SUBST(PTHREAD_CC)
2889 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
2890 if test x"$acx_pthread_ok" = xyes; then
2891 ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
2903 #echo Using PTHREAD_LIBS=$PTHREAD_LIBS
2904 #echo Using PTHREAD_CFLAGS=$PTHREAD_CFLAGS
2905 #echo Using PTHREAD_CC=$PTHREAD_CC
2909 # since RFB (usually) needs pthread library, check that it was found.
2910 # But on win32 platforms, the pthread library is not needed.
2911 if test "$with_rfb" = yes -a "$cross_configure" = 0; then
2912 if test "$pthread_ok" = yes; then
2913 RFB_LIBS="$RFB_LIBS $PTHREAD_LIBS"
2914 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
2915 CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
2919 *-pc-windows* | *-pc-winnt* | *-cygwin* | *-mingw*)
2920 # pthread not needed for win32 platform
2923 echo ERROR: --with-rfb requires the pthread library, which could not be found.; exit 1
2928 dnl // DEPRECATED configure options - force users to remove them
2930 AC_MSG_CHECKING(for magic breakpoints (deprecated))
2931 AC_ARG_ENABLE(magic-breakpoints,
2932 [ --enable-magic-breakpoints enables magic breakpoints (deprecated)],
2933 [AC_MSG_RESULT($enableval)
2934 AC_MSG_ERROR([DEPRECATED - magic breakpoints are always enabled with Bochs internal debugger])
2940 AC_MSG_CHECKING(for save/restore (deprecated))
2941 AC_ARG_ENABLE(save-restore,
2942 [ --enable-save-restore enables save/restore (deprecated)],
2943 [AC_MSG_RESULT($enableval)
2944 AC_MSG_ERROR([DEPRECATED - save/restore feature is always enabled])
2950 # Create some subdirectories for when you run configure from some other
2952 if test ! -d instrument; then mkdir instrument; fi
2953 if test ! -d build; then mkdir build; fi
2954 if test ! -d build/linux; then mkdir build/linux; fi
2955 if test ! -d build/win32; then mkdir build/win32; fi
2956 if test ! -d build/win32/nsis; then mkdir build/win32/nsis; fi
2958 AC_SUBST(INSTALL_TARGET)
2959 AC_SUBST(INSTALL_LIST_FOR_PLATFORM)
2962 AC_SUBST(DEVICE_LINK_OPTS)
2963 AC_SUBST(GUI_LINK_OPTS)
2964 AC_SUBST(GUI_LINK_OPTS_TERM)
2965 AC_SUBST(GUI_LINK_OPTS_WX)
2966 AC_SUBST(BXIMAGE_LINK_OPTS)
2975 AC_SUBST(LINK_CONSOLE)
2977 AC_SUBST(PRIMARY_TARGET)
2978 AC_SUBST(PLUGIN_LIBNAME_TRANSFORMATION)
2979 AC_SUBST(COMMAND_SEPARATOR)
2982 AC_SUBST(CD_UP_THREE)
2984 AC_SUBST(VER_STRING)
2985 AC_SUBST(WIN_VER_STRING)
2986 AC_SUBST(REL_STRING)
2987 AC_SUBST(EXTRA_LINK_OPTS)
2988 AC_SUBST(GUI_NON_PLUGIN_OBJS)
2989 AC_SUBST(GUI_PLUGIN_OBJS)
2990 AC_SUBST(IODEV_NON_PLUGIN_OBJS)
2991 AC_SUBST(IODEV_PLUGIN_OBJS)
2992 AC_SUBST(PLUGIN_VAR)
2993 AC_SUBST(PLUGIN_TARGET)
2994 AC_SUBST(INSTALL_PLUGINS_VAR)
2996 AC_PATH_PROG(GZIP, gzip)
2997 AC_PATH_PROG(TAR, tar)
2999 AC_OUTPUT(Makefile iodev/Makefile bx_debug/Makefile bios/Makefile \
3000 cpu/Makefile memory/Makefile gui/Makefile \
3001 disasm/Makefile ${INSTRUMENT_DIR}/Makefile misc/Makefile \
3002 fpu/Makefile doc/docbook/Makefile \
3003 build/linux/bochs-dlx \
3004 bxversion.h bxversion.rc build/macosx/Info.plist \
3005 build/win32/nsis/Makefile build/win32/nsis/bochs.nsi \
3006 host/linux/pcidev/Makefile)