Port of Dosbox

Imported from the genode repository

Issue genodelabs/genode#3099
This commit is contained in:
Norman Feske
2019-01-03 15:29:51 +01:00
parent 14098623de
commit c698269e5c
10 changed files with 645 additions and 0 deletions

294
src/app/dosbox/config.h Normal file
View File

@@ -0,0 +1,294 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
/*
* Copyright (C) 2002-2013 The DOSBox Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* Define if building universal (internal helper macro) */
/* #undef AC_APPLE_UNIVERSAL_BUILD */
/* Compiling on BSD */
/* Genode's libc is based on FreeBSD 8.2 */
#define BSD 1
/* Determines if the compilers supports always_inline attribute. */
/* #undef C_ATTRIBUTE_ALWAYS_INLINE */
/* Determines if the compilers supports fastcall attribute. */
/* #undef C_ATTRIBUTE_FASTCALL */
/* Define to 1 to use inlined memory functions in cpu core */
/* #undef C_CORE_INLINE */
/* Define to 1 to enable internal debugger, requires libcurses */
/* #undef C_DEBUG */
/* Define to 1 if you want serial passthrough support (Win32, Posix and OS/2).
*/
/* #undef C_DIRECTSERIAL */
/* Define to 1 to use x86 dynamic cpu core */
/* #undef C_DYNAMIC_X86 */
/* Define to 1 to use recompiling cpu core. Can not be used together with the
dynamic-x86 core */
#define C_DYNREC 1
/* Define to 1 to enable floating point emulation */
#define C_FPU 1
/* Define to 1 to use a x86 assembly fpu core */
/* #undef C_FPU_X86 */
/* Determines if the compilers supports attributes for structures. */
#define C_HAS_ATTRIBUTE 1
/* Determines if the compilers supports __builtin_expect for branch
prediction. */
#define C_HAS_BUILTIN_EXPECT 1
/* Define to 1 if you have the mprotect function */
#define C_HAVE_MPROTECT 1
/* Define to 1 to enable heavy debugging, also have to enable C_DEBUG */
/* #undef C_HEAVY_DEBUG */
/* Define to 1 to enable IPX over Internet networking, requires SDL_net */
#define C_IPX 1
/* Define to 1 to enable internal modem support, requires SDL_net */
#define C_MODEM 1
/* Define to 1 to use opengl display output support */
/* #undef C_OPENGL */
/* Define to 1 to enable SDL_sound support */
/* #undef C_SDL_SOUND */
/* Define to 1 if you have setpriority support */
#define C_SET_PRIORITY 1
/* Define to 1 to enable screenshots, requires libpng */
#define C_SSHOT 1
/* The type of cpu this target has */
/* we define it ourself */
/* #undef C_TARGETCPU */
/* Define to 1 to use a unaligned memory access */
#define C_UNALIGNED_MEMORY 1
/* define to 1 if you have XKBlib.h and X11 lib */
/* #undef C_X11_XKB */
/* libm doesn't include powf */
/* #undef DB_HAVE_NO_POWF */
/* struct dirent has d_type */
#define DIRENT_HAS_D_TYPE 1
/* environ can be included */
/* #undef ENVIRON_INCLUDED */
/* environ can be linked */
/* #undef ENVIRON_LINKED */
/* Define to 1 to use ALSA for MIDI */
/* #undef HAVE_ALSA */
/* Define to 1 if you have the <ddraw.h> header file. */
/* #undef HAVE_DDRAW_H */
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* Define to 1 if you have the `asound' library (-lasound). */
/* #undef HAVE_LIBASOUND */
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the <netinet/in.h> header file. */
#define HAVE_NETINET_IN_H 1
/* Define to 1 if you have the <pwd.h> header file. */
#define HAVE_PWD_H 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the <sys/socket.h> header file. */
#define HAVE_SYS_SOCKET_H 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Compiling on GNU/Linux */
/* #undef LINUX */
/* Compiling on Mac OS X */
/* #undef MACOSX */
/* Compiling on OS/2 EMX */
/* #undef OS2 */
/* Name of package */
#define PACKAGE "dosbox"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT ""
/* Define to the full name of this package. */
#define PACKAGE_NAME "dosbox"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "dosbox SVN"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "dosbox"
/* Define to the home page for this package. */
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "SVN"
#include <size_defs.h>
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
/* #undef TM_IN_SYS_TIME */
/* Version number of package */
#define VERSION "SVN"
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
# if defined __BIG_ENDIAN__
# define WORDS_BIGENDIAN 1
# endif
#else
# ifndef WORDS_BIGENDIAN
/* # undef WORDS_BIGENDIAN */
# endif
#endif
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
/* #undef inline */
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */
/* Define to `int` if you don't have socklen_t */
/* #undef socklen_t */
#if C_ATTRIBUTE_ALWAYS_INLINE
#define INLINE inline __attribute__((always_inline))
#else
#define INLINE inline
#endif
#if C_ATTRIBUTE_FASTCALL
#define DB_FASTCALL __attribute__((fastcall))
#else
#define DB_FASTCALL
#endif
#if C_HAS_ATTRIBUTE
#define GCC_ATTRIBUTE(x) __attribute__ ((x))
#else
#define GCC_ATTRIBUTE(x) /* attribute not supported */
#endif
#if C_HAS_BUILTIN_EXPECT
#define GCC_UNLIKELY(x) __builtin_expect((x),0)
#define GCC_LIKELY(x) __builtin_expect((x),1)
#else
#define GCC_UNLIKELY(x) (x)
#define GCC_LIKELY(x) (x)
#endif
typedef double Real64;
#if SIZEOF_UNSIGNED_CHAR != 1
# error "sizeof (unsigned char) != 1"
#else
typedef unsigned char Bit8u;
typedef signed char Bit8s;
#endif
#if SIZEOF_UNSIGNED_SHORT != 2
# error "sizeof (unsigned short) != 2"
#else
typedef unsigned short Bit16u;
typedef signed short Bit16s;
#endif
#if SIZEOF_UNSIGNED_INT == 4
typedef unsigned int Bit32u;
typedef signed int Bit32s;
#elif SIZEOF_UNSIGNED_LONG == 4
typedef unsigned long Bit32u;
typedef signed long Bit32s;
#else
# error "can't find sizeof(type) of 4 bytes!"
#endif
#if SIZEOF_UNSIGNED_LONG == 8
typedef unsigned long Bit64u;
typedef signed long Bit64s;
#elif SIZEOF_UNSIGNED_LONG_LONG == 8
typedef unsigned long long Bit64u;
typedef signed long long Bit64s;
#else
# error "can't find data type of 8 bytes"
#endif
#if SIZEOF_INT_P == 4
typedef Bit32u Bitu;
typedef Bit32s Bits;
#else
typedef Bit64u Bitu;
typedef Bit64s Bits;
#endif

View File

@@ -0,0 +1,35 @@
--- contrib/dosbox-svn-3837/src/ints/bios.cpp.orig 2013-10-21 21:45:59.350897646 +0200
+++ contrib/dosbox-svn-3837/src/ints/bios.cpp 2013-10-21 22:02:03.526912653 +0200
@@ -32,7 +32,7 @@
#include "setup.h"
#include "serialport.h"
#include <time.h>
-#include <sys/timeb.h>
+//#include <sys/timeb.h>
/* if mem_systems 0 then size_extended is reported as the real size else
@@ -490,11 +490,11 @@
static void BIOS_HostTimeSync() {
/* Setup time and date */
- struct timeb timebuffer;
- ftime(&timebuffer);
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
struct tm *loctime;
- loctime = localtime (&timebuffer.time);
+ loctime = localtime (&tv.tv_sec);
/*
loctime->tm_hour = 23;
@@ -513,7 +513,7 @@
loctime->tm_hour*3600*1000+
loctime->tm_min*60*1000+
loctime->tm_sec*1000+
- timebuffer.millitm))*(((double)PIT_TICK_RATE/65536.0)/1000.0));
+ (tv.tv_usec * 1000)))*(((double)PIT_TICK_RATE/65536.0)/1000.0));
mem_writed(BIOS_TIMER,ticks);
}

View File

@@ -0,0 +1,11 @@
--- contrib/dosbox-svn-3837/src/ints/int10_vesa.cpp.orig 2013-10-21 16:57:31.889803364 +0200
+++ contrib/dosbox-svn-3837/src/ints/int10_vesa.cpp 2013-10-21 16:57:36.777803442 +0200
@@ -45,7 +45,7 @@
static char string_oem[]="S3 Incorporated. Trio64";
static char string_vendorname[]="DOSBox Development Team";
static char string_productname[]="DOSBox - The DOS Emulator";
-static char string_productrev[]="DOSBox "VERSION;
+static char string_productrev[]="DOSBox " VERSION;
#ifdef _MSC_VER
#pragma pack (1)

View File

@@ -0,0 +1,20 @@
--- contrib/dosbox-svn-3837/src/gui/sdl_mapper.cpp.orig 2013-10-30 13:57:07.000000000 +0100
+++ contrib/dosbox-svn-3837/src/gui/sdl_mapper.cpp 2013-10-30 15:35:50.563742200 +0100
@@ -416,7 +416,7 @@
}
#if !defined (WIN32) && !defined (MACOSX) && !defined(OS2)
/* Linux adds 8 to all scancodes */
- else key-=8;
+ //else key-=8;
#endif
#if defined (WIN32)
switch (key) {
@@ -2449,6 +2449,8 @@
}
}
#endif
+ /* Genode's input keycodes match these of evdev */
+ evdev_input = true;
if (evdev_input) {
sdlkey_map[0x67]=SDLK_UP;
sdlkey_map[0x6c]=SDLK_DOWN;

View File

@@ -0,0 +1,35 @@
/*
* \brief Size definitions
* \author Josef Soentgen
* \date 2013-10-21
*/
/*
* Copyright (C) 2013-2017 Genode Labs GmbH
*
* This file is distributed under the terms of the GNU General Public License
* version 2.
*/
#ifndef _APP__DOSBOX__SPEC__X86_32__SIZE_DEFS_H_
#define _APP__DOSBOX__SPEC__X86_32__SIZE_DEFS_H_
/* The size of `int *', as computed by sizeof. */
#define SIZEOF_INT_P 4
/* The size of `unsigned char', as computed by sizeof. */
#define SIZEOF_UNSIGNED_CHAR 1
/* The size of `unsigned int', as computed by sizeof. */
#define SIZEOF_UNSIGNED_INT 4
/* The size of `unsigned long', as computed by sizeof. */
#define SIZEOF_UNSIGNED_LONG 4
/* The size of `unsigned long long', as computed by sizeof. */
#define SIZEOF_UNSIGNED_LONG_LONG 8
/* The size of `unsigned short', as computed by sizeof. */
#define SIZEOF_UNSIGNED_SHORT 2
#endif /* _APP__DOSBOX__SPEC__X86_32__SIZE_DEFS_H_ */

