[ekiga] [windows] Build with clutter, gstreamer and related libraries



commit f7c966b01a0cca486388a991fae911a85e5e8e94
Author: Eugen Dedu <Eugen Dedu pu-pm univ-fcomte fr>
Date:   Thu Feb 6 15:04:40 2014 +0100

    [windows] Build with clutter, gstreamer and related libraries
    
    It remains to clean up build flags in gstreamer, gst-plugins-base and
    clutter-gst.
    
    Thanks to Thierry Simonnet for help.

 src/Makefile.am |    2 +-
 win32/Makefile  |  183 +++++++++++++++++++++++++++++++++++++++++++++++++++----
 2 files changed, 172 insertions(+), 13 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 19f2c13..5408e6f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -99,7 +99,7 @@ service_in_files = $(service_DATA:.service=.service.in)
 endif
 
 .rc.o:
-       $(RC) $< -o $@ -I $(top_srcdir)
+       $(WINDRES) $< -o $@ -I $(top_srcdir)
 
 GIT_REVISION=\"$$(cd ../.git; git describe )\"
 CACHED_REVISION=$$(cat revision.h 2>/dev/null | cut -c24-)
diff --git a/win32/Makefile b/win32/Makefile
index dce2609..6a89fc2 100644
--- a/win32/Makefile
+++ b/win32/Makefile
@@ -49,7 +49,7 @@ export RANLIB:=$(HOST_TOOL_PREFIX)-ranlib
 export DLLTOOL:=$(HOST_TOOL_PREFIX)-dlltool
 export DLLWRAP:=$(HOST_TOOL_PREFIX)-dllwrap
 export OBJDUMP:=$(HOST_TOOL_PREFIX)-objdump
-export RC:=$(HOST_TOOL_PREFIX)-windres
+export WINDRES:=$(HOST_TOOL_PREFIX)-windres
 export STRIP:=$(HOST_TOOL_PREFIX)-strip
 export AS:=$(HOST_TOOL_PREFIX)-as
 export LDD:=$(BUILDROOT)/$(HOST_TOOL_PREFIX)-ldd.sh
@@ -129,7 +129,7 @@ LIBSASL2_DIR := $(BUILDROOT)/cyrus-sasl-$(LIBSASL2_VER)
 LIBSASL2_ARCHIVE := cyrus-sasl-$(LIBSASL2_VER).zip
 LIBSASL2_URL := http://developer.pidgin.im/static/win32
 
-OGG_VER := 1.3.0
+OGG_VER := 1.3.1
 OGG_DIR := $(BUILDROOT)/libogg-$(OGG_VER)
 OGG_ARCHIVE := libogg-$(OGG_VER).tar.xz
 OGG_URL := http://downloads.xiph.org/releases/ogg
@@ -183,6 +183,41 @@ NSISPROCESSES_URL := http://nsis.sourceforge.net/mediawiki/images/f/f3/
 NSISSYTEM_DIR := /usr/share/nsis/Contrib/Modern\ UI
 NSISPLUGIN_DIR := $(BUILDROOT)/nsisplugins
 
