The 82C425 is a CGA-compatible display controller chip. On top of being able to drive a regular CRT display like an ordinary CGA card, it can be configured to drive a monochrome 640x200 LCD panel instead. The chip along with a LCD panel are notably used in the Victor V86P laptop comupter. When driving a monochrome LCD, the controller is able to employ some clever tricks to compensate for he lack of color: by alternately turning dots on and off with various duty cycles it can achieve displaying 4 or 8 shades of gray. It can also enhance contrast between the text glyphs and their background when it's less than the configured minimum (with "SMARTMAP" algorithm). The emulation is fairly complete. The 320x200 graphical mode uses 4 gray shades along with stretching the pixels horziontally much like the real hardware would. SMARTMAP is implemented for text mode and also matches the real hardware pretty closely. The missing bits are: * Configurable blink rates * Mapping the character map into host address space The code is based on the T1000 display controller emulation and still bears strong resemblance to it.
952 lines
21 KiB
Makefile
952 lines
21 KiB
Makefile
#
|
|
# 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.
|
|
#
|
|
# This file is part of the 86Box distribution.
|
|
#
|
|
# Makefile for Win32 (MinGW32) environment.
|
|
#
|
|
# 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
|
|
DEBUG := y
|
|
endif
|
|
ifndef DEV_BRANCH
|
|
DEV_BRANCH := y
|
|
endif
|
|
ifndef AMD_K5
|
|
AMD_K5 := y
|
|
endif
|
|
ifndef CYRIX_6X86
|
|
CYRIX_6X86 := y
|
|
endif
|
|
ifndef GUSMAX
|
|
GUSMAX := y
|
|
endif
|
|
ifndef HEDAKA
|
|
HEDAKA := y
|
|
endif
|
|
ifndef I450KX
|
|
I450KX := y
|
|
endif
|
|
ifndef M154X
|
|
M154X := y
|
|
endif
|
|
ifndef LASERXT
|
|
LASERXT := y
|
|
endif
|
|
ifndef MGA
|
|
MGA := y
|
|
endif
|
|
ifndef NO_SIO
|
|
NO_SIO := y
|
|
endif
|
|
ifndef OPEN_AT
|
|
OPEN_AT := y
|
|
endif
|
|
ifndef OPENGL
|
|
OPENGL := y
|
|
endif
|
|
ifndef PAS16
|
|
PAS16 := n
|
|
endif
|
|
ifndef PS2M70T4
|
|
PS2M70T4 := y
|
|
endif
|
|
ifndef S3TRIO3D2X
|
|
S3TRIO3D2X := y
|
|
endif
|
|
ifndef SIO_DETECT
|
|
SIO_DETECT := y
|
|
endif
|
|
ifndef M154X
|
|
M154X := y
|
|
endif
|
|
ifndef M6117
|
|
M6117 := y
|
|
endif
|
|
ifndef VGAWONDER
|
|
VGAWONDER := y
|
|
endif
|
|
ifndef VNC
|
|
VNC := y
|
|
endif
|
|
ifndef XL24
|
|
XL24 := y
|
|
endif
|
|
ifndef VECT486VL
|
|
VECT486VL := y
|
|
endif
|
|
ifndef OLIVETTI
|
|
OLIVETTI := y
|
|
endif
|
|
else
|
|
ifndef DEBUG
|
|
DEBUG := n
|
|
endif
|
|
ifndef DEV_BRANCH
|
|
DEV_BRANCH := n
|
|
endif
|
|
ifndef AMD_K5
|
|
AMD_K5 := n
|
|
endif
|
|
ifndef CYRIX_6X86
|
|
CYRIX_6X86 := n
|
|
endif
|
|
ifndef GUSMAX
|
|
GUSMAX := n
|
|
endif
|
|
ifndef HEDAKA
|
|
HEDAKA := n
|
|
endif
|
|
ifndef I450KX
|
|
I450KX := n
|
|
endif
|
|
ifndef LASERXT
|
|
LASERXT := n
|
|
endif
|
|
ifndef M154X
|
|
M154X := n
|
|
endif
|
|
ifndef MGA
|
|
MGA := n
|
|
endif
|
|
ifndef NO_SIO
|
|
NO_SIO := n
|
|
endif
|
|
ifndef OPEN_AT
|
|
OPEN_AT := n
|
|
endif
|
|
ifndef OPENGL
|
|
OPENGL := n
|
|
endif
|
|
ifndef PAS16
|
|
PAS16 := n
|
|
endif
|
|
ifndef PS2M70T4
|
|
PS2M70T4 := n
|
|
endif
|
|
ifndef S3TRIO3D2X
|
|
S3TRIO3D2X := n
|
|
endif
|
|
ifndef SIO_DETECT
|
|
SIO_DETECT := n
|
|
endif
|
|
ifndef M154X
|
|
M154X := n
|
|
endif
|
|
ifndef M6117
|
|
M6117 := n
|
|
endif
|
|
ifndef VGAWONDER
|
|
VGAWONDER := n
|
|
endif
|
|
ifndef VNC
|
|
VNC := n
|
|
endif
|
|
ifndef XL24
|
|
XL24 := n
|
|
endif
|
|
ifndef VECT486VL
|
|
VECT486VL := n
|
|
endif
|
|
ifndef OLIVETTI
|
|
OLIVETTI := n
|
|
endif
|
|
endif
|
|
|
|
# Defaults for several build options (possibly defined in a chained file.)
|
|
ifndef AUTODEP
|
|
AUTODEP := n
|
|
endif
|
|
ifndef OPTIM
|
|
OPTIM := n
|
|
endif
|
|
ifndef RELEASE
|
|
RELEASE := n
|
|
endif
|
|
ifndef X64
|
|
X64 := n
|
|
endif
|
|
ifndef ARM
|
|
ARM := n
|
|
endif
|
|
ifndef ARM64
|
|
ARM64 := n
|
|
endif
|
|
ifndef WX
|
|
WX := n
|
|
endif
|
|
ifndef DINPUT
|
|
DINPUT := n
|
|
endif
|
|
ifndef OPENAL
|
|
OPENAL := y
|
|
endif
|
|
ifndef FLUIDSYNTH
|
|
FLUIDSYNTH := y
|
|
endif
|
|
ifndef MUNT
|
|
MUNT := y
|
|
endif
|
|
ifndef NEW_DYNAREC
|
|
NEW_DYNAREC := n
|
|
endif
|
|
ifndef DYNAREC
|
|
DYNAREC := y
|
|
endif
|
|
ifeq ($(DYNAREC), y)
|
|
ifeq ($(ARM), y)
|
|
ifeq ($(NEW_DYNAREC), n)
|
|
DYNAREC := n
|
|
endif
|
|
endif
|
|
ifeq ($(ARM64), y)
|
|
ifeq ($(NEW_DYNAREC), n)
|
|
DYNAREC := n
|
|
endif
|
|
endif
|
|
endif
|
|
ifndef DISCORD
|
|
DISCORD := y
|
|
endif
|
|
|
|
|
|
# Path to the dynamic recompiler code.
|
|
ifeq ($(NEW_DYNAREC), y)
|
|
CODEGEN := codegen_new
|
|
else
|
|
CODEGEN := codegen
|
|
endif
|
|
|
|
|
|
# Name of the executable.
|
|
ifndef PROG
|
|
ifneq ($(WX), n)
|
|
PROG := Wx86Box
|
|
else
|
|
PROG := 86Box
|
|
endif
|
|
endif
|
|
|
|
# WxWidgets basic info. Extract using the config program.
|
|
ifneq ($(WX), n)
|
|
EXPATH += wx
|
|
WX_CONFIG := wx-config.exe
|
|
ifeq ($(WX), y)
|
|
WX_PATH := C:/MinGW32/WxWidgets
|
|
WX_FLAGS := -I$(WX_PATH)/lib/wx/include/msw-unicode-3.0 \
|
|
-I$(WX_PATH)/include/wx-3.0 \
|
|
-D__WXMSW__ -DWX_PRECOMP -D_FILE_OFFSET_BITS=64 -pthread
|
|
# -lwx_mswu_gl-3.0 -lwxtiff-3.0 -llzma
|
|
WX_LIBS := -mwindows -mthreads -L$(WX_PATH)/lib \
|
|
-lwx_mswu-3.0.dll \
|
|
-lrpcrt4 -loleaut32 -lole32 -luuid \
|
|
-lwinspool -lwinmm -lshell32 -lcomctl32 \
|
|
-lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
|
|
endif
|
|
ifeq ($(WX), static)
|
|
WX_PATH := C:/MinGW32/WxWidgets
|
|
WX_FLAGS := -I$(WX_PATH)/lib/wx/include/msw-unicode-3.0 \
|
|
-I$(WX_PATH)/include/wx-3.0 \
|
|
-D__WXMSW__ -DWX_PRECOMP -D_FILE_OFFSET_BITS=64 -pthread
|
|
# -lwx_mswu_gl-3.0 -lwxtiff-3.0 -llzma
|
|
WX_LIBS := -mwindows -mthreads -L$(WX_PATH)/lib \
|
|
-lwx_mswu-3.0 -lwxscintilla-3.0 \
|
|
-lwxjpeg-3.0 -lwxpng-3.0 -lwxzlib-3.0 \
|
|
-lwxregexu-3.0 -lwxexpat-3.0 \
|
|
-lrpcrt4 -loleaut32 -lole32 -luuid \
|
|
-lwinspool -lwinmm -lshell32 -lcomctl32 \
|
|
-lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
|
|
endif
|
|
endif
|
|
|
|
|
|
#########################################################################
|
|
# Nothing should need changing from here on.. #
|
|
#########################################################################
|
|
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 \
|
|
scsi video network network/slirp win
|
|
ifeq ($(X64), y)
|
|
TOOL_PREFIX := x86_64-w64-mingw32-
|
|
else
|
|
TOOL_PREFIX := i686-w64-mingw32-
|
|
endif
|
|
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
|
|
DEPS = -MMD -MF $*.d -c $<
|
|
DEPFILE := win/.depends
|
|
|
|
# Set up the correct toolchain flags.
|
|
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)
|
|
DFLAGS := -march=native
|
|
else
|
|
ifeq ($(X64), y)
|
|
DFLAGS :=
|
|
else
|
|
DFLAGS := -march=i686
|
|
endif
|
|
endif
|
|
ifeq ($(DEBUG), y)
|
|
DFLAGS += -ggdb -DDEBUG
|
|
AOPTIM :=
|
|
ifndef COPTIM
|
|
COPTIM := -Og
|
|
endif
|
|
else
|
|
DFLAGS += -g0
|
|
ifeq ($(OPTIM), y)
|
|
AOPTIM := -mtune=native
|
|
ifndef COPTIM
|
|
COPTIM := -O3 -ffp-contract=fast -flto
|
|
endif
|
|
else
|
|
ifndef COPTIM
|
|
COPTIM := -O3
|
|
endif
|
|
endif
|
|
endif
|
|
AFLAGS := -msse2 -mfpmath=sse
|
|
ifeq ($(ARM), y)
|
|
DFLAGS := -march=armv7-a
|
|
AOPTIM :=
|
|
AFLAGS := -mfloat-abi=hard
|
|
endif
|
|
ifeq ($(ARM64), y)
|
|
DFLAGS := -march=armv8-a
|
|
AOPTIM :=
|
|
AFLAGS := -mfloat-abi=hard
|
|
endif
|
|
RFLAGS := --input-format=rc -O coff -Iinclude -Iinclude_make
|
|
ifeq ($(RELEASE), y)
|
|
OPTS += -DRELEASE_BUILD
|
|
RFLAGS += -DRELEASE_BUILD
|
|
endif
|
|
ifeq ($(VRAMDUMP), y)
|
|
OPTS += -DENABLE_VRAM_DUMP
|
|
RFLAGS += -DENABLE_VRAM_DUMP
|
|
endif
|
|
|
|
|
|
# Optional modules.
|
|
ifeq ($(DYNAREC), y)
|
|
OPTS += -DUSE_DYNAREC
|
|
RFLAGS += -DUSE_DYNAREC
|
|
|
|
ifeq ($(NEW_DYNAREC), y)
|
|
OPTS += -DUSE_NEW_DYNAREC
|
|
RFLAGS += -DUSE_NEW_DYNAREC
|
|
|
|
ifeq ($(X64), y)
|
|
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)
|
|
PLATCG := codegen_backend_arm64.o codegen_backend_arm64_ops.o codegen_backend_arm64_uops.o \
|
|
codegen_backend_arm64_imm.o
|
|
else ifeq ($(ARM), y)
|
|
PLATCG := codegen_backend_arm.o codegen_backend_arm_ops.o codegen_backend_arm_uops.o
|
|
else
|
|
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
|
|
|
|
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)
|
|
PLATCG := codegen_x86-64.o codegen_accumulate_x86-64.o
|
|
else
|
|
PLATCG := codegen_x86.o codegen_accumulate_x86.o
|
|
endif
|
|
|
|
DYNARECOBJ := codegen.o \
|
|
codegen_ops.o $(PLATCG)
|
|
endif
|
|
|
|
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)
|
|
OPTS += -DUSE_NEW_DYNAREC
|
|
RFLAGS += -DUSE_NEW_DYNAREC
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(WX), y)
|
|
OPTS += -DUSE_WX $(WX_FLAGS)
|
|
LIBS += $(WX_LIBS)
|
|
UIOBJ := wx_main.o wx_ui.o wx_stbar.o wx_render.o
|
|
else
|
|
UIOBJ := win_ui.o win_stbar.o \
|
|
win_sdl.o \
|
|
win_dialog.o win_about.o \
|
|
win_settings.o win_devconf.o win_snd_gain.o win_specify_dim.o \
|
|
win_new_floppy.o win_jsconf.o win_media_menu.o
|
|
endif
|
|
|
|
ifeq ($(OPENAL), y)
|
|
OPTS += -DUSE_OPENAL
|
|
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 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 ($(VNC), y)
|
|
OPTS += -DUSE_VNC
|
|
RFLAGS += -DUSE_VNC
|
|
ifneq ($(VNC_PATH), )
|
|
OPTS += -I$(VNC_PATH)\INCLUDE
|
|
VNCLIB := -L$(VNC_PATH)\LIB
|
|
endif
|
|
VNCLIB += -lvncserver
|
|
VNCOBJ := vnc.o vnc_keymap.o
|
|
endif
|
|
|
|
ifeq ($(DISCORD), y)
|
|
OPTS += -DUSE_DISCORD
|
|
RFLAGS += -DUSE_DISCORD
|
|
DISCORDOBJ := win_discord.o
|
|
endif
|
|
|
|
ifeq ($(MINITRACE), y)
|
|
OPTS += -DMTR_ENABLED
|
|
RFLAGS += -DMTR_ENABLED
|
|
MINITRACEOBJ := minitrace.o
|
|
endif
|
|
|
|
# Options for the DEV branch.
|
|
ifeq ($(DEV_BRANCH), y)
|
|
OPTS += -DDEV_BRANCH
|
|
RFLAGS += -DDEV_BRANCH
|
|
DEVBROBJ :=
|
|
|
|
ifeq ($(AMD_K5), y)
|
|
OPTS += -DUSE_AMD_K5
|
|
endif
|
|
|
|
ifeq ($(CYRIX_6X86), y)
|
|
OPTS += -DUSE_CYRIX_6X86
|
|
endif
|
|
|
|
ifeq ($(GUSMAX), y)
|
|
OPTS += -DUSE_GUSMAX
|
|
endif
|
|
|
|
ifeq ($(HEDAKA), y)
|
|
OPTS += -DUSE_HEDAKA
|
|
endif
|
|
|
|
ifeq ($(I450KX), y)
|
|
OPTS += -DUSE_I450KX
|
|
DEVBROBJ += intel_i450kx.o
|
|
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 ($(NO_SIO), y)
|
|
OPTS += -DNO_SIO
|
|
endif
|
|
|
|
ifeq ($(OPEN_AT), y)
|
|
OPTS += -DUSE_OPEN_AT
|
|
endif
|
|
|
|
ifeq ($(OPENGL), y)
|
|
OPTS += -DUSE_OPENGL
|
|
RFLAGS += -DUSE_OPENGL
|
|
DEVBROBJ += win_opengl.o win_opengl_glslp.o glad.o
|
|
endif
|
|
|
|
ifeq ($(PAS16), y)
|
|
OPTS += -DUSE_PAS16
|
|
DEVBROBJ += snd_pas16.o
|
|
endif
|
|
|
|
ifeq ($(PS2M70T4), y)
|
|
OPTS += -DUSE_PS2M70T4
|
|
endif
|
|
|
|
ifeq ($(S3TRIO3D2X), y)
|
|
OPTS += -DUSE_S3TRIO3D2X
|
|
endif
|
|
|
|
ifeq ($(SIO_DETECT), y)
|
|
OPTS += -DUSE_SIO_DETECT
|
|
DEVBROBJ += sio_detect.o
|
|
endif
|
|
|
|
ifeq ($(M154X), y)
|
|
OPTS += -DUSE_M154X
|
|
DEVBROBJ += ali1531.o ali1543.o
|
|
endif
|
|
|
|
ifeq ($(M6117), y)
|
|
OPTS += -DUSE_M6117
|
|
DEVBROBJ += ali6117.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
|
|
|
|
|
|
endif
|
|
|
|
|
|
# Final versions of the toolchain flags.
|
|
CFLAGS := $(WX_FLAGS) $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) \
|
|
$(AFLAGS) -fomit-frame-pointer -mstackrealign -Wall \
|
|
-fno-strict-aliasing
|
|
|
|
# Add freetyp2 references through pkgconfig
|
|
CFLAGS := $(CFLAGS) `pkg-config --cflags freetype2`
|
|
|
|
CXXFLAGS := $(CFLAGS)
|
|
|
|
|
|
#########################################################################
|
|
# Create the (final) list of objects to build. #
|
|
#########################################################################
|
|
MAINOBJ := 86box.o config.o random.o timer.o io.o acpi.o apm.o dma.o ddma.o \
|
|
nmi.o pic.o pit.o port_92.o ppi.o pci.o mca.o \
|
|
usb.o device.o nvr.o nvr_at.o nvr_ps2.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 \
|
|
808x.o 386.o 386_common.o 386_dynarec.o 386_dynarec_ops.o \
|
|
x86seg.o x87.o x87_timings.o
|
|
|
|
CHIPSETOBJ := acc2168.o cs8230.o ali1217.o ali1429.o ali1489.o et6000.o headland.o intel_82335.o cs4031.o \
|
|
intel_420ex.o intel_4x0.o intel_sio.o intel_piix.o ioapic.o \
|
|
neat.o opti495.o opti822.o opti895.o opti5x7.o scamp.o scat.o via_vt82c49x.o via_vt82c505.o \
|
|
gc100.o \
|
|
sis_85c310.o sis_85c4xx.o sis_85c496.o sis_85c50x.o sis_5511.o sis_5571.o sis_5598.o stpc.o opti283.o opti291.o \
|
|
umc_8886.o umc_8890.o umc_hb4.o \
|
|
via_apollo.o via_pipc.o wd76c10.o vl82c480.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_xt_olivetti.o m_tandy.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_5.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
|
|
|
|
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 \
|
|
vpc2007.o clock_ics9xxx.o isapnp.o \
|
|
i2c.o i2c_gpio.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
|
|
|
|
SIOOBJ := sio_acc3221.o \
|
|
sio_f82c710.o sio_82091aa.o sio_fdc37c651.o \
|
|
sio_fdc37c661.o sio_fdc37c66x.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_sff8038i.o
|
|
|
|
MINIVHDOBJ := cwalk.o libxml2_encoding.o minivhd_convert.o \
|
|
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.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
|
|
|
|
PRINTOBJ := png.o prt_cpmap.o \
|
|
prt_escp.o prt_text.o prt_ps.o
|
|
|
|
SNDOBJ := sound.o \
|
|
openal.o \
|
|
snd_opl.o snd_opl_nuked.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 midi_system.o \
|
|
snd_speaker.o \
|
|
snd_pssj.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_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 := 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_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_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_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
|
|
|
|
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_thread.o \
|
|
win_cdrom.o win_keyboard.o \
|
|
win_crashdump.o win_midi.o \
|
|
win_mouse.o
|
|
|
|
ifeq ($(DINPUT), y)
|
|
PLATOBJ += win_joystick.o
|
|
else
|
|
PLATOBJ += win_joystick_rawinput.o
|
|
endif
|
|
|
|
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) \
|
|
$(DISCORDOBJ) $(MINITRACEOBJ)
|
|
ifdef EXOBJ
|
|
OBJ += $(EXOBJ)
|
|
endif
|
|
|
|
LIBS := -mwindows -lcomctl32 \
|
|
-lopenal -lole32
|
|
|
|
ifeq ($(VNC), y)
|
|
LIBS += $(VNCLIB) -lws2_32
|
|
endif
|
|
ifneq ($(WX), n)
|
|
LIBS += $(WX_LIBS) -lm
|
|
endif
|
|
LIBS += -lpng -lz -lwsock32 -lshell32 -liphlpapi -lpsapi -lSDL2 -limm32 -lhid -lsetupapi -loleaut32 -luxtheme -lversion -lwinmm -static -lstdc++
|
|
ifneq ($(X64), y)
|
|
ifneq ($(ARM64), y)
|
|
LIBS += -Wl,--large-address-aware
|
|
endif
|
|
endif
|
|
ifeq ($(ARM64), y)
|
|
LIBS += -lgcc
|
|
endif
|
|
ifeq ($(DINPUT), y)
|
|
LIBS += -ldinput8
|
|
endif
|
|
|
|
LIBS += -static
|
|
|
|
# Build module rules.
|
|
ifeq ($(AUTODEP), y)
|
|
%.o: %.c
|
|
@echo $<
|
|
@$(CC) $(CFLAGS) $(DEPS) -c $<
|
|
|
|
%.o: %.cc
|
|
@echo $<
|
|
@$(CPP) $(CXXFLAGS) $(DEPS) -c $<
|
|
|
|
%.o: %.cpp
|
|
@echo $<
|
|
@$(CPP) $(CXXFLAGS) $(DEPS) -c $<
|
|
else
|
|
%.o: %.c
|
|
@echo $<
|
|
@$(CC) $(CFLAGS) -c $<
|
|
|
|
%.o: %.cc
|
|
@echo $<
|
|
@$(CPP) $(CXXFLAGS) -c $<
|
|
|
|
%.o: %.cpp
|
|
@echo $<
|
|
@$(CPP) $(CXXFLAGS) -c $<
|
|
|
|
%.d: %.c $(wildcard $*.d)
|
|
@echo $<
|
|
@$(CC) $(CFLAGS) $(DEPS) -E $< >/dev/null
|
|
|
|
%.d: %.cc $(wildcard $*.d)
|
|
@echo $<
|
|
@$(CPP) $(CXXFLAGS) $(DEPS) -E $< >/dev/null
|
|
|
|
%.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
|
|
|
|
all: $(PROG).exe
|
|
|
|
|
|
86Box.res: 86Box.rc
|
|
@echo Processing $<
|
|
@$(WINDRES) $(RFLAGS) $(EXTRAS) -i $< -o 86Box.res
|
|
|
|
$(PROG).exe: $(OBJ) 86Box.res
|
|
@echo Linking $(PROG).exe ..
|
|
@$(CC) $(LDFLAGS) -o $(PROG).exe $(OBJ) 86Box.res $(LIBS) -pipe
|
|
ifneq ($(DEBUG), y)
|
|
@$(STRIP) $(PROG).exe
|
|
endif
|
|
|
|
pcap_if.res: pcap_if.rc
|
|
@echo Processing $<
|
|
@$(WINDRES) $(RFLAGS) -i $< -o pcap_if.res
|
|
|
|
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)
|
|
@$(STRIP) pcap_if.exe
|
|
endif
|
|
|
|
hello.exe: hello.o
|
|
$(CXX) $(LDFLAGS) -o hello.exe hello.o $(WXLIBS) $(LIBS)
|
|
ifneq ($(DEBUG), y)
|
|
@$(STRIP) hello.exe
|
|
endif
|
|
|
|
|
|
clean:
|
|
@echo Cleaning objects..
|
|
@-rm -f *.o 2>/dev/null
|
|
@-rm -f *.res 2>/dev/null
|
|
|
|
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:
|
|
@-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.
|