diff --git a/.gitignore b/.gitignore index 872ea99f2..e96b083e8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,20 @@ +# ELF object file. *.o + +# PE shared library and associated files. *.lib +*.exp *.dll + +# PE executable. *.exe + +# GCC dependency file. *.d +# Resource file. +*.res + # Created by https://www.gitignore.io/api/visualstudio ### VisualStudio ### diff --git a/MakefileVC b/MakefileVC new file mode 100644 index 000000000..3a32c938e --- /dev/null +++ b/MakefileVC @@ -0,0 +1,47 @@ +VC_DIR ?= $(HOME)/DevStudio/VC +VC_BIN_DIR = $(VC_DIR)/bin +VC_INC_DIR = $(VC_DIR)/include +VC_LIB_DIR = $(VC_DIR)/lib +IDE_DIR ?= $(HOME)/DevStudio/SharedIDE +IDE_BIN_DIR = $(IDE_DIR)/bin +ifeq ($(OS),Windows_NT) + CL = $(VC_BIN_DIR)/CL.EXE + RC = $(IDE_BIN_DIR)/RC.EXE +else + CL = wine $(VC_BIN_DIR)/CL.EXE + RC = wine $(IDE_BIN_DIR)/RC.EXE +endif + +all: devilution.exe + +DIABLO_SRC=$(sort $(wildcard Source/*.cpp)) +OBJS=$(DIABLO_SRC:.cpp=.obj) + +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=$(sort $(wildcard DiabloUI/*.cpp)) +DIABLOUI_OBJS=$(DIABLOUI_SRC:.cpp=.obj) + +devilution.exe: $(OBJS) $(PKWARE_OBJS) diablo.res DiabloUI/diabloui.lib 3rdParty/Storm/Source/storm.lib + $(CL) /nologo /Fe$@ $(OBJS) $(PKWARE_OBJS) diablo.res /link /LIBPATH:$(VC_LIB_DIR) advapi32.lib gdi32.lib shell32.lib user32.lib version.lib DiabloUI/diabloui.lib 3rdParty/Storm/Source/storm.lib + +DiabloUI/diabloui.lib: $(DIABLOUI_OBJS) + $(CL) $^ /link /nologo /dll /subsystem:windows /machine:I386 /LIBPATH:$(VC_LIB_DIR) /def:"DiabloUI/diabloui.def" /out:DiabloUI/diabloui.dll + +3rdParty/Storm/Source/storm.lib: $(STORM_OBJS) + $(CL) $^ /link /nologo /dll /subsystem:windows /machine:I386 /LIBPATH:$(VC_LIB_DIR) /def:"3rdParty/Storm/Source/storm.def" /out:3rdParty/Storm/Source/storm.dll + +%.obj: %.cpp + $(CL) /nologo /c /O1 /W3 /MT /I $(VC_INC_DIR) /Fo$@ $< + +diablo.res: Diablo.rc + $(RC) /i $(VC_INC_DIR) /i $(VC_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