+COGL_VER := 1.14.0
+COGL_URL := http://ftp.gnome.org/pub/GNOME/sources/cogl/$(shell echo $(COGL_VER)|cut -f1-2 -d.)
+COGL_DIR := $(BUILDROOT)/cogl-$(COGL_VER)
+COGL_ARCHIVE := cogl-$(COGL_VER).tar.xz
+
+JSONGLIB_VER := 0.16.2
+JSONGLIB_URL := http://ftp.gnome.org/pub/GNOME/sources/json-glib/$(shell echo $(JSONGLIB_VER)|cut -f1-2 -d.)
+JSONGLIB_DIR := $(BUILDROOT)/json-glib-$(JSONGLIB_VER)
+JSONGLIB_ARCHIVE := json-glib-$(JSONGLIB_VER).tar.xz
+
+CLUTTER_VER := 1.14.6
+CLUTTER_URL := http://ftp.gnome.org/pub/GNOME/sources/clutter/$(shell echo $(CLUTTER_VER)|cut -f1-2 -d.)
+CLUTTER_DIR := $(BUILDROOT)/clutter-$(CLUTTER_VER)
+CLUTTER_ARCHIVE := clutter-$(CLUTTER_VER).tar.xz
+
+CLUTTERGTK_VER := 1.4.4
+CLUTTERGTK_URL := http://ftp.gnome.org/pub/GNOME/sources/clutter-gtk/$(shell echo $(CLUTTERGTK_VER)|cut 
-f1-2 -d.)
+CLUTTERGTK_DIR := $(BUILDROOT)/clutter-gtk-$(CLUTTERGTK_VER)
+CLUTTERGTK_ARCHIVE := clutter-gtk-$(CLUTTERGTK_VER).tar.xz
+
+GSTREAMER_VER := 1.2.2
+GSTREAMER_URL := http://ftp.gnome.org/pub/GNOME/sources/gstreamer/$(shell echo $(GSTREAMER_VER)|cut -f1-2 
-d.)
+GSTREAMER_DIR := $(BUILDROOT)/gstreamer-$(GSTREAMER_VER)
+GSTREAMER_ARCHIVE := gstreamer-$(GSTREAMER_VER).tar.xz
+
+GSTPLUGINSBASE_VER := 1.2.2
+GSTPLUGINSBASE_URL := http://ftp.gnome.org/pub/GNOME/sources/gst-plugins-base/$(shell echo 
$(GSTPLUGINSBASE_VER)|cut -f1-2 -d.)
+GSTPLUGINSBASE_DIR := $(BUILDROOT)/gst-plugins-base-$(GSTPLUGINSBASE_VER)
+GSTPLUGINSBASE_ARCHIVE := gst-plugins-base-$(GSTPLUGINSBASE_VER).tar.xz
+
+CLUTTERGST_VER := 2.0.10
+CLUTTERGST_URL := http://ftp.gnome.org/pub/GNOME/sources/clutter-gst/$(shell echo $(CLUTTERGST_VER)|cut 
-f1-2 -d.)
+CLUTTERGST_DIR := $(BUILDROOT)/clutter-gst-$(CLUTTERGST_VER)
+CLUTTERGST_ARCHIVE := clutter-gst-$(CLUTTERGST_VER).tar.xz
+
 # gtk headers + libraries
 GTK_VER := 3.6.4-20130921
 GTK_URL := http://win32builder.gnome.org
@@ -245,7 +280,7 @@ update: update-sources
 
 binaries:
        @echo Checking prerequisites...
-       hash $(REALCC) $(REALCXX) $(LD) $(NM) $(AR) $(RANLIB) $(DLLTOOL) $(DLLWRAP) $(OBJDUMP) $(RC) 
$(AS)||(echo You need to install mingw-w64 or mingw32; exit 1)
+       hash $(REALCC) $(REALCXX) $(LD) $(NM) $(AR) $(RANLIB) $(DLLTOOL) $(DLLWRAP) $(OBJDUMP) $(WINDRES) 
$(AS)||(echo You need to install mingw-w64 or mingw32; exit 1)
        hash tar unzip zip xz wget aclocal autoheader libtoolize automake autoconf pkg-config 
gnome-autogen.sh bison glib-compile-schemas gdk-pixbuf-csource || (echo we need more binaries ; exit 1)
        [ -f /usr/share/gnome-doc-utils/gnome-doc-utils.make ] || (echo gnome-doc-tools not installed; exit 1)
        [ -f /usr/share/icons/gnome/index.theme ] || (echo gnome-icon-theme not installed; exit 1)
@@ -332,7 +367,7 @@ update-sources::
 $(OPENLDAP_DIR)/configure: $(LIBDIR)/libregex.a $(SRCDIR)/$(OPENLDAP_ARCHIVE)
        rm -f $(LIBDIR)/libldap.dll
        tar xfz $(SRCDIR)/$(OPENLDAP_ARCHIVE) -C $(BUILDROOT)
-       sed -i -e 's#windres#$(RC)#g' $(OPENLDAP_DIR)/libraries/liblutil/Makefile.in
+       sed -i -e 's#windres#$(WINDRES)#g' $(OPENLDAP_DIR)/libraries/liblutil/Makefile.in
        touch $@
 
 $(OPENLDAP_DIR)/config.status: binaries $(OPENLDAP_DIR)/configure
