This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Re: [MAD SCIENCE EXPERIMENT]: Replace some libtool functionality with handcoded C
- From: Mohan Embar <gnustuff at thisiscool dot com>
- To: zack at codesourcery dot com, Alexandre Oliva <aoliva at redhat dot com>
- Cc: java-patches at gcc dot gnu dot org, libtool at gnu dot org, automake at gnu dot org
- Date: Thu, 04 Dec 2003 07:09:42 -0600
- Subject: Re: [MAD SCIENCE EXPERIMENT]: Replace some libtool functionality with handcoded C
- Reply-to: gnustuff at thisiscool dot com
Hi Alexandre,
>I'm not all that surprised your C program is much faster that the
>shell script. For starters, it fails to support all of libtool's
>configure-time options, such as --disable-static, --disable-shared,
>--with-pic, as well as their per-compilation equivalent command-line
>flags.
I agree. I wasn't even trying to go there.
(For those of you CCed, Alexandre was responding to my post on
java-patches:
http://gcc.gnu.org/ml/java-patches/2003-q4/msg00609.html
)
>Back during the GCC summit, Zack Weinberg suggested an alternative
>approach that could speed things up: getting the libtool code to
>define additional Makefile macros that would enable someone to inline
>the libtool calls into the Makefile itself.
>Wanna give it a try?
This sounds very tempting, but I'm afraid I'd need to learn a lot
more about automake and autoconf before I'm ready for this. (Coming
from a Windows background, I already needed to get some brain implants
to decipher things like this:
>LIBTOOL_END_COMPILE_CC = ; shift 1; \
> { test -d $$dir"/$(libtool_libdir) || \
> $(mkdir_p) "$$dir"/$(libtool_libdir); } && \
> rm -f "$$lofile"T "$$lofile" "$$dir/$$ofile" \
> "$$dir/$(libtool_libdir)/$$ofile" || : ; \
> $(LIBTOOL_COMPILE_CC_PIC) -o "$$dir/$(libtool_libdir)/$$ofile" \
> $${1+"$$@"} && \
> $(LIBTOOL_COMPILE_CC_NONPIC) -o "$$dir/$$ofile" $${1+"$$@"} && \
> { echo pic_object=$(LIBTOOL_PIC_OBJECT); \
> echo non_pic_object=$(LIBTOOL_NONPIC_OBJECT); } > "$$lofile"T && \
> mv "$$lofile"T "$$lofile"
:)
)
For now, I'm going to continue my experiment and see if I can follow through
on it to remove the build-time dependency on libtool of the i686-pc-linux-gnu
top-level native build. I don't think my experiment will ever get accepted,
but I'm curious to see what the final C program looks like and I figure that
it can be used as sort of discussion topic for next steps. (Or not....)
-- Mohan
http://www.thisiscool.com/
http://www.animalsong.org/