# # 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, # Fred N. van Kempen, # # 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 596B 596B := y endif ifndef AMD_K5 AMD_K5 := y endif ifndef AMI386X AMI386SX := y endif ifndef CL5422 CL5422 := y endif ifndef CYRIX_6X86 CYRIX_6X86 := y endif ifndef HEADAKA HEDAKA := y endif ifndef LASERXT LASERXT := y endif ifndef MGA MGA := y endif ifndef OPEN_AT OPEN_AT := y endif ifndef PAS16 PAS16 := n endif ifndef PORTABLE3 PORTABLE3 := y endif ifndef PS1M2133 PS1M2133 := y endif ifndef PS2M70T4 PS2M70T4 := y endif ifndef VECTRA54 VECTRA54 := y endif ifndef SIEMENS SIEMENS := y endif ifndef STPC STPC := y endif ifndef VGAWONDER VGAWONDER := y endif ifndef VIRTUALPC VIRTUALPC := y endif ifndef VNC VNC := y endif ifndef WIN471 WIN471 := y endif ifndef XL24 XL24 := y endif ifndef NO_SIO NO_SIO := y endif ifndef GUSMAX GUSMAX := y endif ifndef DELLS4 DELLS4 := y endif else ifndef DEBUG DEBUG := n endif ifndef DEV_BRANCH DEV_BRANCH := n endif ifndef 596B 596B := n endif ifndef AMD_K5 AMD_K5 := n endif ifndef AMI386SX AMI386SX := n endif ifndef CL5422 CL5422 := n endif ifndef CYRIX_6X86 CYRIX_6X86 := n endif ifndef HEDAKA HEDAKA := n endif ifndef LASERXT LASERXT := n endif ifndef MGA MGA := n endif ifndef OPEN_AT OPEN_AT := n endif ifndef PAS16 PAS16 := n endif ifndef PORTABLE3 PORTABLE3 := n endif ifndef PS1M2133 PS1M2133 := n endif ifndef PS2M70T4 PS2M70T4 := n endif ifndef VECTRA54 VECTRA54 := n endif ifndef SIEMENS SIEMENS := n endif ifndef STPC STPC := y endif ifndef VGAWONDER VGAWONDER := n endif ifndef VIRTUALPC VIRTUALPC := y endif ifndef VNC VNC := n endif ifndef WIN471 WIN471 := n endif ifndef XL24 XL24 := n endif ifndef NO_SIO NO_SIO := n endif ifndef GUSMAX GUSMAX := n endif ifndef DELLS4 DELLS4 := 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) cpu \ cdrom chipset device disk 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 CPP := ${TOOL_PREFIX}g++ CC := ${TOOL_PREFIX}gcc WINDRES := windres STRIP := strip ifeq ($(ARM64), y) CPP := aarch64-w64-mingw32-g++ CC := aarch64-w64-mingw32-gcc WINDRES := aarch64-w64-mingw32-windres STRIP := aarch64-w64-mingw32-strip endif ifeq ($(ARM), y) CPP := armv7-w64-mingw32-g++ CC := armv7-w64-mingw32-gcc WINDRES := armv7-w64-mingw32-windres STRIP := armv7-w64-mingw32-strip endif DEPS = -MMD -MF $*.d -c $< DEPFILE := win/.depends # Set up the correct toolchain flags. OPTS := $(EXTRAS) $(STUFF) OPTS += -Iinclude \ -iquote $(CODEGEN) -iquote cpu ifdef EXFLAGS OPTS += $(EXFLAGS) endif ifdef EXINC OPTS += -I$(EXINC) endif ifeq ($(X64), y) ifeq ($(OPTIM), y) DFLAGS := -march=native else DFLAGS := endif else ifeq ($(OPTIM), y) DFLAGS := -march=native 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 ifeq ($(RELEASE), y) OPTS += -DRELEASE_BUILD RFLAGS += -DRELEASE_BUILD endif ifeq ($(VRAMDUMP), y) OPTS += -DENABLE_VRAM_DUMP RFLAGS += -DENABLE_VRAM_DUMP endif ifeq ($(NOHOOK), y) OPTS += -DNO_KEYBOARD_HOOK RFLAGS += -DNO_KEYBOARD_HOOK 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_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 # Options for the DEV branch. ifeq ($(DEV_BRANCH), y) OPTS += -DDEV_BRANCH DEVBROBJ := ifeq ($(AMD_K5), y) OPTS += -DUSE_AMD_K5 endif ifeq ($(AMI386SX), y) OPTS += -DUSE_AMI386SX endif ifeq ($(CL5422), y) OPTS += -DUSE_CL5422 endif ifeq ($(CYRIX_6X86), y) OPTS += -DUSE_CYRIX_6X86 endif ifeq ($(HEDAKA), y) OPTS += -DUSE_HEDAKA 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 ($(PORTABLE3), y) OPTS += -DUSE_PORTABLE3 endif ifeq ($(PS1M2133), y) OPTS += -DUSE_PS1M2133 endif ifeq ($(PS2M70T4), y) OPTS += -DUSE_PS2M70T4 endif ifeq ($(VECTRA54), y) OPTS += -DUSE_VECTRA54 endif ifeq ($(SIEMENS), y) OPTS += -DUSE_SIEMENS endif ifeq ($(STPC), y) OPTS += -DUSE_STPC DEVBROBJ += stpc.o endif ifeq ($(596B), y) OPTS += -DUSE_596B endif ifeq ($(VGAWONDER), y) OPTS += -DUSE_VGAWONDER endif ifeq ($(VIRTUALPC), y) OPTS += -DUSE_VIRTUALPC DEVBROBJ += vpc2007.o endif ifeq ($(WIN471), y) OPTS += -DUSE_WIN471 endif ifeq ($(XL24), y) OPTS += -DUSE_XL24 endif ifeq ($(NO_SIO), y) OPTS += -DNO_SIO endif ifeq ($(GUSMAX), y) OPTS += -DUSE_GUSMAX endif ifeq ($(DELLS4), y) OPTS += -DUSE_DELLS4 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 := pc.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 intel_flash.o mem.o rom.o spd.o sst_flash.o CPUOBJ := cpu.o cpu_table.o \ 808x.o 386.o 386_common.o 386_dynarec.o 386_dynarec_ops.o $(CGTOBJ) \ x86seg.o x87.o x87_timings.o \ $(DYNARECOBJ) CHIPSETOBJ := acc2168.o cs8230.o ali1429.o headland.o i82335.o cs4031.o \ intel_420ex.o intel_4x0.o intel_sio.o intel_piix.o ioapic.o \ neat.o opti495.o opti895.o opti5x7.o scamp.o scat.o via_vt82c49x.o via_vt82c505.o \ sis_85c310.o sis_85c471.o sis_85c496.o opti283.o opti291.o \ via_apollo.o via_vpx.o via_vt82c586b.o via_vt82c596b.o wd76c10.o vl82c480.o \ amd640.o MCHOBJ := machine.o machine_table.o \ m_xt.o m_xt_compaq.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_olivetti_m24.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_s7.o m_at_sockets7.o \ m_at_socket8.o m_at_slot1.o m_at_slot2.o m_at_socket370.o DEVOBJ := bugger.o hwm.o hwm_lm75.o hwm_lm78.o hwm_gl518sm.o ibm_5161.o isamem.o isartc.o lpt.o postcard.o serial.o \ smbus.o smbus_piix4.o \ keyboard.o \ keyboard_xt.o keyboard_at.o \ mouse.o \ mouse_bus.o \ mouse_serial.o mouse_ps2.o SIOOBJ := sio_acc3221.o \ sio_f82c710.o sio_82091aa.o \ sio_fdc37c661.o sio_fdc37c66x.o sio_fdc37c669.o sio_fdc37c93x.o \ sio_pc87306.o sio_pc87307.o sio_pc87309.o sio_pc87332.o \ sio_w83787f.o \ sio_w83877f.o sio_w83977f.o \ sio_um8669f.o FDDOBJ := fdd.o fdc.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 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_spock.o NETOBJ := network.o \ net_pcap.o \ net_slirp.o \ bootp.o ip_icmp.o misc.o socket.o tcp_timer.o cksum.o \ ip_input.o queue.o tcp_input.o debug.o ip_output.o \ sbuf.o tcp_output.o udp.o if.o mbuf.o slirp.o tcp_subr.o \ net_dp8390.o \ net_3c503.o net_ne2000.o \ net_pcnet.o net_wd8003.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_azt2316a.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_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_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_ti_cf62011.o \ vid_tvga.o \ vid_tgui9440.o vid_tkd8001_ramdac.o \ vid_att20c49x_ramdac.o \ vid_s3.o vid_s3_virge.o \ vid_sdac_ramdac.o \ vid_voodoo.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) \ $(NETOBJ) $(PRINTOBJ) $(SCSIOBJ) $(SIOOBJ) $(SNDOBJ) $(VIDOBJ) \ $(PLATOBJ) $(UIOBJ) $(FSYNTHOBJ) $(MUNTOBJ) $(DEVBROBJ) \ $(DISCORDOBJ) 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 -lversion -lwinmm -static -lstdc++ ifneq ($(X64), y) LIBS += -Wl,--large-address-aware 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 $< >NUL %.d: %.cc $(wildcard $*.d) @echo $< @$(CPP) $(CXXFLAGS) $(DEPS) -E $< >NUL %.d: %.cpp $(wildcard $*.d) @echo $< @$(CPP) $(CXXFLAGS) $(DEPS) -E $< >NUL 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>NUL @-rm -f *.res 2>NUL clobber: clean @echo Cleaning executables.. @-rm -f *.d 2>NUL @-rm -f *.exe 2>NUL # @-rm -f $(DEPFILE) 2>NUL ifneq ($(AUTODEP), y) depclean: @-rm -f $(DEPFILE) 2>NUL @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.