@@ -540,7 +575,7 @@ update-sources::
        $(WGET) -P $(SRCDIR) $(GTK_URL)/$(GTK_ARCHIVE)
 
 $(LIBDIR)/pkgconfig/gtk+-3.0.pc: $(SRCDIR)/$(GTK_ARCHIVE)
-       unzip -u $(SRCDIR)/$(GTK_ARCHIVE) -d $(BUILDROOT)
+       unzip -o $(SRCDIR)/$(GTK_ARCHIVE) -d $(BUILDROOT)
        sed -i -e 's#^prefix=.*$$#prefix=$(BUILDROOT)#g' $(BINDIR)/glib-gettextize
        sed -i -e 's#^prefix=.*$$#prefix=$(BUILDROOT)#g' $(LIBDIR)/pkgconfig/g*.pc
        sed -i -e 's#^prefix=.*$$#prefix=$(BUILDROOT)#g' $(LIBDIR)/pkgconfig/atk*.pc
@@ -549,6 +584,112 @@ $(LIBDIR)/pkgconfig/gtk+-3.0.pc: $(SRCDIR)/$(GTK_ARCHIVE)
        sed -i -e 's#^prefix=.*$$#prefix=$(BUILDROOT)#g' $(LIBDIR)/pkgconfig/libxml*.pc
        touch $@
 
