This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Re: [patch] Disable static build for libjava
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
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