Re: [patch] Disable static build for libjava

2011-07-16 Thread Ralf Wildenhues
* Matthias Klose wrote on Sat, Jul 09, 2011 at 05:37:46PM CEST:
 On 07/07/2011 10:35 PM, Ralf Wildenhues wrote:
  On Thu, Jul 07, 2011 at 10:26:59PM +0200, Jakub Jelinek wrote:
  On Thu, Jul 07, 2011 at 10:22:37PM +0200, Matthias Klose wrote:
  +AC_PROG_LIBTOOL
  
  This tests the wrong compiler and toolchain.  The compiler you want
  to test doesn't exist yet at the time this configure script is run.
  So you might as well deduce the switch you need from a fixed set or
  other GCC configure data.
  
  Or you put AC_PROG_LIBTOOL in libjava/ but pass down the value of
  enable_static_libjava as --en/disable-static there.
 
 here is the updated patch. AC_PROG_LIBTOOL is already called in libjava/
 
 ok to install?

OK, thanks.

Cheers,
Ralf

 toplevel
 
 2011-07-09  Matthias Klose  d...@ubuntu.com
 
   * Makefile.tpl (EXTRA_CONFIGARGS_LIBJAVA): Define.
   * Makefile.def (target_modules/libjava): Pass
   $(EXTRA_CONFIGARGS_LIBJAVA).
   * configure.ac: Pass --disable-static in EXTRA_CONFIGARGS_LIBJAVA,
   if not configured with --enable-static-libjava.
   * Makefile.in: Regenerate.
   * configure: Likewise.
 
  
 gcc/
 
 2011-07-09  Matthias Klose  d...@ubuntu.com
 
   * doc/install.texi: Document --enable-static-libjava.


Re: [patch] Disable static build for libjava

2011-07-09 Thread Matthias Klose
On 07/07/2011 10:35 PM, Ralf Wildenhues wrote:
 Hi Matthias,
 
 On Thu, Jul 07, 2011 at 10:26:59PM +0200, Jakub Jelinek wrote:
 On Thu, Jul 07, 2011 at 10:22:37PM +0200, Matthias Klose wrote:
 +AC_PROG_LIBTOOL
 
 This tests the wrong compiler and toolchain.  The compiler you want
 to test doesn't exist yet at the time this configure script is run.
 So you might as well deduce the switch you need from a fixed set or
 other GCC configure data.
 
 Or you put AC_PROG_LIBTOOL in libjava/ but pass down the value of
 enable_static_libjava as --en/disable-static there.

here is the updated patch. AC_PROG_LIBTOOL is already called in libjava/

ok to install?

  Matthias

toplevel

2011-07-09  Matthias Klose  d...@ubuntu.com

* Makefile.tpl (EXTRA_CONFIGARGS_LIBJAVA): Define.
* Makefile.def (target_modules/libjava): Pass
$(EXTRA_CONFIGARGS_LIBJAVA).
* configure.ac: Pass --disable-static in EXTRA_CONFIGARGS_LIBJAVA,
if not configured with --enable-static-libjava.
* Makefile.in: Regenerate.
* configure: Likewise.

 
gcc/

2011-07-09  Matthias Klose  d...@ubuntu.com

* doc/install.texi: Document --enable-static-libjava.

 
Index: Makefile.tpl
===
--- Makefile.tpl(revision 176072)
+++ Makefile.tpl(working copy)
@@ -319,6 +319,8 @@
 HOST_LIBELFLIBS = @libelflibs@
 HOST_LIBELFINC = @libelfinc@
 
+EXTRA_CONFIGARGS_LIBJAVA = @EXTRA_CONFIGARGS_LIBJAVA@
+
 # --
 # Programs producing files for the BUILD machine
 # --
Index: Makefile.def
===
--- Makefile.def(revision 176072)
+++ Makefile.def(working copy)
@@ -132,7 +132,8 @@
 target_modules = { module= winsup; };
 target_modules = { module= libgloss; no_check=true; };
 target_modules = { module= libffi; };
