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