-tooldir = $(exec_prefix)/$(target_alias)
-toollibdir = $(tooldir)/lib$(MULTISUBDIR)
-
-## FIXME: when native, use libtool to provide shared libraries.
-toollib_LIBRARIES = $(target_all)
-EXTRA_LIBRARIES = libgcjgc.a
-libgcjgc_a_SOURCES = allchblk.c alloc.c blacklst.c checksums.c \
-config.h dbg_mlc.c dyn_load.c finalize.c gc.h gc_alloc.h gc_cpp.h \
-gc_hdrs.h gc_mark.h gc_priv.h gc_private.h gc_typed.h headers.c \
-irix_threads.c linux_threads.c malloc.c mallocx.c mark.c mark_rts.c \
+## Install a library built with a cross compiler in tooldir, not
+## libdir.
+if USE_LIBDIR
+toolexeclibdir = $(libdir)$(MULTISUBDIR)
+else
+toolexecdir = $(exec_prefix)/$(target_alias)
+toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR)
+endif
+
+toolexeclib_LTLIBRARIES = $(target_all)
+EXTRA_LTLIBRARIES = libgcjgc.la
+libgcjgc_la_SOURCES = allchblk.c alloc.c blacklst.c checksums.c \
+gcconfig.h dbg_mlc.c dyn_load.c finalize.c gc.h gc_alloc.h gc_cpp.h \
+gc_hdrs.h gc_mark.h gc_priv.h gc_private.h gc_typed.h gcj_mlc.c headers.c \
+hpux_irix_threads.c linux_threads.c malloc.c mallocx.c mark.c mark_rts.c \