CFLAGS    = $(CFLAGS.GENERAL) $(CFLAGS.$(BUILD))
LFLAGS    = $(LFLAGS.GENERAL) $(LFLAGS.$(BUILD))
LINK.LIBS = $(LINK.LIBS.GENERAL) $(LINK.LIBS.$(BUILD))


define DO.COMPILE.C 
	@-$(COMPILER.c) $(CFLAGS) -I. $(PATH.H.SYS) /c /FD /Tc$(<) /Fo$(dir $@)
endef

define DO.COMPILE.CC 
	@-$(COMPILER.cc) $(CFLAGS) -I. $(PATH.H.SYS) /c /FD /Tp$(<) /Fo$(dir $@)
endef

define DO.COMPILE.ASM
	@echo Compiling $<
	@$(COMPILER.asm) $(ASMFLAGS) $(<) -o $@
endef

define DO.COMPILE.RC
	# Assumes existance of MSVC environment variable set to the root of the 
	# VC++ install directory typically C:\Program Files\Microsoft Visual Studio\VC98
	@echo Compiling $<
	@$(COMPILER.rc) $(RCFLAGS) /i'$(MSVC)\mfc\include' /fo$@ $(<)
endef


define DO.LINK.CONSOLE.EXE
	@echo Linking $@ 
	@$(LINK) $(LFLAGS) $(LFLAGS.EXE.$(BUILD)) /SUBSYSTEM:CONSOLE /OUT:$@ \
	$(patsubst %, /LIBPATH:%, $(LIB.PATH)) \
	$(LINK.SOURCES) \
	$(LINK.LIBS) 
endef

define DO.LINK.GUI.EXE
	@echo Linking $@
	@$(LINK) $(LFLAGS) $(LFLAGS.EXE.$(BUILD)) /SUBSYSTEM:WINDOWS /OUT:$@ \
	$(patsubst %, /LIBPATH:%, $(LIB.PATH)) \
	$(LINK.SOURCES) \
	$(LINK.LIBS) 
endef

define DO.LINK.LIB
	@echo Linking $@ 
	@$(LINK) \
	-LIB $(LFLAGS) /OUT:$@ \
	$(LINK.SOURCES) 
endef

define DO.LINK.DLL
	@echo Linking $@ 
	@$(LINK) \
	$(LINK.LIBS) \
	$(patsubst %, /LIBPATH:%, $(LIB.PATH)) \
	$(LFLAGS) /DLL /SUBSYSTEM:CONSOLE /OUT:$@ \
	$(LINK.SOURCES) \
	$(LINK.RESOURCES) \
	$(patsubst %, /DEF:%, $(LINK.DEFS)) 
endef