# The $(VC5_DIR)/.. and $(VS6_DIR) directories are copies "Microsoft Visual Studio". # # To get a working setup on Linux or other "portable" copies of VS, # the following DLLs have to be copied to the # $(VS6_DIR)/VC98/Bin directory. # # - $(VS6_DIR)/Common/MSDev98/Bin/MSPDB60.DLL # # And to the $(VC5_DIR)/bin directory. # # - $(VC5_DIR)/SharedIDE/bin/MSDIS100.DLL # - $(VC5_DIR)/SharedIDE/bin/MSPDB50.DLL VS6_DIR ?= $(HOME)/VS6 VC6_DIR = $(VS6_DIR)/VC98 VC6_BIN_DIR = $(VC6_DIR)/Bin VC6_INC_DIR = $(VC6_DIR)/Include VC6_LIB_DIR = $(VC6_DIR)/Lib VC5_DIR ?= $(HOME)/DevStudio_5.10/VC VC5_BIN_DIR = $(VC5_DIR)/bin VC5_INC_DIR = $(VC5_DIR)/include VC5_LIB_DIR = $(VC5_DIR)/lib IDE_DIR ?= $(VS6_DIR)/Common/MSDev98 IDE_BIN_DIR = $(IDE_DIR)/bin ifeq ($(OS),Windows_NT) CL5 = $(VC5_BIN_DIR)/CL.EXE CL6 = $(VC6_BIN_DIR)/CL.EXE RC = $(IDE_BIN_DIR)/RC.EXE VC5_LINK = $(VC5_BIN_DIR)/link.exe VC6_LINK = $(VC6_BIN_DIR)/link.exe else CL5 = wine $(VC5_BIN_DIR)/CL.EXE CL6 = wine $(VC6_BIN_DIR)/CL.EXE RC = wine $(IDE_BIN_DIR)/RC.EXE VC5_LINK = wine $(VC5_BIN_DIR)/link.exe VC6_LINK = wine $(VC6_BIN_DIR)/link.exe endif ifeq ($(HELLFIRE),1) CL = $(CL5) VC_INC_DIR = $(VC5_INC_DIR) else CL = $(CL6) VC_INC_DIR = $(VC6_INC_DIR) endif CFLAGS=/nologo /c /GX /W3 /O1 /I $(VC_INC_DIR) /FD /Gr /MT /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fp"Diablo.pch" /YX /G5 /Zi /FAs LINKFLAGS=/nologo /subsystem:windows /machine:I386 /incremental:no ifeq ($(HELLFIRE),1) CFLAGS += /D "HELLFIRE" endif ifeq ($(SPAWN),1) CFLAGS += /D "SPAWN" endif ifeq ($(MAKE_BUILD),pdb) ifeq ($(HELLFIRE),1) VC_LINK = $(VC5_LINK) LINKFLAGS += /pdb:"hellfire.pdb" /LIBPATH:$(VC5_LIB_DIR) /debug else VC_LINK = $(VC6_LINK) LINKFLAGS += /pdb:"Diablo.pdb" /LIBPATH:$(VC6_LIB_DIR) /debug endif else VC_LINK = $(VC5_LINK) LINKFLAGS += /LIBPATH:$(VC5_LIB_DIR) endif all: Diablo.exe debug: CFLAGS += /D "_DEBUG" debug: Diablo.exe # fix compilation order to match the VC6 workspace files and exclude local assembly functions DIABLO_SRC=$(sort $(filter-out Source/_asm.cpp Source/_render.cpp Source/render.cpp, $(wildcard Source/*.cpp))) DIABLO_SRC += Source/render.cpp OBJS=$(DIABLO_SRC:.cpp=.obj) Diablo.exe: main_files diablo.res DiabloUI/diabloui.lib 3rdParty/Storm/storm.lib 3rdParty/PKWare/pkware.lib $(VC_LINK) /OUT:$@ $(LINKFLAGS) $(OBJS) diablo.res DiabloUI/diabloui.lib 3rdParty/Storm/storm.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib version.lib 3rdParty/PKWare/pkware.lib DiabloUI/diabloui.lib: make -C DiabloUI 3rdParty/Storm/storm.lib: make -C 3rdParty/Storm 3rdParty/PKWare/pkware.lib: make -C 3rdParty/PKWare # compiles all main source files with once compiler call main_files: $(CL) $(CFLAGS) /FoSource/ $(DIABLO_SRC) %.obj: %.cpp $(CL) $(CFLAGS) /Fo$@ $< diablo.res: Diablo.rc $(RC) /i $(VC_INC_DIR) /l 0x409 /fo $@ $< clean: @$(RM) -v $(OBJS) vc60.idb vc60.pdb Diablo.pdb Diablo.pch vc50.idb vc50.pdb hellfire.pdb make -C DiabloUI clean make -C 3rdParty/Storm clean make -C 3rdParty/PKWare clean .PHONY: clean all