summaryrefslogtreecommitdiffstats
path: root/make
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2009-10-11 00:58:41 +0200
committerJay Berkenbilt <ejb@ql.org>2009-10-11 00:58:41 +0200
commit64a890db2bfa0e02cbb1458c7e52ed78f1c0b8b8 (patch)
treef61dd10ebaf6e3ad5e66c570a301088d93cd8188 /make
parent28c122b17e12ea597c6def6ed32cd2dd49b61eae (diff)
downloadqpdf-64a890db2bfa0e02cbb1458c7e52ed78f1c0b8b8.tar.zst
msvc -- not tested
git-svn-id: svn+q:///qpdf/trunk@774 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'make')
-rw-r--r--make/msvc.mk68
1 files changed, 68 insertions, 0 deletions
diff --git a/make/msvc.mk b/make/msvc.mk
new file mode 100644
index 00000000..de77e0fe
--- /dev/null
+++ b/make/msvc.mk
@@ -0,0 +1,68 @@
+# --- Required interface definitions ---
+
+OBJ=obj
+LOBJ=obj
+
+# Usage: $(call libname,base)
+define libname
+$(1).lib
+endef
+
+# Usage: $(call binname,base)
+define binname
+$(1).exe
+endef
+
+# --- Required rule definitions ---
+
+# 1 2
+# Usage: $(call compile,src,includes)
+define compile
+ cl /nologo /Zi /Gy /EHsc /MD /TP /GR $(CPPFLAGS) $(CXXFLAGS) \
+ $(foreach I,$(2),-I$(I)) \
+ /c $(1) /Fo$(call src_to_obj,$(1))
+endef
+
+# 1 2
+# Usage: $(call c_compile,src,includes)
+define c_compile
+ cl /nologo /Zi /Gy /EHsc /MD $(CPPFLAGS) $(CXXFLAGS) \
+ $(foreach I,$(2),-I$(I)) \
+ /c $(1) /Fo$(call src_to_obj,$(1))
+endef
+
+libcompile = $(compile)
+c_libcompile = $(c_compile)
+
+# 1 2
+# Usage: $(call makeslib,objs,library)
+define makeslib
+ lib /nologo /OUT:$(2) $(1)
+endef
+
+# 1 2 3 4 5
+# Usage: $(call makelib,objs,library,current,revision,age)
+define makelib
+ dll=
+ cl /nologo /Zi /Gy /EHsc /MD /TP /GR /LD /Fe$(basename $(2))$(3).dll \
+ /link /incremental:no \
+ $(foreach L,$(subst -L,,$(LDFLAGS)),/LIBPATH:$(L)) \
+ $(foreach L,$(subst -l,,$(LIBS)),$(L).lib) $(1)
+ if [ -f $(basename $(2))$(3).dll.manifest ]; then \
+ mt.exe -nologo -manifest $(basename $(2))$(3).dll.manifest \
+ -outputresource:$(basename $(2))$(3).dll\;2; \
+ fi
+endef
+
+# 1 2
+# Usage: $(call makebin,objs,binary)
+define makebin
+ cl /nologo /Zi /Gy /EHsc /MD /TP /GR /OUT:$(2) \
+ /link /incremental:no \
+ $(foreach L,$(subst -L,,$(LDFLAGS)),/LIBPATH:$(L)) \
+ $(foreach L,$(subst -l,,$(LIBS)),$(L).lib) $(1)
+ if [ -f $(2).manifest ]; then \
+ mt.exe -nologo -manifest $(2).manifest \
+ -outputresource:$(2)\;2; \
+ fi
+endef