1 # DP: S8043805: Allow using a system-installed libjpeg
2 # DP: http://hg.openjdk.java.net/jdk9/client/rev/bfd9a3e1aeb5
3 # DP: http://hg.openjdk.java.net/jdk9/client/jdk/rev/320743f0b4fc
5 --- a/common/autoconf/libraries.m4
6 +++ b/common/autoconf/libraries.m4
7 @@ -774,11 +774,36 @@ AC_DEFUN_ONCE([LIB_SETUP_MISC_LIBS],
8 # Check for the jpeg library
11 - USE_EXTERNAL_LIBJPEG=true
12 - AC_CHECK_LIB(jpeg, main, [],
13 - [ USE_EXTERNAL_LIBJPEG=false
14 - AC_MSG_NOTICE([Will use jpeg decoder bundled with the OpenJDK source])
16 + AC_ARG_WITH(libjpeg, [AS_HELP_STRING([--with-libjpeg],
17 + [use libjpeg from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
19 + AC_MSG_CHECKING([for which libjpeg to use])
21 + # default is bundled
22 + DEFAULT_LIBJPEG=bundled
25 + # if user didn't specify, use DEFAULT_LIBJPEG
27 + if test "x${with_libjpeg}" = "x"; then
28 + with_libjpeg=${DEFAULT_LIBJPEG}
31 + AC_MSG_RESULT(${with_libjpeg})
33 + if test "x${with_libjpeg}" = "xbundled"; then
34 + USE_EXTERNAL_LIBJPEG=false
35 + elif test "x${with_libjpeg}" = "xsystem"; then
36 + AC_CHECK_HEADER(jpeglib.h, [],
37 + [ AC_MSG_ERROR([--with-libjpeg=system specified, but jpeglib.h not found!])])
38 + AC_CHECK_LIB(jpeg, jpeg_CreateDecompress, [],
39 + [ AC_MSG_ERROR([--with-libjpeg=system specified, but no libjpeg found])])
41 + USE_EXTERNAL_LIBJPEG=true
43 + AC_MSG_ERROR([Invalid use of --with-libjpeg: ${with_libjpeg}, use 'system' or 'bundled'])
46 AC_SUBST(USE_EXTERNAL_LIBJPEG)
48 ###############################################################################
49 --- a/jdk/make/lib/Awt2dLibraries.gmk
50 +++ b/jdk/make/lib/Awt2dLibraries.gmk
51 @@ -702,21 +702,24 @@ $(BUILD_LIBLCMS): $(BUILD_LIBAWT)
53 ##########################################################################################
55 +BUILD_LIBJAVAJPEG_DIR := $(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg
58 - BUILD_LIBJPEG_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers
59 + BUILD_LIBJAVAJPEG_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers
61 - BUILD_LIBJPEG_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers-closed
62 - BUILD_LIBJPEG_CLOSED_SRC := $(JDK_TOPDIR)/src/closed/share/native/sun/awt/image/jpeg
63 - BUILD_LIBJPEG_CLOSED_INCLUDES := -I$(BUILD_LIBJPEG_CLOSED_SRC)
64 + BUILD_LIBJAVAJPEG_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers-closed
65 + BUILD_LIBJAVAJPEG_CLOSED_SRC := $(JDK_TOPDIR)/src/closed/share/native/sun/awt/image/jpeg
66 + BUILD_LIBJAVAJPEG_CLOSED_INCLUDES := -I$(BUILD_LIBJAVAJPEG_CLOSED_SRC)
69 -BUILD_LIBJPEG_REORDER :=
70 +BUILD_LIBJAVAJPEG_REORDER :=
71 ifeq ($(OPENJDK_TARGET_OS), solaris)
72 ifneq ($(OPENJDK_TARGET_CPU), x86_64)
73 - BUILD_LIBJPEG_REORDER := $(JDK_TOPDIR)/make/mapfiles/libjpeg/reorder-$(OPENJDK_TARGET_CPU)
74 + BUILD_LIBJAVAJPEG_REORDER := $(JDK_TOPDIR)/make/mapfiles/libjpeg/reorder-$(OPENJDK_TARGET_CPU)
79 # Suppress gcc warnings like "variable might be clobbered by 'longjmp'
80 # or 'vfork'": this warning indicates that some variable is placed to
81 # a register by optimized compiler and it's value might be lost on longjmp().
82 @@ -728,37 +731,50 @@ endif
83 # $(shell $(EXPR) $(CC_MAJORVER) \> 4 \| \
84 # \( $(CC_MAJORVER) = 4 \& $(CC_MINORVER) \>= 3 \) )
85 # ifeq ($(CC_43_OR_NEWER), 1)
86 -# BUILD_LIBJPEG_CFLAGS_linux += -Wno-clobbered
87 +# BUILD_LIBJAVAJPEG_CFLAGS_linux += -Wno-clobbered
91 -$(eval $(call SetupNativeCompilation,BUILD_LIBJPEG, \
93 +ifeq ($(USE_EXTERNAL_LIBJPEG), true)
94 + LIBJPEG_LIBS := -ljpeg
95 + BUILD_LIBJAVAJPEG_INCLUDE_FILES := \
98 + BUILD_LIBJAVAJPEG_HEADERS :=
101 + BUILD_LIBJAVAJPEG_INCLUDE_FILES :=
102 + BUILD_LIBJAVAJPEG_HEADERS := -I$(BUILD_LIBJAVAJPEG_DIR)
105 +$(eval $(call SetupNativeCompilation,BUILD_LIBJAVAJPEG, \
106 + LIBRARY := javajpeg, \
107 OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
108 - SRC := $(BUILD_LIBJPEG_CLOSED_SRC) \
109 - $(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg, \
110 + SRC := $(BUILD_LIBJAVAJPEG_CLOSED_SRC) \
111 + $(BUILD_LIBJAVAJPEG_DIR), \
112 + INCLUDE_FILES := $(BUILD_LIBJAVAJPEG_INCLUDE_FILES), \
114 OPTIMIZATION := HIGHEST, \
115 CFLAGS := $(CFLAGS_JDKLIB) \
116 - $(BUILD_LIBJPEG_CLOSED_INCLUDES) \
117 - -I$(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg, \
118 - MAPFILE := $(BUILD_LIBJPEG_MAPFILE), \
119 - LDFLAGS := $(LDFLAGS_JDKLIB) \
120 + $(BUILD_LIBJAVAJPEG_CLOSED_INCLUDES) \
121 + $(BUILD_LIBJAVAJPEG_HEADERS), \
122 + MAPFILE := $(BUILD_LIBJAVAJPEG_MAPFILE), \
123 + LDFLAGS := $(LDFLAGS_JDKLIB) $(LIBJPEG_LIBS) \
124 $(call SET_SHARED_LIBRARY_ORIGIN), \
125 LDFLAGS_windows := $(WIN_JAVA_LIB) jvm.lib, \
126 LDFLAGS_SUFFIX := $(LDFLAGS_JDKLIB_SUFFIX), \
127 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
128 RC_FLAGS := $(RC_FLAGS) \
129 - -D "JDK_FNAME=jpeg.dll" \
130 - -D "JDK_INTERNAL_NAME=jpeg" \
131 + -D "JDK_FNAME=javajpeg.dll" \
132 + -D "JDK_INTERNAL_NAME=javajpeg" \
133 -D "JDK_FTYPE=0x2L", \
134 - REORDER := $(BUILD_LIBJPEG_REORDER), \
135 + REORDER := $(BUILD_LIBJAVAJPEG_REORDER), \
136 OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjpeg, \
137 DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
139 -$(BUILD_LIBJPEG): $(BUILD_LIBJAVA)
140 +$(BUILD_LIBJAVAJPEG): $(BUILD_LIBJAVA)
142 -BUILD_LIBRARIES += $(BUILD_LIBJPEG)
143 +BUILD_LIBRARIES += $(BUILD_LIBJAVAJPEG)
145 ##########################################################################################
147 @@ -1149,6 +1165,13 @@ ifndef BUILD_HEADLESS_ONLY
148 GIFLIB_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/giflib
151 + ifeq ($(USE_EXTERNAL_LIBJPEG), true)
152 + LIBJPEG_LDFLAGS := -ljpeg
154 + LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg
155 + LIBJPEG_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/image/jpeg
158 ifneq ($(OPENJDK_TARGET_OS), macosx)
159 LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/awt/splashscreen
161 @@ -1205,11 +1228,13 @@ ifndef BUILD_HEADLESS_ONLY
162 EXCLUDE_FILES := imageioJPEG.c jpegdecoder.c pngtest.c, \
164 OPTIMIZATION := LOW, \
165 - CFLAGS := $(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) $(GIFLIB_CFLAGS), \
166 + CFLAGS := $(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) \
167 + $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS), \
168 MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libsplashscreen/mapfile-vers, \
169 LDFLAGS := $(LDFLAGS_JDKLIB) \
170 $(call SET_SHARED_LIBRARY_ORIGIN), \
171 - LDFLAGS_SUFFIX := $(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) $(LIBZ) $(GIFLIB_LDFLAGS), \
172 + LDFLAGS_SUFFIX := $(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) $(LIBZ) \
173 + $(GIFLIB_LDFLAGS) $(LIBJPEG_LDFLAGS), \
174 LDFLAGS_SUFFIX_solaris := -lc, \
175 VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
176 RC_FLAGS := $(RC_FLAGS) \
177 --- a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java
178 +++ b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageReader.java
179 @@ -89,7 +89,7 @@ public class JPEGImageReader extends Ima
180 java.security.AccessController.doPrivileged(
181 new java.security.PrivilegedAction<Void>() {
183 - System.loadLibrary("jpeg");
184 + System.loadLibrary("javajpeg");
188 --- a/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java
189 +++ b/jdk/src/share/classes/com/sun/imageio/plugins/jpeg/JPEGImageWriter.java
190 @@ -177,7 +177,7 @@ public class JPEGImageWriter extends Ima
191 java.security.AccessController.doPrivileged(
192 new java.security.PrivilegedAction<Void>() {
194 - System.loadLibrary("jpeg");
195 + System.loadLibrary("javajpeg");
199 --- a/jdk/src/share/classes/sun/awt/image/JPEGImageDecoder.java
200 +++ b/jdk/src/share/classes/sun/awt/image/JPEGImageDecoder.java
201 @@ -56,7 +56,7 @@ public class JPEGImageDecoder extends Im
202 java.security.AccessController.doPrivileged(
203 new java.security.PrivilegedAction<Void>() {
205 - System.loadLibrary("jpeg");
206 + System.loadLibrary("javajpeg");
210 --- a/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c
211 +++ b/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c
214 /* headers from the JPEG library */
220 #define MAX(a,b) ((a) > (b) ? (a) : (b))