-target_modules = { module= libjava; raw_cxx=true; };
+target_modules = { module= libjava; raw_cxx=true;
+   extra_configure_flags=$(EXTRA_CONFIGARGS_LIBJAVA); };
 target_modules = { module= zlib; };
 target_modules = { module= boehm-gc; };
 target_modules = { module= rda; };
Index: configure.ac
===
--- configure.ac(revision 176072)
+++ configure.ac(working copy)
@@ -443,7 +443,21 @@
   ;;
 esac
 
+AC_ARG_ENABLE(static-libjava,
+[AS_HELP_STRING([[--enable-static-libjava[=ARG]]],
+   [build static libjava @:@default=no@:@])],
+ENABLE_STATIC_LIBJAVA=$enableval,
+ENABLE_STATIC_LIBJAVA=no)
+enable_static_libjava=
+if test ${ENABLE_STATIC_LIBJAVA} = yes ; then
+  enable_static_libjava=yes
+fi
 
+if test x$enable_static_libjava != xyes ; then
+  EXTRA_CONFIGARGS_LIBJAVA=--disable-static
+fi
+AC_SUBST(EXTRA_CONFIGARGS_LIBJAVA)
+
 # Disable libmudflap on some systems.
 if test x$enable_libmudflap = x ; then
 case ${target} in
Index: gcc/doc/install.texi
===
--- gcc/doc/install.texi(revision 176072)
+++ gcc/doc/install.texi(working copy)
@@ -1968,6 +1968,10 @@
 @item --enable-browser-plugin
 Build the gcjwebplugin web browser plugin.
 
+@item --enable-static-libjava
+Build static libraries in libjava. The default is to only build shared
+libraries.
+
 @table @code
 @item ansi
 Use the single-byte @code{char} and the Win32 A functions natively,


[patch] Disable static build for libjava

2011-07-07 Thread Matthias Klose
As discussed at the Google GCC gathering, disable the build of static libraries
in libjava, which should cut the build time of libjava by 50%.  The static
libjava build isn't useful out of the box, and I don't see it packaged by Linux
distributions either.

The AC_PROG_LIBTOOL check is needed to get access to the enable_shared macro.
I'm unsure about the check in the switch construct. Taken from libtool.m4, and
determining the value of enable_shared_with_static_runtimes.

Ok for the trunk?

2011-07-07  Matthias Klose  d...@ubuntu.com

* Makefile.def (target_modules/libjava): Pass
$(libjava_disable_static).
* configure.ac: Check for libtool, pass --disable-static
in libjava_disable_static.
* Makefile.in: Regenerate.
* configure: Likewise.

Index: Makefile.def
===
--- Makefile.def(revision 175963)
+++ Makefile.def(working copy)
@@ -132,7 +132,8 @@
 target_modules = { module= winsup; };
 target_modules = { module= libgloss; no_check=true; };
 target_modules = { module= libffi; };
-target_modules = { module= libjava; raw_cxx=true; };
+target_modules = { module= libjava; raw_cxx=true;
+   extra_configure_flags=$(libjava_disable_static); };
 target_modules = { module= zlib; };
 target_modules = { module= boehm-gc; };
 target_modules = { module= rda; };
Index: configure.ac
===
--- configure.ac(revision 175963)
+++ configure.ac(working copy)
@@ -443,6 +443,16 @@
   ;;
 esac

+AC_PROG_LIBTOOL
+if test x$enable_shared = xyes ; then
+  case $host_cpu in
+  cygwin* | mingw* | pw32* | cegcc*)
+;;
+  *)
+libjava_disable_static=--disable-static
+  esac
+fi
+AC_SUBST(libjava_disable_static)

 # Disable libmudflap on some systems.
 if test x$enable_libmudflap = x ; then



Re: [patch] Disable static build for libjava

2011-07-07 Thread David Daney

On 07/07/2011 09:57 AM, Matthias Klose wrote:

On 07/07/2011 06:51 PM, David Daney wrote:

On 07/07/2011 09:27 AM, Matthias Klose wrote:

As discussed at the Google GCC gathering, disable the build of static libraries
in libjava, which should cut the build time of libjava by 50%.  The static
libjava build isn't useful out of the box, and I don't see it packaged by Linux
distributions either.

