summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2016-11-02 14:13:54 +0100
committerTor Lillqvist <tml@collabora.com>2016-11-13 11:01:35 +0200
commitebca7cf087e6b03161975fd34cba6c771682b86a (patch)
tree51bf14f5f9337a510d91bbfb84c56aa2c151896d
parentdon't loop uint16 against size (diff)
downloadcore-ebca7cf087e6b03161975fd34cba6c771682b86a.tar.gz
core-ebca7cf087e6b03161975fd34cba6c771682b86a.zip
poppler: build against libjpeg
Albert Astals Cid points out that --disable-libjpeg causes poppler to use internal JPEG code instead, which is not actively maintained. Add LIBJPEG_CFLAGS / LIBJPEG_LIBS to config_host.mk and patch poppler to respect LIBJPEG_LIBS. Reviewed-on: https://gerrit.libreoffice.org/30496 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com> (cherry picked from commit eea709f67d91e271e3df37e6c6724b7b5870b1ee) jpeg-turbo: resolve some conflicts to fix poppler build poppler uses both windows.h and jpeg headers, so runs into the conflict between Win32 definitions of boolean, INT16, INT32, and jpeg's. Tweak jpeg-turbo headers so it uses the Win32 definitions. (cherry picked from commit f2761b62b3d0b45a3e57781a16c8c5c6ee94ded0) Change-Id: Id19a62a9bd9dc41fee5e8e43e2798e515aacc299 Reviewed-on: https://gerrit.libreoffice.org/30506 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: David Tardon <dtardon@redhat.com>
-rw-r--r--RepositoryExternal.mk23
-rw-r--r--config_host.mk.in2
-rw-r--r--configure.ac12
-rw-r--r--external/jpeg-turbo/jpeg-turbo.win_build.patch.128
-rw-r--r--external/poppler/ExternalProject_poppler.mk2
-rw-r--r--external/poppler/UnpackedTarball_poppler.mk1
-rw-r--r--external/poppler/poppler-libjpeg.patch.123
7 files changed, 81 insertions, 10 deletions
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index f3285aca7cb0..621c5d29c070 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -424,32 +424,37 @@ endif # SYSTEM_ZLIB
ifneq ($(SYSTEM_JPEG),)
define gb_LinkTarget__use_jpeg
-$(call gb_LinkTarget_add_libs,$(1),-ljpeg)
+$(call gb_LinkTarget_add_libs,$(1),$(LIBJPEG_LIBS))
$(call gb_LinkTarget_set_ldflags,$(1),\
$$(filter-out -L/usr/lib/jvm%,$$(T_LDFLAGS)) \
)
endef
+gb_ExternalProject__use_jpeg :=
+
else ifneq ($(filter JPEG_TURBO,$(BUILD_TYPE)),)
define gb_LinkTarget__use_jpeg
$(call gb_LinkTarget_set_include,$(1),\
- -I$(call gb_UnpackedTarball_get_dir,jpeg-turbo) \
+ $(LIBJPEG_CFLAGS) \
$$(INCLUDE) \
)
-$(call gb_LinkTarget_add_libs,$(1),\
- $(call gb_UnpackedTarball_get_dir,jpeg-turbo)/.libs/libjpeg$(gb_StaticLibrary_PLAINEXT) \
-)
+$(call gb_LinkTarget_add_libs,$(1),$(LIBJPEG_LIBS))
$(call gb_LinkTarget_use_external_project,$(1),jpeg-turbo,full)
endef
+define gb_ExternalProject__use_jpeg
+$(call gb_ExternalProject_use_external_project,$(1),jpeg-turbo)
+
+endef
+
else # !SYSTEM_JPEG
define gb_LinkTarget__use_jpeg
$(call gb_LinkTarget_set_include,$(1),\
- -I$(call gb_UnpackedTarball_get_dir,jpeg) \
+ $(LIBJPEG_CFLAGS) \
$$(INCLUDE) \
)
@@ -457,6 +462,11 @@ $(call gb_LinkTarget_use_static_libraries,$(1),\
jpeg \
)
+define gb_ExternalProject__use_jpeg
+$(call gb_ExternalProject_use_static_libraries,$(1),jpeg)
+
+endef
+
endef
endif # SYSTEM_JPEG
@@ -2672,6 +2682,7 @@ endef
else # !SYSTEM_POPPLER
define gb_LinkTarget__use_poppler
+$(call gb_LinkTarget_use_external,$(1),jpeg)
$(call gb_LinkTarget_use_external_project,$(1),poppler,full)
$(call gb_LinkTarget_set_include,$(1),\
diff --git a/config_host.mk.in b/config_host.mk.in
index 6cc24dc64c84..4953db94d211 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -328,6 +328,8 @@ export LIBFONTS_JAR=@LIBFONTS_JAR@
export LIBFORMULA_JAR=@LIBFORMULA_JAR@
export LIBGCRYPT_CFLAGS=@LIBGCRYPT_CFLAGS@
export LIBGCRYPT_LIBS=@LIBGCRYPT_LIBS@
+export LIBJPEG_CFLAGS=$(gb_SPACE)@LIBJPEG_CFLAGS@
+export LIBJPEG_LIBS=$(gb_SPACE)@LIBJPEG_LIBS@
export LIBLANGTAG_CFLAGS=$(gb_SPACE)@LIBLANGTAG_CFLAGS@
export LIBLANGTAG_LIBS=$(gb_SPACE)@LIBLANGTAG_LIBS@
export LIBLAYOUT_JAR=@LIBLAYOUT_JAR@
diff --git a/configure.ac b/configure.ac
index d603217962f4..0a5f58992c4b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7644,10 +7644,10 @@ fi
if test "$with_system_jpeg" = "yes"; then
AC_MSG_RESULT([external])
SYSTEM_JPEG=TRUE
- AC_CHECK_HEADER(jpeglib.h, [],
+ AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
[AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
- AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ JPEG3RDLIB=-ljpeg ],
- [AC_MSG_CHECKING(jpeg library not found or fuctional)], [])
+ AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
+ [AC_MSG_ERROR(jpeg library not found or fuctional)], [])
libo_MINGW_CHECK_DLL([libjpeg])
else
SYSTEM_JPEG=
@@ -7696,12 +7696,18 @@ Alternatively, you can install the 'new' nasm where ever you want and make sure
_EOS
AC_MSG_ERROR([no nasm (Netwide Assembler) found])
fi
+ LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/jpeg-turbo"
+ LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/jpeg-turbo/.libs/libjpeg.lib"
else
AC_MSG_RESULT([internal, jpeg])
BUILD_TYPE="$BUILD_TYPE JPEG"
+ LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/jpeg"
+ LIBJPEG_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -ljpeg"
fi
fi
AC_SUBST(NASM)
+AC_SUBST(LIBJPEG_CFLAGS)
+AC_SUBST(LIBJPEG_LIBS)
AC_SUBST(SYSTEM_JPEG)
dnl ===================================================================
diff --git a/external/jpeg-turbo/jpeg-turbo.win_build.patch.1 b/external/jpeg-turbo/jpeg-turbo.win_build.patch.1
index ce00851ac6f7..b5dabaa53ade 100644
--- a/external/jpeg-turbo/jpeg-turbo.win_build.patch.1
+++ b/external/jpeg-turbo/jpeg-turbo.win_build.patch.1
@@ -1,3 +1,7 @@
+Copy definitions of "boolean", "INT16", "INT32" from win/jconfig.h.in
+
+... into jconfig.h.in, which is the one we use via configure.
+
diff -ru jpeg-turbo.orig/simd/Makefile.in jpeg-turbo/simd/Makefile.in
--- jpeg-turbo.orig/simd/Makefile.in 2015-09-21 20:48:45.000000000 +0200
+++ jpeg-turbo/simd/Makefile.in 2015-11-22 10:52:46.975285184 +0100
@@ -24,3 +28,27 @@ diff -ru jpeg-turbo.orig/configure jpeg-turbo/configure
fi
done
+--- jpeg-turbo/jconfig.h.in.orig 2016-11-02 22:43:55.012600000 +0100
++++ jpeg-turbo/jconfig.h.in 2016-11-02 22:45:01.905400000 +0100
+@@ -71,3 +71,21 @@
+
+ /* The size of `size_t', as computed by sizeof. */
+ #undef SIZEOF_SIZE_T
++
++#ifdef _MSC_VER
++
++/* Define "boolean" as unsigned char, not int, per Windows custom */
++#ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */
++typedef unsigned char boolean;
++#endif
++#define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */
++
++/* Define "INT32" as int, not long, per Windows custom */
++#if !(defined(_BASETSD_H_) || defined(_BASETSD_H)) /* don't conflict if basetsd.h already read */
++typedef short INT16;
++typedef signed int INT32;
++#endif
++#define XMD_H /* prevent jmorecfg.h from redefining it */
++
++#endif /* _MSC_VER */
++
diff --git a/external/poppler/ExternalProject_poppler.mk b/external/poppler/ExternalProject_poppler.mk
index eab1d9181c61..f75dddc114cd 100644
--- a/external/poppler/ExternalProject_poppler.mk
+++ b/external/poppler/ExternalProject_poppler.mk
@@ -26,7 +26,7 @@ $(call gb_ExternalProject_get_state_target,poppler,build) :
--disable-poppler-cpp \
--disable-libopenjpeg \
--disable-libtiff \
- --disable-libjpeg \
+ --enable-libjpeg \
--disable-libpng \
--disable-zlib \
--disable-libcurl \
diff --git a/external/poppler/UnpackedTarball_poppler.mk b/external/poppler/UnpackedTarball_poppler.mk
index 4de2242a56dc..efcbee7c7e0f 100644
--- a/external/poppler/UnpackedTarball_poppler.mk
+++ b/external/poppler/UnpackedTarball_poppler.mk
@@ -19,6 +19,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,poppler,\
external/poppler/poppler-0.46.0-std-max.patch.1 \
external/poppler/poppler-0.46.0-unused-private-field.patch.1 \
external/poppler/ubsan.patch.0 \
+ external/poppler/poppler-libjpeg.patch.1 \
))
# vim: set noet sw=4 ts=4:
diff --git a/external/poppler/poppler-libjpeg.patch.1 b/external/poppler/poppler-libjpeg.patch.1
new file mode 100644
index 000000000000..c8d54beb75ae
--- /dev/null
+++ b/external/poppler/poppler-libjpeg.patch.1
@@ -0,0 +1,23 @@
+do not override user supplied LIBJPEG_LIBS so we can use the one in WORKDIR
+
+--- poppler/configure.orig 2016-11-02 13:58:32.530617038 +0100
++++ poppler/configure 2016-11-02 13:58:06.233617689 +0100
+@@ -21377,8 +21377,9 @@
+ ac_save_USER_INCLUDES="$USER_INCLUDES"
+ ac_save_USER_LDFLAGS="$USER_LDFLAGS"
+ USER_INCLUDES="$USER_INCLUDES $LIBJPEG_CFLAGS"
+- USER_LDFLAGS="$USER_LDFLAGS $LIBJPEG_CFLAGS"
++ USER_LDFLAGS="$USER_LDFLAGS $LIBJPEG_LIBS"
+
++if test -z "$LIBJPEG_LIBS"; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libjpeg6b" >&5
+ $as_echo_n "checking for libjpeg6b... " >&6; }
+@@ -21489,6 +21490,7 @@
+
+
+ fi
++fi
+
+
+ ac_save_CPPFLAGS="$CPPFLAGS"