+### cogl
+update-sources::
+       @echo --- Getting cogl ...
+       $(WGET) -P $(SRCDIR) $(COGL_URL)/$(COGL_ARCHIVE)
+       # without gl.h, cogl gives compile (not configure!) errors
+       # mingw-w64 too provides gl.h, but perhaps it is too old?
+       $(WGET) -P $(SRCDIR) http://cgit.freedesktop.org/mesa/mesa/plain/include/GL/gl.h
+
+$(COGL_DIR)/config.status: $(SRCDIR)/$(COGL_ARCHIVE)
+       rm -rf $(COGL_DIR)
+       tar xf $(SRCDIR)/$(COGL_ARCHIVE) -C $(BUILDROOT)
+       mkdir -p $(INCLUDEDIR)/GL; cp $(SRCDIR)/gl.h $(INCLUDEDIR)/GL
+       cd $(COGL_DIR); ./configure $(confflags)
+
+$(LIBDIR)/pkgconfig/cogl-1.0.pc: $(COGL_DIR)/config.status
+       $(MAKE) $(MAKE_LIB_OPTS) -C $(COGL_DIR)
+       $(MAKE) -C $(COGL_DIR) install
+
+### json glib
+update-sources::
+       @echo --- Getting json glib ...
+       $(WGET) -P $(SRCDIR) $(JSONGLIB_URL)/$(JSONGLIB_ARCHIVE)
+
+$(JSONGLIB_DIR)/config.status: $(SRCDIR)/$(JSONGLIB_ARCHIVE)
+       rm -rf $(JSONGLIB_DIR)
+       tar xf $(SRCDIR)/$(JSONGLIB_ARCHIVE) -C $(BUILDROOT)
+       cd $(JSONGLIB_DIR); ./configure $(confflags)
+
+$(LIBDIR)/pkgconfig/json-glib-1.0.pc: $(JSONGLIB_DIR)/config.status
+       $(MAKE) $(MAKE_LIB_OPTS) -C $(JSONGLIB_DIR)
+       $(MAKE) -C $(JSONGLIB_DIR) install
+
+### clutter
+update-sources::
+       @echo --- Getting clutter ...
+       $(WGET) -P $(SRCDIR) $(CLUTTER_URL)/$(CLUTTER_ARCHIVE)
+
+$(CLUTTER_DIR)/config.status: $(SRCDIR)/$(CLUTTER_ARCHIVE) $(LIBDIR)/pkgconfig/cogl-1.0.pc 
$(LIBDIR)/pkgconfig/json-glib-1.0.pc
+       rm -rf $(CLUTTER_DIR) $(INCLUDEDIR)/clutter
+       tar xf $(SRCDIR)/$(CLUTTER_ARCHIVE) -C $(BUILDROOT)
+       cd $(CLUTTER_DIR); ./configure $(confflags) --disable-examples
+
+$(LIBDIR)/pkgconfig/clutter-1.0.pc: $(CLUTTER_DIR)/config.status
+       $(MAKE) $(MAKE_LIB_OPTS) -C $(CLUTTER_DIR)
+       $(MAKE) -C $(CLUTTER_DIR) install
+
+### clutter gtk
+update-sources::
+       @echo --- Getting clutter gtk ...
+       $(WGET) -P $(SRCDIR) $(CLUTTERGTK_URL)/$(CLUTTERGTK_ARCHIVE)
+
+$(CLUTTERGTK_DIR)/config.status: $(SRCDIR)/$(CLUTTERGTK_ARCHIVE)
+       rm -rf $(CLUTTERGTK_DIR) $(INCLUDEDIR)/clutter-gtk-1.0
+       tar xf $(SRCDIR)/$(CLUTTERGTK_ARCHIVE) -C $(BUILDROOT)
+       # without the sed there is a compile error
+       sed -i -e 's#<clutter/clutter-win32.h>#<clutter/win32/clutter-win32.h>#g' 
$(CLUTTERGTK_DIR)/clutter-gtk/gtk-clutter-actor.c
+       # without the sed no .dll file is generated, which fools the linker
+       sed -i -e 's#$$(CLUTTER_LT_LDFLAGS)#$$(CLUTTER_LT_LDFLAGS) -no-undefined#g' 
$(CLUTTERGTK_DIR)/clutter-gtk/Makefile.in
+       cd $(CLUTTERGTK_DIR); ./configure $(confflags)
+
+$(LIBDIR)/pkgconfig/clutter-gtk-1.0.pc: $(CLUTTERGTK_DIR)/config.status
+       $(MAKE) $(MAKE_LIB_OPTS) -C $(CLUTTERGTK_DIR)
+       $(MAKE) -C $(CLUTTERGTK_DIR) install
+
+### gstreamer
+update-sources::
+       @echo --- Getting gstreamer ...
+       $(WGET) -P $(SRCDIR) $(GSTREAMER_URL)/$(GSTREAMER_ARCHIVE)
+
+$(GSTREAMER_DIR)/config.status: $(SRCDIR)/$(GSTREAMER_ARCHIVE)
+       rm -rf $(GSTREAMER_DIR) $(INCLUDEDIR)/gstreamer-1.0
+       tar xf $(SRCDIR)/$(GSTREAMER_ARCHIVE) -C $(BUILDROOT)
+       cd $(GSTREAMER_DIR); ./configure $(confflags) --disable-gtk-doc-html
+
+$(LIBDIR)/pkgconfig/gstreamer-1.0.pc: $(GSTREAMER_DIR)/config.status
+       $(MAKE) $(MAKE_LIB_OPTS) -C $(GSTREAMER_DIR)
+       $(MAKE) -C $(GSTREAMER_DIR) install
+
+### gst plugins base
+update-sources::
+       @echo --- Getting gst plugins base ...
+       $(WGET) -P $(SRCDIR) $(GSTPLUGINSBASE_URL)/$(GSTPLUGINSBASE_ARCHIVE)
+
+$(GSTPLUGINSBASE_DIR)/config.status: $(SRCDIR)/$(GSTPLUGINSBASE_ARCHIVE) $(LIBDIR)/pkgconfig/gstreamer-1.0.pc
+       rm -rf $(GSTPLUGINSBASE_DIR)
+       tar xf $(SRCDIR)/$(GSTPLUGINSBASE_ARCHIVE) -C $(BUILDROOT)
+       cd $(GSTPLUGINSBASE_DIR); ./configure $(confflags) --disable-gtk-doc-html
+
+$(LIBDIR)/pkgconfig/gstreamer-plugins-base-1.0.pc: $(GSTPLUGINSBASE_DIR)/config.status
+       $(MAKE) $(MAKE_LIB_OPTS) -C $(GSTPLUGINSBASE_DIR)
+       $(MAKE) -C $(GSTPLUGINSBASE_DIR) install
+
+### clutter gst
+update-sources::
+       @echo --- Getting clutter gst ...
+       $(WGET) -P $(SRCDIR) $(CLUTTERGST_URL)/$(CLUTTERGST_ARCHIVE)
+
+$(CLUTTERGST_DIR)/config.status: $(SRCDIR)/$(CLUTTERGST_ARCHIVE) $(LIBDIR)/pkgconfig/gstreamer-1.0.pc 
$(LIBDIR)/pkgconfig/gstreamer-plugins-base-1.0.pc
+       rm -rf $(CLUTTERGST_DIR) $(INCLUDEDIR)/clutter-gst-2.0
+       tar xf $(SRCDIR)/$(CLUTTERGST_ARCHIVE) -C $(BUILDROOT)
+       cd $(CLUTTERGST_DIR); ./configure $(confflags) --disable-gtk-doc-html
+
+$(LIBDIR)/pkgconfig/clutter-gst-2.0.pc: $(CLUTTERGST_DIR)/config.status
+       $(MAKE) $(MAKE_LIB_OPTS) -C $(CLUTTERGST_DIR)
+       $(MAKE) -C $(CLUTTERGST_DIR) install
+
 ### ekiga
 update-sources::
        @echo --- Getting Ekiga ...
