1d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# Change this (or specify PREFIX= when invoking this NMake Makefile) if
2d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# necessary, so that the libs and headers of the dependent third-party
3d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# libraries can be located.  For instance, if building from GLib's
4d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# included Visual Studio projects, this should be able to locate the GLib
5d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# build out-of-the-box if they were not moved.  GLib's headers will be
6d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# found in $(GLIB_PREFIX)\include\glib-2.0 and
7d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# $(GLIB_PREFIX)\lib\glib-2.0\include and its import library will be found
8d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# in $(GLIB_PREFIX)\lib.
9d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
10d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if "$(PREFIX)" == ""
11d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanPREFIX = ..\..\vs$(VSVER)\$(PLAT)
12d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
13d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
14d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# Location of the PERL interpretor, for running glib-mkenums.  glib-mkenums
15d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# needs to be found in $(PREFIX)\bin.  Using either a 32-bit or x64 PERL
16d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# interpretor are supported for either a 32-bit or x64 build.
17d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
18d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if "$(PERL)" == ""
19d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanPERL = perl
20d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
21d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
22d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# Location of the Python interpretor, for building introspection.  The complete set
23d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# of Python Modules for introspection (the giscanner Python scripts and the _giscanner.pyd
24d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# compiled module) needs to be found in $(PREFIX)\lib\gobject-introspection\giscanner, and
25d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# the g-ir-scanner Python script and g-ir-compiler utility program needs to be found
26d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# in $(PREFIX)\bin, together with any DLLs they will depend on, if those DLLs are not already
27d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# in your PATH.
28d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# Note that the Python interpretor and the introspection modules and utility progam must
29d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# correspond to the build type (i.e. 32-bit Release for 32-bit Release builds, and so on).
30d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan#
31d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# For introspection, currently only Python 2.7.x is supported.  This may change when Python 3.x
32d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# support is added upstream in gobject-introspection--when this happens, the _giscanner.pyd must
33d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# be the one that is built against the release series of Python that is used here.
34d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
35d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if "$(PYTHON)" == ""
36d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanPYTHON = python
37d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
38d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
39d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# Location of the pkg-config utility program, for building introspection.  It needs to be able
40d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# to find the pkg-config (.pc) files so that the correct libraries and headers for the needed libraries
41d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# can be located, using PKG_CONFIG_PATH.  Using either a 32-bit or x64 pkg-config are supported for
42d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# either a 32-bit or x64 build.
43d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
44d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if "$(PKG_CONFIG)" == ""
45d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanPKG_CONFIG = pkg-config
46d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
47d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
48d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# The items below this line should not be changed, unless one is maintaining
49d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# the NMake Makefiles.  The exception is for the CFLAGS_ADD line(s) where one
50d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# could use his/her desired compiler optimization flags, if he/she knows what is
51d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# being done.
52d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
53d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# Check to see we are configured to build with MSVC (MSDEVDIR, MSVCDIR or
54d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# VCINSTALLDIR) or with the MS Platform SDK (MSSDK or WindowsSDKDir)
55d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if !defined(VCINSTALLDIR) && !defined(WINDOWSSDKDIR)
56d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanMSG = ^
57d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanThis Makefile is only for Visual Studio 2008 and later.^
58d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanYou need to ensure that the Visual Studio Environment is properly set up^
59d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fanbefore running this Makefile.
60d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!error $(MSG)
61d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
62d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
63d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanERRNUL  = 2>NUL
64d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan_HASH=^#
65d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
66d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if ![echo VCVERSION=_MSC_VER > vercl.x] \
67d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan    && ![echo $(_HASH)if defined(_M_IX86) >> vercl.x] \
68d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan    && ![echo PLAT=Win32 >> vercl.x] \
69d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan    && ![echo $(_HASH)elif defined(_M_AMD64) >> vercl.x] \
70d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan    && ![echo PLAT=x64 >> vercl.x] \
71d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan    && ![echo $(_HASH)endif >> vercl.x] \
72d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan    && ![cl -nologo -TC -P vercl.x $(ERRNUL)]
73d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!include vercl.i
74d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if ![echo VCVER= ^\> vercl.vc] \
75d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan    && ![set /a $(VCVERSION) / 100 - 6 >> vercl.vc]
76d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!include vercl.vc
77d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
78d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
79d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if ![del $(ERRNUL) /q/f vercl.x vercl.i vercl.vc]
80d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
81d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
82d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if $(VCVERSION) > 1499 && $(VCVERSION) < 1600
83d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanVSVER = 9
84d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!elseif $(VCVERSION) > 1599 && $(VCVERSION) < 1700
85d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanVSVER = 10
86d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!elseif $(VCVERSION) > 1699 && $(VCVERSION) < 1800
87d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanVSVER = 11
88d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!elseif $(VCVERSION) > 1799 && $(VCVERSION) < 1900
89d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanVSVER = 12
90d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!elseif $(VCVERSION) > 1899 && $(VCVERSION) < 2000
91d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanVSVER = 14
92d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!else
93d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanVSVER = 0
94d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
95d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
96d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if "$(VSVER)" == "0"
97d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanMSG = ^
98d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanThis NMake Makefile set supports Visual Studio^
99d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan9 (2008) through 14 (2015).  Your Visual Studio^
100d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fanversion is not supported.
101d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!error $(MSG)
102d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
103d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
104d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanVALID_CFGSET = FALSE
105d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if "$(CFG)" == "release" || "$(CFG)" == "debug"
106d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanVALID_CFGSET = TRUE
107d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
108d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
109d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# One may change these items, but be sure to test
110d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan# the resulting binaries
111d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if "$(CFG)" == "release"
112d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanCFLAGS_ADD = /MD /O2 /GL /MP
113d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if "$(VSVER)" != "9"
114d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanCFLAGS_ADD = $(CFLAGS_ADD) /d2Zi+
115d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
116d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!else
117d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanCFLAGS_ADD = /MDd /Od
118d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
119d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
120d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if "$(PLAT)" == "x64"
121d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanLDFLAGS_ARCH = /machine:x64
122d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!else
123d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanLDFLAGS_ARCH = /machine:x86
124d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
125d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
126d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if "$(VALID_CFGSET)" == "TRUE"
127d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanCFLAGS = $(CFLAGS_ADD) /W3 /Zi /I.. /I..\src /I. /I$(PREFIX)\include
128d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
129d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanLDFLAGS_BASE = $(LDFLAGS_ARCH) /libpath:$(PREFIX)\lib /DEBUG
130d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan
131d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!if "$(CFG)" == "debug"
132d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanLDFLAGS = $(LDFLAGS_BASE)
133d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!else
134d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei FanLDFLAGS = $(LDFLAGS_BASE) /opt:ref /LTCG
135d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
136d7b6636e5ebf1ddf7d7a04007ffbc411cf7e462eChun-wei Fan!endif
137