[cogl/cogl.msvc.new: 16/19] build: Replace Visual Studio projects with NMake Makefiles



commit 449443dc5bcc44dd46112de290c9897256692bbf
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Mon Feb 11 17:23:26 2019 +0800

    build: Replace Visual Studio projects with NMake Makefiles
    
    This adds a set of NMake Makefiles which will greatly enhance the Visual
    Studio build process, where:
    
    -Visual Studio 2008 through 2017 is supported out of the box with this
     NMake Makefile set.
    -Both the PERL and Python versions of glib-mkenums are supported.
    -Cogl-Pango, Cogl-Gst are now optionally built, along with GDK-Pixbuf
     support.  SDL or SDL2 support can also be enabled, if desired.
     This NMake Makefile set still assumes the presence of GLib  currently.
    -Example programs are now built, and test programs can be optionally
     built.
    -Introspection files are now built if desired, for all libraries that
     are being built except for Cogl-Path.
    -Build results mimic autotools builds better.

 build/Makefile.am                 |   2 +-
 build/nmake/Makefile.am           |  10 +
 build/nmake/Makefile.vc           |  44 ++++
 build/nmake/build-rules-msvc.mak  | 463 ++++++++++++++++++++++++++++++++++++++
 build/nmake/config-msvc.mak       | 395 ++++++++++++++++++++++++++++++++
 build/nmake/create-lists-msvc.mak | 260 +++++++++++++++++++++
 build/nmake/create-lists.bat      |  42 ++++
 build/nmake/detectenv-msvc.mak    | 154 +++++++++++++
 build/nmake/generate-msvc.mak     |  87 +++++++
 build/nmake/info-msvc.mak         |  81 +++++++
 build/nmake/install.mak           |  39 ++++
 configure.ac                      |   4 +-
 12 files changed, 1577 insertions(+), 4 deletions(-)