@@ -577,7 +718,9 @@ endif
 $(EKIGA_DIR)/config.status: binaries $(EKIGA_DIR)/configure \
                $(LIBDIR)/$(PTLIB_LIB) $(LIBDIR)/$(OPAL_LIB) \
                $(LIBDIR)/pkgconfig/gtk+-3.0.pc \
-               $(INCLUDEDIR)/boost/signals2.hpp $(LIBDIR)/libsasl2.a
+               $(INCLUDEDIR)/boost/signals2.hpp $(LIBDIR)/libsasl2.a \
+               $(LIBDIR)/pkgconfig/clutter-1.0.pc $(LIBDIR)/pkgconfig/clutter-gtk-1.0.pc \
+               $(LIBDIR)/pkgconfig/clutter-gst-2.0.pc
        rm -f $(EKIGA_DIR)/src/ekiga.exe
        cd $(EKIGA_DIR); ACLOCAL_FLAGS="-I $(BUILDROOT)/share/aclocal" LDFLAGS="$(LDFLAGS) 
-Wl,-subsystem,windows" ./configure $(confekiga)
 
@@ -605,11 +748,21 @@ $(TARGETDIR)/zips: binaries $(EKIGA_DIR)/src/ekiga.exe
        for lib in $(PTLIB_LIB) $(OPAL_LIB); do \
                cp -r $(LIBDIR)/$$lib $(EKIGA_PREFIX) ;\
        done
-       for lib in libexpat-1.dll liblber.dll libldap.dll libspeex-1.dll libspeexdsp-1.dll libtheora-0.dll 
avcodec-54.dll avutil-52.dll libogg-0.dll; do \
+       for lib in libexpat-1.dll liblber.dll libldap.dll libspeex-1.dll libspeexdsp-1.dll libtheora-0.dll 
avcodec-54.dll avutil-52.dll libogg-0.dll \
+               libclutter-1.0-0.dll libclutter-gtk-1.0-0.dll libcogl-pango-12.dll libcogl-12.dll 
libjson-glib-1.0-0.dll; do \
                cp -r $(BINDIR)/$$lib $(EKIGA_PREFIX) ;\
        done
