74b02f5
diff -ruN jdk8/common/autoconf/libraries.m4 jdk8/common/autoconf/libraries.m4
74b02f5
--- jdk8/common/autoconf/libraries.m4	2013-11-14 20:08:01.845065585 -0500
74b02f5
+++ jdk8/common/autoconf/libraries.m4	2013-11-14 20:10:56.186553066 -0500
74b02f5
@@ -676,6 +676,47 @@
74b02f5
 
74b02f5
   ###############################################################################
74b02f5
   #
74b02f5
+  # Check for the png library
74b02f5
+  #
74b02f5
+
74b02f5
+  AC_ARG_WITH(libpng, [AS_HELP_STRING([--with-libpng],
74b02f5
+     [use libpng from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
74b02f5
+
74b02f5
+  AC_CHECK_LIB(png, png_sig_cmp,
74b02f5
+               [ LIBPNG_FOUND=yes ],
74b02f5
+               [ LIBPNG_FOUND=no ])
74b02f5
+
74b02f5
+  AC_MSG_CHECKING([for which libpng to use])
74b02f5
+
74b02f5
+  # default is bundled
74b02f5
+  DEFAULT_LIBPNG=bundled
74b02f5
+
74b02f5
+  #
74b02f5
+  # if user didn't specify, use DEFAULT_LIBPNG
74b02f5
+  #
74b02f5
+  if test "x${with_libpng}" = "x"; then
74b02f5
+      with_libpng=${DEFAULT_libpng}
74b02f5
+  fi
74b02f5
+
74b02f5
+
74b02f5
+  if test "x${with_libpng}" = "xbundled"; then
74b02f5
+      USE_EXTERNAL_LIBPNG=false
74b02f5
+      AC_MSG_RESULT([bundled])
74b02f5
+  elif test "x${with_libpng}" = "xsystem"; then
74b02f5
+      if test "x${LIBPNG_FOUND}" = "xyes"; then
74b02f5
+          USE_EXTERNAL_LIBPNG=true
74b02f5
+          AC_MSG_RESULT([system])
74b02f5
+      else
74b02f5
+          AC_MSG_RESULT([system not found])
74b02f5
+          AC_MSG_ERROR([--with-libpng=system specified, but no libpng found!])
74b02f5
+      fi
74b02f5
+  else
74b02f5
+      AC_MSG_ERROR([Invalid value of --with-libpng: ${with_libpng}, use 'system' or 'bundled'])
74b02f5
+  fi
74b02f5
+  AC_SUBST(USE_EXTERNAL_LIBPNG)
74b02f5
+
74b02f5
+  ###############################################################################
74b02f5
+  #
74b02f5
   # Check for the zlib library
74b02f5
   #
74b02f5
 
74b02f5
diff -ruN jdk8/common/autoconf/spec.gmk.in jdk8/common/autoconf/spec.gmk.in
74b02f5
--- jdk8/common/autoconf/spec.gmk.in	2013-10-31 19:24:33.000000000 -0400
74b02f5
+++ jdk8/common/autoconf/spec.gmk.in	2013-11-14 21:10:56.365976518 -0500
74b02f5
@@ -548,6 +548,7 @@
74b02f5
 ENABLE_JFR=@ENABLE_JFR@
74b02f5
 ENABLE_INTREE_EC=@ENABLE_INTREE_EC@
74b02f5
 USE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
74b02f5
+USE_EXTERNAL_LIBPNG:=@USE_EXTERNAL_LIBPNG@
74b02f5
 USE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
74b02f5
 USE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
74b02f5
 LIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
74b02f5
diff -ruN jdk8/jdk/make/lib/Awt2dLibraries.gmk jdk8/jdk/make/lib/Awt2dLibraries.gmk
74b02f5
--- jdk8/jdk/make/lib/Awt2dLibraries.gmk	2013-11-14 20:08:01.845065585 -0500
74b02f5
+++ jdk8/jdk/make/lib/Awt2dLibraries.gmk	2013-11-14 20:14:10.791982343 -0500
74b02f5
@@ -1183,7 +1183,6 @@
74b02f5
 
74b02f5
 ifndef BUILD_HEADLESS_ONLY
74b02f5
   LIBSPLASHSCREEN_DIRS := \
74b02f5
-    $(JDK_TOPDIR)/src/share/native/sun/awt/libpng \
74b02f5
     $(JDK_TOPDIR)/src/share/native/sun/awt/splashscreen
74b02f5
 
74b02f5
   ifeq ($(USE_EXTERNAL_LIBGIF), true)
74b02f5
@@ -1200,6 +1199,13 @@
74b02f5
     LIBJPEG_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/jpeg
74b02f5
   endif
74b02f5
 
74b02f5
+  ifeq ($(USE_EXTERNAL_LIBPNG), true)
74b02f5
+    LIBPNG_LDFLAGS := -lpng
74b02f5
+  else
74b02f5
+    LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/share/native/sun/awt/image/libpng
74b02f5
+    LIBPNG_CFLAGS := -I$(JDK_TOPDIR)/src/share/native/sun/awt/libpng
74b02f5
+  endif
74b02f5
+
74b02f5
   ifneq ($(OPENJDK_TARGET_OS), macosx)
74b02f5
     LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/awt/splashscreen
74b02f5
   else
74b02f5
@@ -1263,12 +1269,12 @@
74b02f5
       LANG := C, \
74b02f5
       OPTIMIZATION := LOW, \
74b02f5
       CFLAGS := $(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) \
74b02f5
-          $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS), \
74b02f5
+          $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(LIBPNG_CFLAGS), \
74b02f5
       MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libsplashscreen/mapfile-vers, \
74b02f5
       LDFLAGS := $(LDFLAGS_JDKLIB) \
74b02f5
           $(call SET_SHARED_LIBRARY_ORIGIN), \
74b02f5
       LDFLAGS_SUFFIX := $(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) \
74b02f5
-          $(LIBZ) $(GIFLIB_LDFLAGS) $(LIBJPEG_LDFLAGS), \
74b02f5
+          $(LIBZ) $(GIFLIB_LDFLAGS) $(LIBJPEG_LDFLAGS) $(LIBPNG_LDFLAGS), \
74b02f5
       LDFLAGS_SUFFIX_solaris := -lc, \
74b02f5
       VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/windows/resource/version.rc, \
74b02f5
       RC_FLAGS := $(RC_FLAGS) \
74b02f5
diff -ruN jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c
74b02f5
--- jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c	2013-10-31 19:44:18.000000000 -0400
74b02f5
+++ jdk8/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c	2013-11-14 20:14:41.363892797 -0500
74b02f5
@@ -25,8 +25,7 @@
74b02f5
 
74b02f5
 #include "splashscreen_impl.h"
74b02f5
 
74b02f5
-#include "../libpng/png.h"
74b02f5
-
74b02f5
+#include <png.h>
74b02f5
 #include <setjmp.h>
74b02f5
 
74b02f5
 #define SIG_BYTES 8