This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Get rid of libzgcj and libgcjgc libraries
- From: Bryce McKinlay <bryce at waitaki dot otago dot ac dot nz>
- To: java-patches at gcc dot gnu dot org
- Date: Sun, 17 Mar 2002 12:26:34 +1200
- Subject: Get rid of libzgcj and libgcjgc libraries
This patch rolls the zlib and boehm-gc libraries into libgcj, so that we
have a single monolithic libgcj.so. This is cleaner from a binary
compatibility perspective and could maybe help improve allocation
performance, but most importantly it stops libtool doing its silly
relinking thing.
(and as much as I dislike libtool, I must admit that the convenience
library thing is kinda... convenient!)
regards
Bryce.
zlib:
2002-03-17 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
* Makefile.am: Make target library a convenience library.
* Makefile.in: Rebuilt.
libffi:
2002-03-17 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
* Makefile.am: libfficonvenience -> libffi_convenience.
* Makefile.in: Rebuilt.
boehm-gc:
2002-03-17 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
* Makefile.am: Make a convenience library.
* Makefile.in: Rebuilt.
libjava:
2002-03-17 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
Build a single libgcj.so, without separate gc and zlib libraries.
* configure.in: Use convenience libraries for boehm-gc and zlib. Set
SYS_ZLIBS if system zlib is used.
* configure: Rebuilt.
* Makefile.am: Use boehm-gc and zlib convenience libraries.
* Makefile.in: Rebuilt.
* libtool-version: Increment .so version number.
Index: zlib/Makefile.am
===================================================================
RCS file: /cvs/gcc/egcs/zlib/Makefile.am,v
retrieving revision 1.8
diff -u -r1.8 Makefile.am
--- Makefile.am 2002/03/11 21:49:12 1.8
+++ Makefile.am 2002/03/16 21:36:17
@@ -25,12 +25,8 @@
trees.h uncompr.c zconf.h zlib.h zutil.c zutil.h
if TARGET_LIBRARY
-## We don't use `libz.la' because we don't want to conflict with a
-## system library of that name.
-toolexeclib_LTLIBRARIES = @target_all@
-EXTRA_LTLIBRARIES = libzgcj.la
-libzgcj_la_SOURCES = $(ZLIB_SOURCES)
-libzgcj_la_LDFLAGS = -version-info 0:0:0 -rpath $(toolexeclibdir)
+noinst_LTLIBRARIES = libzgcj_convenience.la
+libzgcj_convenience_la_SOURCES = $(ZLIB_SOURCES)
else
toolexeclib_LIBRARIES = libz.a
libz_a_SOURCES = $(ZLIB_SOURCES)
Index: boehm-gc/Makefile.am
===================================================================
RCS file: /cvs/gcc/egcs/boehm-gc/Makefile.am,v
retrieving revision 1.33
diff -u -r1.33 Makefile.am
--- Makefile.am 2002/02/25 04:04:43 1.33
+++ Makefile.am 2002/03/16 21:36:17
@@ -25,25 +25,34 @@
toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR)
endif
-toolexeclib_LTLIBRARIES = $(target_all)
-EXTRA_LTLIBRARIES = libgcjgc.la
-libgcjgc_la_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
+toolexeclib_LTLIBRARIES = libgcjgc.la
+noinst_LTLIBRARIES = libgcjgc_convenience.la
+
+GC_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c irix_threads.c \
linux_threads.c malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \
solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c \
backgraph.c win32_threads.c
+EXTRA_GC_SOURCES = alpha_mach_dep.s \
+mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \
+rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
+sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
+
+libgcjgc_la_SOURCES = $(GC_SOURCES)
+libgcjgc_convenience_la_SOURCES = $(GC_SOURCES)
+EXTRA_libgcjgc_la_SOURCES = $(EXTRA_GC_SOURCES)
+EXTRA_libgcjgc_convenience_la_SOURCES = $(EXTRA_GC_SOURCES)
+
# Include THREADLIBS here to ensure that the correct versions of
# linuxthread semaphore functions get linked:
libgcjgc_la_LIBADD = @addobjs@ $(THREADLIBS)
libgcjgc_la_DEPENDENCIES = @addobjs@
libgcjgc_la_LDFLAGS = -version-info 1:1:0 -rpath $(toolexeclibdir)
-EXTRA_libgcjgc_la_SOURCES = alpha_mach_dep.s \
-mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \
-rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
-sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
+libgcjgc_convenience_la_LIBADD = @addobjs@
+libgcjgc_convenience_la_DEPENDENCIES = @addobjs@
AM_CXXFLAGS = @GC_CFLAGS@
AM_CFLAGS = @GC_CFLAGS@
Index: libffi/Makefile.am
===================================================================
RCS file: /cvs/gcc/egcs/libffi/Makefile.am,v
retrieving revision 1.16
diff -u -r1.16 Makefile.am
--- Makefile.am 2002/03/07 18:24:41 1.16
+++ Makefile.am 2002/03/16 21:36:17
@@ -83,11 +83,12 @@
endif
toolexeclib_LTLIBRARIES = libffi.la
-noinst_LTLIBRARIES = libfficonvenience.la
+noinst_LTLIBRARIES = libffi_convenience.la
noinst_PROGRAMS = ffitest
ffitest_SOURCES = src/ffitest.c
+ffitest_OBJECTS = src/ffitest.lo
ffitest_LDADD = libffi.la
ffitest_LDFLAGS = -shared-libgcc
@@ -110,51 +111,51 @@
src/raw_api.c src/java_raw_api.c
if MIPS_GCC
libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_GCC)
-libfficonvenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_GCC)
+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_GCC)
endif
if MIPS_SGI
libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_SGI)
-libfficonvenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_SGI)
+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_SGI)
endif
if X86
libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_X86)
-libfficonvenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_X86)
+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_X86)
endif
if X86_WIN32
libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_X86_WIN32)
-libfficonvenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_X86_WIN32)
+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_X86_WIN32)
endif
if SPARC
libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_SPARC)
-libfficonvenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_SPARC)
+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_SPARC)
endif
if ALPHA
libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_ALPHA)
-libfficonvenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_ALPHA)
+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_ALPHA)
endif
if IA64
libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_IA64)
-libfficonvenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_IA64)
+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_IA64)
endif
if M68K
libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_M68K)
-libfficonvenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_M68K)
+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_M68K)
endif
if POWERPC
libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC)
-libfficonvenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC)
+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC)
endif
if POWERPC_AIX
libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_AIX)
-libfficonvenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_AIX)
+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_AIX)
endif
if POWERPC_DARWIN
libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_DARWIN)
-libfficonvenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_DARWIN)
+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_DARWIN)
endif
if ARM
libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_ARM)
-libfficonvenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_ARM)
+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_ARM)
endif
AM_CFLAGS = -fexceptions
Index: libjava/configure.in
===================================================================
RCS file: /cvs/gcc/egcs/libjava/configure.in,v
retrieving revision 1.119
diff -u -r1.119 configure.in
--- configure.in 2002/03/16 00:37:21 1.119
+++ configure.in 2002/03/16 21:36:17
@@ -176,7 +176,7 @@
LIBFFIINCS=
if test "$with_libffi" != no; then
AC_DEFINE(USE_LIBFFI)
- LIBFFI=../libffi/libfficonvenience.la
+ LIBFFI=../libffi/libffi_convenience.la
LIBFFIINCS='-I$(top_srcdir)/../libffi/include -I$(MULTIBUILDTOP)../libffi/include'
fi
AC_SUBST(LIBFFI)
@@ -290,14 +290,11 @@
case "$GC" in
boehm)
AC_MSG_RESULT(boehm)
- GCDEPS='$(top_builddir)/../boehm-gc/libgcjgc.la'
- # We include the path to the boehm-gc build directory.
- # See Makefile.am to understand why.
- GCLIBS="$GCDEPS -L\$(here)/../boehm-gc/$libsubdir"
+ GCLIBS=../boehm-gc/libgcjgc_convenience.la
GCINCS='-I$(top_srcdir)/../boehm-gc/include'
- GCSPEC='-lgcjgc'
JC1GCSPEC='-fuse-boehm-gc'
GCTESTSPEC="-L`pwd`/../boehm-gc/.libs -rpath `pwd`/../boehm-gc/.libs"
+
dnl We also want to pick up some cpp flags required when including
dnl boehm-config.h. Yuck.
GCINCS="$GCINCS `cat ../boehm-gc/boehm-cflags`"
@@ -471,9 +468,6 @@
dnl Assume we do not have getuid and friends.
AC_DEFINE(NO_GETUID)
- ZLIBSPEC=-lzgcj
- ZLIBTESTSPEC="-L`pwd`/../zlib/.libs -rpath `pwd`/../zlib/.libs"
-
# If Canadian cross, then don't pick up tools from the build
# directory.
if test x"$build" != x"$with_cross_host" && x"$build" != x"$target"; then
@@ -670,10 +664,7 @@
SYSTEMSPEC="$SYSTEMSPEC $gcj_cv_lib_sockets"
if test "$with_system_zlib" = yes; then
- AC_CHECK_LIB(z, deflate, ZLIBSPEC=-lz, ZLIBSPEC=-lzgcj)
- else
- ZLIBSPEC=-lzgcj
- ZLIBTESTSPEC="-L`pwd`/../zlib/.libs -rpath `pwd`/../zlib/.libs"
+ AC_CHECK_LIB(z, deflate, ZLIBSPEC=-lz, ZLIBSPEC=)
fi
# On Solaris, and maybe other architectures, the Boehm collector
@@ -730,19 +721,19 @@
AC_COMPILE_CHECK_SIZEOF(void *)
ZLIBS=
-ZDEPS=
+SYS_ZLIBS=
ZINCS=
-if test "x$ZLIBSPEC" = "x-lzgcj"; then
- # We include the path to the zlib build directory.
- # See Makefile.am to understand why.
- ZDEPS='$(top_builddir)/../zlib/libzgcj.la'
- ZLIBS="$ZDEPS -L\$(here)/../zlib/$libsubdir"
+
+if test -z "$ZLIBSPEC"; then
+ # Use zlib from the GCC tree.
ZINCS='-I$(top_srcdir)/../zlib'
+ ZLIBS=../zlib/libzgcj_convenience.la
else
- ZLIBS="$ZLIBSPEC"
+ # System's zlib.
+ SYS_ZLIBS="$ZLIBSPEC"
fi
AC_SUBST(ZLIBS)
-AC_SUBST(ZDEPS)
+AC_SUBST(SYS_ZLIBS)
AC_SUBST(ZINCS)
AC_SUBST(DIVIDESPEC)
AC_SUBST(EXCEPTIONSPEC)
Index: libjava/Makefile.am
===================================================================
RCS file: /cvs/gcc/egcs/libjava/Makefile.am,v
retrieving revision 1.207
diff -u -r1.207 Makefile.am
--- Makefile.am 2002/03/16 21:03:42 1.207
+++ Makefile.am 2002/03/16 21:36:18
@@ -130,15 +130,16 @@
win32-threads.cc posix.cc win32.cc \
$(c_source_files) $(java_source_files) $(built_java_source_files)
libgcj_la_DEPENDENCIES = libgcj.jar $(javao_files) \
- $(c_files) $(GCOBJS) $(THREADOBJS) $(PLATFORMOBJS) $(LIBLTDL)
+ $(c_files) $(GCOBJS) $(THREADOBJS) $(PLATFORMOBJS) $(LIBLTDL) \
+ $(LIBFFI) $(ZLIBS) $(GCLIBS)
libgcj_la_LIBADD = $(javao_files) $(c_files) $(GCOBJS) \
$(THREADOBJS) $(PLATFORMOBJS)
# Include THREADLIBS here to ensure that the correct version of
# certain linuxthread functions get linked:
libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLIBS) $(LIBLTDL) \
- $(GCLIBS) $(ZLIBS) \
-## The mysterious backslash is consumed by make.
+ $(SYS_ZLIBS) \
+## The mysterious backslash is consumed by make.
-version-info `grep -v '^\#' $(srcdir)/libtool-version`
libgcj_la_LINK = $(LIBLINK)
@@ -240,7 +241,7 @@
libgcj.la: $(libgcj_la_OBJECTS) $(libgcj_la_DEPENDENCIES)
@: $(shell echo Creating list of files to link...) $(shell rm -f libgcj.objectlist || :) $(shell touch libgcj.objectlist) $(foreach object,$(libgcj_la_OBJECTS) $(libgcj_la_LIBADD),$(shell echo $(object) >> libgcj.objectlist))
$(libgcj_la_LINK) -objectlist libgcj.objectlist \
- @LIBFFI@ \
+ @GCLIBS@ @LIBFFI@ @ZLIBS@ \
-rpath $(toolexeclibdir) $(libgcj_la_LDFLAGS) $(LIBS)
libgcjx.la: $(libgcjx_la_OBJECTS) $(libgcjx_la_DEPENDENCIES)
@@ -433,7 +434,7 @@
## Depend on the spec file to make sure it is up to date before
## linking this program.
jv_convert_DEPENDENCIES = $(convert_source_files:.java=.lo) \
- $(GCDEPS) $(THREADDEPS) $(ZDEPS) libgcj.la libgcj.spec
+ libgcj.la libgcj.spec
gij_SOURCES = gij.cc
## We need -nodefaultlibs because we want to avoid gcj's `-lgcj'. We
@@ -449,7 +450,7 @@
gij_LDADD = libgcj.la -L$(here)/.libs
## Depend on the spec file to make sure it is up to date before
## linking this program.
-gij_DEPENDENCIES = $(GCDEPS) $(THREADDEPS) $(ZDEPS) libgcj.la libgcj.spec
+gij_DEPENDENCIES = libgcj.la libgcj.spec
rmic_SOURCES =
## This is a dummy definition.
@@ -465,7 +466,7 @@
rmic_LDADD = libgcj.la -L$(here)/.libs
## Depend on the spec file to make sure it is up to date before
## linking this program.
-rmic_DEPENDENCIES = $(GCDEPS) $(THREADDEPS) $(ZDEPS) libgcj.la libgcj.spec
+rmic_DEPENDENCIES = libgcj.la libgcj.spec
rmiregistry_SOURCES =
## This is a dummy definition.
@@ -481,7 +482,7 @@
rmiregistry_LDADD = libgcj.la -L$(here)/.libs
## Depend on the spec file to make sure it is up to date before
## linking this program.
-rmiregistry_DEPENDENCIES = $(GCDEPS) $(THREADDEPS) $(ZDEPS) libgcj.la libgcj.spec
+rmiregistry_DEPENDENCIES = libgcj.la libgcj.spec
# The Unicode consortium does not permit re-distributing the file JIS0201.TXT.
# You can get it from ftp://ftp.unicode.org/Public/MAPPINGS/EASTASIA/JIS/.
Index: libjava/libtool-version
===================================================================
RCS file: /cvs/gcc/egcs/libjava/libtool-version,v
retrieving revision 1.3
diff -u -r1.3 libtool-version
--- libtool-version 2001/04/05 15:12:41 1.3
+++ libtool-version 2002/03/16 21:36:18
@@ -3,4 +3,4 @@
# a separate file so that version updates don't involve re-running
# automake.
# CURRENT:REVISION:AGE
-2:0:0
+3:0:0