+
+       # gstreamer
+       # for the moment, copy everything, except theora, which adds external dependencies 
(libtheoraenc-1.dll and libtheoradec-1.dll)
+       cp $(BINDIR)/libgst*.dll $(EKIGA_PREFIX)
+       mkdir -p $(EKIGA_PREFIX)/lib/gstreamer-1.0
+       cp -r $(LIBDIR)/gstreamer-1.0/*.dll $(EKIGA_PREFIX)/lib/gstreamer-1.0
+       rm $(EKIGA_PREFIX)/lib/gstreamer-1.0/libgsttheora.dll
+
        # locale for ekiga are not found if they are in /share
        mv $(EKIGA_PREFIX)/share/locale $(EKIGA_PREFIX)
+
        # libraries from GTK bundle
        for lib in libatk-1.0-0.dll libcairo-2.dll libcairo-gobject-2.dll libffi-6.dll libfreetype-6.dll 
libgdk_pixbuf-2.0-0.dll libgdk-3-0.dll libgio-2.0-0.dll libglib-2.0-0.dll libgmodule-2.0-0.dll 
libgobject-2.0-0.dll libgtk-3-0.dll libiconv-2.dll libintl-8.dll libpango-1.0-0.dll libpangocairo-1.0-0.dll 
libpangowin32-1.0-0.dll libpixman-1-0.dll libpng15-15.dll libxml2-2.dll pthreadGC2.dll zlib1.dll 
libfontconfig-1.dll libpangoft2-1.0-0.dll liblzma-5.dll; do \
                cp -r $(BINDIR)/$$lib $(EKIGA_PREFIX) ;\
@@ -617,17 +770,19 @@ $(TARGETDIR)/zips: binaries $(EKIGA_DIR)/src/ekiga.exe
        cp -r $(BUILDROOT)/share/locale $(EKIGA_PREFIX)/share
        mkdir -p $(EKIGA_PREFIX)/share/glib-2.0; cp -r $(BUILDROOT)/share/glib-2.0/schemas 
$(EKIGA_PREFIX)/share/glib-2.0
        cd $(EKIGA_PREFIX); mv -f glib-2.0/schemas/* share/glib-2.0/schemas; rmdir glib-2.0/schemas; rmdir 
glib-2.0; glib-compile-schemas share/glib-2.0/schemas
+
 ifeq ($(MINGW32), 1)
        cd $(EKIGA_PREFIX); cp /usr/share/doc/mingw32-runtime/mingwm10.dll.gz . && gunzip mingwm10.dll.gz
 else
-       # for standard libraries, mingw-w64 uses dynamically linking by default
        cp /usr/lib/gcc/i686-w64-mingw32/4.8/libgcc_s_sjlj-1.dll 
/usr/lib/gcc/i686-w64-mingw32/4.8/libstdc++-6.dll /usr/i686-w64-mingw32/lib/libwinpthread-1.dll 
$(EKIGA_PREFIX)
 endif
+
 ifeq ($(DEBUG),0)
        $(STRIP) $(EKIGA_PREFIX)/*.dll
        $(STRIP) $(EKIGA_PREFIX)/*.exe
        $(STRIP) $(EKIGA_PREFIX)/plugins/*.dll
        $(STRIP) $(EKIGA_PREFIX)/plugins/*.exe
+       $(STRIP) $(EKIGA_PREFIX)/lib/gstreamer-1.0/*.dll
 endif
        # we cannot strip MS compiled dlls
        cp -r $(LIBSASL2_DIR)/bin/libsasl.dll $(EKIGA_PREFIX)
@@ -660,10 +815,6 @@ endif
                done; \
        done
        cp /usr/share/icons/gnome/index.theme $(EKIGA_PREFIX)/share/icons/hicolor
-
-       #cd $(TARGETDIR); zip -9r ekiga-$(EKIGA_VER).zip Ekiga
-       #zip -9r $(TARGETDIR)/ekiga_build-$(EKIGA_VER).zip Makefile #$(EKIGA_WIN32_DIFF_DIR)
-       #tar cfvz $(TARGETDIR)/ekiga_build-$(EKIGA_VER).tgz Makefile #$(EKIGA_WIN32_DIFF_DIR)
        touch $@
 
 # Two additional plugins are needed from nsis:
@@ -719,6 +870,14 @@ distclean:
        $(RM) -rf $(X264_DIR)
        $(RM) -rf $(THEORA_DIR)
        $(RM) -rf $(CELT_DIR)
+       $(RM) -rf $(COGL_DIR)
+       $(RM) -rf $(JSONGLIB_DIR)
+       $(RM) -rf $(CLUTTER_DIR)
+       $(RM) -rf $(CLUTTERGTK_DIR)
+       $(RM) -rf $(GSTREAMER_DIR)
+       $(RM) -rf $(GSTPLUGINSBASE_DIR)
+       $(RM) -rf $(BUILDROOT)/libexec
+       $(RM) -rf $(CLUTTERGST_DIR)
        $(RM) -rf $(NSISPLUGIN_DIR)
        $(RM) -f binaries
 #      $(RM) -rf $(SRCDIR)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]