[gimp] build/win: Start building libgexiv2 and exiv2
- From: Michael Henning <mhenning src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] build/win: Start building libgexiv2 and exiv2
- Date: Sat, 2 Nov 2013 00:16:45 +0000 (UTC)
commit 0ef745cad2d835d15fc8ae8aa223505e6a8d6ba7
Author: Michael Henning <drawoc darkrefraction com>
Date: Fri Nov 1 19:19:09 2013 -0400
build/win: Start building libgexiv2 and exiv2
build/windows/jhbuild/build.jhbuildrc | 2 +
build/windows/jhbuild/gimp.moduleset | 1 +
build/windows/jhbuild/misclibs.moduleset | 32 ++
...001-Port-GExiv2-to-autotools-build-system.patch | 512 ++++++++++++++++++++
4 files changed, 547 insertions(+), 0 deletions(-)
---
diff --git a/build/windows/jhbuild/build.jhbuildrc b/build/windows/jhbuild/build.jhbuildrc
index 77bf8e7..ef62b74 100644
--- a/build/windows/jhbuild/build.jhbuildrc
+++ b/build/windows/jhbuild/build.jhbuildrc
@@ -185,6 +185,8 @@ module_autogenargs['ghostscript']= autogenargs + """ --without-jasper \
module_autogenargs['poppler']= autogenargs + """ ac_cv_func_strcpy_s='no'\
ac_cv_func_strcat_s='no' """
+module_autogenargs['libgexiv2'] = autogenargs + "--disable-introspection"
+
module_autogenargs['webkitgtk'] = autogenargs.replace ("--enable-debug=yes", "") + """ \
--with-gtk=2.0 \
--with-target=win32 \
diff --git a/build/windows/jhbuild/gimp.moduleset b/build/windows/jhbuild/gimp.moduleset
index e5f4b6e..36a7324 100644
--- a/build/windows/jhbuild/gimp.moduleset
+++ b/build/windows/jhbuild/gimp.moduleset
@@ -64,6 +64,7 @@
<dependencies>
<dep package="gimp-common"/>
<dep package="lcms2"/>
+ <dep package="libgexiv2"/>
<dep package="gegl"/>
</dependencies>
</autotools>
diff --git a/build/windows/jhbuild/misclibs.moduleset b/build/windows/jhbuild/misclibs.moduleset
index 0326ad1..a0f2394 100644
--- a/build/windows/jhbuild/misclibs.moduleset
+++ b/build/windows/jhbuild/misclibs.moduleset
@@ -8,6 +8,10 @@
href="http://pkg-isocodes.alioth.debian.org/downloads/" />
<repository type="tarball" name="poppler"
href="http://poppler.freedesktop.org/" />
+ <repository type="tarball" name="yorba"
+ href="http://www.yorba.org/download/" />
+ <repository type="tarball" name="exiv2"
+ href="http://www.exiv2.org/" />
<include href="gtk+.moduleset"/>
@@ -116,4 +120,32 @@
</dependencies>
</autotools>
+<autotools id="exiv2" autogen-sh="configure"
+ makeargs="xmpsdk; make -C po all; make -C src lib"
+ makeinstallargs="-C po install; make -C src install-lib">
+ <branch version="0.23" repo="exiv2"
+ module="exiv2-0.23.tar.gz"
+ hash="md5:dab67c07bb63a4386d4ea607a8e06eaf">
+ </branch>
+ <dependencies>
+ <dep package="zlib"/>
+ <dep package="expat"/>
+ <dep package="iconv"/>
+ <dep package="gettext"/>
+ </dependencies>
+</autotools>
+
+<autotools id="libgexiv2" autogen-sh="|| autoreconf --force --install; ./configure">
+ <branch version="0.7.0" repo="yorba"
+ module="gexiv2/0.7/libgexiv2-0.7.0.tar.xz"
+ hash="sha1:cae01960735e819e17f0c7fe28aca058efe45385">
+ <!-- http://redmine.yorba.org/issues/7660 -->
+ <patch file="0001-Port-GExiv2-to-autotools-build-system.patch" strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="exiv2"/>
+ <dep package="glib2"/>
+ </dependencies>
+</autotools>
+
</moduleset>
diff --git a/build/windows/jhbuild/patches/0001-Port-GExiv2-to-autotools-build-system.patch
b/build/windows/jhbuild/patches/0001-Port-GExiv2-to-autotools-build-system.patch
new file mode 100644
index 0000000..1a96737
--- /dev/null
+++ b/build/windows/jhbuild/patches/0001-Port-GExiv2-to-autotools-build-system.patch
@@ -0,0 +1,512 @@
+From 2176fb05ea3551346763bd22e3f568229835ed98 Mon Sep 17 00:00:00 2001
+From: Jehan <jehan girinstud io>
+Date: Thu, 31 Oct 2013 19:05:07 +1300
+Subject: [PATCH] Port GExiv2 to autotools build system.
+
+---
+ .gitignore | 13 ++++
+ Makefile | 250 -----------------------------------------------------------
+ Makefile.am | 127 ++++++++++++++++++++++++++++++
+ autogen.sh | 3 +
+ configure | 102 ------------------------
+ configure.ac | 195 ++++++++++++++++++++++++++++++++++++++++++++++
+ gexiv2.m4 | 12 ---
+ gexiv2.pc.in | 11 +++
+ 8 files changed, 349 insertions(+), 364 deletions(-)
+ delete mode 100644 Makefile
+ create mode 100644 Makefile.am
+ create mode 100755 autogen.sh
+ delete mode 100755 configure
+ create mode 100644 configure.ac
+ delete mode 100644 gexiv2.m4
+ create mode 100644 gexiv2.pc.in
+
+diff --git a/Makefile.am b/Makefile.am
+new file mode 100644
+index 0000000..5e67720
+--- /dev/null
++++ b/Makefile.am
+@@ -0,0 +1,127 @@
++# Installation directories.
++pkgconfigdir = $(libdir)/pkgconfig
++GEXIV2_publicdir = $(includedir)/gexiv2
++vapidir = $(datadir)/vala/vapi
++girdir = $(datadir)/gir-1.0
++typelibdir = `pkg-config gobject-introspection-no-export-1.0 --variable typelibdir`
++py2gidir = $(PYTHON2_GIDIR)
++py3gidir = $(PYTHON3_GIDIR)
++
++# Extra package files. #
++EXTRA_DIST =
++ @PACKAGE_NAME pc in \
++ GExiv2.py \
++ @PACKAGE_NAME vapi \
++ $(TYPELIB_FILES)
++
++# Installed Files #
++pkgconfig_DATA = @PACKAGE_NAME pc
++lib_LTLIBRARIES = lib PACKAGE_NAME@.la
++#vapi_DATA = @PACKAGE_NAME vapi
++if ENABLE_INTROSPECTION
++gir_DATA = GExiv2-$(GIR_VERSION).gir
++typelib_DATA = GExiv2-$(GIR_VERSION).typelib
++# No introspection, no .gi file for the Python module to call into
++if HAS_PYTHON2
++py2gi_DATA = GExiv2.py
++endif
++if HAS_PYTHON3
++py3gi_DATA = GExiv2.py
++endif
++endif
++
++GEXIV2_public_HEADERS = \
++ gexiv2/gexiv2.h \
++ gexiv2/gexiv2-metadata.h \
++ gexiv2/gexiv2-managed-stream.h \
++ gexiv2/gexiv2-preview-properties.h \
++ gexiv2/gexiv2-preview-image.h \
++ gexiv2/gexiv2-log.h \
++ gexiv2/gexiv2-startup.h
++# gexiv2/gexiv2-version.h
++
++# Non-installed source files. #
++GEXIV2_sources = \
++ gexiv2/gexiv2-metadata.cpp \
++ gexiv2/gexiv2-metadata-exif.cpp \
++ gexiv2/gexiv2-metadata-gps.cpp \
++ gexiv2/gexiv2-metadata-iptc.cpp \
++ gexiv2/gexiv2-metadata-xmp.cpp \
++ gexiv2/gexiv2-stream-io.cpp \
++ gexiv2/gexiv2-preview-properties.cpp \
++ gexiv2/gexiv2-preview-image.cpp \
++ gexiv2/gexiv2-log.cpp \
++ gexiv2/gexiv2-startup.cpp
++ gexiv2/gexiv2-log-private.h \
++ gexiv2/gexiv2-metadata-private.h \
++ gexiv2/gexiv2-stream-io.h \
++ gexiv2/gexiv2-preview-properties-private.h \
++ gexiv2/gexiv2-preview-image-private.h
++
++# compilation setup. #
++
++if PLATFORM_WIN32
++no_undefined = -no-undefined
++endif
++
++# REQUIRED_CFLAGS absolutely get appended to CFLAGS, whatever the
++# the value of CFLAGS in the environment.
++REQUIRED_CXXFLAGS=-Wl,-lstdc++
++
++# Because -fPIC can interfere with compilation on 32-bit platforms but
++# is absolutely necessary for AMD64, we check what the target machine's
++# word size is, and set our required flags based upon that.
++if WORD_64
++REQUIRED_CXXFLAGS += -fPIC -DPIC
++endif
++
++CXXFLAGS += $(REQUIRED_CXXFLAGS)
++
++gexiv2/gexiv2-version.h: gexiv2/gexiv2-version.m4
++ m4 '--define=_VERSION_MAJOR_=$(GEXIV2_MAJOR_VERSION)'
'--define=_VERSION_MINOR_=$(GEXIV2_MINOR_VERSION)' '--define=_VERSION_MICRO_=$(GEXIV2_MICRO_VERSION)' $< > $@
++
++lib PACKAGE_NAME@_la_SOURCES = $(GEXIV2_sources) $(GEXIV2_public_HEADERS)
++lib PACKAGE_NAME@_la_LIBADD = $(EXIV2_LIBS) $(GLIB_LIBS)
++lib PACKAGE_NAME@_la_CPPFLAGS = $(EXIV2_CFLAGS) $(GLIB_CFLAGS)
++
++lib PACKAGE_NAME@_la_LDFLAGS = \
++ $(no_undefined) -export-dynamic -version-info $(GEXIV2_VERSION_INFO)
++
++# Vala #
++
++vapi: @PACKAGE_NAME vapi
++
++ PACKAGE_NAME@.vapi: vapi/@PACKAGE_NAME gi
++ vapigen --library= PACKAGE_NAME@ --metadatadir=vapi vapi/@PACKAGE_NAME gi
++
++vapi/@PACKAGE_NAME gi:
++ @echo NOTE: This version of gexiv2 must be installed to generate a VAPI file.
++ @pkg-config --exact-version=$(VERSION) --print-errors @PACKAGE_NAME@
++ vala-gen-introspect @PACKAGE_NAME@ vapi
++
++# Optional Instrospection #
++
++if ENABLE_INTROSPECTION
++TYPELIB_FILES=GExiv2-$(GIR_VERSION).typelib GExiv2-$(GIR_VERSION).gir
++endif
++
++BUILD_DIR=gexiv2
++
++%.typelib: %.gir
++ g-ir-compiler --includedir=$(BUILD_DIR) -o $@ $<
++
++GExiv2-$(GIR_VERSION).gir: lib PACKAGE_NAME@.la
++ g-ir-scanner --verbose \
++ --namespace=GExiv2 \
++ --nsversion=$(GIR_VERSION) \
++ --symbol-prefix= PACKAGE_NAME@ \
++ --include=GObject-2.0 \
++ --add-include-path=$(BUILD_DIR) \
++ --output $@ \
++ -I @PACKAGE_NAME@ \
++ $(GEXIV2_public_HEADERS) \
++ $(GEXIV2_sources) \
++ --library lib PACKAGE_NAME@.la \
++ $(LIBTOOL) \
++ --pkg=gobject-2.0
++
+diff --git a/autogen.sh b/autogen.sh
+new file mode 100755
+index 0000000..54516bc
+--- /dev/null
++++ b/autogen.sh
+@@ -0,0 +1,3 @@
++#!/bin/sh
++
++autoreconf --force --install
+diff --git a/configure b/configure
+deleted file mode 100755
+index e586c80..0000000
+--- a/configure
++++ /dev/null
+@@ -1,102 +0,0 @@
+-#! /bin/bash
+-#
+-# Copyright 2011-2012 Yorba Foundation
+-#
+-# This software is licensed under the GNU LGPL (version 2.1 or later).
+-# See the COPYING file in this distribution.
+-
+-CONFIG_IN=configure.mk
+-
+-configure_help() {
+- printf "\nUsage:\n"
+- printf "\t./configure [OPTIONS]...\n"
+- printf "\n"
+- printf "Options:\n"
+- printf "\t-h, --help\t\tPrint this help and exit.\n"
+- printf "\t--build=DIR\t\tBuild secondary files in DIR.\n"
+- printf "\t--debug | --release\tBuild executable for debugging or release.\n"
+- printf "\t\t\t\t[--release]\n"
+- printf "\t--prefix=PREFIX\t\tPrepend PREFIX to program installation paths.\n"
+- printf "\t\t\t\t[/usr/local]\n"
+- printf "\t--assume-pkgs\t\tTurn off package version checking.\n"
+- printf "\t--enable-introspection\tEnable GObject introspection.\n"
+- printf "\t\t\t\t(Also installs Python GExiv2.py module.)\n"
+- printf "\t--with-libtool=LIBTOOL\tUse LIBTOOL for g-ir-scanner.\n"
+-}
+-
+-abort() {
+- printf "%s: Invalid argument %s\n" $0 $1
+- configure_help
+- exit 1
+-}
+-
+-while [ $# != 0 ]
+-do
+- option=`echo $1 | sed 's/=.*//'`
+- if [ `echo $1 | grep '='` ]
+- then
+- value=`echo $1 | sed 's/.*=//'`
+- fi
+-
+- case $option in
+- -h | --help) configure_help
+- exit 0
+- ;;
+-
+- --prefix) if [ ! $value ]
+- then
+- abort $1
+- fi
+-
+- variables="${variables}PREFIX=$value\n"
+- ;;
+-
+- --enable-introspection) variables="${variables}ENABLE_INTROSPECTION=1\n"
+- ;;
+-
+- --with-libtool)
+- if [ ! $value ]
+- then
+- abort $1
+- fi
+-
+- variables="${variables}LIBTOOL=--libtool=$value\n"
+- ;;
+-
+- --assume-pkgs) variables="${variables}ASSUME_PKGS=1\n"
+- ;;
+-
+- --build) if [ ! $value ]
+- then
+- abort $1
+- fi
+-
+- variables="${variables}BUILD_DIR=$value\n"
+- ;;
+-
+- --debug) variables="${variables}BUILD_RELEASE=\nBUILD_DEBUG=1\n"
+- ;;
+-
+- --release) variables="${variables}BUILD_DEBUG=\nBUILD_RELEASE=1\n"
+- ;;
+-
+- *) if [ ! $value ]
+- then
+- abort $1
+- fi
+-
+- variables="${variables}${option}=${value}\n"
+- ;;
+- esac
+-
+- shift
+-done
+-
+-rm -f $CONFIG_IN
+-if [ $variables ]
+-then
+- echo -e -n $variables > $CONFIG_IN
+-fi
+-echo "CONFIG_IN=${CONFIG_IN}" >> $CONFIG_IN
+-
+-printf "Configured. Type 'make' to build, 'make install' to install.\n"
+diff --git a/configure.ac b/configure.ac
+new file mode 100644
+index 0000000..5760523
+--- /dev/null
++++ b/configure.ac
+@@ -0,0 +1,195 @@
++AC_INIT([gexiv2], [0.7], [gexiv2-request lists yorba org ], [gexiv2],
[http://redmine.yorba.org/projects/gexiv2/])
++AC_PREREQ(2.54)
++
++AC_CONFIG_MACRO_DIR([m4])
++
++# Will install auxiliary build tools (depcomp, install-sh, missing...) under build-aux/
++AC_CONFIG_AUX_DIR([build-aux])
++AM_INIT_AUTOMAKE([1.11 -Wall no-define foreign dist-xz tar-ustar])
++LT_PREREQ([2.2])
++LT_INIT([disable-static win32-dll])
++
++# This small tricks allows to provide different default compilation flags
++# than autoconf, but still let the user overrides our defaults.
++CXXFLAGS_COPY="$CXXFLAGS"
++AC_PROG_CXX
++CXXFLAGS="$CXXFLAGS_COPY"
++
++PKG_PROG_PKG_CONFIG(0.26)
++
++m4_define([gexiv2_major_version], [0])
++m4_define([gexiv2_minor_version], [7])
++m4_define([gexiv2_micro_version], [0])
++m4_define([gexiv2_real_version],
++ [gexiv2_major_version.gexiv2_minor_version.gexiv2_micro_version+trunk])
++m4_define([gexiv2_version], [gexiv2_real_version])
++
++m4_define([glib_required_version], [2.26.1])
++m4_define([exiv2_required_version], [0.21])
++
++# This number must be edited whenever a change has been made that may affect libgexiv2's
++# external interface. Please see http://sourceware.org/autobook/autobook/autobook_91.html
++# for the version numbering convention that should be used for this and
++# http://davidz25.blogspot.se/2011/07/writing-c-library-part-5.html#abi-api-versioning for
++# guidelines about when this should change.
++GEXIV2_VERSION_INFO=2:0:0
++AC_SUBST(GEXIV2_VERSION_INFO)
++
++# This was necessary because the typelib files don't seem to load if the
++# version info has more than one period in it.
++GIR_VERSION=0.4
++AC_SUBST(GIR_VERSION)
++
++GEXIV2_MAJOR_VERSION=gexiv2_major_version
++GEXIV2_MINOR_VERSION=gexiv2_minor_version
++GEXIV2_MICRO_VERSION=gexiv2_micro_version
++GEXIV2_VERSION=gexiv2_version
++AC_SUBST(GEXIV2_MAJOR_VERSION)
++AC_SUBST(GEXIV2_MINOR_VERSION)
++AC_SUBST(GEXIV2_MICRO_VERSION)
++AC_SUBST(GEXIV2_VERSION)
++
++###################
++# Check for glib2 #
++###################
++
++GLIB_PKGS="gobject-2.0"
++GLIB_REQUIRED_VERSION=glib_required_version
++AC_SUBST(GLIB_REQUIRED_VERSION)
++
++PKG_CHECK_MODULES(GLIB,
++ glib-2.0 >= $GLIB_REQUIRED_VERSION $GLIB_PKGS,
++ ,
++ AC_MSG_ERROR([GLib is required. Please install it.]))
++
++###################
++# Check for exiv2 #
++###################
++
++EXIV2_REQUIRED_VERSION=exiv2_required_version
++AC_SUBST(EXIV2_REQUIRED_VERSION)
++
++PKG_CHECK_MODULES(EXIV2,
++ exiv2 >= $EXIV2_REQUIRED_VERSION,
++ ,
++ AC_MSG_ERROR([exiv2 is required. Please install it.]))
++
++##############
++# Debug Mode #
++##############
++
++AC_MSG_CHECKING([debugging mode])
++AC_ARG_ENABLE(debug,
++ [ --enable-debug enable debug mode [[default=no]]],
++ if eval "test x$enable_debug = xyes"; then
++ DEBUG_CFLAGS="-O0"
++ fi)
++
++if test -n "$DEBUG_CFLAGS"; then
++ AC_MSG_RESULT([yes])
++ if test -z "$CXXFLAGS"; then
++ CXXFLAGS="-O0 -g -pipe -nostdlib -shared"
++ else
++ CXXFLAGS="$DEBUG_CFLAGS $CXXFLAGS"
++ fi
++else
++ AC_MSG_RESULT([no])
++ if test -z "$CXXFLAGS"; then
++ CXXFLAGS="-O2 -g -pipe -nostdlib -shared"
++ fi
++fi
++
++#################
++# Introspection #
++#################
++
++AC_MSG_CHECKING([enable instrospection])
++AC_ARG_ENABLE(introspection,
++ [ --enable-introspection enable instrospection [[default=no]]],
++ if eval "test x$enable_introspection = xyes"; then
++ enable_introspection="yes"
++ fi)
++
++AM_CONDITIONAL(ENABLE_INTROSPECTION, test "x$enable_introspection" = "xyes")
++
++# Used to determine where Python wants the .gi file to be installed ...
++# if Python is not installed, PYTHON2 and PYTHON3 will be empty
++PYTHON="import gi; print(gi._overridesdir)"
++PYTHON2_GIDIR=$(python2 -c $PYTHON 2> /dev/null)
++PYTHON3_GIDIR=$(python3 -c $PYTHON 2> /dev/null)
++AC_SUBST(PYTHON2_GIDIR)
++AM_CONDITIONAL(HAS_PYTHON2, test "x$PYTHON2_GIDIR" != "x")
++AC_SUBST(PYTHON3_GIDIR)
++AM_CONDITIONAL(HAS_PYTHON3, test "x$PYTHON3_GIDIR" != "x")
++
++###################
++# Check Word Size #
++###################
++
++AC_CHECK_SIZEOF([int *])
++AC_SUBST(SIZEOF_INT_P)
++AM_CONDITIONAL(WORD_64, test "x$SIZEOF_INT_P" = "x8" )
++
++###########################
++# Check target architecture
++###########################
++
++AC_MSG_CHECKING([for target architecture])
++case x"$target" in
++ xNONE | x)
++ target_or_host="$host" ;;
++ *)
++ target_or_host="$target" ;;
++esac
++AC_MSG_RESULT([$target_or_host])
++
++case "$target_or_host" in
++ i*86-*-*)
++ have_x86=yes
++ AC_DEFINE(ARCH_X86, 1, [Define to 1 if you are compiling for ix86.])
++ ;;
++ x86_64-*-*)
++ have_x86=yes
++ AC_DEFINE(ARCH_X86, 1, [Define to 1 if you are compiling for ix86.])
++ AC_DEFINE(ARCH_X86_64, 1, [Define to 1 if you are compiling for amd64.])
++ ;;
++ ppc-*-* | powerpc-*)
++ have_ppc=yes
++ AC_DEFINE(ARCH_PPC, 1, [Define to 1 if you are compiling for PowerPC.])
++ ;;
++ ppc64-*-* | powerpc64-*)
++ have_ppc=yes
++ AC_DEFINE(ARCH_PPC, 1, [Define to 1 if you are compiling for PowerPC.])
++ AC_DEFINE(ARCH_PPC64, 1, [Define to 1 if you are compiling for PowerPC64.])
++ ;;
++ *)
++ ;;
++esac
++
++#################
++# Check for Win32
++#################
++
++AC_MSG_CHECKING([Win32 platform])
++case "$target_or_host" in
++ *-*-mingw* | *-*-cygwin*)
++ platform_win32=yes
++ ;;
++ *)
++ platform_win32=no
++ ;;
++esac
++AC_MSG_RESULT([$platform_win32])
++AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")
++
++##############
++# Generation #
++##############
++
++AC_CONFIG_FILES([
++Makefile
++gexiv2.pc:gexiv2.pc.in
++])
++
++AC_OUTPUT
++
+diff --git a/gexiv2.m4 b/gexiv2.m4
+deleted file mode 100644
+index 7023f3d..0000000
+--- a/gexiv2.m4
++++ /dev/null
+@@ -1,12 +0,0 @@
+-prefix=_PREFIX_
+-exec_prefix=${prefix}
+-libdir=${exec_prefix}/lib
+-includedir=${prefix}/include
+-
+-Name: GExiv2
+-Description: GObject bindings for exiv2
+-Requires: exiv2 glib-2.0 gobject-2.0
+-Version: _VERSION_
+-Libs: -L${libdir} -lgexiv2
+-Cflags: -I${includedir}/gexiv2 -I${libdir}/gexiv2/include
+-
+diff --git a/gexiv2.pc.in b/gexiv2.pc.in
+new file mode 100644
+index 0000000..a7d3b53
+--- /dev/null
++++ b/gexiv2.pc.in
+@@ -0,0 +1,11 @@
++prefix= prefix@
++exec_prefix= exec_prefix@
++libdir= libdir@
++includedir= includedir@
++
++Name: GExiv2
++Description: GObject bindings for exiv2
++Requires: exiv2 glib-2.0 gobject-2.0
++Version: @GEXIV2_VERSION@
++Libs: -L${libdir} -l PACKAGE_NAME@
++Cflags: -I${includedir}
+--
+1.8.1.2
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]