gtk/build/introspection-msvc.mak
Chun-wei Fan 7115ccd3b0 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.
2014-01-13 16:05:32 +08:00

80 lines
2.4 KiB
Makefile

# 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