Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6613927
Votes 0
Synopsis Compilation of splashscreen png library failed on Ubuntu 7.04 (64bit)
Category java:classes_awt
Reported Against
Release Fixed 7(b25), 6-open(b08) (Bug ID:2159858)
State 10-Fix Delivered, bug
Priority: 3-Medium
Related Bugs 6744609
Submit Date 07-OCT-2007
Description
Recent jdk sources failed to compile on Ubuntu 7.04 (64bit). Here is extract from the log (attached).

...

../../../build/linux-amd64/tmp/sun/sun.awt/splashscreen/obj64_g/png.o: In function `png_init_mmx_flags':
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/png.c:830: undefined reference to `png_mmx_support'
../../../build/linux-amd64/tmp/sun/sun.awt/splashscreen/obj64_g/pngpread.o: In function `png_push_process_row':
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngpread.c:847: undefined reference to `png_read_filter_row'
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngpread.c:866: undefined reference to `png_do_read_interlace'
../../../build/linux-amd64/tmp/sun/sun.awt/splashscreen/obj64_g/pngpread.o: In function `png_progressive_combine_row':
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngpread.c:1595: undefined reference to `png_combine_row'
../../../build/linux-amd64/tmp/sun/sun.awt/splashscreen/obj64_g/pngread.o: In function `png_read_row':
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngread.c:651: undefined reference to `png_combine_row'
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngread.c:661: undefined reference to `png_combine_row'
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngread.c:671: undefined reference to `png_combine_row'
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngread.c:681: undefined reference to `png_combine_row'
../../../build/linux-amd64/tmp/sun/sun.awt/splashscreen/obj64_g/pngread.o:/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngread.c:691: more undefined references to `png_combine_row' follow
../../../build/linux-amd64/tmp/sun/sun.awt/splashscreen/obj64_g/pngread.o: In function `png_read_row':
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngread.c:774: undefined reference to `png_read_filter_row'
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngread.c:804: undefined reference to `png_do_read_interlace'
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngread.c:807: undefined reference to `png_combine_row'
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngread.c:810: undefined reference to `png_combine_row'
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngread.c:817: undefined reference to `png_combine_row'
/export/java2d/j2se/make/sun/splashscreen/../../../src/share/native/sun/awt/libpng/pngread.c:819: undefined reference to `png_combine_row'
collect2: ld returned 1 exit status
make[3]: *** [../../../build/linux-amd64/lib/amd64/libsplashscreen.so] Error 1
make[3]: Leaving directory `/export/java2d/j2se/make/sun/splashscreen'
make[2]: *** [all] Error 1
make[2]: Leaving directory `/export/java2d/j2se/make/sun'
make[1]: *** [all] Error 1
make[1]: Leaving directory `/export/java2d/j2se/make'
make: *** [debug] Error 2
Command exited with non-zero status 2
Posted Date : 2007-10-07 12:30:01.0
Work Around
I'm using following patch as work around of the problem:

------- make/sun/splashscreen/Makefile -------
65a66
>   C_INCLUDE_PATH = $(SHARE_SRC)/native/$(PKGDIR)/splashscreen
87c88
< 
---
> CPPFLAGS += -DPNG_NO_MMX_CODE
Evaluation
Googling shows that MMX instructions cannot be correctly compiled by 64-bit compilers, so the workaround is good. We can enable it if we detect we build on a 64-bit platform.
Posted Date : 2007-10-10 12:19:54.0
Comments
  
  Include a link with my name & email   

Submitted On 03-NOV-2007
I made a patch using a ALT_EXTERNAL_LIBPNG macro that need to be set for excluding png to be compiled and using libpng from the system.
The patch is in my mercurial repo here:
http://www.jfrog.org/hg/openJDK/MASTER/jdk/rev/a2d7bb38f814



PLEASE NOTE: JDK6 is formerly known as Project Mustang