The AC_PROG_LIBTOOL check is needed to get access to the enable_shared macro.
I'm unsure about the check in the switch construct. Taken from libtool.m4, and
determining the value of enable_shared_with_static_runtimes.

Ok for the trunk?

2011-07-07  Matthias Klosed...@ubuntu.com

  * Makefile.def (target_modules/libjava): Pass
  $(libjava_disable_static).
  * configure.ac: Check for libtool, pass --disable-static
  in libjava_disable_static.
  * Makefile.in: Regenerate.
  * configure: Likewise.



My autoconf fu is not what it used to be.  It is fine if static libraries are
disabled by default, but it should be possible to enable them from the configure
command line.  It is unclear to me if this patch does that.


no. I assume an extra option --enable-static-libjava would be needed.


Not being a libjava maintainer, I cannot force you to add something like 
that as part of the patch, but I think it would be a good idea.





Also I would like to go on record as disagreeing with the statement that 'static
libjava build isn't useful out of the box'


I remember that there were some restrictions with the static library. but maybe
I'm wrong.



There are restrictions, but it is still useful for some embedded 
environments.


David Daney


Re: [patch] Disable static build for libjava

2011-07-07 Thread Matthias Klose
On 07/07/2011 07:56 PM, Andrew Haley wrote:
 On 07/07/11 18:02, David Daney wrote:
 On 07/07/2011 09:57 AM, Matthias Klose wrote:
 On 07/07/2011 06:51 PM, David Daney wrote:
 On 07/07/2011 09:27 AM, Matthias Klose wrote:
 As discussed at the Google GCC gathering, disable the build of static 
 libraries
 in libjava, which should cut the build time of libjava by 50%.  The static
 libjava build isn't useful out of the box, and I don't see it packaged by 
 Linux
 distributions either.

 The AC_PROG_LIBTOOL check is needed to get access to the enable_shared 
 macro.
 I'm unsure about the check in the switch construct. Taken from 
 libtool.m4, and
 determining the value of enable_shared_with_static_runtimes.

 Ok for the trunk?

 2011-07-07  Matthias Klosed...@ubuntu.com

   * Makefile.def (target_modules/libjava): Pass
   $(libjava_disable_static).
   * configure.ac: Check for libtool, pass --disable-static
   in libjava_disable_static.
   * Makefile.in: Regenerate.
   * configure: Likewise.


 My autoconf fu is not what it used to be.  It is fine if static libraries 
 are
 disabled by default, but it should be possible to enable them from the 
 configure
 command line.  It is unclear to me if this patch does that.

 no. I assume an extra option --enable-static-libjava would be needed.

 Not being a libjava maintainer, I cannot force you to add something like 
 that as part of the patch, but I think it would be a good idea.
 
 I think so.

Here is the updated patch, including the --enable-static-libjava option

ok for the trunk?

  Matthias

gcc/

2011-07-07  Matthias Klose  d...@ubuntu.com

	* doc/install.texi: Document --enable-static-libjava.

 
toplevel

2011-07-07  Matthias Klose  d...@ubuntu.com

	* Makefile.tpl (EXTRA_CONFIGARGS_LIBJAVA): Define.
	* Makefile.def (target_modules/libjava): Pass
	$(EXTRA_CONFIGARGS_LIBJAVA).
	* configure.ac: Check for libtool, pass --disable-static
	in EXTRA_CONFIGARGS_LIBJAVA, if not configured with
	--enable-static-libjava.
	* Makefile.in: Regenerate.
	* configure: Likewise.

 
Index: gcc/doc/install.texi
===
--- gcc/doc/install.texi	(revision 175964)
+++ gcc/doc/install.texi	(working copy)
@@ -1956,6 +1956,10 @@
 @item --enable-browser-plugin
 Build the gcjwebplugin web browser plugin.
 
+@item --enable-static-libjava
+Build static libraries in libjava. The default is to only build shared
+libraries if the target supports shared libraries.
+
 @table @code
 @item ansi
 Use the single-byte @code{char} and the Win32 A functions natively,