---
diff --git a/build/Makefile.am b/build/Makefile.am
index 0f81afe3..bba9ea30 100644
--- a/build/Makefile.am
+++ b/build/Makefile.am
@@ -1 +1 @@
-SUBDIRS = win32
+SUBDIRS = nmake
diff --git a/build/nmake/Makefile.am b/build/nmake/Makefile.am
new file mode 100644
index 00000000..628de83a
--- /dev/null
+++ b/build/nmake/Makefile.am
@@ -0,0 +1,10 @@
+EXTRA_DIST =   \
+       build-rules-msvc.mak    \
+       config-msvc.mak \
+       create-lists-msvc.mak   \
+       create-lists.bat        \
+       detectenv-msvc.mak      \
+       generate-msvc.mak       \
+       info-msvc.mak   \
+       install.mak     \
+       Makefile.vc
diff --git a/build/nmake/Makefile.vc b/build/nmake/Makefile.vc
new file mode 100644
index 00000000..84339893
--- /dev/null
+++ b/build/nmake/Makefile.vc
@@ -0,0 +1,44 @@
+# NMake Makefile for building libsigc++ on Windows using Visual Studio
+
+# The items below this line should not be changed, unless one is maintaining
+# the NMake Makefiles.  Customizations can be done in the following NMake Makefile
+# portions (please see comments in the these files to see what can be customized):
+#
+# detectenv-msvc.mak
+# config-msvc.mak
+
+!include detectenv-msvc.mak
+
+# Include the Makefile portions with the source listings
+!include ..\..\cogl\cogl-srcs.mak
+!include ..\..\cogl-path\cogl-path-srcs.mak
+!include ..\..\cogl-pango\cogl-pango-srcs.mak
+!include ..\..\cogl-gst\cogl-gst-srcs.mak
+!include ..\..\tests\conform\conform-test-srcs.mak
+
+# Include the Makefile portion that enables features based on user input
+!include config-msvc.mak
+
+!if "$(VALID_CFGSET)" == "TRUE"
+
+# Include the Makefile portion to convert the source and header lists
+# into the lists we need for compilation and introspection
+!include create-lists-msvc.mak
+
+all: $(COGL_BUILT_LIBS) $(COGL_INTROSPECTION_TYPELIBS) $(COGL_BUILT_PLUGINS) $(COGL_EXAMPLE_PROGS) 
all-build-info
+
+tests: all $(COGL_TEST_PROGS)
+
+# Include the build rules for sources, DLLs and executables
+!include generate-msvc.mak
+!include build-rules-msvc.mak
+
+!include install.mak
+
+!else # "$(VALID_CFGSET)" == "TRUE"
+all: help
+       @echo You need to specify a valid configuration, via
+       @echo CFG=release or CFG=debug
+!endif # "$(VALID_CFGSET)" == "TRUE"
+
+!include info-msvc.mak
diff --git a/build/nmake/build-rules-msvc.mak b/build/nmake/build-rules-msvc.mak
new file mode 100644
index 00000000..f8cadaf7
--- /dev/null
+++ b/build/nmake/build-rules-msvc.mak
@@ -0,0 +1,463 @@
+# NMake Makefile portion for compilation rules
+# Items in here should not need to be edited unless
+# one is maintaining the NMake build files.  The format
+# of NMake Makefiles here are different from the GNU
+# Makefiles.  Please see the comments about these formats.
+
+# Inference rules for compiling the .obj files.
+# Used for libs and programs with more than a single source file.
+# Format is as follows
+# (all dirs must have a trailing '\'):
+#
+# {$(srcdir)}.$(srcext){$(destdir)}.obj::
+#      $(CC)|$(CXX) $(cflags) /Fo$(destdir) /c @<<
+# $<
+# <<
+{..\..\cogl\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_EXTRA_CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ /c @<<
+$<
+<<
+
+{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_EXTRA_CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ /c @<<
+$<
+<<
+
+{..\..\cogl\driver\gl\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_EXTRA_CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ /c @<<
+$<
+<<
+
+{..\..\cogl\driver\gl\gl\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_EXTRA_CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ /c @<<
+$<
+<<
+
+{..\..\cogl\driver\gl\gles\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_EXTRA_CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ /c @<<
+$<
+<<
+
+{..\..\cogl\driver\nop\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_EXTRA_CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ /c @<<
+$<
+<<
+
+{..\..\cogl\deprecated\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_EXTRA_CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ /c @<<
+$<
+<<
+
+{..\..\cogl\winsys\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_EXTRA_CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl\ /c @<<
+$<
+<<
+
+{..\..\cogl\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_TEST_EXTRA_CFLAGS) 
/Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /c @<<
+$<
+<<
+
+{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_TEST_EXTRA_CFLAGS) 
/Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /c @<<
+$<
+<<
+
+{..\..\cogl\driver\gl\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_TEST_EXTRA_CFLAGS) 
/Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /c @<<
+$<
+<<
+
+{..\..\cogl\driver\gl\gl\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_TEST_EXTRA_CFLAGS) 
/Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /c @<<
+$<
+<<
+
+{..\..\cogl\driver\gl\gles\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_TEST_EXTRA_CFLAGS) 
/Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /c @<<
+$<
+<<
+
+{..\..\cogl\driver\nop\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_TEST_EXTRA_CFLAGS) 
/Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /c @<<
+$<
+<<
+
+{..\..\cogl\deprecated\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_TEST_EXTRA_CFLAGS) 
/Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /c @<<
+$<
+<<
+
+{..\..\cogl\winsys\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_TEST_EXTRA_CFLAGS) 
/Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /c @<<
+$<
+<<
+
+{..\..\test-fixtures\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_CFLAGS) $(LIBCOGL_TEST_EXTRA_CFLAGS) /DCOGL_DISABLE_DEPRECATED 
/DTESTS_DATADIR=\"$(cogl_topsrcdir)/tests/data\" /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /c @<<
+$<
+<<
+
+{..\..\tests\micro-perf\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.obj::
+       $(CC) $(CFLAGS) $(COGL_TESTS_CFLAGS) $(LIBCOGL_EXTRA_CFLAGS) 
/Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /c @<<
+$<
+<<
+
+{..\..\tests\unit\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.obj::
+       $(CC) $(CFLAGS) $(COGL_TESTS_CFLAGS) $(LIBCOGL_TEST_EXTRA_CFLAGS) 
/Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /c @<<
+$<
+<<
+
+{..\..\tests\conform\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.obj::
+       $(CC) $(CFLAGS) $(COGL_TESTS_CFLAGS) /I..\..\test-fixtures $(LIBCOGL_TEST_EXTRA_CFLAGS) 
/Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ /c @<<
+$<
+<<
+
+{..\..\cogl-path\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_PATH_CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\ /c @<<
+$<
+<<
+
+{..\..\cogl-path\tesselator\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_PATH_CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\ /c @<<
+$<
+<<
+
+{..\..\cogl-pango\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_PANGO_CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\ /c @<<
+$<
+<<
+
+{..\..\cogl-gst\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst\}.obj::
+       $(CC) $(CFLAGS) $(LIBCOGL_GST_CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst\ /c @<<
+$<
+<<
+
+{..\..\cogl-gst\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst-plugin\}.obj::
+       $(CC) $(CFLAGS) $(COGL_GST_PLUGIN_CFLAGS) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst-plugin\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst-plugin\ /c @<<
+$<
+<<
+
+{..\..\cogl\}.rc{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\}.res:
+       rc /fo$@ $<
+
+{..\..\cogl\}.rc{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\}.res:
+       rc /fo$@ $<
+
+{..\..\cogl-pango\}.rc{vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\}.res:
+       rc /fo$@ $<
+
+# Rules for building .lib files
+$(COGL_LIB): $(COGL_DLL)
+$(COGL_TESTS_LIB): $(COGL_TESTS_DLL)
+$(COGL_PATH_LIB): $(COGL_PATH_DLL)
+$(COGL_PATH_TESTS_LIB): $(COGL_PATH_TESTS_DLL)
+$(COGL_PANGO_LIB): $(COGL_PANGO_DLL)
+$(COGL_GST_LIB): $(COGL_GST_DLL)
+
+# Rules for linking DLLs
+# Format is as follows (the mt command is needed for MSVC 2005/2008 builds):
+# $(dll_name_with_path): $(dependent_libs_files_objects_and_items)
+#      link /DLL [$(linker_flags)] [$(dependent_libs)] [/def:$(def_file_if_used)] 
[/implib:$(lib_name_if_needed)] -out:$@ @<<
+# $(dependent_objects)
+# <<
+#      @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
+$(COGL_DLL):   \
+$(LIBCOGL_CONFIG_HDRS) \
+$(LIBCOGL_ENUM_SRCS)   \
+$(LIBCOGL_ENUM_HDRS)   \
+$(libcogl_OBJS)        \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl.def
+       link /DLL $(LDFLAGS) $(LIBCOGL_DEP_LIBS) /implib:$(COGL_LIB) 
/def:vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl.def /out:$@ @<<
+$(libcogl_OBJS)
+<<
+       @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
+
+$(COGL_TESTS_DLL):     \
+$(LIBCOGL_TESTS_CONFIG_HDRS)   \
+$(LIBCOGL_TESTS_ENUM_SRCS)     \
+$(LIBCOGL_TESTS_ENUM_HDRS)     \
+$(libcogl_tests_OBJS)  \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl.def
+       link /DLL $(LDFLAGS) $(LIBCOGL_DEP_LIBS) /implib:$(COGL_TESTS_LIB) 
/def:vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl.def /out:$@ @<<
+$(libcogl_tests_OBJS)
+<<
+       @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
+
+$(COGL_PATH_DLL): $(COGL_LIB) $(LIBCOGL_PATH_ENUM_SRCS) $(LIBCOGL_PATH_ENUM_HDRS) $(libcogl_path_OBJS)
+       link /DLL $(LDFLAGS) $(COGL_LIB) $(LIBCOGL_DEP_LIBS) /implib:$(COGL_PATH_LIB) -out:$@ @<<
+$(libcogl_path_OBJS)
+<<
+       @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
+
+$(COGL_PATH_TESTS_DLL): $(COGL_TESTS_LIB) $(LIBCOGL_PATH_ENUM_SRCS) $(LIBCOGL_PATH_ENUM_HDRS) 
$(libcogl_path_OBJS)
+       link /DLL $(LDFLAGS) $(COGL_TESTS_LIB) $(LIBCOGL_DEP_LIBS) /implib:$(COGL_PATH_TESTS_LIB) -out:$@ @<<
+$(libcogl_path_OBJS)
+<<
+       @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
+
+$(COGL_PANGO_DLL): $(COGL_LIB) vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango  $(libcogl_pango_OBJS)
+       link /DLL $(LDFLAGS) $(COGL_LIB) $(LIBCOGL_PANGO_DEP_LIBS) $(LIBCOGL_DEP_LIBS) 
/implib:$(COGL_PANGO_LIB) -out:$@ @<<
+$(libcogl_pango_OBJS)
+<<
+       @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
+
+$(COGL_GST_DLL): $(COGL_LIB) vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst  $(libcogl_gst_OBJS)
+       link /DLL $(LDFLAGS) $(COGL_LIB) $(LIBCOGL_GST_DEP_LIBS) $(LIBCOGL_DEP_LIBS) /implib:$(COGL_GST_LIB) 
-out:$@ @<<
+$(libcogl_gst_OBJS)
+<<
+       @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
+
+$(COGL_GST_PLUGIN): $(COGL_GST_LIB) $(COGL_LIB) vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst-plugin 
$(cogl_gst_plugin_OBJS)
+       link /DLL $(LDFLAGS) $(COGL_GST_LIB) $(COGL_LIB) $(LIBCOGL_GST_DEP_LIBS) $(LIBCOGL_DEP_LIBS) -out:$@ 
@<<
+$(cogl_gst_plugin_OBJS)
+<<
+       @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
+
+# Rules for linking Executables
+# Format is as follows (the mt command is needed for MSVC 2005/2008 builds):
+# $(dll_name_with_path): $(dependent_libs_files_objects_and_items)
+#      link [$(linker_flags)] [$(dependent_libs)] -out:$@ @<<
+# $(dependent_objects)
+# <<
+#      @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
+
+{..\..\examples\}.c{vs$(PDBVER)\$(CFG)\$(PLAT)\}.exe:
+       @if not exist vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-examples\ mkdir vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-examples
+       $(CC) $(CFLAGS) $(COGL_EXAMPLE_CFLAGS)  \
+       /Fovs$(PDBVER)\$(CFG)\$(PLAT)\cogl-examples\    \
+       /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\cogl-examples\    \
+       /Fe$@ $<        \
+       /link $(LDFLAGS) $(COGL_BUILT_LIBS) $(COGL_EXAMPLE_DEP_LIBS)
+       @if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-conform-test.exe: $(COGL_PATH_TESTS_LIB) $(COGL_TESTS_LIB) 
$(cogl_conform_test_OBJS)
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-micro-perf-test.exe: $(COGL_LIB) $(cogl_micro_perf_test_OBJS)
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-unit-test.exe: $(COGL_TESTS_LIB) $(cogl_unit_test_OBJS)
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-conform-test.exe       \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-micro-perf-test.exe    \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-unit-test.exe:
+       link $(LDFLAGS) $** $(COGL_EXAMPLE_DEP_LIBS) /out:$@
+       @if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
+
+# Introspection rules
+vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-1.0.gir: $(COGL_LIB) vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl_1_gir_filelist
+       @echo Generating $@...
+       $(PYTHON) $(G_IR_SCANNER)       \
+       --verbose -no-libtool           \
+       --namespace=Cogl        \
+       --nsversion=1.0 \
+       --library=cogl  \
+       --include=GL-1.0 --include=GObject-2.0  \
+       --pkg-export=cogl-1.0   \
+       -I..                    \
+       -I$(CFG)\$(PLAT)                \
+       --c-include=cogl/cogl.h \
+       --warn-all      \
+       --cflags-begin  \
+       $(COGL_BASE_CFLAGS:/=-) \
+       $(LIBCOGL_INCLUDES:/=-) \
+       $(BASE_INCLUDES:/=-)    \
+       -UCOGL_ENABLE_EXPERIMENTAL_API  \
+       -UCOGL_ENABLE_EXPERIMENTAL_2_0_API      \
+       -UCOGL_COMPILATION      \
+       -D__COGL_H_INSIDE__     \
+       -D__COGL_XLIB_H_INSIDE__        \
+       -D__COGL_EGL_H_INSIDE__ \
+       -D__COGL_GLX_H_INSIDE__ \
+       -DCOGL_GIR_SCANNING     \
+       --cflags-end    \
+       --filelist=vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl_1_gir_filelist  \
+       -Lvs$(PDBVER)\$(CFG)\$(PLAT)    \
+       -o $@
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-2.0.gir: $(COGL_LIB) vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl_2_gir_filelist
+       @echo Generating $@...
+       $(PYTHON) $(G_IR_SCANNER)       \
+       --verbose -no-libtool           \
+       --namespace=Cogl        \
+       --nsversion=2.0 \
+       --library=cogl  \
+       --include=GL-1.0 --include=GObject-2.0  \
+       --pkg-export=cogl-2.0-experimental      \
+       -I..                    \
+       -I$(CFG)\$(PLAT)                \
+       --c-include=cogl/cogl.h \
+       --warn-all      \
+       --symbol-prefix=cogl --symbol-prefix=cogl2      \
+       --cflags-begin  \
+       $(COGL_BASE_CFLAGS:/=-) \
+       $(LIBCOGL_INCLUDES:/=-) \
+       $(BASE_INCLUDES:/=-)    \
+       -DCOGL_ENABLE_EXPERIMENTAL_API=1        \
+       -UCOGL_COMPILATION      \
+       -D__COGL_H_INSIDE__     \
+       -D__COGL_XLIB_H_INSIDE__        \
+       -DCOGL_GIR_SCANNING     \
+       --cflags-end    \
+       --filelist=vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl_2_gir_filelist  \
+       -Lvs$(PDBVER)\$(CFG)\$(PLAT)    \
+       -o $@
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\CoglPango-1.0.gir:  \
+$(COGL_PANGO_LIB)      \
+vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-1.0.gir        \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\coglpango_gir_filelist
+       @echo Generating $@...
+       $(PYTHON) $(G_IR_SCANNER)       \
+       --verbose -no-libtool           \
+       --namespace=CoglPango   \
+       --nsversion=1.0 \
+       --library=cogl  \
+       --library=cogl-pango    \
+       --include=Pango-1.0 --include=PangoCairo-1.0    \
+       --pkg-export=cogl-pango-1.0     \
+       -I..                    \
+       -I$(CFG)\$(PLAT)                \
+       --warn-all      \
+       --identifier-prefix=CoglPango   \
+       --symbol-prefix=cogl_pango      \
+       --c-include='cogl-pango/cogl-pango.h'   \
+       --include-uninstalled=vs$(PDBVER)/$(CFG)/$(PLAT)/Cogl-1.0.gir   \
+       --cflags-begin  \
+       $(COGL_BASE_CFLAGS:/=-) \
+       $(LIBCOGL_INCLUDES:/=-) \
+       $(PANGO_INCLUDES:/=-)   \
+       --cflags-end    \
+       --filelist=vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\coglpango_gir_filelist \
+       -Lvs$(PDBVER)\$(CFG)\$(PLAT)    \
+       -o $@
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\CoglPango-2.0.gir:  \
+$(COGL_PANGO_LIB)      \
+vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-2.0.gir        \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\coglpango_gir_filelist
+       @echo Generating $@...
+       $(PYTHON) $(G_IR_SCANNER)       \
+       --verbose -no-libtool           \
+       --namespace=CoglPango   \
+       --nsversion=2.0 \
+       --library=cogl  \
+       --library=cogl-pango    \
+       --include=Pango-1.0 --include=PangoCairo-1.0    \
+       --pkg-export=cogl-pango-2.0-experimental        \
+       -I..                    \
+       -I$(CFG)\$(PLAT)                \
+       --warn-all      \
+       --identifier-prefix=CoglPango   \
+       --symbol-prefix=cogl_pango      \
+       --c-include='cogl-pango/cogl-pango.h'   \
+       --include-uninstalled=vs$(PDBVER)/$(CFG)/$(PLAT)/Cogl-2.0.gir   \
+       --cflags-begin  \
+       $(COGL_BASE_CFLAGS:/=-) \
+       $(LIBCOGL_INCLUDES:/=-) \
+       $(PANGO_INCLUDES:/=-)   \
+       --cflags-end    \
+       --filelist=vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\coglpango_gir_filelist \
+       -Lvs$(PDBVER)\$(CFG)\$(PLAT)    \
+       -o $@
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\CoglGst-2.0.gir:    \
+$(COGL_PANGO_LIB)      \
+vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-2.0.gir        \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst\coglgst_gir_filelist
+       @echo Generating $@...
+       $(PYTHON) $(G_IR_SCANNER)       \
+       --verbose -no-libtool           \
+       --namespace=CoglGst     \
+       --nsversion=2.0 \
+       --library=cogl  \
+       --library=cogl-gst      \
+       --include=GObject-2.0 --include=Gst-1.0 --include=GstBase-1.0   \
+       --pkg-export=cogl-gst-2.0-experimental  \
+       -I..                    \
+       -I$(CFG)\$(PLAT)                \
+       --warn-all      \
+       --identifier-prefix=CoglGst     \
+       --symbol-prefix=cogl_gst        \
+       --c-include='cogl-gst/cogl-gst.h'       \
+       --c-include="gst/gst.h" \
+       --include-uninstalled=vs$(PDBVER)/$(CFG)/$(PLAT)/Cogl-2.0.gir   \
+       --pkg gstreamer-1.0     \
+       --add-init-section="gst_init(NULL, NULL);"      \
+       --cflags-begin  \
+       $(LIBCOGL_INCLUDES:/=-) \
+       $(GST_INCLUDES:/=-)     \
+       --cflags-end    \
+       --filelist=vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst\coglgst_gir_filelist     \
+       -Lvs$(PDBVER)\$(CFG)\$(PLAT)    \
+       -o $@
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-1.0.typelib: vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-1.0.gir
+vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-2.0.typelib: vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-2.0.gir
+vs$(PDBVER)\$(CFG)\$(PLAT)\CoglPango-1.0.typelib:      \
+vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-1.0.typelib    \
+vs$(PDBVER)\$(CFG)\$(PLAT)\CoglPango-1.0.gir
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\CoglPango-2.0.typelib:      \
+vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-2.0.typelib    \
+vs$(PDBVER)\$(CFG)\$(PLAT)\CoglPango-2.0.gir
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\CoglGst-2.0.typelib:        \
+vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-2.0.typelib    \
+vs$(PDBVER)\$(CFG)\$(PLAT)\CoglGst-2.0.gir
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-1.0.typelib    \
+vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-2.0.typelib    \
+vs$(PDBVER)\$(CFG)\$(PLAT)\CoglPango-1.0.typelib       \
+vs$(PDBVER)\$(CFG)\$(PLAT)\CoglPango-2.0.typelib       \
+vs$(PDBVER)\$(CFG)\$(PLAT)\CoglGst-2.0.typelib:
+       $(G_IR_COMPILER)                        \
+       --includedir=vs$(PDBVER)\$(CFG)\$(PLAT) --debug --verbose       \
+       $(@R:\=/).gir -o $@
+
+clean:
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.typelib
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.gir
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.exe.manifest
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.exe
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.dll.manifest
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.dll
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.pdb
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.ilk
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.exp
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.lib
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-examples\vc$(PDBVER)0.pdb
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-examples\*.obj
+       @-rd vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-examples
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst-plugin\vc$(PDBVER)0.pdb
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst-plugin\*.obj
+       @-rd vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst-plugin
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst\vc$(PDBVER)0.pdb
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst\coglgst_gir_filelist
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst\*.obj
+       @-rd vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\vc$(PDBVER)0.pdb
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\coglpango_gir_filelist
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\*.res
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\*.obj
+       @-rd vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\vc$(PDBVER)0.pdb
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\*.obj
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\cogl-path-enum-types.c
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\cogl-path-enum-types.h
+       @-rd vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path
+       @if exist vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ del /f /q 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\vc$(PDBVER)0.pdb
+       @if exist vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\*.res
+       @if exist vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\*.def
+       @if exist vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\*.obj
+       @if exist vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ del /f /q 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl-enum-types.c
+       @if exist vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ del /f /q 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl-enum-types.h
+       @if exist vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ del /f /q $(LIBCOGL_TESTS_CONFIG_HDRS)
+       @if exist vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\ rd vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\vc$(PDBVER)0.pdb
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl_2_gir_filelist
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl_1_gir_filelist
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\*.res
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\*.def
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\*.obj
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-enum-types.c
+       @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-enum-types.h
+       @-del /f /q $(LIBCOGL_CONFIG_HDRS)
+       @-rd vs$(PDBVER)\$(CFG)\$(PLAT)\cogl
diff --git a/build/nmake/config-msvc.mak b/build/nmake/config-msvc.mak
new file mode 100644
index 00000000..56bd43a0
--- /dev/null
+++ b/build/nmake/config-msvc.mak
@@ -0,0 +1,395 @@
+# NMake Makefile portion for enabling features for Windows builds
+
+!ifndef GLIB_MKENUMS
+GLIB_MKENUMS = $(PREFIX)\bin\glib-mkenums
+!endif
+
+!ifndef G_IR_SCANNER
+G_IR_SCANNER = $(PREFIX)\bin\g-ir-scanner
+!endif
+
+!ifndef G_IR_COMPILER
+G_IR_COMPILER = $(PREFIX)\bin\g-ir-compiler.exe
+!endif
+
+# We need to first check whether glib-mkenums is a Python script or a PERL
+# script.  Note that Windows cmd.exe by itself does not support shebang
+# lines, so test run the script with Python and see whether that shows the
+# version info correctly.
+!if ![$(PYTHON) $(GLIB_MKENUMS) -v >NUL 2> mkenums.test.x]
+!endif
+
+!if ![for %f in (mkenums.test.x) do @if %~zf equ 0 echo GLIB_MKENUMS_TYPE = PYTHON > glibmkenums.type.x]
+!endif
+
+!if ![for %f in (mkenums.test.x) do @if %~zf gtr 0 echo GLIB_MKENUMS_TYPE = PERL > glibmkenums.type.x]
+!endif
+
+!include glibmkenums.type.x
+
+!if ![del glibmkenums.type.x mkenums.test.x]
+!endif
+
+!if "$(GLIB_MKENUMS_TYPE)" == "PYTHON"
+GLIB_MKENUMS_INTERP = $(PYTHON)
+!elseif "$(GLIB_MKENUMS_TYPE)" == "PERL"
+GLIB_MKENUMS_INTERP = $(PERL)
+!endif
+
+LIBCOGL_ENABLED_FEATURES = OpenGL/WGL
+COGL_ADDITIONAL_BUILD_OPTIONS = cogl-path
+
+LIBCOGL_INSTALLED_HDRS =       \
+       $(COGL_1_PUB_HDRS)      \
+       $(COGL_EXPERIMENTAL_HDRS)       \
+       $(COGL_GL_PROTOTYPE_HDRS)       \
+       $(COGL_OTHER_HDRS)      \
+       $(COGL_WGL_HDRS)
+
+LIBCOGL_EXTRA_SRCS = $(COGL_WGL_SRCS)
+
+LIBCOGL_DEP_LIBS = opengl32.lib user32.lib gdi32.lib intl.lib
+LIBCOGL_PANGO_DEP_LIBS = pangocairo-1.0.lib pango-1.0.lib cairo.lib
+LIBCOGL_GST_DEP_LIBS = gstvideo-1.0.lib gstbase-1.0.lib gstreamer-1.0.lib
+LIBCOGL_EXTRA_CFLAGS =
+LIBCOGL_EXTRA_OBJS =   \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-enum-types.obj     \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl.res
+
+COGL_EXAMPLE_PROGS =   \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-hello.exe       \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-info.exe        \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-point-sprites.exe       \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-stereo.exe
+
+!if ($(VSVER) != 9 && $(VSVER) != 10) || "$(PLAT)" != "x64"
+COGL_EXAMPLE_PROGS =   \
+       $(COGL_EXAMPLE_PROGS)   \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-msaa.exe
+!endif
+
+COGL_INTROSPECTION_TYPELIBS =
+
+# We build cogl-vs$(PDBVER).dll and cogl-path-vs$(PDBVER).dll at least
+COGL_DLL = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-vs$(PDBVER).dll
+COGL_LIB = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl.lib
+COGL_TESTS_DLL = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests-vs$(PDBVER).dll
+COGL_TESTS_LIB = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests.lib
+COGL_PATH_DLL = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path-vs$(PDBVER).dll
+COGL_PATH_LIB = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path.lib
+COGL_PATH_TESTS_DLL = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path-tests-vs$(PDBVER).dll
+COGL_PATH_TESTS_LIB = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path-tests.lib
+COGL_PANGO_DLL = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango-vs$(PDBVER).dll
+COGL_PANGO_LIB = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango.lib
+COGL_GST_DLL = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst-vs$(PDBVER).dll
+COGL_GST_LIB = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst.lib
+COGL_GST_PLUGIN = vs$(PDBVER)\$(CFG)\$(PLAT)\gstcogl.dll
+
+COGL_BUILT_LIBS = $(COGL_LIB) $(COGL_PATH_LIB)
+COGL_BUILT_PLUGINS =
+COGL_BUILT_TEST_LIBS = $(COGL_TESTS_LIB)
+
+COGL_EXAMPLE_DEP_LIBS = $(LIBCOGL_DEP_LIBS)
+
+LIBCOGL_TEST_EXTRA_CFLAGS =    \
+       $(LIBCOGL_EXTRA_CFLAGS) \
+       /DENABLE_UNIT_TESTS
+
+LIBCOGL_TESTS_EXTRA_OBJS =     \
+       $(LIBCOGL_EXTRA_OBJS)   \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\test-utils.obj
+
+COGL_TEST_PROGS =      \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-conform-test.exe        \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-micro-perf-test.exe     \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-unit-test.exe
+
+!ifdef GDK_PIXBUF
+!ifdef NO_GLIB
+!error GDK_PIXBUF requires GLib support to be enabled
+!endif
+LIBCOGL_EXTRA_CFLAGS = \
+       $(LIBCOGL_EXTRA_CFLAGS) \
+       /DUSE_GDKPIXBUF
+
+LIBCOGL_DEP_LIBS =     \
+       $(LIBCOGL_DEP_LIBS)     \
+       gdk_pixbuf-2.0.lib
+
+LIBCOGL_ENABLED_FEATURES =     \
+       $(LIBCOGL_ENABLED_FEATURES)     \
+       GDK-Pixbuf
+!else
+
+LIBCOGL_ENABLED_FEATURES =     \
+       $(LIBCOGL_ENABLED_FEATURES)     \
+       builtin-image-loader
+!endif
+
+!ifdef INTROSPECTION
+COGL_INTROSPECTION_TYPELIBS =  \
+       $(COGL_INTROSPECTION_TYPELIBS)  \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-1.0.typelib     \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\Cogl-2.0.typelib
+
+COGL_ADDITIONAL_BUILD_OPTIONS =        \
+       $(COGL_ADDITIONAL_BUILD_OPTIONS)        \
+       introspection
+!endif
+
+!ifdef PANGO
+!ifdef NO_GLIB
+!error PANGO requires GLib support to be enabled
+!endif
+
+COGL_BUILT_LIBS =      \
+       $(COGL_BUILT_LIBS)      \
+       $(COGL_PANGO_LIB)
+
+!if $(VSVER) != 9 || "$(PLAT)" != "x64"
+COGL_EXAMPLE_PROGS =   \
+       $(COGL_EXAMPLE_PROGS)   \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-crate.exe
+
+COGL_EXAMPLE_DEP_LIBS =        \
+       $(COGL_EXAMPLE_DEP_LIBS)        \
+       $(LIBCOGL_PANGO_DEP_LIBS)
+!endif
+
+!ifdef INTROSPECTION
+COGL_INTROSPECTION_TYPELIBS =  \
+       $(COGL_INTROSPECTION_TYPELIBS)  \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\CoglPango-1.0.typelib        \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\CoglPango-2.0.typelib
+!endif
+
+COGL_ADDITIONAL_BUILD_OPTIONS =        \
+       $(COGL_ADDITIONAL_BUILD_OPTIONS)        \
+       cogl-pango
+!endif
+
+!ifdef GST
+!ifdef NO_GLIB
+!error PANGO requires GLib support to be enabled
+!endif
+
+COGL_BUILT_LIBS =      \
+       $(COGL_BUILT_LIBS)      \
+       $(COGL_GST_LIB)
+
+COGL_BUILT_PLUGINS =   \
+       $(COGL_GST_PLUGIN)
+
+COGL_EXAMPLE_PROGS =   \
+       $(COGL_EXAMPLE_PROGS)   \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-basic-video-player.exe
+
+COGL_EXAMPLE_DEP_LIBS =        \
+       $(COGL_EXAMPLE_DEP_LIBS)        \
+       $(LIBCOGL_GST_DEP_LIBS)
+
+!ifdef INTROSPECTION
+COGL_INTROSPECTION_TYPELIBS =  \
+       $(COGL_INTROSPECTION_TYPELIBS)  \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\CoglGst-2.0.typelib
+!endif
+
+COGL_ADDITIONAL_BUILD_OPTIONS =        \
+       $(COGL_ADDITIONAL_BUILD_OPTIONS)        \
+       cogl-gst
+!endif
+
+!ifndef NO_GLIB
+LIBCOGL_EXTRA_SRCS =   \
+       $(LIBCOGL_EXTRA_SRCS)   \
+       $(COGL_GLIB_SRCS)
+
+LIBCOGL_INSTALLED_HDRS =       \
+       $(LIBCOGL_INSTALLED_HDRS)       \
+       $(COGL_GLIB_HDRS)
+
+LIBCOGL_DEP_LIBS =     \
+       gobject-2.0.lib \
+       gmodule-2.0.lib \
+       glib-2.0.lib    \
+       $(LIBCOGL_DEP_LIBS)
+
+LIBCOGL_ENABLED_FEATURES =     \
+       $(LIBCOGL_ENABLED_FEATURES)     \
+       GLib
+!endif
+
+!ifdef SDL
+!ifdef SDL2
+!error Only one of SDL or SDL2 can be enabled
+!endif
+LIBCOGL_EXTRA_SRCS =   \
+       $(LIBCOGL_EXTRA_SRCS)   \
+       $(COGL_SDL_SRCS)        \
+       $(COGL_SDL1_SRCS)
+
+LIBCOGL_INSTALLED_HDRS =       \
+       $(LIBCOGL_INSTALLED_HDRS)       \
+       $(COGL_SDL_HDRS)
+
+LIBCOGL_DEP_LIBS =     \
+       $(LIBCOGL_DEP_LIBS)     \
+       SDL.lib
+
+COGL_EXAMPLE_PROGS =   \
+       $(COGL_EXAMPLE_PROGS)   \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-sdl-hello.exe
+
+COGL_EXAMPLE_DEP_LIBS =        \
+       $(COGL_EXAMPLE_DEP_LIBS)        \
+       SDL.lib SDLmain.lib /subsystem:console
+
+LIBCOGL_ENABLED_FEATURES =     \
+       $(LIBCOGL_ENABLED_FEATURES)     \
+       SDL
+!endif
+
+!ifdef SDL2
+LIBCOGL_EXTRA_SRCS =   \
+       $(LIBCOGL_EXTRA_SRCS)   \
+       $(COGL_SDL_SRCS)        \
+       $(COGL_SDL2_SRCS)
+
+LIBCOGL_INSTALLED_HDRS =       \
+       $(LIBCOGL_INSTALLED_HDRS)       \
+       $(COGL_SDL_HDRS)
+
+LIBCOGL_DEP_LIBS =     \
+       $(LIBCOGL_DEP_LIBS)     \
+       SDL2.lib
+
+COGL_EXAMPLE_PROGS =   \
+       $(COGL_EXAMPLE_PROGS)   \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-sdl2-hello.exe
+
+COGL_EXAMPLE_DEP_LIBS =        \
+       $(COGL_EXAMPLE_DEP_LIBS)        \
+       SDL2.lib SDL2main.lib /subsystem:console
+
+LIBCOGL_ENABLED_FEATURES =     \
+       $(LIBCOGL_ENABLED_FEATURES)     \
+       SDL2
+!endif
+
+# Supported needed!
+!ifdef USE_EGL
+LIBCOGL_EXTRA_SRCS =   \
+       $(LIBCOGL_EXTRA_SRCS)   \
+       $(COGL_EGL_SRCS)
+
+LIBCOGL_INSTALLED_HDRS =       \
+       $(LIBCOGL_INSTALLED_HDRS)       \
+       $(COGL_EGL_HDRS)        \
+       $(COGL_EGL_GEN_HDRS)
+
+COGL_EXAMPLE_PROGS =   \
+       $(COGL_EXAMPLE_PROGS)   \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gles2-context.exe       \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gles2-gears.exe
+
+LIBCOGL_ENABLED_FEATURES =     \
+       $(LIBCOGL_ENABLED_FEATURES)     \
+       EGL
+!endif
+
+# These are the base minimum libraries required for building cogl.
+BASE_INCLUDES =        \
+       /I$(PREFIX)\include\gdk-pixbuf  \
+       /I$(PREFIX)\include\glib-2.0    \
+       /I$(PREFIX)\lib\glib-2.0\include        \
+       /I$(PREFIX)\include
+
+PANGO_INCLUDES =       \
+       /I$(PREFIX)\include\pango-1.0   \
+       $(BASE_INCLUDES)
+
+GST_INCLUDES = \
+       /I$(PREFIX)\include\gstreamer-1.0       \
+       $(BASE_INCLUDES)
+
+# Please do not change anything beneath this line unless maintaining the NMake Makefiles
+
+COGL_BASE_CFLAGS = /FImsvc_recommended_pragmas.h /DHAVE_CONFIG_H
+COGL_LIB_COMMON_CFLAGS = /DCOGL_COMPILATION
+COGL_BASE_INCLUDES =   \
+       /I..\..\cogl    \
+       /Ivs$(PDBVER)\$(CFG)\$(PLAT)\cogl       \
+       /I..\..\cogl\winsys             \
+       /I..\.. \
+       /Ivs$(PDBVER)\$(CFG)\$(PLAT)
+
+LIBCOGL_INCLUDES =     \
+       $(COGL_BASE_INCLUDES)   \
+       /I..\..\cogl\deprecated \
+       /I..\..\cogl\driver\gl  \
+       /I..\..\cogl\driver\gl/gl               \
+       /I..\..\cogl\driver\gl/gles
+
+LIBCOGL_CFLAGS =       \
+       /DG_LOG_DOMAIN=\"Cogl\" \
+       $(COGL_LIB_COMMON_CFLAGS)       \
+       /DCOGL_GL_LIBNAME=\"\" \
+       /DCOGL_GLES1_LIBNAME=\"\" \
+       /DCOGL_GLES2_LIBNAME=\"\" \
+       $(COGL_BASE_CFLAGS)     \
+       $(LIBCOGL_INCLUDES)     \
+       $(BASE_INCLUDES)
+
+LIBCOGL_PATH_CFLAGS =  \
+       $(COGL_LIB_COMMON_CFLAGS)       \
+       /DG_LOG_DOMAIN=\"CoglPath\"     \
+       $(COGL_BASE_CFLAGS)     \
+       /I..\..\cogl-path\tesselator    \
+       $(COGL_BASE_INCLUDES)   \
+       $(BASE_INCLUDES)
+
+LIBCOGL_PANGO_CFLAGS = \
+       $(COGL_LIB_COMMON_CFLAGS)       \
+       /DG_LOG_DOMAIN=\"CoglPango\"    \
+       $(COGL_BASE_CFLAGS)     \
+       $(COGL_BASE_INCLUDES)   \
+       $(PANGO_INCLUDES)
+
+LIBCOGL_GST_CFLAGS =   \
+       $(COGL_LIB_COMMON_CFLAGS)       \
+       /DG_LOG_DOMAIN=\"CoglGst\"      \
+       /DCOGL_GST_API=__declspec(dllexport)    \
+       /DWIN32 \
+       $(COGL_BASE_CFLAGS)     \
+       $(COGL_BASE_INCLUDES)   \
+       $(GST_INCLUDES)
+
+COGL_GST_PLUGIN_CFLAGS =       \
+       $(COGL_LIB_COMMON_CFLAGS)       \
+       /DWIN32 \
+       $(COGL_BASE_CFLAGS)     \
+       $(COGL_BASE_INCLUDES)   \
+       $(GST_INCLUDES)
+
+COGL_PROGS_BASE_CFLAGS =       \
+       /DCOGL_ENABLE_EXPERIMENTAL_API  \
+       /DWIN32 \
+       $(COGL_BASE_CFLAGS)     \
+       $(COGL_BASE_INCLUDES)   \
+       $(PANGO_INCLUDES)       \
+       $(GST_INCLUDES)
+
+COGL_EXAMPLE_CFLAGS =  \
+       /DCOGL_EXAMPLES_DATA=\"$(cogl_topsrcdir)/examples/\"    \
+       $(COGL_PROGS_BASE_CFLAGS)
+
+COGL_TESTS_CFLAGS =    \
+       /DCOGL_TESTS_DATA=\"$(cogl_topsrcdir)/tests/\"  \
+       $(COGL_PROGS_BASE_CFLAGS)
+
+LIBCOGL_ENUM_SRCS =    vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-enum-types.c
+LIBCOGL_ENUM_HDRS = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-enum-types.h
+LIBCOGL_TESTS_ENUM_SRCS =      vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl-enum-types.c
+LIBCOGL_TESTS_ENUM_HDRS = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl-enum-types.h
+LIBCOGL_PATH_ENUM_HDRS = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\cogl-path-enum-types.h
+LIBCOGL_PATH_ENUM_SRCS = vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\cogl-path-enum-types.c
diff --git a/build/nmake/create-lists-msvc.mak b/build/nmake/create-lists-msvc.mak
new file mode 100644
index 00000000..ef12e99d
--- /dev/null
+++ b/build/nmake/create-lists-msvc.mak
@@ -0,0 +1,260 @@
+# Convert the source listing to object (.obj) listing in
+# another NMake Makefile module, include it, and clean it up.
+# This is a "fact-of-life" regarding NMake Makefiles...
+# This file does not need to be changed unless one is maintaining the NMake Makefiles
+
+# For those wanting to add things here:
+# To add a list, do the following:
+# # $(description_of_list)
+# if [call create-lists.bat header $(makefile_snippet_file) $(variable_name)]
+# endif
+#
+# if [call create-lists.bat file $(makefile_snippet_file) $(file_name)]
+# endif
+#
+# if [call create-lists.bat footer $(makefile_snippet_file)]
+# endif
+# ... (repeat the if [call ...] lines in the above order if needed)
+# !include $(makefile_snippet_file)
+#
+# (add the following after checking the entries in $(makefile_snippet_file) is correct)
+# (the batch script appends to $(makefile_snippet_file), you will need to clear the file unless the 
following line is added)
+#!if [del /f /q $(makefile_snippet_file)]
+#!endif
+
+# In order to obtain the .obj filename that is needed for NMake Makefiles to build DLLs/static LIBs or EXEs, 
do the following
+# instead when doing 'if [call create-lists.bat file $(makefile_snippet_file) $(file_name)]'
+# (repeat if there are multiple $(srcext)'s in $(source_list), ignore any headers):
+# !if [for %c in ($(source_list)) do @if "%~xc" == ".$(srcext)" @call create-lists.bat file 
$(makefile_snippet_file) $(intdir)\%~nc.obj]
+#
+# $(intdir)\%~nc.obj needs to correspond to the rules added in build-rules-msvc.mak
+# %~xc gives the file extension of a given file, %c in this case, so if %c is a.cc, %~xc means .cc
+# %~nc gives the file name of a given file without extension, %c in this case, so if %c is a.cc, %~nc means a
+
+NULL=
+
+# For cogl
+
+!if [echo cogl_topsrcdir=%CD:\=/%/../.. > cogl.mak ]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl1_HDRS]
+!endif
+
+!if [for %c in ($(COGL_1_PUB_HDRS:/=\)) do @if "%~xc" == ".h" @call create-lists.bat file cogl.mak 
..\..\cogl\%c]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl_gl_prototype_HDRS]
+!endif
+
+!if [for %c in ($(COGL_GL_PROTOTYPE_HDRS:/=\)) do @if "%~xc" == ".h" @call create-lists.bat file cogl.mak 
..\..\cogl\%c]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl2_HDRS]
+!endif
+
+!if [for %c in ($(COGL_EXPERIMENTAL_HDRS:/=\)) do @if "%~xc" == ".h" @call create-lists.bat file cogl.mak 
..\..\cogl\%c]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl2_extra_HDRS]
+!endif
+
+!if [for %c in ($(COGL_ADDITIONAL_EXPERIMENTAL_HDRS:/=\)) do @if "%~xc" == ".h" @call create-lists.bat file 
cogl.mak ..\..\cogl\%c]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak libcogl_OBJS]
+!endif
+
+!if [for %c in ($(COGL_BASE_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\%~nc.obj]
+!endif
+
+!if [for %c in ($(COGL_DEPRECATED_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\%~nc.obj]
+!endif
+
+!if [for %c in ($(COGL_NOP_DRIVER_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\%~nc.obj]
+!endif
+
+!if [for %c in ($(COGL_GL_DRIVER_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\%~nc.obj]
+!endif
+
+!if [for %c in ($(COGL_GL_DRIVER_SUPPORT_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file 
cogl.mak vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\%~nc.obj]
+!endif
+
+!if [for %c in ($(COGL_WINSYS_COMMON_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\%~nc.obj]
+!endif
+
+!if [for %c in ($(LIBCOGL_EXTRA_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\%~nc.obj]
+!endif
+
+!if [for %c in ($(LIBCOGL_EXTRA_OBJS)) do @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\%~nxc]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak libcogl_tests_OBJS]
+!endif
+
+!if [for %c in ($(COGL_BASE_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\%~nc.obj]
+!endif
+
+!if [for %c in ($(COGL_DEPRECATED_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\%~nc.obj]
+!endif
+
+!if [for %c in ($(COGL_NOP_DRIVER_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\%~nc.obj]
+!endif
+
+!if [for %c in ($(COGL_GL_DRIVER_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\%~nc.obj]
+!endif
+
+!if [for %c in ($(COGL_GL_DRIVER_SUPPORT_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file 
cogl.mak vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\%~nc.obj]
+!endif
+
+!if [for %c in ($(COGL_WINSYS_COMMON_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\%~nc.obj]
+!endif
+
+!if [for %c in ($(LIBCOGL_EXTRA_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\%~nc.obj]
+!endif
+
+!if [for %c in ($(LIBCOGL_TESTS_EXTRA_OBJS:\cogl\=\cogl-tests\)) do @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\%~nxc]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl_path1_HDRS]
+!endif
+
+!if [for %c in ($(COGL_PATH_1_x_HDRS:/=\)) do @if "%~xc" == ".h" @call create-lists.bat file cogl.mak 
..\..\cogl-path\%c]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl_path_actual_hdrs]
+!endif
+
+!if [for %c in ($(COGL_PATH_HDRS:/=\)) do @if "%~xc" == ".h" @call create-lists.bat file cogl.mak 
..\..\cogl-path\%c]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak libcogl_path_OBJS]
+!endif
+
+!if [for %c in ($(COGL_PATH_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\%~nc.obj]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak libcogl_pango_OBJS]
+!endif
+
+!if [for %c in ($(COGL_PANGO_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\%~nc.obj]
+!endif
+
+!if [for %c in (cogl-pango.res) do @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\%c]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl_pango_real_srcs]
+!endif
+
+!if [for %c in ($(COGL_PANGO_SRCS:/=\)) do @call create-lists.bat file cogl.mak ..\..\cogl-pango\%c]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl_pango_real_hdrs]
+!endif
+
+!if [for %c in ($(COGL_PANGO_PUB_HDRS:/=\)) do @call create-lists.bat file cogl.mak ..\..\cogl-pango\%c]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak libcogl_gst_OBJS]
+!endif
+
+!if [for %c in ($(COGL_GST_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst\%~nc.obj]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl_gst_real_srcs]
+!endif
+
+!if [for %c in ($(COGL_GST_SRCS:/=\)) do @call create-lists.bat file cogl.mak ..\..\cogl-gst\%c]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl_gst_real_hdrs]
+!endif
+
+!if [for %c in ($(COGL_GST_PUB_HDRS:/=\)) do @call create-lists.bat file cogl.mak ..\..\cogl-gst\%c]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl_gst_plugin_OBJS]
+!endif
+
+!if [for %c in ($(COGL_GST_PLUGIN_SRCS:/=\)) do @if "%~xc" == ".c" @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst-plugin\%~nc.obj]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl_unit_test_OBJS]
+!endif
+
+!if [for %c in (..\..\tests\unit\*.c) do @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\%~nc.obj]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl_micro_perf_test_OBJS]
+!endif
+
+!if [for %c in (..\..\tests\micro-perf\*.c) do @call create-lists.bat file cogl.mak 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\%~nc.obj]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!if [call create-lists.bat header cogl.mak cogl_conform_test_OBJS]
+!endif
+
+!if [for %c in ($(common_sources) $(base_test_srcs) $(test_srcs_no_emscripten) $(test_srcs_path)) do @@if 
"%~xc" == ".c" @call create-lists.bat file cogl.mak vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\%~nc.obj]
+!endif
+
+!if [call create-lists.bat footer cogl.mak]
+!endif
+
+!include cogl.mak
+
+!if [del /f /q cogl.mak]
+!endif
diff --git a/build/nmake/create-lists.bat b/build/nmake/create-lists.bat
new file mode 100644
index 00000000..ef60d5ce
--- /dev/null
+++ b/build/nmake/create-lists.bat
@@ -0,0 +1,42 @@
+@echo off
+rem Simple .bat script for creating the NMake Makefile snippets.
+
+if not "%1" == "header" if not "%1" == "file" if not "%1" == "footer" goto :error_cmd
+if "%2" == "" goto error_no_destfile
+
+if "%1" == "header" goto :header
+if "%1" == "file" goto :addfile
+if "%1" == "footer" goto :footer
+
+:header
+if "%3" == "" goto error_var
+echo %3 =      \>>%2
+goto done
+
+:addfile
+if "%3" == "" goto error_file
+echo.  %3      \>>%2
+goto done
+
+:footer
+echo.  $(NULL)>>%2
+echo.>>%2
+goto done
+
+:error_cmd
+echo Specified command '%1' was invalid.  Valid commands are: header file footer.
+goto done
+
+:error_no_destfile
+echo Destination NMake snippet file must be specified
+goto done
+
+:error_var
+echo A name must be specified for using '%1'.
+goto done
+
+:error_file
+echo A file must be specified for using '%1'.
+goto done
+
+:done
\ No newline at end of file
diff --git a/build/nmake/detectenv-msvc.mak b/build/nmake/detectenv-msvc.mak
new file mode 100644
index 00000000..b2f0821c
--- /dev/null
+++ b/build/nmake/detectenv-msvc.mak
@@ -0,0 +1,154 @@
+# Change this (or specify PREFIX= when invoking this NMake Makefile) if
+# necessary, so that the libs and headers of the dependent third-party
+# libraries can be located.  For instance, if building from GLib's
+# included Visual Studio projects, this should be able to locate the GLib
+# build out-of-the-box if they were not moved.  GLib's headers will be
+# found in $(GLIB_PREFIX)\include\glib-2.0 and
+# $(GLIB_PREFIX)\lib\glib-2.0\include and its import library will be found
+# in $(GLIB_PREFIX)\lib.
+
+!if "$(PREFIX)" == ""
+PREFIX = ..\..\..\vs$(VSVER)\$(PLAT)
+!endif
+
+# Location of the PERL interpreter, for running glib-mkenums.  glib-mkenums
+# needs to be found in $(PREFIX)\bin.  Using either a 32-bit or x64 PERL
+# interpreter are supported for either a 32-bit or x64 build.
+
+!if "$(PERL)" == ""
+PERL = perl
+!endif
+
+# Location of the Python interpreter, for building introspection.  The complete set
+# of Python Modules for introspection (the giscanner Python scripts and the _giscanner.pyd
+# compiled module) needs to be found in $(PREFIX)\lib\gobject-introspection\giscanner, and
+# the g-ir-scanner Python script and g-ir-compiler utility program needs to be found
+# in $(PREFIX)\bin, together with any DLLs they will depend on, if those DLLs are not already
+# in your PATH.
+# Note that the Python interpreter and the introspection modules and utility progam must
+# correspond to the build type (i.e. 32-bit Release for 32-bit Release builds, and so on).
+#
+# For introspection, currently only Python 2.7.x is supported.  This may change when Python 3.x
+# support is added upstream in gobject-introspection--when this happens, the _giscanner.pyd must
+# be the one that is built against the release series of Python that is used here.
+
+!if "$(PYTHON)" == ""
+PYTHON = python
+!endif
+
+# Location of the pkg-config utility program, for building introspection.  It needs to be able
+# to find the pkg-config (.pc) files so that the correct libraries and headers for the needed libraries
+# can be located, using PKG_CONFIG_PATH.  Using either a 32-bit or x64 pkg-config are supported for
+# either a 32-bit or x64 build.
+
+!if "$(PKG_CONFIG)" == ""
+PKG_CONFIG = pkg-config
+!endif
+
+# The items below this line should not be changed, unless one is maintaining
+# the NMake Makefiles.  The exception is for the CFLAGS_ADD line(s) where one
+# could use his/her desired compiler optimization flags, if he/she knows what is
+# being done.
+
+# Check to see we are configured to build with MSVC (MSDEVDIR, MSVCDIR or
+# VCINSTALLDIR) or with the MS Platform SDK (MSSDK or WindowsSDKDir)
+!if !defined(VCINSTALLDIR) && !defined(WINDOWSSDKDIR)
+MSG = ^
+This Makefile is only for Visual Studio 2008 and later.^
+You need to ensure that the Visual Studio Environment is properly set up^
+before running this Makefile.
+!error $(MSG)
+!endif
+
+ERRNUL  = 2>NUL
+_HASH=^#
+
+!if ![echo VCVERSION=_MSC_VER > vercl.x] \
+    && ![echo $(_HASH)if defined(_M_IX86) >> vercl.x] \
+    && ![echo PLAT=Win32 >> vercl.x] \
+    && ![echo $(_HASH)elif defined(_M_AMD64) >> vercl.x] \
+    && ![echo PLAT=x64 >> vercl.x] \
+    && ![echo $(_HASH)endif >> vercl.x] \
+    && ![cl -nologo -TC -P vercl.x $(ERRNUL)]
+!include vercl.i
+!if ![echo VCVER= ^\> vercl.vc] \
+    && ![set /a $(VCVERSION) / 100 - 6 >> vercl.vc]
+!include vercl.vc
+!endif
+!endif
+!if ![del $(ERRNUL) /q/f vercl.x vercl.i vercl.vc]
+!endif
+
+!if $(VCVERSION) > 1499 && $(VCVERSION) < 1600
+VSVER = 9
+!elseif $(VCVERSION) > 1599 && $(VCVERSION) < 1700
+VSVER = 10
+!elseif $(VCVERSION) > 1699 && $(VCVERSION) < 1800
+VSVER = 11
+!elseif $(VCVERSION) > 1799 && $(VCVERSION) < 1900
+VSVER = 12
+!elseif $(VCVERSION) > 1899 && $(VCVERSION) < 1910
+VSVER = 14
+!elseif $(VCVERSION) > 1909 && $(VCVERSION) < 2000
+VSVER = 15
+!else
+VSVER = 0
+!endif
+
+!if "$(VSVER)" == "0"
+MSG = ^
+This NMake Makefile set supports Visual Studio^
+9 (2008) through 15 (2017).  Your Visual Studio^
+version is not supported.
+!error $(MSG)
+!else
+!if $(VSVER) < 15
+PDBVER = $(VSVER)
+!else
+PDBVER = 14
+!endif
+!endif
+
+VALID_CFGSET = FALSE
+!if "$(CFG)" == "release" || "$(CFG)" == "Release" || "$(CFG)" == "debug" || "$(CFG)" == "Debug"
+VALID_CFGSET = TRUE
+!endif
+
+# One may change these items, but be sure to test
+# the resulting binaries
+!if "$(CFG)" == "release" || "$(CFG)" == "Release"
+CFLAGS_ADD_NO_GL = /MD /O2 /MP
+CFLAGS_ADD = $(CFLAGS_ADD_NO_GL) /GL
+!if "$(VSVER)" != "9"
+CFLAGS_ADD = $(CFLAGS_ADD) /d2Zi+
+CFLAGS_ADD_NO_GL = $(CFLAGS_ADD_NO_GL) /d2Zi+
+!endif
+!else
+CFLAGS_ADD = /MDd /Od
+CFLAGS_ADD_NO_GL = $(CFLAGS_ADD)
+!endif
+
+!if "$(PLAT)" == "x64"
+LDFLAGS_ARCH = /machine:x64
+!else
+LDFLAGS_ARCH = /machine:x86
+!endif
+
+!if "$(VALID_CFGSET)" == "TRUE"
+CFLAGS_NOGL = $(CFLAGS_ADD_NO_GL) /W3 /Zi
+CFLAGS = $(CFLAGS_ADD) /W3 /Zi
+
+LDFLAGS_BASE = $(LDFLAGS_ARCH) /libpath:$(PREFIX)\lib /DEBUG
+
+!if "$(CFG)" == "debug" || "$(CFG)" == "Debug"
+ARFLAGS_NOLTCG = $(LDFLAGS_ARCH)
+ARFLAGS = $(LDFLAGS_ARCH)
+LDFLAGS_NOLTCG = $(LDFLAGS_BASE)
+LDFLAGS = $(LDFLAGS_BASE)
+!else
+ARFLAGS_NOLTCG = $(LDFLAGS_ARCH) /LTCG
+ARFLAGS = $(ARFLAGS_NOLTCG) /LTCG
+LDFLAGS_NOLTCG = $(LDFLAGS_BASE) /opt:ref
+LDFLAGS = $(LDFLAGS_NOLTCG) /LTCG
+!endif
+!endif
diff --git a/build/nmake/generate-msvc.mak b/build/nmake/generate-msvc.mak
new file mode 100644
index 00000000..ab9827f6
--- /dev/null
+++ b/build/nmake/generate-msvc.mak
@@ -0,0 +1,87 @@
+# NMake Makefile portion for code generation and
+# intermediate build directory creation
+# Items in here should not need to be edited unless
+# one is maintaining the NMake build files.
+
+# Create the build directories
+
+LIBCOGL_CONFIG_HDRS =  \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\config.h        \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-defines.h  \
+       vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-gl-header.h        \
+
+LIBCOGL_TESTS_CONFIG_HDRS =  $(LIBCOGL_CONFIG_HDRS:\cogl\=\cogl-tests\)
+
+!ifdef SDL
+COGL_DEFINES_H_DEP = ..\..\cogl\cogl-defines.h.win32_SDL
+!else
+!ifdef SDL2
+COGL_DEFINES_H_DEP = ..\..\cogl\cogl-defines.h.win32_SDL
+!else
+COGL_DEFINES_H_DEP = ..\..\cogl\cogl-defines.h.win32
+!endif
+!endif
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\config.h: ..\..\config.h.win32
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-defines.h: $(COGL_DEFINES_H_DEP)
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-gl-header.h: ..\..\cogl\cogl-gl-header.h.win32
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\config.h: ..\..\config.h.win32
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl-defines.h: $(COGL_DEFINES_H_DEP)
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl-gl-header.h: ..\..\cogl\cogl-gl-header.h.win32
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\config.h       \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-defines.h \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-gl-header.h       \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\config.h \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl-defines.h   \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl-gl-header.h:
+       @if not exist $(@D)\ $(MAKE) /f Makefile.vc CFG=$(CFG) $(@D)
+       @copy $** $@
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl        \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests  \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-examples       \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst    \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst-plugin     \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path   \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango:
+       @-mkdir $@
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-enum-types.c: ..\..\cogl\cogl-enum-types.c.in $(cogl1_HDRS)
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-enum-types.h: ..\..\cogl\cogl-enum-types.h.in $(cogl1_HDRS)
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl-enum-types.c: ..\..\cogl\cogl-enum-types.c.in $(cogl1_HDRS)
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl-enum-types.h: ..\..\cogl\cogl-enum-types.h.in $(cogl1_HDRS)
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\cogl-path-enum-types.c: ..\..\cogl-path\cogl-path-enum-types.c.in 
$(cogl_path1_HDRS)
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\cogl-path-enum-types.h: ..\..\cogl-path\cogl-path-enum-types.h.in 
$(cogl_path1_HDRS)
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-enum-types.c      \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-enum-types.h      \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl-enum-types.c        \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl-enum-types.h        \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\cogl-path-enum-types.c    \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\cogl-path-enum-types.h:
+       @if not exist $(@D)\ $(MAKE) /f Makefile.vc CFG=$(CFG) $(@D)
+       $(GLIB_MKENUMS_INTERP) $(GLIB_MKENUMS) --template $(**) > $@
+
+# Generate .def files
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl.def: ..\..\cogl\cogl.symbols
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl.def: ..\..\cogl\cogl.symbols
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl.def       \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-tests\cogl.def:
+       @if not exist $(@D)\ $(MAKE) /f Makefile.vc CFG=$(CFG) $(@D)
+       echo EXPORTS > $@
+       $(CPP) /EP $** >> $@
+
+# Generate filelists for introspection
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl_1_gir_filelist: $(cogl1_HDRS) $(LIBCOGL_ENUM_HDRS)
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl_2_gir_filelist: $(cogl2_HDRS) $(cogl2_extra_HDRS) $(LIBCOGL_ENUM_HDRS)
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\coglpango_gir_filelist: $(cogl_pango_real_hdrs) $(cogl_pango_real_srcs)
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst\coglgst_gir_filelist: $(cogl_gst_real_hdrs) $(cogl_gst_real_srcs)
+
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl_1_gir_filelist    \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl_2_gir_filelist    \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-pango\coglpango_gir_filelist   \
+vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-gst\coglgst_gir_filelist:
+       @for %%f in ($**) do @echo %%f >> $@
diff --git a/build/nmake/info-msvc.mak b/build/nmake/info-msvc.mak
new file mode 100644
index 00000000..be0f56a0
--- /dev/null
+++ b/build/nmake/info-msvc.mak
@@ -0,0 +1,81 @@
+# NMake Makefile portion for displaying config info
+
+all-build-info:
+       @echo.
+       @echo ----------
+       @echo Build info
+       @echo ---------
+       @echo Build Type: $(CFG)
+       @echo Enabled features: $(LIBCOGL_ENABLED_FEATURES)
+       @echo Other build options: $(COGL_ADDITIONAL_BUILD_OPTIONS)
+
+help:
+       @echo.
+       @echo ============================
+       @echo Building Cogl Using NMake
+       @echo ============================
+       @echo nmake /f Makefile.vc CFG=[release^|debug] ^<PREFIX=PATH^>
+       @echo.
+       @echo Where:
+       @echo ------
+       @echo CFG: Required, use CFG=release for an optimized build and CFG=debug
+       @echo for a debug build.  PDB files are generated for all builds.  By default
+       @echo the main Cogl DLL and the CoglPath DLL will be built, along with example
+       @echo programs that only make use of them.
+       @echo.
+       @echo PYTHON: Required if your Python interpreter is not in your PATH and if
+       @echo using GLib-2.53.1 (or later) or building the introspection files are
+       @echo desired. This is the full path to the Python interpreter that is present
+       @echo on your system.  For building the introspection files, this interpreter
+       @echo must match the release series and platform configuration (Win32 or x64)
+       @echo of your installation of gobject-introspection (please see the part about
+       @echo INTROSPECTION)
+       @echo.
+       @echo PYTHON: Required if your PERL interpreter is not in your PATH and if
+       @echo using GLib-2.52.x (or earlier). This is the full path to the PERL
+       @echo interpreter that is present on your system.
+       @echo.
+       @echo PREFIX: Optional, the path where dependent libraries and tools may be
+       @echo found, default is ^$(srcrootdir)\..\vs^$(short_vs_ver)\^$(platform),
+       @echo where ^$(short_vs_ver) is 15 for VS 2017 and so on; and
+       @echo ^$(platform) is Win32 for 32-bit builds and x64 for x64 builds.
+       @echo.
+       @echo SDL: Optional, use if SDL-1.2.x support is desired.  The SDL-1.2.x
+       @echo headers and libraries need to be found in %INCLUDE% and %LIB% respectively,
+       @echo or must be in $(PREFIX)\include\SDL and $(PREFIX)\lib respectively.
+       @echo.
+       @echo SDL2: Optional, use if SDL-2.x support is desired.  The SDL-2.x
+       @echo headers and libraries need to be found in %INCLUDE% and %LIB% respectively,
+       @echo or must be in $(PREFIX)\include\SDL and $(PREFIX)\lib respectively.
+       @echo.
+       @echo GDK-Pixbuf: Optional, but recommended, for loading images that GDK-Pixbuf
+       @echo supports.  The GDK-Pixbuf-2.x headers and libraries need to be found
+       @echo in %INCLUDE% and %LIB% respectively, or must be in
+       @echo $(PREFIX)\include\gdk-pixbuf-2.0 and $(PREFIX)\lib respectively.
+       @echo.
+       @echo PANGO: Optional, for building the CoglPango DLL and the sample programs
+       @echo that makes use of it.  The Pango-1.x headers and libraries need to be found
+       @echo in %INCLUDE% and %LIB% respectively, or must be in
+       @echo $(PREFIX)\include\pango-1.0 and $(PREFIX)\lib respectively.
+       @echo.
+       @echo GST: Optional, for building the CoglGst DLL and the sample programs
+       @echo that makes use of it.  The GStreamer-1.x headers and libraries need to be found
+       @echo in %INCLUDE% and %LIB% respectively, or must be in
+       @echo $(PREFIX)\include\gstreamer-1.0 and $(PREFIX)\lib respectively.
+       @echo.
+       @echo INTROSPECTION: Optional, for building the introspection files for all libraries
+       @echo built, except for CoglPath.  The gobject-introspection scanner and compiler must
+       @echo be found in $(PREFIX)\bin, and the python interpreter you are using (please see
+       @echo PYTHON) must match the release series and platform configuration (Win32, x64)
+       @echo of the one that was used to build gobject-introspection.
+       @echo ======
+       @echo A 'clean' target is supported to remove all generated files, intermediate
+       @echo object files and binaries for the specified configuration.
+       @echo.
+       @echo An 'install' target is supported to copy the build (DLLs, example programs,
+       @echo LIBs, along with the introspection files if applicable) to appropriate
+       @echo locations under ^$(PREFIX).
+       @echo.
+       @echo A 'tests' target is supported to build the test programs.
+       @echo ======
+       @echo.
diff --git a/build/nmake/install.mak b/build/nmake/install.mak
new file mode 100644
index 00000000..ef2e955d
--- /dev/null
+++ b/build/nmake/install.mak
@@ -0,0 +1,39 @@
+# NMake Makefile snippet for copying the built libraries, utilities and headers to
+# a path under $(PREFIX).
+
+install: all
+       @if not exist $(PREFIX)\bin mkdir $(PREFIX)\bin
+       @if not exist $(PREFIX)\lib mkdir $(PREFIX)\lib
+       @if not "$(COGL_INTROSPECTION_TYPELIBS)" == "" if not exist $(PREFIX)\lib\girepository-1.0 mkdir 
$(PREFIX)\lib\girepository-1.0
+       @if not "$(GST)" == "" if not exist $(PREFIX)\lib\gstreamer-1.0 mkdir $(PREFIX)\lib\gstreamer-1.0
+       @if not exist $(PREFIX)\share\gir-1.0 mkdir $(PREFIX)\share\gir-1.0
+       @if not exist $(PREFIX)\include\cogl\cogl mkdir $(PREFIX)\include\cogl\cogl
+       @if not exist $(PREFIX)\include\cogl\cogl\deprecated mkdir $(PREFIX)\include\cogl\cogl\deprecated
+       @if not exist $(PREFIX)\include\cogl\cogl\gl-prototypes mkdir 
$(PREFIX)\include\cogl\cogl\gl-prototypes
+       @if not exist $(PREFIX)\include\cogl\cogl-path mkdir $(PREFIX)\include\cogl\cogl-path
+       @if exist $(COGL_PANGO_DLL) if not exist $(PREFIX)\include\cogl\cogl-pango mkdir 
$(PREFIX)\include\cogl\cogl-pango
+       @if exist $(COGL_GST_DLL) if not exist $(PREFIX)\include\cogl\cogl-gst mkdir 
$(PREFIX)\include\cogl\cogl-gst
+       @copy /b /y $(COGL_DLL) $(PREFIX)\bin
+       @copy /b /y $(COGL_DLL:.dll=.pdb) $(PREFIX)\bin
+       @copy /b /y $(COGL_LIB) $(PREFIX)\lib
+       @copy /b /y $(COGL_PATH_DLL) $(PREFIX)\bin
+       @copy /b /y $(COGL_PATH_DLL:.dll=.pdb) $(PREFIX)\bin
+       @copy /b /y $(COGL_PATH_LIB) $(PREFIX)\lib
+       @if exist $(COGL_PANGO_DLL) copy /b /y $(COGL_PANGO_DLL) $(PREFIX)\bin
+       @if exist $(COGL_PANGO_DLL) copy /b /y $(COGL_PANGO_DLL:.dll=.pdb) $(PREFIX)\bin
+       @if exist $(COGL_PANGO_LIB) copy /b /y $(COGL_PANGO_LIB) $(PREFIX)\lib
+       @if exist $(COGL_GST_DLL) copy /b /y $(COGL_GST_DLL) $(PREFIX)\bin
+       @if exist $(COGL_GST_DLL) copy /b /y $(COGL_GST_DLL:.dll=.pdb) $(PREFIX)\bin
+       @if exist $(COGL_GST_LIB) copy /b /y $(COGL_GST_LIB) $(PREFIX)\lib
+       @if not "$(COGL_INTROSPECTION_TYPELIBS)" == "" for %%f in 
($(COGL_INTROSPECTION_TYPELIBS:.typelib=.gir)) do @copy /y %%f $(PREFIX)\share\gir-1.0
+       @if not "$(COGL_INTROSPECTION_TYPELIBS)" == "" for %%f in ($(COGL_INTROSPECTION_TYPELIBS)) do @copy 
/b /y %%f $(PREFIX)\lib\girepository-1.0
+       @for %%f in ($(COGL_EXAMPLE_PROGS)) do @copy /b /y %%f $(PREFIX)\bin
+       @for %%f in ($(COGL_EXAMPLE_PROGS:.exe=.pdb)) do @copy /b /y %%f $(PREFIX)\bin
+       @if exist $(COGL_GST_PLUGIN) for %%f in ($(COGL_GST_PLUGIN)) do @copy /b /y %%f 
$(PREFIX)\lib\gstreamer-1.0
+       @if exist $(COGL_GST_PLUGIN) for %%f in ($(COGL_GST_PLUGIN:.dll=.pdb)) do @copy /b /y %%f 
$(PREFIX)\lib\gstreamer-1.0
+       @for %%f in ($(LIBCOGL_INSTALLED_HDRS:/=\)) do @copy /y ..\..\cogl\%%f $(PREFIX)\include\cogl\cogl\%%f
+       @for %%f in (vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-defines.h 
vs$(PDBVER)\$(CFG)\$(PLAT)\cogl\cogl-enum-types.h) do @copy /y %%f $(PREFIX)\include\cogl\cogl
+       @for %%f in ($(cogl_path_actual_hdrs:..\..\=)) do @copy /y ..\..\%%f $(PREFIX)\include\cogl\%%f
+       @for %%f in (vs$(PDBVER)\$(CFG)\$(PLAT)\cogl-path\cogl-path-enum-types.h) do @copy /y %%f 
$(PREFIX)\include\cogl\cogl-path
+       @if exist $(COGL_PANGO_DLL) for %%f in ($(cogl_pango_real_hdrs:..\..\=)) do @copy /b /y ..\..\%%f 
$(PREFIX)\include\cogl\%%f
+       @if exist $(COGL_GST_DLL) for %%f in ($(cogl_gst_real_hdrs:..\..\=)) do @copy /b /y ..\..\%%f 
$(PREFIX)\include\cogl\%%f
diff --git a/configure.ac b/configure.ac
index 213399f8..ba72ce2b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1476,9 +1476,7 @@ Makefile
 README
 config.h.win32
 build/Makefile
-build/win32/Makefile
-build/win32/vs9/Makefile
-build/win32/vs10/Makefile
+build/nmake/Makefile
 deps/Makefile
 deps/glib/Makefile
 deps/gmodule/Makefile


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]