diff mbox

Disable static build for libjava

Message ID 4E16158D.3060206@ubuntu.com
State New
Headers show

Commit Message

Matthias Klose July 7, 2011, 8:22 p.m. UTC
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 Klose<doko@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

Comments

Jakub Jelinek July 7, 2011, 8:26 p.m. UTC | #1
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
Ralf Wildenhues July 7, 2011, 8:35 p.m. UTC | #2
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
diff mbox

Patch

gcc/

2011-07-07  Matthias Klose  <doko@ubuntu.com>

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

 
<toplevel>

2011-07-07  Matthias Klose  <doko@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