View File

@@ -0,0 +1,35 @@
/*
* \brief Size definitions
* \author Josef Soentgen
* \date 2013-10-21
*/
/*
* Copyright (C) 2013-2017 Genode Labs GmbH
*
* This file is distributed under the terms of the GNU General Public License
* version 2.
*/
#ifndef _APP__DOSBOX__SPEC__X86_64__SIZE_DEFS_H_
#define _APP__DOSBOX__SPEC__X86_64__SIZE_DEFS_H_
/* The size of `int *', as computed by sizeof. */
#define SIZEOF_INT_P 8
/* The size of `unsigned char', as computed by sizeof. */
#define SIZEOF_UNSIGNED_CHAR 1
/* The size of `unsigned int', as computed by sizeof. */
#define SIZEOF_UNSIGNED_INT 4
/* The size of `unsigned long', as computed by sizeof. */
#define SIZEOF_UNSIGNED_LONG 8
/* The size of `unsigned long long', as computed by sizeof. */
#define SIZEOF_UNSIGNED_LONG_LONG 8
/* The size of `unsigned short', as computed by sizeof. */
#define SIZEOF_UNSIGNED_SHORT 2
#endif /* _APP__DOSBOX__SPEC__X86_64__SIZE_DEFS_H_ */

60
src/app/dosbox/target.mk Normal file
View File

