Update README.source-code-description

This commit is contained in:
Wengier
2021-06-20 04:04:44 -04:00
committed by GitHub
parent 48e34a6249
commit 7754cd184c

View File

@@ -7,359 +7,13 @@ information and some technical details.
Such information is primarily targeted at advanced users or developers, and
anyone who wants to contribute to the DOSBox-X project.
Users who are primarily looking for instructions on installing and running
DOSBox-X may want to look at the INSTALL.md file and the DOSBox-X Wiki instead.
Users who are looking for instructions on building the DOSBox-X source code
may look at the BUILD.md file, and those who are primarily looking for
instructions on installing and running DOSBox-X may want to look at the
INSTALL.md file and the DOSBox-X Wiki instead.
There is also a section for crediting the source code in the end of this page.
General information on source code compilation
----------------------------------------------
The four major operating systems and platforms of DOSBox-X are:
1. Linux (with X11) 32-bit and 64-bit x86, and on a Raspberry Pi 3 (arm 7).
2. Windows 10, 8, 7, Vista and XP for 32-bit and 64-bit x86 and ARM.
3. macOS (Mac OS X) Sierra 10.12 or higher 64-bit.
4. DOS (MS-DOS 5.0+ or compatible).
Straight Windows builds are expected to compile using the free community edition
of Visual Studio 2015 to Visual Studio 2019 and the DirectX 2010 SDK.
Linux and MinGW Windows builds are expected to compile with the GNU autotools.
macOS builds are expected to compile on the terminal using GNU autotools and
the LLVM/Clang compiler provided by XCode.
In all cases, the code requires a C++ compiler that can support the C++11
standard.
Note that DOSBox-X is written to compile against the in-tree copy of the
SDL 1.x (Simple Directmedia Libary), or against the SDL 2.x library provided
by your Linux distribution.
For Visual Studio and MinGW compilation, the in-tree copy of SDL is always
used. Note that the in-tree SDL 1.x library has been HEAVILY MODIFIED from
the original SDL 1.x source code and is thus somewhat incompatible with the
stock library.
The modifications provide additional functions needed to improve DOSBox-X
and fix many issues with keyboard input, window mangement, and display
management that previously required terrible kludges within the DOSBox
and DOSBox-X source code.
In Windows, the modifications also permit the emulation to run independent
of the main window so that moving, resizing, or using menus does not cause
emulation to pause.
In macOS, the modifications provide an interface to allow DOSBox-X to
replace and manage the macOS menu bar.
How to compile the source code (cross-platform)
-----------------------------------------------
General Linux compile (SDL1)
./build-debug
sudo make install
General Linux compile (SDL2)
./build-debug-sdl2
sudo make install
macOS compile (SDL1)
./build-macosx
macOS compile (SDL2)
./build-macosx-sdl2
MinGW compile (using MinGW32 or MinGW64) for Windows XP or later (SDL1)
./build-mingw
MinGW compile (using MinGW32 or MinGW64) for Windows XP or later (SDL1), lower-end systems that lack MMX/SSE
./build-mingw-lowend
MinGW compile (using MinGW32 or MinGW64) for Windows XP or later (SDL2)
./build-mingw-sdl2
MinGW compile (on Windows, using MinGW, not MinGW64) to target the DOS platform (MS-DOS or compatible with HX DOS Extender)
./build-mingw-hx-dos
NOTICE: Use the 32-bit toolchain from the original MinGW project for this build, not the MinGW64 project.
Binaries compiled with MinGW64 have extra dependencies not provided by the HX DOS Extender.
macOS: If you want to make an .app bundle you can run from the Finder, compile the program as instructed then run "make dosbox-x.app".
XCode (on macOS, from the Terminal) to target macOS
./build-debug
## To compile DOSBox-X in Ubuntu (tested with 20.04 and 20.10):
First install the development tools, headers and libraries needed
sudo apt install automake gcc g++ make libncurses-dev nasm libsdl-net1.2-dev libsdl2-net-dev libpcap-dev libslirp-dev fluidsynth libfluidsynth-dev libavdevice58 libavformat-dev libavcodec-dev libavcodec-extra libavcodec-extra58 libswscale-dev libfreetype-dev libxkbfile-dev libxrandr-dev
Then change to the directory where you unpacked the DOSBox-X source code, and run the following commands:
./build-debug
sudo make install
Alternatively you can also compile the SDL2 version by running the ./build-debug-sdl2 script.
## To compile DOSBox-X in Fedora Workstation:
First install the development tools, headers and libraries needed
sudo dnf group install "C Development Tools and Libraries"
sudo dnf install SDL_net-devel SDL2_net-devel libxkbfile-devel ncurses-devel libpcap-devel libslirp-devel libpng-devel fluidsynth-devel freetype-devel nasm
If you want to be able to record video, you will also need to install ffmpeg-devel which you can get from the optional rpmfusion-free repository.
Then change to the directory where you unpacked the DOSBox-X source code, and run the following commands:
./build-debug
sudo make install
Alternatively you can also compile the SDL2 version by running the ./build-debug-sdl2 script.
## To create a DOSBox-X RPM for use in RHEL, CentOS or Fedora:
First ensure that your system has all the necessary development tools and libraries installed, such as by following the dnf steps in the above "To compile DOSBox-X in Fedora Workstation".
Then run the following commands:
sudo dnf group install "RPM Development Tools"
./make-rpm.sh
After a successful compile, the RPM can be found in the releases directory.
Compiling the source code using Visual Studio (Windows)
-------------------------------------------------------
You can build the source code with Visual Studio (2015, 2017, 2019).
The executables will work on 32-bit and 64-bit Windows Vista or higher.
Use the ./vs2015/dosbox-x.sln "solution" file and build the source code.
You will need the DirectX 2010 SDK for Direct3D9 support.
By default the targeted platform is v142 (Visual Studio 2019).
For building the source code in Visual Studio 2015 or 2017,
you may change the platform toolset to v140 or v141 respectively.
Libraries such as SDL, freetype, libpdcurses, libpng and zlib are already included,
and as of DOSBox-X 0.83.6 support for FluidSynth MIDI Synthesizer is also included
(set "mididevice=fluidsynth" in the [midi] section of DOSBox-X's configuration file
(dosbox-x.conf) along with required soundfont file (e.g. FluidR3_GM.sf2) to use it).
The slirp backend is only supported by MinGW builds but not Visual Studio builds.
Build the source code for your platform (Win32, x64, ARM and ARM64 are supported).
As of 2018/06/06, Visual Studio 2017 builds (32-bit and 64-bit) explicitly require
a processor that supports the SSE instruction set.
Visual Studio Code is supported, too.
Check the README.development-in-Windows file for more information about this platform.
Libraries used by DOSBox-X
--------------------------
The following libraries are used by DOSBox-X:
SDL 1.2.x or SDL 2.0.x
The Simple DirectMedia Library available at https://www.libsdl.org
The DLL distributed with the Windows SDL1 version of DOSBox-X had
been modified from the original. You can find the changes in the
source package of DOSBox-X (src/platform/sdl-win32.diff). If you
want the patched source tree send us an email. (see README)
Note that only version 1.2.x (SDL1 version) and version 2.0.x
(SDL2 version) are currently supported.
License: LGPLv2+
Curses (optional)
If you want to enable the debugger you need a curses library.
ncurses should be installed on just about every unix distro.
For win32 get pdcurses at https://pdcurses.org/
License: Public Domain
Libpng (optional)
Needed for the screenshots.
For win32 get libpng from https://gnuwin32.sourceforge.net/packages.html
See http://www.libpng.org/pub/png/ for more details.
License: zlib/libpng
Zlib
Needed by libpng, and for saving state and CHD support.
For win32 get libz (rename to zlib) from https://gnuwin32.sourceforge.net/packages.html
See https://www.zlib.net/ for more details.
License: zlib
FreeType (optional)
Needed for TrueType font (TTF) output and printing support.
It is available from https://www.freetype.org/download.html
License: FTL or GPLv2+
FluidSynth (optional)
For soundfont support.
It is available from https://www.fluidsynth.org/download/
License: LGPLv2+
libpcap (optional)
For pcap backend of NE2000 networking support.
Get it from https://www.tcpdump.org/index.html#latest-releases
For win32 get Npcap (WinPcap for Windows 10) from https://nmap.org/download.html
License: 3-clause BSD license
libslirp (optional)
For slirp backend of NE2000 networking support.
Get it from https://gitlab.freedesktop.org/slirp/libslirp
License: Modified 4-clause BSD license
SDL_Net (optional)
For modem/ipx support.
Get it from https://www.libsdl.org/projects/SDL_net/release-1.2.html
License: LGPLv2+
SDL_Sound (optional)
For compressed audio on diskimages (cue sheets) support.
This is for cue/bin CD-ROM images with compressed (MP3/OGG/FLAC) audio tracks.
Get it from https://icculus.org/SDL_sound
Licence: LGPLv2+
ALSA_Headers (optional)
for Alsa support under linux. Part of the linux kernel sources
License: LGPLv2+
Configure script options
------------------------
The DOSBox-X configure script accepts the following switches, which you can use to customize the code compilation:
--enable-FEATURE[=ARG]
Includes FEATURE [ARG=yes]
--enable-silent-rules
Less verbose build output (undo: "make V=1")
--enable-dependency-tracking
Do not reject slow dependency extractors
--enable-force-menu-sdldraw
Forces SDL drawn menus
--enable-hx-dos
Enables HX-DOS target
--enable-emscripten
Enables Emscripten target
--enable-sdl
Enables SDL 1.x
--enable-sdl2
Enables SDL 2.x
--enable-xbrz
Compiles with xBRZ scaler (default yes)
--enable-scaler-full-line
Scaler render full line instead of detecting
changes, for slower systems
--enable-alsa-midi
Compiles with ALSA MIDI support (default yes)
--enable-d3d9
Enables Direct3D 9 support
--enable-d3d-shaders
Enables Direct3D shaders
--enable-debug
Enables the internal debugger. --enable-debug=heavy enables even more
debug options. To use the debugger, DOSBox-X should be run from an xterm
and when the sdl-window is active press alt-pause to enter the
debugger.
--disable-FEATURE
Do not include FEATURE (same as --enable-FEATURE=no)
--disable-silent-rules
Verbose build output (undo: "make V=0")
--disable-dependency-tracking
Speeds up one-time build
--disable-largefile
Omits support for large files
--disable-x11
Do not enable X11 integration
--disable-optimize
Do not enable compiler optimizations
--disable-sdl2test
Do not try to compile and run a test SDL 2.x program
--disable-sdltest
Do not try to compile and run a test SDL 1.x program
--disable-alsatest
Do not try to compile and run a test ALSA program
--disable-freetype
Disables FreeType support
--disable-printer
Disables printer emulation
--disable-mt32
Disables MT32 emulation
--disable-screenshots
Disables screenshots and movie recording
--disable-avcodec
Disables FFMPEG avcodec support
--disable-core-inline
Disables some memory increasing inlines. This will reduces compiletime
for a possible speed decrease.
--disable-fpu
Disables the emulated FPU. Although the FPU emulation code isn't
finished and isn't entirely accurate, it's advised to leave it on.
--disable-fpu-x86
--disable-fpu-x64
Disables the assembly FPU core. Although relatively new, the x86/x64
FPU core has more accuracy than the regular FPU core.
--disable-dynamic-x86
Disables the dynamic x86/x64 specific CPU core. Although it might be
a bit unstable, it can greatly improve the speed of dosbox-x on x86
and x64 hosts.
Please note that this option on x86/x64 will result in a different
dynamic/recompiling CPU core being compiled than the default.
For more information see the option --disable-dynrec
--disable-dynrec
Disables the recompiling CPU core. Currently x86/x64 and arm only.
You can activate this core on x86/x64 by disabling the dynamic-x86
core.
--disable-dynamic-core
Disables all dynamic cores. (same effect as --disable-dynamic-x86
or --disable-dynrec).
--disable-opengl
Disables OpenGL support (output mode that can be selected in the
DOSBox-X configuration file).
--disable-unaligned-memory
Disables unaligned memory access.
General description of source code
----------------------------------
@@ -1624,7 +1278,8 @@ Some of the code is DOSBox SVN code in which some of the SVN
commits made since 2011 were incorporated into DOSBox-X.
Some of the code in this source tree also came from other DOSBox
forks like DOSBox SVN Daum, DOSBox ECE, dosbox-staging and vDosPlus.
forks like DOSBox SVN Daum, DOSBox ECE, DOSBox Staging, DOSVAXJ3,
as well as vDosPlus.
Other code also came from other developers and contributors of the
DOSBox-X project such as Wengier, aybe, Allofich, and rderooy.