diff options
| -rw-r--r-- | build/win32/Makefile.am | 4 | ||||
| -rw-r--r-- | build/win32/detectenv_msvc.mak | 65 | ||||
| -rw-r--r-- | build/win32/gengir_jsonglib.bat | 132 | ||||
| -rw-r--r-- | build/win32/introspection-msvc.mak | 79 | ||||
| -rw-r--r-- | build/win32/json-glib-introspection-msvc.mak | 64 |
5 files changed, 211 insertions, 133 deletions
diff --git a/build/win32/Makefile.am b/build/win32/Makefile.am index 75f9332..eea13ac 100644 --- a/build/win32/Makefile.am +++ b/build/win32/Makefile.am @@ -4,4 +4,6 @@ EXTRA_DIST = \ config.h.win32.in \ config.h.win32 \ gen-file-list-jsonglib.py \ - gengir_jsonglib.bat + detectenv_msvc.mak \ + introspection-msvc.mak \ + json-glib-introspection-msvc.mak diff --git a/build/win32/detectenv_msvc.mak b/build/win32/detectenv_msvc.mak new file mode 100644 index 0000000..020548a --- /dev/null +++ b/build/win32/detectenv_msvc.mak @@ -0,0 +1,65 @@ +# Check to see we are configured to build with MSVC (MSDEVDIR, MSVCDIR or +# VCINSTALLDIR) or with the MS Platform SDK (MSSDK or WindowsSDKDir) +!if !defined(VCINSTALLDIR) && !defined(WINDOWSSDKDIR) +MSG = ^ +This Makefile is only for Visual Studio 2008 and later.^ +You need to ensure that the Visual Studio Environment is properly set up^ +before running this Makefile. +!error $(MSG) +!endif + +ERRNUL = 2>NUL +_HASH=^# + +!if ![echo VCVERSION=_MSC_VER > vercl.x] \ + && ![echo $(_HASH)if defined(_M_IX86) >> vercl.x] \ + && ![echo PLAT=Win32 >> vercl.x] \ + && ![echo $(_HASH)elif defined(_M_AMD64) >> vercl.x] \ + && ![echo PLAT=x64 >> vercl.x] \ + && ![echo $(_HASH)endif >> vercl.x] \ + && ![cl -nologo -TC -P vercl.x $(ERRNUL)] +!include vercl.i +!if ![echo VCVER= ^\> vercl.vc] \ + && ![set /a $(VCVERSION) / 100 - 6 >> vercl.vc] +!include vercl.vc +!endif +!endif +!if ![del $(ERRNUL) /q/f vercl.x vercl.i vercl.vc] +!endif + +!if $(VCVERSION) > 1499 && $(VCVERSION) < 1600 +VSVER = 9 +!elseif $(VCVERSION) > 1599 && $(VCVERSION) < 1700 +VSVER = 10 +!elseif $(VCVERSION) > 1699 && $(VCVERSION) < 1800 +VSVER = 11 +!elseif $(VCVERSION) > 1799 && $(VCVERSION) < 1900 +VSVER = 12 +!else +VSVER = 0 +!endif + +!if "$(VSVER)" == "0" +MSG = ^ +This NMake Makefile set supports Visual Studio^ +9 (2008) through 12 (2013). Your Visual Studio^ +version is not supported. +!error $(MSG) +!endif + +VALID_CFGSET = FALSE +!if "$(CFG)" == "release" || "$(CFG)" == "debug" +VALID_CFGSET = TRUE +!endif + +!if "$(CFG)" == "release" +CFLAGS_ADD = /MD /O2 +!else +CFLAGS_ADD = /MDd /Od /Zi +!endif + +!if "$(PLAT)" == "x64" +LDFLAGS_ARCH = /machine:x64 +!else +LDFLAGS_ARCH = /machine:x86 +!endif diff --git a/build/win32/gengir_jsonglib.bat b/build/win32/gengir_jsonglib.bat deleted file mode 100644 index ec70dc2..0000000 --- a/build/win32/gengir_jsonglib.bat +++ /dev/null @@ -1,132 +0,0 @@ -@echo off
-
-setlocal EnableDelayedExpansion
-
-rem Needed environmental variables:
-rem PLAT: Windows platform-Win32 (i.e. x86) or x64 (i.e. x86-64)
-rem CONF: Configuration Type, Release or Debug
-rem VSVER: Visual C++ version used [9, 10 or 11]
-rem BASEDIR: Where the dependent libraries/headers are located
-rem PKG_CONFIG_PATH: Where the GLib and its dependent pkg-config .pc files can be found
-rem MINGWDIR: Installation path of MINGW GCC, so gcc.exe can be found in %MINGWDIR%\bin.
-
-rem Note that the Python executable/installation and all the runtime dependencies of the
-rem library/libraries need to be in your PATH or %BASEBIN%\bin.
-
-rem Check the environemental variables...
-if /i "%PLAT%" == "Win32" goto PLAT_OK
-if /i "%PLAT%" == "x64" goto PLAT_OK
-if /i "%PLAT%" == "x86" (
- set PLAT=Win32
- goto PLAT_OK
-)
-if /i "%PLAT%" == "x86-64" (
- set PLAT=x64
- goto PLAT_OK
-)
-goto ERR_PLAT
-
-:PLAT_OK
-if "%VSVER%" == "9" goto VSVER_OK
-if "%VSVER%" == "10" goto VSVER_OK
-if "%VSVER%" == "11" goto VSVER_OK
-goto ERR_VSVER
-:VSVER_OK
-if /i "%CONF%" == "Release" goto CONF_OK
-if /i "%CONF%" == "Debug" goto CONF_OK
-goto ERR_CONF
-:CONF_OK
-if "%BASEDIR%" == "" goto ERR_BASEDIR
-if not exist %BASEDIR% goto ERR_BASEDIR
-
-if "%PKG_CONFIG_PATH%" == "" goto ERR_PKGCONFIG
-if not exist %PKG_CONFIG_PATH%\gobject-2.0.pc goto ERR_PKGCONFIG
-
-if "%MINGWDIR%" == "" goto ERR_MINGWDIR
-if not exist %MINGWDIR%\bin\gcc.exe goto ERR_MINGWDIR
-
-set CC=cl
-set BINDIR=%CD%\vs%VSVER%\%CONF%\%PLAT%\bin
-set INCLUDE=%BASEDIR%\include\glib-2.0;%BASEDIR%\lib\glib-2.0\include;%INCLUDE%
-set LIB=%BINDIR%;%BASEDIR%\lib;%LIB%
-set PATH=%BINDIR%;%BASEDIR%\bin;%PATH%;%MINGWDIR%\bin
-set PYTHONPATH=%BASEDIR%\lib\gobject-introspection;%BINDIR%
-
-echo Setup .bat and filelist for generating Json-1.0.gir...
-
-call python gen-file-list-jsonglib.py
-
-rem ===============================================================================
-rem Begin setup of json_gir.bat to create Json-1.0.gir
-rem (The ^^ is necessary to span the command to multiple lines on Windows cmd.exe!)
-rem ===============================================================================
-
-echo echo Generating Json-1.0.gir...> json_gir.bat
-echo @echo off>> json_gir.bat
-echo.>> json_gir.bat
-
-echo copy /b %BINDIR%\json-glib-1.0.lib %BINDIR%\json-1.0.lib>> json_gir.bat
-echo.>> json_gir.bat
-rem ================================================================
-rem Setup the command line flags to g-ir-scanner for Json-1.0.gir...
-rem ================================================================
-echo python %BASEDIR%\bin\g-ir-scanner --verbose -I..\.. ^^>> json_gir.bat
-echo -I%BASEDIR%\include\glib-2.0 -I%BASEDIR%\lib\glib-2.0\include ^^>> json_gir.bat
-echo --namespace=Json --nsversion=1.0 ^^>> json_gir.bat
-echo --include=GObject-2.0 --include=Gio-2.0 ^^>> json_gir.bat
-echo --no-libtool --library=json-glib-1-vs%VSVER% ^^>> json_gir.bat
-echo --reparse-validate --add-include-path=%BASEDIR%\share\gir-1.0 --add-include-path=. ^^>> json_gir.bat
-echo --warn-all --pkg-export json-glib-1.0 --c-include "json-glib/json-glib.h" ^^>> json_gir.bat
-echo -I..\.. -DJSON_COMPILATION=1 -DG_LOG_DOMAIN=\"Json\" ^^>> json_gir.bat
-echo --filelist=json_list ^^>> json_gir.bat
-echo -o Json-1.0.gir>> json_gir.bat
-echo.>> json_gir.bat
-
-echo del %BINDIR%\json-1.0.lib>> json_gir.bat
-echo.>> json_gir.bat
-
-echo Completed setup of .bat for generating Json-1.0.gir.
-echo.>> json_gir.bat
-
-rem =======================
-rem Now generate the .gir's
-rem =======================
-CALL json_gir.bat
-
-rem Clean up the .bat and filelist for generating the .gir files...
-del json_gir.bat
-del json_list
-
-rem Now compile the generated .gir files
-%BASEDIR%\bin\g-ir-compiler --includedir=. --debug --verbose Json-1.0.gir -o Json-1.0.typelib
-
-rem Copy the generated .girs and .typelibs to their appropriate places
-
-mkdir ..\..\build\win32\vs%VSVER%\%CONF%\%PLAT%\share\gir-1.0
-move /y *.gir %BASEDIR%\share\gir-1.0\
-
-mkdir ..\..\build\win32\vs%VSVER%\%CONF%\%PLAT%\lib\girepository-1.0
-move /y *.typelib %BASEDIR%\lib\girepository-1.0\
-
-goto DONE
-
-:ERR_PLAT
-echo You need to specify a valid Platform [set PLAT=Win32 or PLAT=x64]
-goto DONE
-:ERR_VSVER
-echo You need to specify your Visual Studio version [set VSVER=9 or VSVER=10 or VSVER=11]
-goto DONE
-:ERR_CONF
-echo You need to specify a valid Configuration [set CONF=Release or CONF=Debug]
-goto DONE
-:ERR_BASEDIR
-echo You need to specify a valid BASEDIR.
-goto DONE
-:ERR_PKGCONFIG
-echo You need to specify a valid PKG_CONFIG_PATH
-goto DONE
-:ERR_MINGWDIR
-echo You need to specify a valid MINGWDIR, where a valid gcc installation can be found.
-goto DONE
-:DONE
-
diff --git a/build/win32/introspection-msvc.mak b/build/win32/introspection-msvc.mak new file mode 100644 index 0000000..d637cc7 --- /dev/null +++ b/build/win32/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 diff --git a/build/win32/json-glib-introspection-msvc.mak b/build/win32/json-glib-introspection-msvc.mak new file mode 100644 index 0000000..f638272 --- /dev/null +++ b/build/win32/json-glib-introspection-msvc.mak @@ -0,0 +1,64 @@ +# NMake Makefile to build Introspection Files for ATK + +# Change or pass in as a variable/env var if needed +JSONGLIB_DLLNAME = json-glib-1-vs$(VSVER) + +# Please do not change anything after this line + +!include detectenv_msvc.mak + +APIVERSION = 1.0 + +CHECK_PACKAGE = gio-2.0 + +!include introspection-msvc.mak + +!if "$(BUILD_INTROSPECTION)" == "TRUE" +all: setgirbuildnev Json-$(APIVERSION).gir Json-$(APIVERSION).typelib + +json_list: + @-echo Generating Filelist to Introspect for JSON-GLib... + $(PYTHON2) gen-file-list-jsonglib.py + +vs$(VSVER)\$(CFG)\$(PLAT)\bin\Json-$(APIVERSION).lib: + @-echo Copying Json-1.0.lib from json-glib-1.0.lib + @-copy /b vs$(VSVER)\$(CFG)\$(PLAT)\bin\json-glib-$(APIVERSION).lib vs$(VSVER)\$(CFG)\$(PLAT)\bin\Json-$(APIVERSION).lib + +setgirbuildnev: + @set CC=$(CC) + @set PYTHONPATH=$(BASEDIR)\lib\gobject-introspection + @set PATH=vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(BASEDIR)\bin;$(PATH);$(MINGWDIR)\bin + @set PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) + @set LIB=vs$(VSVER)\$(CFG)\$(PLAT)\bin;$(LIB) + +Json-$(APIVERSION).gir: json_list vs$(VSVER)\$(CFG)\$(PLAT)\bin\Json-$(APIVERSION).lib + @-echo Generating Json-$(APIVERSION).gir... + $(PYTHON2) $(G_IR_SCANNER) --verbose -I..\.. \ + -I$(BASEDIR)\include\glib-2.0 -I$(BASEDIR)\lib\glib-2.0\include \ + --namespace=Json --nsversion=$(APIVERSION) \ + --include=GObject-2.0 --include=Gio-2.0 \ + --no-libtool --library=$(JSONGLIB_DLLNAME) \ + --reparse-validate --add-include-path=$(BASEDIR)\share\gir-1.0 --add-include-path=. \ + --warn-all --pkg-export json-glib-$(APIVERSION) --c-include "json-glib/json-glib.h" \ + -DJSON_COMPILATION=1 -DG_LOG_DOMAIN=\"Json\" \ + --filelist=json_list -o $@ + +Json-$(APIVERSION).typelib: Json-$(APIVERSION).gir + @-echo Compiling Json-$(APIVERSION).typelib... + $(G_IR_COMPILER) --includedir=. --debug --verbose Json-$(APIVERSION).gir -o Json-$(APIVERSION).typelib + +install-introspection: setgirbuildnev Json-$(APIVERSION).gir Json-$(APIVERSION).typelib + @-copy Json-$(APIVERSION).gir $(G_IR_INCLUDEDIR) + @-copy /b Json-$(APIVERSION).typelib $(G_IR_TYPELIBDIR) + +!else +all: + @-echo $(ERROR_MSG) +!endif + +clean: + @-del /f/q Json-$(APIVERSION).typelib + @-del /f/q Json-$(APIVERSION).gir + @-del /f/q vs$(VSVER)\$(CFG)\$(PLAT)\bin\Json-$(APIVERSION).lib + @-del /f/q json_list + @-del /f/q *.pyc |
