summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build/win32/Makefile.am4
-rw-r--r--build/win32/detectenv_msvc.mak65
-rw-r--r--build/win32/gengir_jsonglib.bat132
-rw-r--r--build/win32/introspection-msvc.mak79
-rw-r--r--build/win32/json-glib-introspection-msvc.mak64
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