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)" == "" 11 PREFIX = ..\..\vs$(VSVER)\$(PLAT) 12 !endif 13 14 # Location of the PERL interpretor, for running glib-mkenums. glib-mkenums 15 # needs to be found in $(PREFIX)\bin. Using either a 32-bit or x64 PERL 16 # interpretor are supported for either a 32-bit or x64 build. 17 18 !if "$(PERL)" == "" 19 PERL = perl 20 !endif 21 22 # Location of the Python interpretor, 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 interpretor 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)" == "" 36 PYTHON = 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)" == "" 45 PKG_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) 56 MSG = ^ 57 This Makefile is only for Visual Studio 2008 and later.^ 58 You need to ensure that the Visual Studio Environment is properly set up^ 59 before running this Makefile. 60 !error $(MSG) 61 !endif 62 63 ERRNUL = 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 83 VSVER = 9 84 !elseif $(VCVERSION) > 1599 && $(VCVERSION) < 1700 85 VSVER = 10 86 !elseif $(VCVERSION) > 1699 && $(VCVERSION) < 1800 87 VSVER = 11 88 !elseif $(VCVERSION) > 1799 && $(VCVERSION) < 1900 89 VSVER = 12 90 !elseif $(VCVERSION) > 1899 && $(VCVERSION) < 2000 91 VSVER = 14 92 !else 93 VSVER = 0 94 !endif 95 96 !if "$(VSVER)" == "0" 97 MSG = ^ 98 This NMake Makefile set supports Visual Studio^ 99 9 (2008) through 14 (2015). Your Visual Studio^ 100 version is not supported. 101 !error $(MSG) 102 !endif 103 104 VALID_CFGSET = FALSE 105 !if "$(CFG)" == "release" || "$(CFG)" == "debug" 106 VALID_CFGSET = TRUE 107 !endif 108 109 # One may change these items, but be sure to test 110 # the resulting binaries 111 !if "$(CFG)" == "release" 112 CFLAGS_ADD = /MD /O2 /GL /MP 113 !if $(VSVER) > 9 && $(VSVER) < 14 114 # Undocumented "enhance optimized debugging" switch. Became documented 115 # as "/Zo" in VS 2013 Update 3, and is turned on by default in VS 2015. 116 CFLAGS_ADD = $(CFLAGS_ADD) /d2Zi+ 117 !endif 118 !else 119 CFLAGS_ADD = /MDd /Od 120 !endif 121 122 !if "$(PLAT)" == "x64" 123 LDFLAGS_ARCH = /machine:x64 124 !elseif "$(PLAT)" == "arm" 125 LDFLAGS_ARCH = /machine:arm 126 CFLAGS_ADD = $(CFLAGS_ADD) /DWINAPI_FAMILY=3 127 !else 128 LDFLAGS_ARCH = /machine:x86 129 !endif 130 131 !if "$(VALID_CFGSET)" == "TRUE" 132 CFLAGS = $(CFLAGS_ADD) /W3 /Zi /I.. /I..\src /I. /I$(PREFIX)\include 133 134 !if "$(ADDITIONAL_LIB_DIR)" != "" 135 ADDITIONAL_LIB_ARG = /libpath:$(ADDITIONAL_LIB_DIR) 136 !endif 137 LDFLAGS_BASE = $(LDFLAGS_ARCH) /libpath:$(PREFIX)\lib $(ADDITIONAL_LIB_ARG) /DEBUG 138 139 !if "$(CFG)" == "debug" 140 LDFLAGS = $(LDFLAGS_BASE) 141 !else 142 LDFLAGS = $(LDFLAGS_BASE) /opt:ref /LTCG 143 !endif 144 !endif 145