You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
4.8 KiB
94 lines
4.8 KiB
VC5_DIR ?= $(HOME)/DevStudio_5.10/VC |
|
|
|
# The $(VS6_DIR) directory is a copy of the "Microsoft Visual Studio" directory. |
|
# |
|
# 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_LIB_DIR = $(VC5_DIR)/lib |
|
|
|
IDE_DIR ?= $(VS6_DIR)/Common/MSDev98 |
|
IDE_BIN_DIR = $(IDE_DIR)/bin |
|
ifeq ($(OS),Windows_NT) |
|
CL = $(VC6_BIN_DIR)/CL.EXE |
|
RC = $(IDE_BIN_DIR)/RC.EXE |
|
VC5_LINK = $(VC5_DIR)/bin/link.exe |
|
VC6_LINK = $(VC6_BIN_DIR)/link.exe |
|
else |
|
CL = wine $(VC6_BIN_DIR)/CL.EXE |
|
RC = wine $(IDE_BIN_DIR)/RC.EXE |
|
VC5_LINK = wine $(VC5_DIR)/bin/link.exe |
|
VC6_LINK = wine $(VC6_BIN_DIR)/link.exe |
|
endif |
|
|
|
CFLAGS=/nologo /c /GX /W3 /O1 /I $(VC6_INC_DIR) /FD /MT /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fp"Diablo.pch" /YX /Gm /Zi |
|
LINKFLAGS=/nologo /subsystem:windows /machine:I386 /incremental:no |
|
|
|
ifeq ($(MAKE_BUILD),pdb) |
|
VC_LINK = $(VC6_LINK) |
|
LINKFLAGS += /pdb:"Diablo.pdb" /LIBPATH:$(VC6_LIB_DIR) /debug |
|
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) |
|
# hardcoded list of src files, because only some of them are ready to be compiled as C instead of C++ |
|
# once all files compile as C we should use the /TC flag abd DIABLO_SRC instead |
|
DIABLO_SRC_FIXED = Source/appfat.cpp /TcSource/automap.cpp /TcSource/capture.cpp /TcSource/codec.cpp Source/control.cpp /TcSource/cursor.cpp /TcSource/dead.cpp /TcSource/debug.cpp /TcSource/diablo.cpp /TcSource/doom.cpp /TcSource/drlg_l1.cpp /TcSource/drlg_l2.cpp Source/drlg_l3.cpp /TcSource/drlg_l4.cpp Source/dthread.cpp Source/dx.cpp /TcSource/effects.cpp /TcSource/encrypt.cpp Source/engine.cpp /TcSource/error.cpp Source/fault.cpp /TcSource/gamemenu.cpp /TcSource/gendung.cpp /TcSource/gmenu.cpp /TcSource/help.cpp /TcSource/init.cpp /TcSource/interfac.cpp /TcSource/inv.cpp Source/items.cpp Source/lighting.cpp /TcSource/loadsave.cpp Source/logging.cpp /TcSource/mainmenu.cpp /TcSource/minitext.cpp /TcSource/missiles.cpp Source/monster.cpp /TcSource/movie.cpp Source/mpqapi.cpp /TcSource/msg.cpp Source/msgcmd.cpp /TcSource/multi.cpp Source/nthread.cpp Source/objects.cpp /TcSource/pack.cpp /TcSource/palette.cpp /TcSource/path.cpp /TcSource/pfile.cpp /TcSource/player.cpp /TcSource/plrmsg.cpp /TcSource/portal.cpp /TcSource/quests.cpp /TcSource/restrict.cpp /TcSource/scrollrt.cpp /TcSource/setmaps.cpp /TcSource/sha.cpp /TcSource/sound.cpp /TcSource/spells.cpp Source/stores.cpp /TcSource/sync.cpp /TcSource/textdat.cpp /TcSource/themes.cpp /TcSource/tmsg.cpp /TcSource/town.cpp /TcSource/towners.cpp /TcSource/track.cpp /TcSource/trigs.cpp /TcSource/wave.cpp /TcSource/render.cpp |
|
|
|
PKWARE_SRC=$(sort $(wildcard 3rdParty/PKWare/*.cpp)) |
|
PKWARE_OBJS=$(PKWARE_SRC:.cpp=.obj) |
|
|
|
STORM_SRC=$(sort $(wildcard 3rdParty/Storm/Source/*.cpp)) |
|
STORM_OBJS=$(STORM_SRC:.cpp=.obj) |
|
|
|
DIABLOUI_SRC=DiabloUI/diabloui.cpp |
|
DIABLOUI_OBJS=$(DIABLOUI_SRC:.cpp=.obj) |
|
|
|
Diablo.exe: main_files $(PKWARE_OBJS) diablo.res DiabloUI/diabloui.lib 3rdParty/Storm/Source/storm.lib |
|
$(VC_LINK) /OUT:$@ $(LINKFLAGS) $(OBJS) $(PKWARE_OBJS) diablo.res DiabloUI/diabloui.lib 3rdParty/Storm/Source/storm.lib user32.lib gdi32.lib advapi32.lib shell32.lib version.lib |
|
|
|
DiabloUI/diabloui.lib: $(DIABLOUI_OBJS) 3rdParty/Storm/Source/storm.lib |
|
$(CL) $^ /link /LINK50COMPAT /nologo /dll /subsystem:windows /machine:I386 /LIBPATH:$(VC6_LIB_DIR) DiabloUI/diabloui.res advapi32.lib gdi32.lib shell32.lib user32.lib version.lib 3rdParty/Storm/Source/storm.lib /def:"DiabloUI/diabloui.def" /out:DiabloUI/diabloui.dll |
|
|
|
3rdParty/Storm/Source/storm.lib: $(STORM_OBJS) |
|
$(CL) $^ /link /LINK50COMPAT /nologo /dll /subsystem:windows /machine:I386 /LIBPATH:$(VC6_LIB_DIR) /def:"3rdParty/Storm/Source/storm.def" /out:3rdParty/Storm/Source/storm.dll |
|
|
|
# compiles all main source files with once compiler call |
|
main_files: |
|
$(CL) $(CFLAGS) /FoSource/ $(DIABLO_SRC_FIXED) |
|
|
|
%.obj: %.cpp |
|
$(CL) $(CFLAGS) /Fo$@ $< |
|
|
|
diablo.res: Diablo.rc |
|
$(RC) /i $(VC6_INC_DIR) /i $(VC6_DIR)/MFC/Include /l 0x409 /fo $@ $< |
|
|
|
clean: |
|
@$(RM) -v $(OBJS) $(PKWARE_OBJS) $(STORM_OBJS) $(DIABLOUI_OBJS) DiabloUI/diabloui.{exp,lib,dll} 3rdParty/Storm/Source/storm.{exp,lib,dll} |
|
|
|
.PHONY: clean all
|
|
|