+OBJ_D = util.o code.o ast.o ir.o conout.o ftepp.o opts.o fs.o utf8.o correct.o
+OBJ_P = util.o fs.o conout.o opts.o pak.o
+OBJ_T = test.o util.o conout.o fs.o
+OBJ_C = main.o lexer.o parser.o fs.o
+OBJ_X = exec-standalone.o util.o conout.o fs.o
+
+#we have duplicate object files when dealing with creating a simple list
+#for dependinces. To combat this we use some clever recrusive-make to
+#filter the list and remove duplicates which we use for make depend
+RMDUP = $(if $1,$(firstword $1) $(call RMDUP,$(filter-out $(firstword $1),$1)))
+DEPS := $(call RMDUP, $(OBJ_D) $(OBJ_P) $(OBJ_T) $(OBJ_C) $(OBJ_X))
+
+ifneq ("$(CYGWIN)", "")
+ #nullify the common variables that
+ #most *nix systems have (for windows)
+ PREFIX :=
+ BINDIR :=
+ DATADIR :=
+ MANDIR :=
+ QCVM = qcvm.exe
+ GMQCC = gmqcc.exe
+ TESTSUITE = testsuite.exe
+ PAK = pak.exe
+else
+ifneq ("$(MINGW)", "")
+ #nullify the common variables that
+ #most *nix systems have (for windows)
+ PREFIX :=
+ BINDIR :=
+ DATADIR :=
+ MANDIR :=
+ QCVM = qcvm.exe
+ GMQCC = gmqcc.exe
+ TESTSUITE = testsuite.exe
+ PAK = gmqpak.exe
+else
+ QCVM = qcvm
+ GMQCC = gmqcc
+ TESTSUITE = testsuite
+ PAK = gmqpak