Bochs: adding configurable options
Now, Bochs expression has a bunch of configurable options! Unhappily, it is a big and complex project, and some configure options are in constant clash. But the set created for now is very usable and stable. Closes #4366
This commit is contained in:
parent
0d41386f48
commit
59418454e6
@ -1,14 +1,17 @@
|
||||
{ stdenv, fetchurl
|
||||
, pkgconfig, gtk
|
||||
, libX11 , mesa
|
||||
{ stdenv, fetchurl, config
|
||||
, pkgconfig, libtool
|
||||
, gtk, mesa, readline, libX11, libXpm
|
||||
, docbook_xml_dtd_45, docbook_xsl
|
||||
, sdlSupport ? true, SDL ? null
|
||||
, termSupport ? true , ncurses ? null, readline ? null
|
||||
, wxSupport ? false, wxGTK ? null
|
||||
, termSupport ? true , ncurses ? null
|
||||
, wxSupport ? false, wxGTK ? null # Warning! Broken
|
||||
# Optional, undocumented dependencies
|
||||
, wgetSupport ? false, wget ? null
|
||||
, curlSupport ? false, curl ? null }:
|
||||
, curlSupport ? false, curl ? null
|
||||
}:
|
||||
|
||||
assert sdlSupport -> (SDL != null);
|
||||
assert termSupport -> (ncurses != null&& readline != null);
|
||||
assert termSupport -> (ncurses != null);
|
||||
assert wxSupport -> (gtk != null && wxGTK != null);
|
||||
assert wgetSupport -> (wget != null);
|
||||
assert curlSupport -> (curl != null);
|
||||
@ -23,33 +26,125 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "0nlrl218x93vz97n46aw2szsalx97r020mn43fjsif100v7zix6f";
|
||||
};
|
||||
|
||||
# The huge list of configurable options
|
||||
# Blatantly based on ffmpeg expressions
|
||||
|
||||
termSupport = config.bochs.termSupport or true;
|
||||
sdlSupport = config.bochs.sdlSupport or true;
|
||||
wxSupport = config.bochs.wxSupport or false;
|
||||
largefile = config.bochs.largefile or true;
|
||||
idleHack = config.bochs.idleHack or true;
|
||||
plugins = config.bochs.plugins or false; # Warning! Broken
|
||||
a20Pin = config.bochs.a20Pin or true;
|
||||
emulate64Bits = config.bochs.emulate64Bits or false;
|
||||
smp = config.bochs.smp or false;
|
||||
largeRamfile = config.bochs.largeRamfile or true;
|
||||
repeatSpeedups = config.bochs.repeatSpeedups or false;
|
||||
handlersChaining = config.bochs.handlersChaining or false;
|
||||
traceLinking = config.bochs.traceLinking or false;
|
||||
configurableMSRegs = config.bochs.configurableMSRegs or false;
|
||||
showIPS = config.bochs.showIPS or true;
|
||||
debugger = config.bochs.debugger or false;
|
||||
disasm = config.bochs.disasm or false;
|
||||
debuggerGui = config.bochs.debuggerGui or false;
|
||||
gdbStub = config.bochs.gdbStub or false;
|
||||
IODebug = config.Bochs.IODebug or false;
|
||||
fpu = config.bochs.fpu or true;
|
||||
svm = config.bochs.svm or false;
|
||||
avx = config.bochs.avx or false;
|
||||
evex = config.bochs.evex or false;
|
||||
x86Debugger = config.bochs.x86Debugger or false;
|
||||
pci = config.bochs.pci or true;
|
||||
uhci = config.bochs.uhci or false;
|
||||
ohci = config.bochs.ohci or false;
|
||||
ne2k = config.bochs.ne2k or true;
|
||||
pNIC = config.bochs.pNIC or true;
|
||||
e1000 = config.bochs.e1000 or true;
|
||||
clgd54xx = config.bochs.clgd54xx or true;
|
||||
voodoo = config.bochs.voodoo or true;
|
||||
cdrom = config.bochs.cdrom or true;
|
||||
sb16 = config.bochs.sb16 or true;
|
||||
es1370 = config.bochs.es1370 or true;
|
||||
gameport = config.bochs.gameport or true;
|
||||
busMouse = config.bochs.busMouse or false;
|
||||
|
||||
buildInputs = with stdenv.lib;
|
||||
[ pkgconfig gtk libX11 mesa ]
|
||||
[ pkgconfig libtool gtk mesa readline libX11 libXpm docbook_xml_dtd_45 docbook_xsl ]
|
||||
++ optionals termSupport [ ncurses ]
|
||||
++ optionals sdlSupport [ SDL ]
|
||||
++ optionals termSupport [ readline ncurses ]
|
||||
++ optionals wxSupport [ wxGTK ]
|
||||
++ optionals wgetSupport [ wget ]
|
||||
++ optionals curlSupport [ curl ];
|
||||
|
||||
configureFlags = ''
|
||||
--with-x11
|
||||
--with-term=${if termSupport then "yes" else "no"}
|
||||
--with-sdl=${if sdlSupport then "yes" else "no"}
|
||||
--with-svga=no
|
||||
--with-wx=${if wxSupport then "yes" else "no"}
|
||||
--enable-readline
|
||||
--enable-plugins=no
|
||||
--enable-disasm
|
||||
--enable-debugger
|
||||
--enable-ne2000
|
||||
--enable-e1000
|
||||
--enable-sb16
|
||||
--enable-voodoo
|
||||
--enable-usb
|
||||
--enable-pnic
|
||||
'';
|
||||
configureFlags = [
|
||||
"--with-x=yes"
|
||||
"--with-x11=yes"
|
||||
|
||||
NIX_CFLAGS_COMPILE="-I${gtk}/include/gtk-2.0/";
|
||||
"--with-rfb=no"
|
||||
"--with-vncsrv=no"
|
||||
"--with-svga=no" # it doesn't compile on NixOS
|
||||
"--with-wx=no"
|
||||
|
||||
# These will always be "yes" on NixOS
|
||||
"--enable-ltdl-install=yes"
|
||||
"--enable-readline=yes"
|
||||
"--enable-all-optimizations=yes"
|
||||
"--enable-logging=yes"
|
||||
"--enable-xpm=yes"
|
||||
|
||||
# ... whereas these, always "no"!
|
||||
"--enable-cpp=no"
|
||||
"--enable-instrumentation=no"
|
||||
|
||||
"--enable-docbook=no" # Broken - it requires docbook2html
|
||||
|
||||
# Dangerous options - they are marked as "incomplete/experimental" on Bochs documentation
|
||||
"--enable-3dnow=no"
|
||||
"--enable-usb-xhci=no"
|
||||
"--enable-monitor-mwait=no"
|
||||
"--enable-raw-serial=no" ]
|
||||
# Boolean flags
|
||||
++ stdenv.lib.optional termSupport "--with-term"
|
||||
++ stdenv.lib.optional sdlSupport "--with-sdl"
|
||||
++ stdenv.lib.optional wxSupport "--with-wx"
|
||||
++ stdenv.lib.optional largefile "--enable-largefile"
|
||||
++ stdenv.lib.optional idleHack "--enable-idle-hack"
|
||||
++ stdenv.lib.optional plugins "--enable-plugins"
|
||||
++ stdenv.lib.optional a20Pin "--enable-a20-pin"
|
||||
++ stdenv.lib.optional emulate64Bits "--enable-x86-64"
|
||||
++ stdenv.lib.optional smp "--enable-smp"
|
||||
++ stdenv.lib.optional largeRamfile "--enable-large-ramfile"
|
||||
++ stdenv.lib.optional repeatSpeedups "--enable-repeat-speedups"
|
||||
++ stdenv.lib.optional handlersChaining "--enable-handlers-chaining"
|
||||
++ stdenv.lib.optional traceLinking "--enable-trace-linking"
|
||||
++ stdenv.lib.optional configurableMSRegs "--enable-configurable-msrs"
|
||||
++ stdenv.lib.optional showIPS "--enable-show-ips"
|
||||
++ stdenv.lib.optional debugger "--enable-debugger"
|
||||
++ stdenv.lib.optional disasm "--enable-disasm"
|
||||
++ stdenv.lib.optional debuggerGui "--enable-debugger-gui"
|
||||
++ stdenv.lib.optional gdbStub "--enable-gdb-stub"
|
||||
++ stdenv.lib.optional IODebug "--enable-iodebug"
|
||||
++ stdenv.lib.optional fpu "--enable-fpu"
|
||||
++ stdenv.lib.optional svm "--enable-svm"
|
||||
++ stdenv.lib.optional avx "--enable-avx"
|
||||
++ stdenv.lib.optional evex "--enable-evex"
|
||||
++ stdenv.lib.optional x86Debugger "--enable-x86-debugger"
|
||||
++ stdenv.lib.optional pci "--enable-pci"
|
||||
++ stdenv.lib.optional uhci "--enable-usb"
|
||||
++ stdenv.lib.optional ohci "--enable-usb-ohci"
|
||||
++ stdenv.lib.optional ne2k "--enable-ne2000"
|
||||
++ stdenv.lib.optional pNIC "--enable-pnic"
|
||||
++ stdenv.lib.optional e1000 "--enable-e1000"
|
||||
++ stdenv.lib.optional clgd54xx "--enable-clgd54xx"
|
||||
++ stdenv.lib.optional voodoo "--enable-voodoo"
|
||||
++ stdenv.lib.optional cdrom "--enable-cdrom"
|
||||
++ stdenv.lib.optional sb16 "--enable-sb16"
|
||||
++ stdenv.lib.optional es1370 "--enable-es1370"
|
||||
++ stdenv.lib.optional busMouse "--enable-busmouse"
|
||||
;
|
||||
|
||||
NIX_CFLAGS_COMPILE="-I${gtk}/include/gtk-2.0/ -I${libtool}/include/";
|
||||
NIX_LDFLAGS="-L${libtool}/lib";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "An open-source IA-32 (x86) PC emulator";
|
||||
@ -67,3 +162,5 @@ stdenv.mkDerivation rec {
|
||||
}
|
||||
|
||||
# TODO: study config.bochs.* implementation (like config.ffmpeg.* options)
|
||||
# TODO: investigate the wxWidgets problem (maybe upstream devteam didn't update wxGTK GUI)
|
||||
# TODO: investigate svga support - the Bochs sources explicitly cite /usr/include/svga.h
|
||||
|
@ -614,7 +614,7 @@ let
|
||||
|
||||
bmon = callPackage ../tools/misc/bmon { };
|
||||
|
||||
bochs = callPackage ../applications/virtualization/bochs { wxSupport = false; };
|
||||
bochs = callPackage ../applications/virtualization/bochs { };
|
||||
|
||||
boomerang = callPackage ../development/tools/boomerang { };
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user