mirror of
https://github.com/joncampbell123/dosbox-x.git
synced 2025-10-13 17:48:10 +08:00
Update README.source-code-description
This commit is contained in:
@@ -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.
|
||||
|
Reference in New Issue
Block a user