summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-11-16 13:40:22 +0000
committerAshod Nakashian <ashod.nakashian@collabora.co.uk>2016-02-07 23:45:11 -0500
commit194858cd24d009e086df30d845dc8d2491852a25 (patch)
tree27e0071949b3b8157fa04f0cc6c1e9a1cfb158d7
parent042e7e5f44cfacd188e36b2d2e4c2995ad421b24 (diff)
build cairo on android
Reviewed-on: https://gerrit.libreoffice.org/19991 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com> (cherry picked from commit fb7d4ba1cbe24b74dfab0f54eeffe898a0291ce3) Change-Id: Ie2f7662a4cc3955963517f265894b8f6a495ece8
-rw-r--r--RepositoryExternal.mk18
-rwxr-xr-xbin/lo-all-static-libs2
-rw-r--r--configure.ac2
-rw-r--r--external/cairo/ExternalPackage_cairo.mk4
-rw-r--r--external/cairo/ExternalPackage_pixman.mk5
-rw-r--r--external/cairo/ExternalProject_cairo.mk5
-rw-r--r--external/cairo/ExternalProject_pixman.mk2
-rw-r--r--vcl/Library_vcl.mk2
-rw-r--r--vcl/headless/svpgdi.cxx13
-rw-r--r--vcl/inc/headless/svpgdi.hxx2
-rw-r--r--vcl/inc/unx/gtk/gtkgdi.hxx6
11 files changed, 41 insertions, 20 deletions
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index eb12c36001ec..ad4d6b619df6 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -1288,6 +1288,24 @@ endef
endif # SYSTEM_CAIRO
+else ifeq ($(OS),ANDROID)
+
+define gb_LinkTarget__use_cairo
+$(call gb_LinkTarget_use_package,$(1),cairo)
+$(call gb_LinkTarget_use_package,$(1),pixman)
+$(call gb_LinkTarget_use_external,$(1),freetype_headers)
+$(call gb_LinkTarget_set_include,$(1),\
+ -I$(call gb_UnpackedTarball_get_dir,cairo) \
+ -I$(call gb_UnpackedTarball_get_dir,cairo)/src \
+ $$(INCLUDE) \
+)
+$(call gb_LinkTarget_add_libs,$(1),\
+ -L$(call gb_UnpackedTarball_get_dir,cairo)/src/.libs -lcairo \
+ -L$(call gb_UnpackedTarball_get_dir,pixman)/pixman/.libs -lpixman-1 \
+)
+
+endef
+
endif # CAIRO
ifneq ($(SYSTEM_FREETYPE),)
diff --git a/bin/lo-all-static-libs b/bin/lo-all-static-libs
index 8cef48656c5f..14ccfde8a7df 100755
--- a/bin/lo-all-static-libs
+++ b/bin/lo-all-static-libs
@@ -39,6 +39,8 @@ ANDROID)
oslibs="$WORKDIR/UnpackedTarball/curl/lib/.libs/*.a"
oslibs="$oslibs $WORKDIR/UnpackedTarball/fontconfig/src/.libs/libfontconfig.a"
oslibs="$oslibs $WORKDIR/UnpackedTarball/freetype/objs/.libs/libfreetype.a"
+ oslibs="$oslibs $WORKDIR/UnpackedTarball/pixman/pixman/.libs/libpixman-1.a"
+ oslibs="$oslibs $WORKDIR/UnpackedTarball/cairo/src/.libs/libcairo.a"
# Only liblo-bootstrap.a ends up here:
oslibs="$oslibs $WORKDIR/LinkTarget/Library/lib*.a"
;;
diff --git a/configure.ac b/configure.ac
index d3c6e614389d..196e811f29b8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -789,7 +789,7 @@ linux-android*)
fi
AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
- BUILD_TYPE="$BUILD_TYPE FONTCONFIG FREETYPE"
+ BUILD_TYPE="$BUILD_TYPE CAIRO FONTCONFIG FREETYPE"
;;
*)
diff --git a/external/cairo/ExternalPackage_cairo.mk b/external/cairo/ExternalPackage_cairo.mk
index e40fc5496489..720927670c39 100644
--- a/external/cairo/ExternalPackage_cairo.mk
+++ b/external/cairo/ExternalPackage_cairo.mk
@@ -11,6 +11,10 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,cairo,cairo))
$(eval $(call gb_ExternalPackage_use_external_project,cairo,cairo))
+ifneq ($(OS),ANDROID)
+
$(eval $(call gb_ExternalPackage_add_file,cairo,$(LIBO_LIB_FOLDER)/libcairo.so.2,src/.libs/libcairo.so.2.11000.2))
+endif
+
# vim: set noet sw=4 ts=4:
diff --git a/external/cairo/ExternalPackage_pixman.mk b/external/cairo/ExternalPackage_pixman.mk
index ead02895cdf6..c08a775012d6 100644
--- a/external/cairo/ExternalPackage_pixman.mk
+++ b/external/cairo/ExternalPackage_pixman.mk
@@ -11,6 +11,11 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,pixman,pixman))
$(eval $(call gb_ExternalPackage_use_external_project,pixman,pixman))
+ifneq ($(OS),ANDROID)
+
$(eval $(call gb_ExternalPackage_add_file,pixman,$(LIBO_LIB_FOLDER)/libpixman-1.so.0,pixman/.libs/libpixman-1.so.0.24.4))
+endif
+
+
# vim: set noet sw=4 ts=4:
diff --git a/external/cairo/ExternalProject_cairo.mk b/external/cairo/ExternalProject_cairo.mk
index cc26096f23d6..d204514a29db 100644
--- a/external/cairo/ExternalProject_cairo.mk
+++ b/external/cairo/ExternalProject_cairo.mk
@@ -32,7 +32,7 @@ $(call gb_ExternalProject_get_state_target,cairo,build) :
$(call gb_ExternalProject_run,build,\
./configure \
$(if $(debug),STRIP=" ") \
- CFLAGS="$(if $(debug),-g) $(ZLIB_CFLAGS)" \
+ CFLAGS="$(if $(debug),-g) $(ZLIB_CFLAGS) $(gb_VISIBILITY_FLAGS)" \
$(if $(filter ANDROID IOS,$(OS)),PKG_CONFIG=./dummy_pkg_config) \
pixman_CFLAGS="-I$(call gb_UnpackedTarball_get_dir,pixman)/pixman" \
pixman_LIBS="-L$(call gb_UnpackedTarball_get_dir,pixman)/pixman/.libs -lpixman-1" \
@@ -40,7 +40,10 @@ $(call gb_ExternalProject_get_state_target,cairo,build) :
ZLIB3RDLIB="$(if $(SYSTEM_ZLIB),,-L$(WORKDIR)/LinkTarget/StaticLibrary) -lz" \
png_REQUIRES="trick_configure_into_using_png_CFLAGS_and_LIBS" \
png_CFLAGS="$(LIBPNG_CFLAGS)" png_LIBS="$(LIBPNG_LIBS)" \
+ FREETYPE_CFLAGS="-I$(call gb_UnpackedTarball_get_dir,freetype)/include" \
+ FONTCONFIG_CFLAGS="-I$(call gb_UnpackedTarball_get_dir,fontconfig)" \
$(if $(filter IOS,$(OS)),--disable-shared,--disable-static) \
+ $(if $(filter ANDROID,$(OS)),--disable-shared,--disable-static) \
$(if $(filter ANDROID IOS,$(OS)),--disable-xlib,--enable-xlib) \
$(if $(filter IOS,$(OS)),--enable-quartz --enable-quartz-font) \
--disable-valgrind \
diff --git a/external/cairo/ExternalProject_pixman.mk b/external/cairo/ExternalProject_pixman.mk
index 8eb7d8ce9498..bbb4081420b0 100644
--- a/external/cairo/ExternalProject_pixman.mk
+++ b/external/cairo/ExternalProject_pixman.mk
@@ -32,7 +32,7 @@ else
$(call gb_ExternalProject_get_state_target,pixman,build) :
$(call gb_ExternalProject_run,build,\
./configure \
- $(if $(filter MACOSX IOS,$(OS)),--disable-shared,--disable-static) \
+ $(if $(filter MACOSX IOS ANDROID,$(OS)),--disable-shared,--disable-static) \
$(if $(filter ANDROID,$(OS)),--disable-arm-simd --disable-arm-neon --disable-arm-iwmmxt) \
$(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
&& $(MAKE) \
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index faa8f43c2f50..743590088c1a 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -615,6 +615,7 @@ $(eval $(call gb_Library_use_libraries,vcl,\
))
$(eval $(call gb_Library_use_externals,vcl,\
+ cairo \
fontconfig \
freetype \
))
@@ -641,6 +642,7 @@ $(eval $(call gb_Library_use_static_libraries,vcl,\
))
$(eval $(call gb_Library_use_externals,vcl,\
+ cairo \
fontconfig \
freetype \
expat \
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index 309de905d4ea..8df585f2cdd2 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -33,9 +33,7 @@
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <basebmp/scanlineformats.hxx>
-#if ENABLE_CAIRO_CANVAS
#include <cairo.h>
-#endif
#if OSL_DEBUG_LEVEL > 2
#include <basebmp/debug.hxx>
@@ -97,8 +95,6 @@ bool SvpSalGraphics::drawTransformedBitmap(
return false;
}
-#if ENABLE_CAIRO_CANVAS
-
namespace
{
bool isCairoCompatible(const basebmp::BitmapDeviceSharedPtr &rBuffer)
@@ -180,13 +176,10 @@ namespace
}
#endif
-#endif
-
bool SvpSalGraphics::drawAlphaRect(long nX, long nY, long nWidth, long nHeight, sal_uInt8 nTransparency)
{
bool bRet = false;
(void)nX; (void)nY; (void)nWidth; (void)nHeight; (void)nTransparency;
-#if ENABLE_CAIRO_CANVAS
#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 10, 0)
if (m_bUseLineColor || !m_bUseFillColor)
{
@@ -230,7 +223,6 @@ bool SvpSalGraphics::drawAlphaRect(long nX, long nY, long nWidth, long nHeight,
}
bRet = true;
#endif
-#endif
return bRet;
}
@@ -1137,7 +1129,6 @@ SystemGraphicsData SvpSalGraphics::GetGraphicsData() const
bool SvpSalGraphics::supportsOperation(OutDevSupportType eType) const
{
-#if ENABLE_CAIRO_CANVAS
if (m_aDrawMode == basebmp::DrawMode::XOR)
return false;
if (!isCairoCompatible(m_aDevice))
@@ -1151,10 +1142,6 @@ bool SvpSalGraphics::supportsOperation(OutDevSupportType eType) const
return false;
}
return false;
-#else
- (void)eType;
- return false;
-#endif
}
#endif
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index 2416c597166e..0171c6820269 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -95,7 +95,7 @@ public:
SvpSalGraphics();
virtual ~SvpSalGraphics();
- virtual SalGraphicsImpl* GetImpl() const override { return NULL; };
+ virtual SalGraphicsImpl* GetImpl() const override { return nullptr; };
virtual void GetResolution( sal_Int32& rDPIX, sal_Int32& rDPIY ) override;
virtual sal_uInt16 GetBitCount() const override;
virtual long GetGraphicsWidth() const override;
diff --git a/vcl/inc/unx/gtk/gtkgdi.hxx b/vcl/inc/unx/gtk/gtkgdi.hxx
index 01d021800ae4..eaf53f2a7400 100644
--- a/vcl/inc/unx/gtk/gtkgdi.hxx
+++ b/vcl/inc/unx/gtk/gtkgdi.hxx
@@ -51,15 +51,15 @@ public:
Rectangle &rNativeBoundingRegion,
Rectangle &rNativeContentRegion ) SAL_OVERRIDE;
virtual bool SupportsCairo() const SAL_OVERRIDE;
- virtual cairo::SurfaceSharedPtr CreateSurface(const cairo::CairoSurfaceSharedPtr& rSurface) const SAL_OVERRIDE;
- virtual cairo::SurfaceSharedPtr CreateSurface(const OutputDevice& rRefDevice, int x, int y, int width, int height) const SAL_OVERRIDE;
+ virtual cairo::SurfaceSharedPtr CreateSurface(const cairo::CairoSurfaceSharedPtr& rSurface) const override;
+ virtual cairo::SurfaceSharedPtr CreateSurface(const OutputDevice& rRefDevice, int x, int y, int width, int height) const override;
void WidgetQueueDraw() const;
void updateSettings( AllSettings& rSettings );
static void refreshFontconfig( GtkSettings *pSettings );
static void signalSettingsNotify( GObject*, GParamSpec *pSpec, gpointer );
- virtual void GetResolution(sal_Int32& rDPIX, sal_Int32& rDPIY) SAL_OVERRIDE;
+ virtual void GetResolution(sal_Int32& rDPIX, sal_Int32& rDPIY) override;
private:
GtkWidget *mpWindow;
static GtkStyleContext *mpButtonStyle;