Index: Makefile.tpl
===
--- Makefile.tpl	(revision 175964)
+++ Makefile.tpl	(working copy)
@@ -319,6 +319,8 @@
 HOST_LIBELFLIBS = @libelflibs@
 HOST_LIBELFINC = @libelfinc@
 
+EXTRA_CONFIGARGS_LIBJAVA = @EXTRA_CONFIGARGS_LIBJAVA@
+
 # --
 # Programs producing files for the BUILD machine
 # --
Index: Makefile.def
===
--- Makefile.def	(revision 175964)
+++ Makefile.def	(working copy)
@@ -132,7 +132,8 @@
 target_modules = { module= winsup; };
 target_modules = { module= libgloss; no_check=true; };
 target_modules = { module= libffi; };
-target_modules = { module= libjava; raw_cxx=true; };
+target_modules = { module= libjava; raw_cxx=true;
+   extra_configure_flags=$(EXTRA_CONFIGARGS_LIBJAVA); };
 target_modules = { module= zlib; };
 target_modules = { module= boehm-gc; };
 target_modules = { module= rda; };
Index: configure.ac
===
--- configure.ac	(revision 175964)
+++ configure.ac	(working copy)
@@ -443,7 +443,27 @@
   ;;
 esac
 
+AC_ARG_ENABLE(static-libjava,
+[AS_HELP_STRING([[--enable-static-libjava[=ARG]]],
+		[build static libjava @:@default=no@:@])],
+ENABLE_STATIC_LIBJAVA=$enableval,
+ENABLE_STATIC_LIBJAVA=no)
+enable_static_libjava=
+if test ${ENABLE_STATIC_LIBJAVA} = yes ; then
+  enable_static_libjava=yes
+fi
 
+AC_PROG_LIBTOOL
+if test x$enable_shared = xyes  test x$enable_static_libjava != xyes ; then
+  case $host_cpu in
+  cygwin* | mingw* | pw32* | cegcc*)
+;;
+  *)
+EXTRA_CONFIGARGS_LIBJAVA=--disable-static
+  esac
+fi
+AC_SUBST(EXTRA_CONFIGARGS_LIBJAVA)
+
 # Disable libmudflap on some systems.
 if test x$enable_libmudflap = x ; then
 case ${target} in


Re: [patch] Disable static build for libjava

2011-07-07 Thread Jakub Jelinek
On Thu, Jul 07, 2011 at 10:22:37PM +0200, Matthias Klose wrote:
 +AC_PROG_LIBTOOL
 +if test x$enable_shared = xyes  test x$enable_static_libjava != xyes ; then
 +  case $host_cpu in

Shouldn't this be $host_os instead of $host_cpu ?  cygwin* etc.
don't look like host_cpu names...

 +  cygwin* | mingw* | pw32* | cegcc*)
 +;;
 +  *)
 +EXTRA_CONFIGARGS_LIBJAVA=--disable-static

Jakub


Re: [patch] Disable static build for libjava

2011-07-07 Thread Ralf Wildenhues
Hi Matthias,

On Thu, Jul 07, 2011 at 10:26:59PM +0200, Jakub Jelinek wrote:
 On Thu, Jul 07, 2011 at 10:22:37PM +0200, Matthias Klose wrote:
  +AC_PROG_LIBTOOL

This tests the wrong compiler and toolchain.  The compiler you want
to test doesn't exist yet at the time this configure script is run.
So you might as well deduce the switch you need from a fixed set or
other GCC configure data.

Or you put AC_PROG_LIBTOOL in libjava/ but pass down the value of
enable_static_libjava as --en/disable-static there.

  +if test x$enable_shared = xyes  test x$enable_static_libjava != xyes ; 
  then
  +  case $host_cpu in
 
 Shouldn't this be $host_os instead of $host_cpu ?  cygwin* etc.
 don't look like host_cpu names...
 
  +  cygwin* | mingw* | pw32* | cegcc*)
  +;;
  +  *)
  +EXTRA_CONFIGARGS_LIBJAVA=--disable-static

Cheers,
Ralf