Files
86Box/src/win/Makefile.mingw

918 lines
22 KiB
Makefile
Raw Normal View History

#
#
2022-11-15 12:48:58 -05:00
# 86Box A hypervisor and IBM PC system emulator that specializes in
# running old operating systems and software designed for IBM
# PC systems and compatibles from 1981 through fairly recent
# system designs based on the PCI bus.
#
2022-11-15 12:48:58 -05:00
# This file is part of the 86Box distribution.
#
2022-11-15 12:48:58 -05:00
# Makefile for Win32 (MinGW32) environment.
#
2022-11-15 12:48:58 -05:00
# Authors: Miran Grca, <mgrca8@gmail.com>
# Fred N. van Kempen, <decwiz@yahoo.com>
#
# Various compile-time options.
ifndef STUFF
STUFF :=
endif
# Add feature selections here.
ifndef EXTRAS
EXTRAS :=
endif
ifndef DEV_BUILD
DEV_BUILD := n
endif
ifeq ($(DEV_BUILD), y)
ifndef DEBUG
2022-11-15 12:48:58 -05:00
DEBUG := y
endif
2022-07-19 21:10:16 -04:00
ifndef GDBSTUB
2022-11-15 12:48:58 -05:00
GDBSTUB := n
2022-07-19 21:10:16 -04:00
endif
ifndef DEV_BRANCH
2022-11-15 12:48:58 -05:00
DEV_BRANCH := y
endif
ifndef AMD_K5
2022-11-15 12:48:58 -05:00
AMD_K5 := y
endif
ifndef AN430TX
2022-11-15 12:48:58 -05:00
AN430TX := y
endif
ifndef CYRIX_6X86
2022-11-15 12:48:58 -05:00
CYRIX_6X86 := y
endif
ifndef DESKPRO386
2022-11-15 12:48:58 -05:00
DESKPRO386 := y
endif
ifndef GUSMAX
2022-11-15 12:48:58 -05:00
GUSMAX := y
endif
ifndef ISAMEM_RAMPAGE
ISAMEM_RAMPAGE := y
endif
ifndef ISAMEM_IAB
ISAMEM_IAB := y
endif
ifndef ISAMEM_BRAT
ISAMEM_BRAT := y
endif
ifndef LASERXT
2022-11-15 12:48:58 -05:00
LASERXT := y
endif
ifndef MGA
2022-11-15 12:48:58 -05:00
MGA := y
endif
2022-04-19 18:36:30 -04:00
ifndef OLIVETTI
2022-11-15 12:48:58 -05:00
OLIVETTI := y
endif
ifndef OPEN_AT
2022-11-15 12:48:58 -05:00
OPEN_AT := y
endif
ifndef PAS16
2022-11-15 12:48:58 -05:00
PAS16 := y
endif
ifndef SIO_DETECT
2022-11-15 12:48:58 -05:00
SIO_DETECT := y
endif
2022-04-19 18:36:30 -04:00
ifndef VGAWONDER
2022-11-15 12:48:58 -05:00
VGAWONDER := y
endif
ifndef XL24
2022-11-15 12:48:58 -05:00
XL24 := y
endif
ifndef NEW_KBC
2022-11-15 12:48:58 -05:00
NEW_KBC := n
endif
else
ifndef DEBUG
2022-11-15 12:48:58 -05:00
DEBUG := n
endif
2022-07-19 21:10:16 -04:00
ifndef GDBSTUB
2022-11-15 12:48:58 -05:00
GDBSTUB := n
2022-07-19 21:10:16 -04:00
endif
ifndef DEV_BRANCH
2022-11-15 12:48:58 -05:00
DEV_BRANCH := n
endif
ifndef AMD_K5
2022-11-15 12:48:58 -05:00
AMD_K5 := n
endif
ifndef AN430TX
2022-11-15 12:48:58 -05:00
AN430TX := n
endif
ifndef CYRIX_6X86
2022-11-15 12:48:58 -05:00
CYRIX_6X86 := n
endif
ifndef DESKPRO386
2022-11-15 12:48:58 -05:00
DESKPRO386 := n
endif
ifndef GUSMAX
2022-11-15 12:48:58 -05:00
GUSMAX := n
endif
ifndef ISAMEM_RAMPAGE
ISAMEM_RAMPAGE := n
endif
ifndef ISAMEM_IAB
ISAMEM_IAB := n
endif
ifndef ISAMEM_BRAT
ISAMEM_BRAT := n
endif
ifndef LASERXT
2022-11-15 12:48:58 -05:00
LASERXT := n
endif
ifndef MGA
2022-11-15 12:48:58 -05:00
MGA := n
endif
2022-04-19 18:36:30 -04:00
ifndef OLIVETTI
2022-11-15 12:48:58 -05:00
OLIVETTI := n
endif
ifndef OPEN_AT
2022-11-15 12:48:58 -05:00
OPEN_AT := n
endif
ifndef PAS16
2022-11-15 12:48:58 -05:00
PAS16 := n
endif
ifndef SIO_DETECT
2022-11-15 12:48:58 -05:00
SIO_DETECT := n
endif
2022-04-19 18:36:30 -04:00
ifndef VGAWONDER
2022-11-15 12:48:58 -05:00
VGAWONDER := n
endif
ifndef XL24
2022-11-15 12:48:58 -05:00
XL24 := n
endif
ifndef NEW_KBC
2022-11-15 12:48:58 -05:00
NEW_KBC := n
endif
endif
# Defaults for several build options (possibly defined in a chained file.)
ifndef AUTODEP
AUTODEP := n
endif
ifndef OPTIM
OPTIM := n
endif
2017-06-03 14:24:19 +02:00
ifndef RELEASE
RELEASE := n
2017-06-03 14:24:19 +02:00
endif
ifndef X64
X64 := n
endif
ifndef ARM
ARM := n
endif
ifndef ARM64
ARM64 := n
endif
ifndef DINPUT
2022-11-15 12:48:58 -05:00
DINPUT := n
endif
ifndef FAUDIO
2022-11-15 12:48:58 -05:00
FAUDIO := n
endif
ifndef OPENAL
2022-11-15 12:48:58 -05:00
OPENAL := n
endif
ifndef FLUIDSYNTH
2022-11-15 12:48:58 -05:00
FLUIDSYNTH := y
endif
ifndef MUNT
2022-11-15 12:48:58 -05:00
MUNT := y
endif
ifndef VNC
2022-11-15 12:48:58 -05:00
VNC := n
endif
ifndef NEW_DYNAREC
2022-11-15 12:48:58 -05:00
NEW_DYNAREC := n
endif
ifndef DYNAREC
2022-11-15 12:48:58 -05:00
DYNAREC := y
endif
ifndef CPPTHREADS
2022-11-15 12:48:58 -05:00
CPPTHREADS := y
endif
2022-03-11 21:19:59 +01:00
ifndef RTMIDI
2022-11-15 12:48:58 -05:00
RTMIDI := y
2022-03-11 21:19:59 +01:00
endif
ifeq ($(DYNAREC), y)
ifeq ($(ARM), y)
ifeq ($(NEW_DYNAREC), n)
2022-11-15 12:48:58 -05:00
DYNAREC := n
endif
endif
ifeq ($(ARM64), y)
ifeq ($(NEW_DYNAREC), n)
2022-11-15 12:48:58 -05:00
DYNAREC := n
endif
endif
endif
# Path to the dynamic recompiler code.
ifeq ($(NEW_DYNAREC), y)
2022-11-15 12:48:58 -05:00
CODEGEN := codegen_new
else
2022-11-15 12:48:58 -05:00
CODEGEN := codegen
endif
# Name of the executable.
2022-11-15 12:48:58 -05:00
PROG := 86Box
#########################################################################
2022-11-15 12:48:58 -05:00
# Nothing should need changing from here on.. #
#########################################################################
2022-11-15 12:48:58 -05:00
VPATH := $(EXPATH) . $(CODEGEN) minitrace cpu \
cdrom chipset device disk disk/minivhd floppy \
game machine mem printer \
sio sound \
sound/munt sound/munt/c_interface sound/munt/sha1 \
sound/munt/srchelper sound/munt/srchelper/srctools/src \
sound/resid-fp sound/ymfm \
scsi video network network/slirp win
ifeq ($(X64), y)
TOOL_PREFIX := x86_64-w64-mingw32-
else
TOOL_PREFIX := i686-w64-mingw32-
endif
2022-11-15 12:48:58 -05:00
WINDRES := windres
STRIP := strip
ifeq ($(ARM64), y)
WINDRES := aarch64-w64-mingw32-windres
STRIP := aarch64-w64-mingw32-strip
endif
ifeq ($(ARM), y)
WINDRES := armv7-w64-mingw32-windres
STRIP := armv7-w64-mingw32-strip
endif
ifeq ($(CLANG), y)
CPP := clang++
CC := clang
ifeq ($(ARM64), y)
CPP := aarch64-w64-mingw32-clang++
CC := aarch64-w64-mingw32-clang
endif
ifeq ($(ARM), y)
CPP := armv7-w64-mingw32-clang++
CC := armv7-w64-mingw32-clang
endif
else
CPP := ${TOOL_PREFIX}g++
CC := ${TOOL_PREFIX}gcc
ifeq ($(ARM64), y)
CPP := aarch64-w64-mingw32-g++
CC := aarch64-w64-mingw32-gcc
endif
ifeq ($(ARM), y)
CPP := armv7-w64-mingw32-g++
CC := armv7-w64-mingw32-gcc
endif
endif
2022-11-15 12:48:58 -05:00
DEPS = -MMD -MF $*.d -c $<
DEPFILE := win/.depends
# Set up the correct toolchain flags.
2022-11-15 12:48:58 -05:00
OPTS := $(EXTRAS) $(STUFF)
OPTS += -Iinclude -Iinclude_make \
-iquote $(CODEGEN) -iquote cpu
ifdef EXFLAGS
OPTS += $(EXFLAGS)
endif
ifdef EXINC
OPTS += -I$(EXINC)
endif
ifeq ($(OPTIM), y)
2022-11-15 12:48:58 -05:00
DFLAGS := -march=native
else
ifeq ($(X64), y)
2022-11-15 12:48:58 -05:00
DFLAGS :=
2017-06-19 07:00:41 +02:00
else
2022-11-15 12:48:58 -05:00
DFLAGS := -march=i686
2017-06-19 07:00:41 +02:00
endif
endif
ifeq ($(DEBUG), y)
2022-11-15 12:48:58 -05:00
DFLAGS += -ggdb -DDEBUG
AOPTIM :=
ifndef COPTIM
2022-11-15 12:48:58 -05:00
COPTIM := -Og
endif
else
2022-11-15 12:48:58 -05:00
DFLAGS += -g0
ifeq ($(OPTIM), y)
2022-11-15 12:48:58 -05:00
AOPTIM := -mtune=native
ifndef COPTIM
2022-11-15 12:48:58 -05:00
COPTIM := -O3 -ffp-contract=fast -flto
endif
else
ifndef COPTIM
2022-11-15 12:48:58 -05:00
COPTIM := -O3
endif
endif
endif
2022-11-15 12:48:58 -05:00
AFLAGS := -msse2 -mfpmath=sse
ifeq ($(ARM), y)
2022-11-15 12:48:58 -05:00
DFLAGS := -march=armv7-a
AOPTIM :=
AFLAGS := -mfloat-abi=hard
endif
ifeq ($(ARM64), y)
2022-11-15 12:48:58 -05:00
DFLAGS := -march=armv8-a
AOPTIM :=
AFLAGS := -mfloat-abi=hard
endif
2022-11-15 12:48:58 -05:00
RFLAGS := --input-format=rc -O coff -Iinclude -Iinclude_make
ifeq ($(RELEASE), y)
OPTS += -DRELEASE_BUILD
RFLAGS += -DRELEASE_BUILD
endif
Added the IBM 5161 ISA expansion for PC and XT; Cleaned up the parallel port emulation, added IRQ support, and made enabling/disabling per port; Added the Award 430NX and the Intel Classic/PCI (Alfredo, 420TX); Finished the 586MC1; Added 8087 emulation; Moved Cyrix 6x86'es to the Dev branch; Sanitized/cleaned up memregs.c/h and intel.c/h; Split the chipsets from machines and sanitized Port 92 emulation; Added support for the 15bpp mode to the Compaq ATI 28800; Moved the MR 386DX and 486 machines to the Dev branch; Ported the new dynamic recompiler from PCem, but it remains in Dev branch until after v2.00; Ported the new timer code from PCem; Cleaned up the CPU table of unused stuff and better optimized its structure; Ported the Open-XT and Open-AT from VARCem, the Open-AT is in the Dev branch; Ported the XT MFM controller rewrite and adding of more controllers (incl. two RLL ones), from VARCem; Added the AHA-1540A and the BusTek BT-542B; Moved the Sumo SCSI-AT to the Dev branch; Minor IDE, FDC, and floppy drive code clean-ups; Made NCR 5380/53C400-based cards' BIOS address configurable; Got rid of the legacy romset variable; Unified (video) buffer and buffer32 into one and make the unified buffer 32-bit; Added the Amstead PPC512 per PCem patch by John Elliott; Switched memory mapping granularity from 16k to 4k (less than 1k not possible due to internal pages); Rewrote the CL-GD 54xx blitter, fixes Win-OS/2 on the 54x6 among other thing; Added the Image Manager 1024 and Professional Graphics Controller per PCem patch by John Elliott and work done on VARCem; Added Headland HT-216, GC-205 and Video 7 VGA 1024i emulation based on PCem commit; Implemented the fuction keys for the Toshiba T1000/T1200/T3100 enhancement; Amstrad MegaPC does now works correctly with non-internal graphics card; The SLiRP code no longer casts a packed struct type to a non-packed struct type; The Xi8088 and PB410a no longer hang on 86Box when PS/2 mouse is not present; The S3 Virge on BeOS is no longer broken (was broken by build #1591); OS/2 2.0 build 6.167 now sees key presses again; Xi8088 now work on CGA again; 86F images converted from either the old or new variants of the HxC MFM format now work correctly; Hardware interrupts with a vector of 0xFF are now handled correctly; OPTi 495SX boards no longer incorrectly have 64 MB maximum RAM when 32 MB is correct; Fixed VNC keyboard input bugs; Fixed AT RTC periodic interrupt - Chicago 58s / 73f / 73g / 81 MIDI play no longer hangs with the build's own VTD driver; Fixed mouse polling with internal mice - Amstrad and Olivetti mice now work correctly; Triones ATAPI DMA driver now correctly reads a file at the end of a CD image with a sectors number not divisible by 4; Compaq Portable now works with all graphics cards; Fixed various MDSI Genius bugs; Added segment limit checks and improved page fault checks for several CPU instructions - Memphis 15xx WINSETUP and Chicago 58s WINDISK.CPL no longer issue a GPF, and some S3 drivers that used to have glitches, now work correctly; Further improved the 808x emulation, also fixes the noticably choppy sound when using 808x CPU's, also fixes #355; OS/2 installer no logner locks up on splash screen on PS/2 Model 70 and 80, fixes #400. Fixed several Amstead bugs, GEM no longer crashes on the Amstrad 1640, fixes #391. Ported John Elliott's Amstrad fixes and improvement from PCem, and fixed the default language so it's correctly Engliish, fixes #278, fixes #389. Fixed a minor IDE timing bug, fixes #388. Fixed Toshiba T1000 RAM issues, fixes #379. Fixed EGA/(S)VGA overscan border handling, fixes #378; Got rid of the now long useless IDE channel 2 auto-removal, fixes #370; Fixed the BIOS files used by the AMSTRAD PC1512, fixes #366; Ported the Unicode CD image file name fix from VARCem, fixes #365; Fixed high density floppy disks on the Xi8088, fixes #359; Fixed some bugs in the Hercules emulation, fixes #346, fixes #358; Fixed the SCSI hard disk mode sense pages, fixes #356; Removed the AMI Unknown 386SX because of impossibility to identify the chipset, closes #349; Fixed bugs in the serial mouse emulation, fixes #344; Compiled 86Box binaries now include all the required .DLL's, fixes #341; Made some combo boxes in the Settings dialog slightly wider, fixes #276.
2019-09-20 14:02:30 +02:00
# Optional modules.
ifeq ($(DYNAREC), y)
OPTS += -DUSE_DYNAREC
RFLAGS += -DUSE_DYNAREC
ifeq ($(NEW_DYNAREC), y)
2022-11-15 12:48:58 -05:00
OPTS += -DUSE_NEW_DYNAREC
RFLAGS += -DUSE_NEW_DYNAREC
ifeq ($(X64), y)
2022-11-15 12:48:58 -05:00
PLATCG := codegen_backend_x86-64.o codegen_backend_x86-64_ops.o codegen_backend_x86-64_ops_sse.o \
codegen_backend_x86-64_uops.o
else ifeq ($(ARM64), y)
2022-11-15 12:48:58 -05:00
PLATCG := codegen_backend_arm64.o codegen_backend_arm64_ops.o codegen_backend_arm64_uops.o \
codegen_backend_arm64_imm.o
else ifeq ($(ARM), y)
2022-11-15 12:48:58 -05:00
PLATCG := codegen_backend_arm.o codegen_backend_arm_ops.o codegen_backend_arm_uops.o
else
2022-11-15 12:48:58 -05:00
PLATCG := codegen_backend_x86.o codegen_backend_x86_ops.o codegen_backend_x86_ops_fpu.o \
codegen_backend_x86_ops_sse.o codegen_backend_x86_uops.o
endif
2022-11-15 12:48:58 -05:00
DYNARECOBJ := codegen.o codegen_accumulate.o codegen_allocator.o codegen_block.o codegen_ir.o codegen_ops.o \
codegen_ops_3dnow.o codegen_ops_branch.o codegen_ops_arith.o codegen_ops_fpu_arith.o \
codegen_ops_fpu_constant.o codegen_ops_fpu_loadstore.o codegen_ops_fpu_misc.o codegen_ops_helpers.o \
codegen_ops_jump.o codegen_ops_logic.o codegen_ops_misc.o codegen_ops_mmx_arith.o codegen_ops_mmx_cmp.o \
codegen_ops_mmx_loadstore.o codegen_ops_mmx_logic.o codegen_ops_mmx_pack.o codegen_ops_mmx_shift.o \
codegen_ops_mov.o codegen_ops_shift.o codegen_ops_stack.o codegen_reg.o $(PLATCG)
else
ifeq ($(X64), y)
2022-11-15 12:48:58 -05:00
PLATCG := codegen_x86-64.o codegen_accumulate_x86-64.o
else
2022-11-15 12:48:58 -05:00
PLATCG := codegen_x86.o codegen_accumulate_x86.o
endif
2022-11-15 12:48:58 -05:00
DYNARECOBJ := codegen.o \
codegen_ops.o $(PLATCG)
endif
2022-11-15 12:48:58 -05:00
CGTOBJ := codegen_timing_486.o \
codegen_timing_686.o codegen_timing_common.o codegen_timing_k6.o codegen_timing_pentium.o \
codegen_timing_p6.o codegen_timing_winchip.o codegen_timing_winchip2.o
else
ifeq ($(NEW_DYNAREC), y)
2022-11-15 12:48:58 -05:00
OPTS += -DUSE_NEW_DYNAREC
RFLAGS += -DUSE_NEW_DYNAREC
endif
endif
ifeq ($(FLUIDSYNTH), y)
OPTS += -DUSE_FLUIDSYNTH
FSYNTHOBJ := midi_fluidsynth.o
endif
ifeq ($(MUNT), y)
OPTS += -DUSE_MUNT
MUNTOBJ := midi_mt32.o \
Analog.o BReverbModel.o Display.o File.o FileStream.o LA32Ramp.o \
LA32FloatWaveGenerator.o LA32WaveGenerator.o \
MidiStreamParser.o Part.o Partial.o PartialManager.o \
Poly.o ROMInfo.o SampleRateConverter.o \
FIRResampler.o IIR2xResampler.o LinearResampler.o ResamplerModel.o \
SincResampler.o InternalResampler.o \
Synth.o Tables.o TVA.o TVF.o TVP.o sha1.o c_interface.o
endif
ifeq ($(CPPTHREADS), y)
THREADOBJ := thread.o
else
THREADOBJ := win_thread.o
endif
ifeq ($(VNC), y)
OPTS += -DUSE_VNC
RFLAGS += -DUSE_VNC
ifneq ($(VNC_PATH), )
2022-11-15 12:48:58 -05:00
OPTS += -I$(VNC_PATH)\INCLUDE
VNCLIB := -L$(VNC_PATH)\LIB
endif
VNCLIB += -lvncserver
VNCOBJ := vnc.o vnc_keymap.o
endif
ifeq ($(MINITRACE), y)
OPTS += -DMTR_ENABLED
RFLAGS += -DMTR_ENABLED
MINITRACEOBJ := minitrace.o
endif
ifeq ($(FAUDIO), y)
OPTS += -DUSE_FAUDIO
endif
# Options for the DEV branch.
2017-07-30 23:21:11 -05:00
ifeq ($(DEV_BRANCH), y)
OPTS += -DDEV_BRANCH
RFLAGS += -DDEV_BRANCH
DEVBROBJ :=
ifeq ($(AMD_K5), y)
OPTS += -DUSE_AMD_K5
endif
ifeq ($(AN430TX), y)
OPTS += -DUSE_AN430TX
endif
ifeq ($(CYRIX_6X86), y)
OPTS += -DUSE_CYRIX_6X86
endif
ifeq ($(DESKPRO386), y)
OPTS += -DUSE_DESKPRO386
endif
2020-12-04 20:40:48 +05:00
ifeq ($(GUSMAX), y)
OPTS += -DUSE_GUSMAX
endif
ifeq ($(ISAMEM_RAMPAGE), y)
OPTS += -DUSE_ISAMEM_RAMPAGE
endif
ifeq ($(ISAMEM_IAB), y)
OPTS += -DUSE_ISAMEM_IAB
endif
ifeq ($(ISAMEM_BRAT), y)
OPTS += -DUSE_ISAMEM_BRAT
endif
ifeq ($(LASERXT), y)
OPTS += -DUSE_LASERXT
DEVBROBJ += m_xt_laserxt.o
endif
ifeq ($(MGA), y)
OPTS += -DUSE_MGA
DEVBROBJ += vid_mga.o
endif
ifeq ($(OPEN_AT), y)
OPTS += -DUSE_OPEN_AT
endif
ifeq ($(PAS16), y)
OPTS += -DUSE_PAS16
DEVBROBJ += snd_pas16.o
endif
ifeq ($(SIO_DETECT), y)
OPTS += -DUSE_SIO_DETECT
DEVBROBJ += sio_detect.o
endif
ifeq ($(VGAWONDER), y)
OPTS += -DUSE_VGAWONDER
endif
ifeq ($(XL24), y)
OPTS += -DUSE_XL24
endif
ifeq ($(OLIVETTI), y)
OPTS += -DUSE_OLIVETTI
DEVBROBJ += olivetti_eva.o
endif
ifeq ($(GDBSTUB), y)
OPTS += -DUSE_GDBSTUB
DEVBROBJ += gdbstub.o
endif
2017-07-30 23:21:11 -05:00
endif
2017-11-18 21:28:26 -05:00
# Final versions of the toolchain flags.
2022-11-15 12:48:58 -05:00
CFLAGS := $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) \
$(AFLAGS) -fomit-frame-pointer -mstackrealign -Wall \
-fno-strict-aliasing
# Add freetyp2 references through pkgconfig
2022-11-15 12:48:58 -05:00
CFLAGS := $(CFLAGS) `pkg-config --cflags freetype2`
2022-11-15 12:48:58 -05:00
CXXFLAGS := $(CFLAGS)
2017-11-18 21:28:26 -05:00
#########################################################################
2022-11-15 12:48:58 -05:00
# Create the (final) list of objects to build. #
2017-11-18 21:28:26 -05:00
#########################################################################
2022-11-15 12:48:58 -05:00
MAINOBJ := 86box.o config.o log.o random.o timer.o io.o acpi.o apm.o dma.o ddma.o \
nmi.o pic.o pit.o pit_fast.o port_6x.o port_92.o ppi.o pci.o mca.o fifo8.o \
usb.o device.o nvr.o nvr_at.o nvr_ps2.o machine_status.o ini.o \
$(VNCOBJ)
MEMOBJ := catalyst_flash.o i2c_eeprom.o intel_flash.o mem.o rom.o smram.o spd.o sst_flash.o
CPUOBJ := $(DYNARECOBJ) \
$(CGTOBJ) \
cpu.o cpu_table.o fpu.o x86.o \
8080.o 808x.o 386.o 386_common.o 386_dynarec.o 386_dynarec_ops.o \
x86seg.o x87.o x87_timings.o
CHIPSETOBJ := 82c100.o acc2168.o \
contaq_82c59x.o \
cs4031.o cs8230.o \
ali1429.o ali1489.o ali1531.o ali1541.o ali1543.o ali1621.o ali6117.o \
gc100.o headland.o \
ims8848.o intel_82335.o intel_420ex.o intel_4x0.o intel_i450kx.o intel_sio.o intel_piix.o \
ioapic.o \
neat.o \
opti283.o opti291.o opti391.o opti495.o opti822.o opti895.o opti5x7.o \
scamp.o scat.o \
stpc.o \
wd76c10.o vl82c480.o \
umc_8886.o umc_hb4.o \
via_vt82c49x.o via_vt82c505.o via_apollo.o via_pipc.o \
sis_85c310.o sis_85c4xx.o sis_85c496.o sis_85c50x.o sis_5511.o sis_5571.o
MCHOBJ := machine.o machine_table.o \
m_xt.o m_xt_compaq.o \
m_xt_philips.o \
m_xt_t1000.o m_xt_t1000_vid.o \
m_xt_xi8088.o m_xt_zenith.o \
m_pcjr.o \
m_amstrad.o m_europc.o \
m_elt.o \
m_xt_olivetti.o m_tandy.o m_v86p.o \
m_at.o m_at_commodore.o \
m_at_t3100e.o m_at_t3100e_vid.o \
m_ps1.o m_ps1_hdc.o \
m_ps2_isa.o m_ps2_mca.o \
m_at_compaq.o \
m_at_286_386sx.o m_at_386dx_486.o \
m_at_socket4.o m_at_socket5.o m_at_socket7_3v.o m_at_socket7.o m_at_sockets7.o \
m_at_socket8.o m_at_slot1.o m_at_slot2.o m_at_socket370.o \
m_at_misc.o
Added the IBM 5161 ISA expansion for PC and XT; Cleaned up the parallel port emulation, added IRQ support, and made enabling/disabling per port; Added the Award 430NX and the Intel Classic/PCI (Alfredo, 420TX); Finished the 586MC1; Added 8087 emulation; Moved Cyrix 6x86'es to the Dev branch; Sanitized/cleaned up memregs.c/h and intel.c/h; Split the chipsets from machines and sanitized Port 92 emulation; Added support for the 15bpp mode to the Compaq ATI 28800; Moved the MR 386DX and 486 machines to the Dev branch; Ported the new dynamic recompiler from PCem, but it remains in Dev branch until after v2.00; Ported the new timer code from PCem; Cleaned up the CPU table of unused stuff and better optimized its structure; Ported the Open-XT and Open-AT from VARCem, the Open-AT is in the Dev branch; Ported the XT MFM controller rewrite and adding of more controllers (incl. two RLL ones), from VARCem; Added the AHA-1540A and the BusTek BT-542B; Moved the Sumo SCSI-AT to the Dev branch; Minor IDE, FDC, and floppy drive code clean-ups; Made NCR 5380/53C400-based cards' BIOS address configurable; Got rid of the legacy romset variable; Unified (video) buffer and buffer32 into one and make the unified buffer 32-bit; Added the Amstead PPC512 per PCem patch by John Elliott; Switched memory mapping granularity from 16k to 4k (less than 1k not possible due to internal pages); Rewrote the CL-GD 54xx blitter, fixes Win-OS/2 on the 54x6 among other thing; Added the Image Manager 1024 and Professional Graphics Controller per PCem patch by John Elliott and work done on VARCem; Added Headland HT-216, GC-205 and Video 7 VGA 1024i emulation based on PCem commit; Implemented the fuction keys for the Toshiba T1000/T1200/T3100 enhancement; Amstrad MegaPC does now works correctly with non-internal graphics card; The SLiRP code no longer casts a packed struct type to a non-packed struct type; The Xi8088 and PB410a no longer hang on 86Box when PS/2 mouse is not present; The S3 Virge on BeOS is no longer broken (was broken by build #1591); OS/2 2.0 build 6.167 now sees key presses again; Xi8088 now work on CGA again; 86F images converted from either the old or new variants of the HxC MFM format now work correctly; Hardware interrupts with a vector of 0xFF are now handled correctly; OPTi 495SX boards no longer incorrectly have 64 MB maximum RAM when 32 MB is correct; Fixed VNC keyboard input bugs; Fixed AT RTC periodic interrupt - Chicago 58s / 73f / 73g / 81 MIDI play no longer hangs with the build's own VTD driver; Fixed mouse polling with internal mice - Amstrad and Olivetti mice now work correctly; Triones ATAPI DMA driver now correctly reads a file at the end of a CD image with a sectors number not divisible by 4; Compaq Portable now works with all graphics cards; Fixed various MDSI Genius bugs; Added segment limit checks and improved page fault checks for several CPU instructions - Memphis 15xx WINSETUP and Chicago 58s WINDISK.CPL no longer issue a GPF, and some S3 drivers that used to have glitches, now work correctly; Further improved the 808x emulation, also fixes the noticably choppy sound when using 808x CPU's, also fixes #355; OS/2 installer no logner locks up on splash screen on PS/2 Model 70 and 80, fixes #400. Fixed several Amstead bugs, GEM no longer crashes on the Amstrad 1640, fixes #391. Ported John Elliott's Amstrad fixes and improvement from PCem, and fixed the default language so it's correctly Engliish, fixes #278, fixes #389. Fixed a minor IDE timing bug, fixes #388. Fixed Toshiba T1000 RAM issues, fixes #379. Fixed EGA/(S)VGA overscan border handling, fixes #378; Got rid of the now long useless IDE channel 2 auto-removal, fixes #370; Fixed the BIOS files used by the AMSTRAD PC1512, fixes #366; Ported the Unicode CD image file name fix from VARCem, fixes #365; Fixed high density floppy disks on the Xi8088, fixes #359; Fixed some bugs in the Hercules emulation, fixes #346, fixes #358; Fixed the SCSI hard disk mode sense pages, fixes #356; Removed the AMI Unknown 386SX because of impossibility to identify the chipset, closes #349; Fixed bugs in the serial mouse emulation, fixes #344; Compiled 86Box binaries now include all the required .DLL's, fixes #341; Made some combo boxes in the Settings dialog slightly wider, fixes #276.
2019-09-20 14:02:30 +02:00
2021-08-02 06:59:46 +02:00
ifeq ($(NEW_KBC), y)
2022-11-15 12:48:58 -05:00
DEVOBJ := bugger.o cartridge.o cassette.o hasp.o hwm.o hwm_lm75.o hwm_lm78.o hwm_gl518sm.o hwm_vt82c686.o \
ibm_5161.o isamem.o isartc.o lpt.o pci_bridge.o postcard.o serial.o \
clock_ics9xxx.o isapnp.o \
i2c.o i2c_gpio.o smbus_ali7101.o smbus_piix4.o \
keyboard.o \
keyboard_xt.o kbc_at.o kbd_at.o \
mouse.o \
mouse_bus.o \
mouse_serial.o mouse_ps2.o \
phoenix_486_jumper.o
else
2022-11-15 12:48:58 -05:00
DEVOBJ := bugger.o cartridge.o cassette.o hasp.o hwm.o hwm_lm75.o hwm_lm78.o hwm_gl518sm.o hwm_vt82c686.o \
ibm_5161.o isamem.o isartc.o lpt.o pci_bridge.o postcard.o serial.o \
clock_ics9xxx.o isapnp.o \
i2c.o i2c_gpio.o smbus_ali7101.o smbus_piix4.o \
keyboard.o \
keyboard_xt.o keyboard_at.o \
mouse.o \
mouse_bus.o \
mouse_serial.o mouse_ps2.o \
phoenix_486_jumper.o
endif
SIOOBJ := sio_acc3221.o sio_ali5123.o \
sio_f82c710.o sio_82091aa.o sio_fdc37c6xx.o \
sio_fdc37c67x.o sio_fdc37c669.o sio_fdc37c93x.o sio_fdc37m60x.o \
sio_it8661f.o \
sio_pc87306.o sio_pc87307.o sio_pc87309.o sio_pc87310.o sio_pc87311.o sio_pc87332.o \
sio_prime3b.o sio_prime3c.o \
sio_w83787f.o \
sio_w83877f.o sio_w83977f.o \
sio_um8669f.o \
sio_vt82c686.o
FDDOBJ := fdd.o fdc.o fdc_magitronic.o fdc_pii15xb.o \
fdi2raw.o \
fdd_common.o fdd_86f.o \
fdd_fdi.o fdd_imd.o fdd_img.o fdd_json.o \
fdd_mfm.o fdd_td0.o
GAMEOBJ := gameport.o \
joystick_standard.o joystick_ch_flightstick_pro.o \
joystick_sw_pad.o joystick_tm_fcs.o
HDDOBJ := hdd.o \
hdd_image.o hdd_table.o \
hdc.o \
hdc_st506_xt.o hdc_st506_at.o \
hdc_xta.o \
hdc_esdi_at.o hdc_esdi_mca.o \
hdc_xtide.o hdc_ide.o \
hdc_ide_opti611.o \
hdc_ide_cmd640.o hdc_ide_cmd646.o \
hdc_ide_sff8038i.o
2020-11-16 23:38:46 -06:00
MINIVHDOBJ := cwalk.o libxml2_encoding.o minivhd_convert.o \
2022-11-15 12:48:58 -05:00
minivhd_create.o minivhd_io.o minivhd_manage.o \
minivhd_struct_rw.o minivhd_util.o
CDROMOBJ := cdrom.o \
cdrom_image_backend.o cdrom_image_viso.o cdrom_image.o cdrom_mitsumi.o
ZIPOBJ := zip.o
MOOBJ := mo.o
SCSIOBJ := scsi.o scsi_device.o \
scsi_cdrom.o scsi_disk.o \
scsi_x54x.o \
scsi_aha154x.o scsi_buslogic.o \
scsi_ncr5380.o scsi_ncr53c8xx.o \
scsi_pcscsi.o scsi_spock.o
NETOBJ := network.o \
net_pcap.o \
net_slirp.o tinyglib.o \
arp_table.o bootp.o cksum.o dnssearch.o if.o ip_icmp.o ip_input.o \
ip_output.o mbuf.o misc.o sbuf.o slirp.o socket.o tcp_input.o \
tcp_output.o tcp_subr.o tcp_timer.o udp.o util.o version.o \
net_dp8390.o \
net_3c503.o net_ne2000.o \
net_pcnet.o net_wd8003.o \
net_plip.o net_event.o
PRINTOBJ := png.o prt_cpmap.o \
prt_escp.o prt_text.o prt_ps.o
SNDOBJ := sound.o \
snd_opl.o snd_opl_nuked.o snd_opl_ymfm.o \
ymfm_adpcm.o ymfm_misc.o ymfm_opl.o ymfm_opm.o \
ymfm_opn.o ymfm_opq.o ymfm_opz.o ymfm_pcm.o ymfm_ssg.o \
snd_resid.o \
convolve.o convolve-sse.o envelope.o extfilt.o \
filter.o pot.o sid.o voice.o wave6581__ST.o \
wave6581_P_T.o wave6581_PS_.o wave6581_PST.o \
wave8580__ST.o wave8580_P_T.o wave8580_PS_.o \
wave8580_PST.o wave.o \
midi.o \
snd_speaker.o \
snd_pssj.o \
snd_ps1.o \
snd_lpt_dac.o snd_lpt_dss.o \
snd_adlib.o snd_adlibgold.o snd_ad1848.o snd_audiopci.o \
snd_ac97_codec.o snd_ac97_via.o \
snd_azt2316a.o snd_cs423x.o snd_cmi8x38.o \
snd_cms.o \
snd_gus.o \
snd_sb.o snd_sb_dsp.o \
snd_emu8k.o snd_mpu401.o \
snd_sn76489.o snd_ssi2001.o \
snd_wss.o \
snd_ym7128.o
VIDOBJ := agpgart.o video.o \
vid_table.o \
vid_cga.o vid_cga_comp.o \
vid_compaq_cga.o \
vid_mda.o \
vid_hercules.o vid_herculesplus.o vid_incolor.o \
vid_colorplus.o \
vid_genius.o \
vid_pgc.o vid_im1024.o \
vid_sigma.o \
vid_wy700.o \
vid_ega.o vid_ega_render.o \
vid_svga.o vid_svga_render.o \
vid_8514a.o \
vid_ddc.o \
vid_vga.o \
vid_ati_eeprom.o \
vid_ati18800.o vid_ati28800.o \
vid_ati_mach64.o vid_ati68860_ramdac.o \
vid_bt48x_ramdac.o \
vid_av9194.o vid_icd2061.o vid_ics2494.o vid_ics2595.o \
vid_cl54xx.o \
vid_et3000.o \
vid_et4000.o vid_sc1148x_ramdac.o \
vid_sc1502x_ramdac.o \
vid_et4000w32.o vid_stg_ramdac.o \
vid_ht216.o \
vid_oak_oti.o \
vid_paradise.o \
vid_rtg310x.o \
vid_ti_cf62011.o \
vid_f82c425.o \
vid_tvga.o \
vid_tgui9440.o vid_tkd8001_ramdac.o \
vid_att20c49x_ramdac.o \
vid_att2xc498_ramdac.o \
vid_s3.o vid_s3_virge.o \
vid_ibm_rgb528_ramdac.o vid_sdac_ramdac.o \
vid_ogc.o \
vid_nga.o \
vid_tvp3026_ramdac.o \
vid_xga.o
VOODOOOBJ := vid_voodoo.o vid_voodoo_banshee.o \
vid_voodoo_banshee_blitter.o \
vid_voodoo_blitter.o \
vid_voodoo_display.o vid_voodoo_fb.o \
vid_voodoo_fifo.o vid_voodoo_reg.o \
vid_voodoo_render.o vid_voodoo_setup.o \
vid_voodoo_texture.o
PLATOBJ := win.o \
win_dynld.o \
win_cdrom.o win_keyboard.o \
win_mouse.o
UIOBJ := win_ui.o win_icon.o win_stbar.o discord.o \
win_sdl.o win_opengl.o win_opengl_glslp.o glad.o \
win_dialog.o win_about.o \
win_settings.o win_devconf.o win_snd_gain.o win_specify_dim.o win_preferences.o \
win_new_floppy.o win_jsconf.o \
win_media_menu.o win_toolbar.o
2020-02-05 08:07:09 +08:00
ifeq ($(DINPUT), y)
2022-11-15 12:48:58 -05:00
PLATOBJ += win_joystick.o
2020-02-05 08:07:09 +08:00
else
2022-11-15 12:48:58 -05:00
PLATOBJ += win_joystick_rawinput.o
2020-02-05 08:07:09 +08:00
endif
ifeq ($(OPENAL), y)
2022-11-15 12:48:58 -05:00
SNDOBJ += openal.o
else
2022-11-15 12:48:58 -05:00
SNDOBJ += xaudio2.o
endif
2022-11-15 12:48:58 -05:00
OBJ := $(MAINOBJ) $(CPUOBJ) $(CHIPSETOBJ) $(MCHOBJ) $(DEVOBJ) $(MEMOBJ) \
$(FDDOBJ) $(GAMEOBJ) $(CDROMOBJ) $(ZIPOBJ) $(MOOBJ) $(HDDOBJ) $(MINIVHDOBJ) \
$(NETOBJ) $(PRINTOBJ) $(SCSIOBJ) $(SIOOBJ) $(SNDOBJ) $(VIDOBJ) $(VOODOOOBJ) \
$(PLATOBJ) $(UIOBJ) $(FSYNTHOBJ) $(MUNTOBJ) $(DEVBROBJ) $(MINITRACEOBJ) $(THREADOBJ)
ifdef EXOBJ
OBJ += $(EXOBJ)
endif
ifeq ($(OPENAL), y)
LIBS := -mwindows -lopenal -lcomctl32 -lSDL2 -limagehlp -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -lws2_32
else
ifeq ($(FAUDIO), y)
LIBS := -mwindows -lfaudio -lcomctl32 -lSDL2 -limagehlp -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -lws2_32
else
LIBS := -mwindows -lcomctl32 -lSDL2 -limagehlp -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -lws2_32
endif
endif
2022-03-11 21:19:59 +01:00
ifeq ($(RTMIDI), y)
2022-11-15 12:48:58 -05:00
SNDOBJ += midi_rtmidi.o
OPTS += -DUSE_RTMIDI
LIBS += -lrtmidi
2022-03-11 21:19:59 +01:00
endif
ifeq ($(VNC), y)
LIBS += $(VNCLIB) -lws2_32
endif
2022-11-15 12:48:58 -05:00
LIBS += -lpng -lz -lwsock32 -liphlpapi -lpsapi -lhid -lsetupapi -luxtheme -static -lstdc++
ifneq ($(X64), y)
ifneq ($(ARM64), y)
LIBS += -Wl,--large-address-aware
endif
endif
ifeq ($(ARM64), y)
LIBS += -lgcc
endif
2020-02-05 08:07:09 +08:00
ifeq ($(DINPUT), y)
2022-11-15 12:48:58 -05:00
LIBS += -ldinput8
endif
2022-11-15 12:48:58 -05:00
LIBS += -static
# Build module rules.
ifeq ($(AUTODEP), y)
2022-11-15 12:48:58 -05:00
%.o: %.c
@echo $<
@$(CC) $(CFLAGS) $(DEPS) -c $<
2022-11-15 12:48:58 -05:00
%.o: %.cc
@echo $<
@$(CPP) $(CXXFLAGS) $(DEPS) -c $<
2022-11-15 12:48:58 -05:00
%.o: %.cpp
@echo $<
@$(CPP) $(CXXFLAGS) $(DEPS) -c $<
else
2022-11-15 12:48:58 -05:00
%.o: %.c
@echo $<
@$(CC) $(CFLAGS) -c $<
2022-11-15 12:48:58 -05:00
%.o: %.cc
@echo $<
@$(CPP) $(CXXFLAGS) -c $<
2022-11-15 12:48:58 -05:00
%.o: %.cpp
@echo $<
@$(CPP) $(CXXFLAGS) -c $<
2022-11-15 12:48:58 -05:00
%.d: %.c $(wildcard $*.d)
@echo $<
@$(CC) $(CFLAGS) $(DEPS) -E $< >/dev/null
2022-11-15 12:48:58 -05:00
%.d: %.cc $(wildcard $*.d)
@echo $<
@$(CPP) $(CXXFLAGS) $(DEPS) -E $< >/dev/null
2022-11-15 12:48:58 -05:00
%.d: %.cpp $(wildcard $*.d)
@echo $<
@$(CPP) $(CXXFLAGS) $(DEPS) -E $< >/dev/null
endif
# Suppress false positive warnings in vid_voodoo_codegen_x86[-64].h
# that cause ~3000 lines to be output into the logs each time.
ifneq ($(CLANG), y)
$(VOODOOOBJ): CFLAGS += -Wstringop-overflow=0
endif
2022-11-15 12:48:58 -05:00
all: $(PROG).exe
2022-11-15 12:48:58 -05:00
86Box.res: 86Box.rc
@echo Processing $<
@$(WINDRES) $(RFLAGS) $(EXTRAS) -i $< -o 86Box.res
2022-11-15 12:48:58 -05:00
$(PROG).exe: $(OBJ) 86Box.res
@echo Linking $(PROG).exe ..
@$(CC) $(LDFLAGS) -o $(PROG).exe $(OBJ) 86Box.res $(LIBS) -pipe
ifneq ($(DEBUG), y)
2022-11-15 12:48:58 -05:00
@$(STRIP) $(PROG).exe
endif
2022-11-15 12:48:58 -05:00
pcap_if.res: pcap_if.rc
@echo Processing $<
@$(WINDRES) $(RFLAGS) -i $< -o pcap_if.res
2022-11-15 12:48:58 -05:00
pcap_if.exe: pcap_if.o win_dynld.o pcap_if.res
@echo Linking pcap_if.exe ..
@$(CC) $(LDFLAGS) -o pcap_if.exe pcap_if.o win_dynld.o pcap_if.res
ifneq ($(DEBUG), y)
2022-11-15 12:48:58 -05:00
@$(STRIP) pcap_if.exe
endif
2022-11-15 12:48:58 -05:00
hello.exe: hello.o
$(CXX) $(LDFLAGS) -o hello.exe hello.o $(LIBS)
2017-11-18 21:28:26 -05:00
ifneq ($(DEBUG), y)
2022-11-15 12:48:58 -05:00
@$(STRIP) hello.exe
2017-11-18 21:28:26 -05:00
endif
clean:
2022-11-15 12:48:58 -05:00
@echo Cleaning objects..
@-rm -f *.o 2>/dev/null
@-rm -f *.res 2>/dev/null
2022-11-15 12:48:58 -05:00
clobber: clean
@echo Cleaning executables..
@-rm -f *.d 2>/dev/null
@-rm -f *.exe 2>/dev/null
# @-rm -f $(DEPFILE) 2>/dev/null
ifneq ($(AUTODEP), y)
depclean:
2022-11-15 12:48:58 -05:00
@-rm -f $(DEPFILE) 2>/dev/null
@echo Creating dependencies..
@echo # Run "make depends" to re-create this file. >$(DEPFILE)
depends: DEPOBJ=$(OBJ:%.o=%.d)
depends: depclean $(OBJ:%.o=%.d)
@-cat $(DEPOBJ) >>$(DEPFILE)
@-rm -f $(DEPOBJ)
$(DEPFILE):
endif
# Module dependencies.
ifeq ($(AUTODEP), y)
#-include $(OBJ:%.o=%.d) (better, but sloooowwwww)
-include *.d
else
include $(wildcard $(DEPFILE))
endif
# End of Makefile.mingw.