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