This repository has been archived on 2025-05-24. You can view files and clone it, but cannot push or open issues or pull requests.
Files
VARCem/src/win/msvc/Makefile.VC
2018-05-06 22:51:54 -04:00

716 lines
17 KiB
Makefile

#
# VARCem Virtual ARchaeological Computer EMulator.
# An emulator of (mostly) x86-based PC systems and devices,
# using the ISA,EISA,VLB,MCA and PCI system buses, roughly
# spanning the era between 1981 and 1995.
#
# This file is part of the VARCem Project.
#
# Makefile for Windows using Visual Studio 2015.
#
# Version: @(#)Makefile.VC 1.0.25 2018/05/06
#
# Author: Fred N. van Kempen, <decwiz@yahoo.com>
#
# Copyright 2017,2018 Fred N. van Kempen.
#
# Redistribution and use in source and binary forms, with
# or without modification, are permitted provided that the
# following conditions are met:
#
# 1. Redistributions of source code must retain the entire
# above notice, this list of conditions and the following
# disclaimer.
#
# 2. Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the
# following disclaimer in the documentation and/or other
# materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names
# of its contributors may be used to endorse or promote
# products derived from this software without specific
# prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Various compile-time options.
ifndef STUFF
STUFF :=
endif
# Add feature selections here.
ifndef EXTRAS
EXTRAS :=
endif
# Defaults for several build options (possibly defined in a chained file.)
ifndef AUTODEP
AUTODEP := n
endif
ifndef CRASHDUMP
CRASHDUMP := n
endif
ifndef CROSS
CROSS := n
endif
ifndef DEBUG
DEBUG := n
endif
ifndef PROFILER
PROFILER := n
endif
ifndef OPTIM
OPTIM := n
endif
ifndef RELEASE
RELEASE := n
endif
ifndef X64
X64 := n
endif
ifndef DYNAREC
DYNAREC := y
endif
ifndef WX
WX := n
endif
ifndef USB
USB := n
endif
ifndef VNC
VNC := n
endif
ifndef RDP
RDP := n
endif
ifndef PNG
PNG := n
endif
ifndef DEV_BUILD
DEV_BUILD := n
endif
ifndef DEV_BRANCH
DEV_BRANCH := n
endif
ifndef AMD_K
AMD_K := n
endif
ifndef LASERXT
LASERXT := n
endif
ifndef PORTABLE3
PORTABLE3 := n
endif
ifndef GREENB
GREENB := n
endif
ifndef I686
I686 := n
endif
ifndef OPENAL
OPENAL := y
endif
ifndef FLUIDSYNTH
FLUIDSYNTH := y
endif
ifndef MUNT
MUNT := y
endif
ifndef PAS16
PAS16 := n
endif
ifndef STEALTH32
STEALTH32 := n
endif
ifndef XL24
XL24 := n
endif
ifndef WONDER
WONDER := n
endif
# Name of the executable.
ifndef PROG
ifneq ($(WX), n)
PROG := WxVARCem
else
PROG := VARCem
endif
endif
ifeq ($(DEV_BUILD), y)
CRASHDUMP := y
DEV_BRANCH := y
AMD_K := y
LASERXT := y
PORTABLE3 := y
GREENB := y
I686 := y
PAS16 := y
STEALTH32 := y
XL24 := y
WONDER := y
endif
# Where is the the WinPcap SDK?
WPCAP = "C:\Program Files (x86)\WinPcap"
WPCAPINC = -I$(WPCAP)\Include
WPCAPLIB = $(WPCAP)\Lib
# 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 := -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 := -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) . cpu \
devices \
devices/cdrom devices/disk devices/floppy \
devices/floppy/lzf devices/input devices/input/game \
devices/network devices/network/slirp devices/ports \
devices/sio devices/system devices/scsi \
devices/sound \
devices/sound/munt devices/sound/munt/c_interface \
devices/sound/munt/sha1 devices/sound/munt/srchelper \
devices/sound/resid-fp \
devices/video \
machines ui win
#
# Select the required build environment.
#
VCOPTS := -D_CRT_SECURE_NO_WARNINGS -D__MSC__
ifeq ($(X64), y)
CPP := cl -nologo -arch:amd64
CC := cl -nologo -arch:amd64
ARCH := x64
else
CPP := cl -nologo
CC := cl -nologo
ARCH := x86
endif
PREPROC := cl -nologo -EP
MCPP := mcpp.exe
LINK := link -nologo
WINDRES := rc -nologo -r
SYSINC := -Iwin/msvc/Include -Iwin/mingw/include
SYSLIB :=
DEPS = -MMD -MF $*.d
DEPFILE := win\.depends-msvc
# Set up the correct toolchain flags.
OPTS := $(EXTRAS) $(STUFF) $(VCOPTS) \
-D_USE_MATH_DEFINES \
-D_CRT_NONSTDC_NO_DEPRECATE \
-D_WINSOCK_DEPRECATED_NO_WARNINGS \
-D_CRT_SECURE_NO_WARNINGS \
$(WPCAPINC) $(SYSINC)
AFLAGS := /arch:SSE2
RFLAGS :=
COPTS := -W3
CXXOPTS := -EHsc
DOPTS :=
LOPTS := -LIBPATH:win\msvc\Lib\$(ARCH)
LOPTS_C := -SUBSYSTEM:CONSOLE,5.01
LOPTS_W := -SUBSYSTEM:WINDOWS,5.01
ifdef BUILD
OPTS += -DBUILD=$(BUILD)
endif
ifdef COMMIT
OPTS += -DCOMMIT=0x$(COMMIT)
endif
ifdef UPSTREAM
OPTS += -DUPSTREAM=0x$(UPSTREAM)
endif
ifdef EXFLAGS
OPTS += $(EXFLAGS)
endif
ifdef EXINC
OPTS += -I$(EXINC)
endif
OPTS += $(SYSINC)
ifeq ($(OPTIM), y)
DOPTS := -march=native
endif
ifeq ($(DEBUG), y)
OPTS += -D_DEBUG
DOPTS += -MTd -Gs -Zi
ROPTS += -D_DEBUG
LOPTS += -debug
AOPTIM :=
ifndef COPTIM
COPTIM := -Od
endif
else
DOPTS := -MT -Gs
ifndef COPTIM
COPTIM := -O2
endif
endif
ifeq ($(CRASHDUMP), y)
OPTS += -DUSE_CRASHDUMP
endif
ifeq ($(RELEASE), y)
OPTS += -DRELEASE_BUILD
RFLAGS += -DRELEASE_BUILD
endif
ifeq ($(PROFILER), y)
LOPTS += /MAP
endif
ifeq ($(VRAMDUMP), y)
OPTS += -DENABLE_VRAM_DUMP
RFLAGS += -DENABLE_VRAM_DUMP
endif
ifeq ($(X64), y)
PLATCG := codegen_x86-64.obj
CGOPS := codegen_ops_x86-64.h
VCG := vid_voodoo_codegen_x86-64.h
else
PLATCG := codegen_x86.obj
CGOPS := codegen_ops_x86.h
VCG := vid_voodoo_codegen_x86.h
endif
LIBS := ddraw.lib dinput8.lib dxguid.lib d3d9.lib d3dx9.lib \
comctl32.lib winmm.lib comdlg32.lib advapi32.lib \
gdi32.lib shell32.lib user32.lib kernel32.lib \
wsock32.lib iphlpapi.lib psapi.lib
ifeq ($(DEBUG), y)
LIBS += libcmtd.lib libvcruntimed.lib libucrtd.lib
endif
# Optional modules.
ifeq ($(DYNAREC), y)
OPTS += -DUSE_DYNAREC
RFLAGS += -DUSE_DYNAREC
DYNARECOBJ := 386_dynarec_ops.obj \
codegen.obj \
codegen_ops.obj \
codegen_timing_common.obj codegen_timing_486.obj \
codegen_timing_686.obj codegen_timing_pentium.obj \
codegen_timing_winchip.obj $(PLATCG)
endif
ifneq ($(WX), n)
OPTS += -DUSE_WX $(WX_FLAGS)
LIBS += $(WX_LIBS) -lm
UIOBJ := wx_main.obj wx_ui.obj wx_stbar.obj wx_render.obj
else
UIOBJ := win_ui.obj \
win_ddraw.obj win_d3d.obj \
win_dialog.obj win_about.obj win_status.obj \
win_settings.obj win_devconf.obj win_snd_gain.obj \
win_new_floppy.obj
endif
ifeq ($(OPENAL), y)
OPTS += -DUSE_OPENAL
endif
ifeq ($(FLUIDSYNTH), y)
OPTS += -DUSE_FLUIDSYNTH
FSYNTHOBJ := midi_fluidsynth.obj
endif
ifeq ($(MUNT), y)
OPTS += -DUSE_MUNT
MUNTOBJ := midi_mt32.obj \
Analog.obj BReverbModel.obj File.obj FileStream.obj LA32Ramp.obj \
LA32FloatWaveGenerator.obj LA32WaveGenerator.obj \
MidiStreamParser.obj Part.obj Partial.obj PartialManager.obj \
Poly.obj ROMInfo.obj SampleRateConverter_dummy.obj Synth.obj \
Tables.obj TVA.obj TVF.obj TVP.obj sha1.obj c_interface.obj
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.obj vnc_keymap.obj
LIBS += $(VNCLIB) -lws2_32
endif
ifeq ($(RDP), y)
OPTS += -DUSE_RDP
RFLAGS += -DUSE_RDP
ifneq ($(RDP_PATH), )
OPTS += -I$(RDP_PATH)\INCLUDE
RDPLIB := -L$(RDP_PATH)\LIB
endif
RDPLIB += -lrdp
RDPOBJ := rdp.obj
LIBS += $(RDPLIB)
endif
ifeq ($(PNG), y)
OPTS += -DUSE_PNG
RFLAGS += -DUSE_PNG
LIBS += -lpng -lz
endif
# Options for the DEV branch.
ifeq ($(DEV_BRANCH), y)
OPTS += -DDEV_BRANCH
DEVBROBJ :=
ifeq ($(AMD_K), y)
OPTS += -DUSE_AMD_K
endif
ifeq ($(LASERXT), y)
OPTS += -DUSE_LASERXT
DEVBROBJ += m_xt_laserxt.obj
endif
ifeq ($(PORTABLE3), y)
OPTS += -DUSE_PORTABLE3
endif
ifeq ($(GREENB), y)
OPTS += -DUSE_GREENB
DEVBROBJ += m_at_4gpv31.obj
endif
ifeq ($(I686), y)
OPTS += -DUSE_I686
DEVBROBJ += m_at_440fx.obj
endif
ifeq ($(STEALTH32), y)
OPTS += -DUSE_STEALTH32
DEVBROBJ += vid_icd2061.obj
endif
ifeq ($(XL24), y)
OPTS += -DUSE_XL24
endif
ifeq ($(WONDER), y)
OPTS += -DUSE_WONDER
endif
ifeq ($(PAS16), y)
OPTS += -DUSE_PAS16
DEVBROBJ += snd_pas16.obj
endif
endif
# Options for works-in-progress.
ifndef SERIAL
SERIAL := serial.obj
endif
# Final versions of the toolchain flags.
LDFLAGS := $(LOPTS)
CFLAGS := $(WX_FLAGS) $(OPTS) $(COPTS) $(DOPTS) $(AOPTIM) $(AFLAGS)
CXXFLAGS := $(WX_FLAGS) $(OPTS) $(CXXOPTS) $(COPTS) $(DOPTS) $(AOPTIM) $(AFLAGS)
#########################################################################
# Create the (final) list of objects to build. #
#########################################################################
MAINOBJ := pc.obj config.obj \
random.obj timer.obj io.obj dma.obj nmi.obj pic.obj \
pit.obj ppi.obj pci.obj mca.obj mcr.obj mem.obj \
memregs.obj rom.obj rom_load.obj device.obj nvr.obj \
nvr_at.obj nvr_ps2.obj $(VNCOBJ) $(RDPOBJ)
UIOBJ += ui_main.obj ui_new_floppy.obj ui_stbar.obj
INTELOBJ := intel.obj \
intel_flash.obj \
intel_sio.obj \
intel_piix.obj intel_piix4.obj
CPUOBJ := cpu.obj cpu_table.obj \
808x.obj 386.obj x86seg.obj x87.obj \
386_dynarec.obj $(DYNARECOBJ)
MCHOBJ := machine.obj machine_table.obj \
m_xt.obj m_xt_compaq.obj \
m_xt_t1000.obj m_xt_t1000_vid.obj \
m_xt_xi8088.obj \
m_pcjr.obj \
m_amstrad.obj m_europc.obj \
m_olivetti_m24.obj m_tandy.obj \
m_at.obj \
m_at_ali1429.obj m_at_commodore.obj \
m_at_neat.obj m_at_headland.obj \
m_at_t3100e.obj m_at_t3100e_vid.obj \
m_ps1.obj m_ps1_hdc.obj \
m_ps2_isa.obj m_ps2_mca.obj \
m_at_opti495.obj m_at_scat.obj \
m_at_compaq.obj m_at_wd76c10.obj \
m_at_sis_85c471.obj m_at_sis_85c496.obj \
m_at_430lx_nx.obj m_at_430fx.obj \
m_at_430hx.obj m_at_430vx.obj
DEVOBJ := bugger.obj \
game.obj game_dev.obj \
parallel.obj parallel_dev.obj \
$(SERIAL) \
sio_fdc37c66x.obj sio_fdc37c669.obj sio_fdc37c93x.obj \
sio_pc87306.obj sio_w83877f.obj sio_um8669f.obj \
keyboard.obj \
keyboard_xt.obj keyboard_at.obj \
mouse.obj \
mouse_serial.obj mouse_ps2.obj mouse_bus.obj \
joystick.obj \
js_standard.obj js_ch_fs_pro.obj \
js_sw_pad.obj js_tm_fcs.obj
FDDOBJ := fdc.obj \
fdd.obj \
fdd_common.obj fdd_86f.obj \
fdd_fdi.obj fdi2raw.obj lzf_c.obj lzf_d.obj \
fdd_imd.obj fdd_img.obj fdd_json.obj fdd_td0.obj
HDDOBJ := hdd.obj \
hdd_image.obj hdd_table.obj \
hdc.obj \
hdc_st506_xt.obj hdc_st506_at.obj \
hdc_esdi_at.obj hdc_esdi_mca.obj \
hdc_ide_ata.obj hdc_ide_xta.obj hdc_xtide.obj
CDROMOBJ := cdrom.obj \
cdrom_dosbox.obj cdrom_image.obj cdrom_null.obj
ZIPOBJ := zip.obj
ifeq ($(USB), y)
USBOBJ := usb.obj
endif
SCSIOBJ := scsi.obj \
scsi_bus.obj scsi_device.obj \
scsi_disk.obj \
scsi_x54x.obj \
scsi_aha154x.obj scsi_buslogic.obj \
scsi_ncr5380.obj scsi_ncr53c810.obj
NETOBJ := network.obj \
net_pcap.obj \
net_slirp.obj \
bootp.obj ip_icmp.obj misc.obj socket.obj tcp_timer.obj cksum.obj \
ip_input.obj queue.obj tcp_input.obj debug.obj ip_output.obj \
sbuf.obj tcp_output.obj udp.obj if.obj mbuf.obj slirp.obj tcp_subr.obj \
net_ne2000.obj
SNDOBJ := sound.obj \
sound_dev.obj \
openal.obj \
snd_opl.obj snd_dbopl.obj \
dbopl.obj nukedopl.obj \
snd_resid.obj \
convolve.obj convolve-sse.obj envelope.obj extfilt.obj \
filter.obj pot.obj sid.obj voice.obj wave6581__ST.obj \
wave6581_P_T.obj wave6581_PS_.obj wave6581_PST.obj \
wave8580__ST.obj wave8580_P_T.obj wave8580_PS_.obj \
wave8580_PST.obj wave.obj \
midi.obj midi_system.obj \
snd_speaker.obj \
snd_lpt_dac.obj snd_lpt_dss.obj \
snd_adlib.obj snd_adlibgold.obj snd_ad1848.obj snd_audiopci.obj \
snd_cms.obj \
snd_gus.obj \
snd_sb.obj snd_sb_dsp.obj \
snd_emu8k.obj snd_mpu401.obj \
snd_sn76489.obj snd_ssi2001.obj \
snd_wss.obj \
snd_ym7128.obj
VIDOBJ := video.obj \
video_dev.obj \
vid_cga.obj vid_cga_comp.obj \
vid_compaq_cga.obj \
vid_mda.obj \
vid_hercules.obj vid_herculesplus.obj vid_incolor.obj \
vid_colorplus.obj \
vid_genius.obj \
vid_wy700.obj \
vid_ega.obj vid_ega_render.obj \
vid_svga.obj vid_svga_render.obj \
vid_vga.obj \
vid_ati_eeprom.obj \
vid_ati18800.obj vid_ati28800.obj \
vid_ati_mach64.obj vid_ati68860_ramdac.obj \
vid_ics2595.obj \
vid_cl54xx.obj \
vid_et4000.obj vid_sc1502x_ramdac.obj \
vid_et4000w32.obj vid_stg_ramdac.obj \
vid_oak_oti.obj \
vid_paradise.obj \
vid_ti_cf62011.obj \
vid_tvga.obj \
vid_tgui9440.obj vid_tkd8001_ramdac.obj \
vid_s3.obj vid_s3_virge.obj \
vid_sdac_ramdac.obj \
vid_voodoo.obj
PLATOBJ := win.obj \
win_dynld.obj win_thread.obj \
win_cdrom.obj win_cdrom_ioctl.obj win_keyboard.obj \
win_mouse.obj win_joystick.obj win_midi.obj
ifeq ($(CRASHDUMP), y)
PLATOBJ += win_crashdump.obj
endif
OBJ := $(MAINOBJ) $(INTELOBJ) $(CPUOBJ) $(MCHOBJ) $(DEVOBJ) \
$(FDDOBJ) $(CDROMOBJ) $(ZIPOBJ) $(HDDOBJ) \
$(USBOBJ) $(NETOBJ) $(SCSIOBJ) $(SNDOBJ) $(VIDOBJ) \
$(UIOBJ) $(PLATOBJ) $(FSYNTHOBJ) $(MUNTOBJ) $(DEVBROBJ)
ifdef EXOBJ
OBJ += $(EXOBJ)
endif
# Build module rules.
ifeq ($(AUTODEP), y)
%.obj: %.c
@$(CC) $(CFLAGS) -Fo$@ -c $<
@$(MCPP) $(OPTS) $(DEPS) $<
%.obj: %.cpp
@$(CPP) $(CXXFLAGS) -Fo$@ -c $<
@$(MCPP) $(OPTS) $(DEPS) $<
else
%.obj: %.c
@$(CC) $(CFLAGS) -Fo$@ -c $<
%.obj: %.cpp
@$(CPP) $(CXXFLAGS) -Fo$@ -c $<
%.d: %.c $(wildcard $*.d)
$(MCPP) $(OPTS) $(DEPS) $< >NUL
%.d: %.cpp $(wildcard $*.d)
$(MCPP) $(OPTS) $(DEPS) $< >NUL
endif
all: $(PREBUILD) $(PROG).exe pcap_if.exe $(POSTBUILD)
VARCem.res: win/VARCem.rc win/VARCem.mpp
@echo Generating Manifest file..
@del win\VARCem.manifest 2>NUL
@$(PREPROC) win\VARCem.mpp >win\VARCem.manifest 2>NUL
@echo Processing $<
@$(WINDRES) $(RFLAGS) $(EXTRAS) -fo$@ $<
$(PROG).exe: $(OBJ) VARCem.res
@echo Linking $(PROG).exe ..
@$(LINK) $(LDFLAGS) $(LOPTS_W) -OUT:$(PROG).exe \
$(OBJ) VARCem.res $(LIBS)
pcap_if.res: pcap_if.rc
@echo Processing $<
@$(WINDRES) $(RFLAGS) -fo$@ $<
pcap_if.exe: pcap_if.obj win_dynld.obj pcap_if.res
@echo Linking pcap_if.exe ..
@$(LINK) $(LDFLAGS) $(LOPTS_C) -OUT:pcap_if.exe \
pcap_if.obj win_dynld.obj pcap_if.res
hello.exe: hello.obj
$(LINK) $(LDFLAGS) $(LOPTS_C) -OUT:hello.exe \
hello.obj $(WXLIBS) $(LIBS)
clean:
@echo Cleaning objects..
@del *.obj 2>NUL
@del *.res 2>NUL
clobber: clean
@echo Cleaning executables..
@del *.d 2>NUL
@del *.exe 2>NUL
ifeq ($(DEBUG), y)
@del *.ilk 2>NUL
@del *.pdb 2>NUL
endif
ifeq ($(PROFILER), y)
@del *.map 2>NUL
endif
@del win\*.manifest 2>NUL
# @del $(DEPFILE) 2>NUL
ifneq ($(AUTODEP), y)
depclean:
@del $(DEPFILE) 2>NUL
@echo Creating dependencies..
@echo # Run "make depends" to re-create this file. >$(DEPFILE)
depends: DEPOBJ=$(OBJ:%.obj=%.d)
depends: depclean $(OBJ:%.obj=%.d)
@-cat $(DEPOBJ) >>$(DEPFILE)
@del $(DEPOBJ)
$(DEPFILE):
endif
# Module dependencies.
ifeq ($(AUTODEP), y)
#-include $(OBJ:%.obj=%.d) (better, but sloooowwwww)
-include *.d
else
include $(wildcard $(DEPFILE))
endif
# End of Makefile.VS.