@@ -0,0 +1,60 @@
REQUIRES = x86
TARGET := dosbox
DOSBOX_DIR := $(call select_from_ports,dosbox)/src/app/dosbox
SRC_CC_cpu = $(notdir $(wildcard $(DOSBOX_DIR)/src/cpu/*.cpp))
SRC_CC_debug = $(notdir $(wildcard $(DOSBOX_DIR)/src/debug/*.cpp))
FILTER_OUT_dos = cdrom_aspi_win32.cpp cdrom_ioctl_linux.cpp cdrom_ioctl_os2.cpp \
cdrom_ioctl_win32.cpp
SRC_CC_dos = $(filter-out $(FILTER_OUT_dos),$(notdir $(wildcard $(DOSBOX_DIR)/src/dos/*.cpp)))
SRC_CC_fpu = $(notdir $(DOSBOX_DIR)/src/fpu/fpu.cpp)
SRC_CC_gui = $(notdir $(wildcard $(DOSBOX_DIR)/src/gui/*.cpp))
FILTER_OUT_hw = opl.cpp
SRC_CC_hw = $(filter-out $(FILTER_OUT_hw),$(notdir $(wildcard $(DOSBOX_DIR)/src/hardware/*.cpp)))
SRC_CC_hw_ser = $(notdir $(wildcard $(DOSBOX_DIR)/src/hardware/serialport/*.cpp))
SRC_CC_ints = $(notdir $(wildcard $(DOSBOX_DIR)/src/ints/*.cpp))
SRC_CC_misc = $(notdir $(wildcard $(DOSBOX_DIR)/src/misc/*.cpp))
SRC_CC_shell = $(notdir $(wildcard $(DOSBOX_DIR)/src/shell/*.cpp))
SRC_CC = $(notdir $(DOSBOX_DIR)/src/dosbox.cpp)
SRC_CC += $(SRC_CC_cpu) $(SRC_CC_debug) $(SRC_CC_dos) $(SRC_CC_fpu) $(SRC_CC_gui) \
$(SRC_CC_hw) $(SRC_CC_hw_ser) $(SRC_CC_ints) $(SRC_CC_ints) $(SRC_CC_misc) \
$(SRC_CC_shell)
vpath %.cpp $(DOSBOX_DIR)/src
vpath %.cpp $(DOSBOX_DIR)/src/cpu
vpath %.cpp $(DOSBOX_DIR)/src/debug
vpath %.cpp $(DOSBOX_DIR)/src/dos
vpath %.cpp $(DOSBOX_DIR)/src/fpu
vpath %.cpp $(DOSBOX_DIR)/src/gui
vpath %.cpp $(DOSBOX_DIR)/src/hardware
vpath %.cpp $(DOSBOX_DIR)/src/hardware/serialport
vpath %.cpp $(DOSBOX_DIR)/src/ints
vpath %.cpp $(DOSBOX_DIR)/src/misc
vpath %.cpp $(DOSBOX_DIR)/src/shell
INC_DIR += $(PRG_DIR)
INC_DIR += $(DOSBOX_DIR)/include
INC_DIR += $(addprefix $(DOSBOX_DIR)/src, cpu debug dos fpu gui hardware hardware/serialport \
ints misc shell)
CC_OPT = -DHAVE_CONFIG_H -D_GNU_SOURCE=1 -D_REENTRANT
ifeq ($(filter-out $(SPECS),x86_32),)
INC_DIR += $(PRG_DIR)/spec/x86_32
CC_OPT += -DC_TARGETCPU=X86
else ifeq ($(filter-out $(SPECS),x86_64),)
INC_DIR += $(PRG_DIR)/spec/x86_64
CC_OPT += -DC_TARGETCPU=X86_64
endif
CC_WARN = -Wall
CC_WARN += -Wno-unused-variable -Wno-unused-function -Wno-switch -Wno-unused-value \
-Wno-unused-but-set-variable -Wno-format -Wno-maybe-uninitialized \
-Wno-sign-compare -Wno-narrowing -Wno-missing-braces -Wno-array-bounds \
-Wno-parentheses
LIBS += libpng libc sdl sdlmain sdl_net stdcxx zlib
CC_CXX_WARN_STRICT =