diff options
author | Chun-wei Fan <fanchunwei@src.gnome.org> | 2014-01-13 16:05:00 +0800 |
---|---|---|
committer | Chun-wei Fan <fanchunwei@src.gnome.org> | 2014-01-13 16:05:32 +0800 |
commit | 7115ccd3b04f1c7fe905327f8cbf02add2c2768c (patch) | |
tree | 3c0ae87b9fe39042b14ee1995544e47a5ebc4efe /build/introspection-msvc.mak | |
parent | 0f53cd66db630936d5345479819851d26e0d7812 (diff) | |
download | gtk+-7115ccd3b04f1c7fe905327f8cbf02add2c2768c.tar.gz |
MSVC Builds: Rework Introspection Build
The current approach of building the introspection files for GTK works, but
is often cumbersome as one needs to set many environmental variables before
launching a solution file, which runs a Windows batch script to generate
the .gir/.typelib files. It was also possible to hand-run the batch script
from the Visual Studio command prompt, but even more environmental
variables need to be set.
This changes the approach to build the introspection files using an NMake
Makefile (but elimating from the Visual Studio Project Files the part to
build the introspection files) to:
-Make it clearer to the person building the introspection files what
environmental variables are needed, specifically for PKG_CONFIG_PATH and
MINGWDIR and CFG (formerly CONF). Setting stuff like VSVER, PLAT and BASEDIR
is no longer required, which was a bit clunky.
-Allows some more easier flexibility on the build of the intropsection files.
Diffstat (limited to 'build/introspection-msvc.mak')
-rw-r--r-- | build/introspection-msvc.mak | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/build/introspection-msvc.mak b/build/introspection-msvc.mak new file mode 100644 index 0000000000..beff817d00 --- /dev/null +++ b/build/introspection-msvc.mak @@ -0,0 +1,79 @@ +# Common Utility NMake Makefile Template +# Used to Generate Introspection files for various Projects + +# Can Override with env vars as needed +# You will need to have built gobject-introspection for this to work. +# Change or pass in or set the following to suit your environment + +BASEDIR = ..\..\vs$(VSVER)\$(PLAT) +GIR_SUBDIR = share\gir-1.0 +GIR_TYPELIBDIR = lib\girepository-1.0 +G_IR_SCANNER = $(BASEDIR)\bin\g-ir-scanner +G_IR_COMPILER = $(BASEDIR)\bin\g-ir-compiler.exe +G_IR_INCLUDEDIR = $(BASEDIR)\$(GIR_SUBDIR) +G_IR_TYPELIBDIR = $(BASEDIR)\$(GIR_TYPELIBDIR) + +# Note: The PYTHON2 must be a Python 2.6.x or 2.7.x Interpretor! +# Either having python.exe from Python 2.6.x/2.7.x in your PATH will work +# or passing in PYTHON2=<full path to your Python 2.6.x/2.7.x interpretor> will do + +# This is required, and gobject-introspection needs to be built +# before this can be successfully run. +PYTHON2=python + +# Don't change anything following this line! +VALID_PKG_CONFIG_PATH = FALSE +VALID_GCC_INSTPATH = FALSE + +MSG_INVALID_PKGCONFIG = You must set or specifiy a valid PKG_CONFIG_PATH +MSG_INVALID_MINGWDIR = You must set or specifiy a valid MINGWDIR, where gcc.exe can be found in %MINGWDIR%\bin +MSG_INVALID_CFG = You need to specify or set CFG to be release or debug to use this Makefile to build the Introspection Files + +ERROR_MSG = + +BUILD_INTROSPECTION = TRUE + +!if ![pkg-config --print-errors --errors-to-stdout $(CHECK_PACKAGE) > pkgconfig.x] \ + && ![setlocal] \ + && ![set file="pkgconfig.x"] \ + && ![FOR %A IN (%file%) DO @echo PKG_CHECK_SIZE=%~zA > pkgconfig.chksize] \ + && ![del $(ERRNUL) /q/f pkgconfig.x] +!endif + +!include pkgconfig.chksize +!if "$(PKG_CHECK_SIZE)" == "0" +VALID_PKG_CONFIG_PATH = TRUE +!else +VALID_PKG_CONFIG_PATH = FALSE +!endif + +!if ![IF EXIST %MINGWDIR%\bin\gcc.exe @echo VALID_GCC_INSTPATH=TRUE > gcccheck.x] +!endif + +!if ![IF NOT EXIST %MINGWDIR%\bin\gcc.exe @echo VALID_GCC_INSTPATH=FALSE > gcccheck.x] +!endif + +!include gcccheck.x + +!if ![del $(ERRNUL) /q/f pkgconfig.chksize gcccheck.x] +!endif + +VALID_CFGSET = FALSE +!if "$(CFG)" == "release" || "$(CFG)" == "debug" +VALID_CFGSET = TRUE +!endif + +!if "$(VALID_GCC_INSTPATH)" != "TRUE" +BUILD_INTROSPECTION = FALSE +ERROR_MSG = $(MSG_INVALID_MINGWDIR) +!endif + +!if "$(VALID_PKG_CONFIG_PATH)" != "TRUE" +BUILD_INTROSPECTION = FALSE +ERROR_MSG = $(MSG_INVALID_PKGCONFIG) +!endif + +!if "$(VALID_CFGSET)" != "TRUE" +BUILD_INTROSPECTION = FALSE +ERROR_MSG = $(MSG_INVALID_CFG) +!endif |