[PATCH, take 2] Build java as two separate DLLs on windows.

Dave Korn dave.korn.cygwin@googlemail.com
Mon Aug 31 21:43:00 GMT 2009


    Hi all,

  Here's the final version of my libjava-as-dlls patch.  Nobody had anything
much to say about the first draft so I take it there were no obvious massive
flaws; this is basically the same patch, tweaked to add -lgcj-noncore to the
specs when using -lgcj_bc as well as when using ordinary -lgcj, and adding
dependencies on libgcj-noncore.la to the tool executables everywhere they link
against libgcj.la, so as to guarantee both libraries are available at the time
those modified specs get used, preventing the parallel build from breaking.

gcc/ChangeLog:

	* config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
	* config/i386/cygwin.h (LIBGCJ_SONAME): Define.
	* config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.

libjava/ChangeLog:

	* configure.host (enable_libgcj_sublibs_default): New variable,
	set for Cygwin and MinGW.
	* configure.ac (--enable-libgcj-sublibs): New command-line switch.
	(BUILD_SUBLIBS): New AM_CONDITIONAL relating to it.
	(libgcj_spec_lgcj_override): New variable, define if building sublibs.
	(libgcj_spec_lgcj_bc_override): Likewise for when USE_LIBGCJ_BC.
	(LIBGCJ_SPEC_LGCJ): New variable to abstract "-lgcj" from specs.
	(LIBGCJ_SPEC_LGCJ_BC): Likewise for when USE_LIBGCJ_BC.
	(LIBGCJ_SPEC): Use them.
	* configure: Regenerate.
	* Makefile.am (LOWER_PACKAGE_FILES_LO): New variable.
	(ALL_PACKAGE_SOURCE_FILES_LO): Likewise.
	(NONCORE_PACKAGE_SOURCE_FILES_LO): Likewise.
	(CORE_PACKAGE_SOURCE_FILES_LO): Likewise.
	(toolexeclib_LTLIBRARIES): Add libgcj-noncore.la if building sublibs.
	(libgcj_noncore_la_LIBADD_SUBOBJECTS): New variable.
	(libgcj_la_LIBADD_SUBOBJECTS): Likewise.
	(libgcj_la_LDFLAGS_NOUNDEF): Likewise.
	(libgij_la_LDFLAGS): Add DLL-related options.
	(libgcj_la_LDFLAGS): Use libgcj_la_LDFLAGS_NOUNDEF and
	libgcj_la_LIBADD_SUBOBJECTS.
	(libgcj_la_DEPENDENCIES): Adjust to match.
	(libgcj_noncore_la_SOURCES, libgcj_noncore_la_LDFLAGS,
	libgcj_noncore_la_LIBADD, libgcj_noncore_la_DEPENDENCIES,
	libgcj_noncore_la_LINK): New automake variables for sublibrary.
	(libgcj_tools_la_LDFLAGS): Add DLL-related flags.
	(libgcj_tools_la_LIBADD): New variable.
	(libjvm_la_LDFLAGS): Add DLL-related flags.
	(lib_gnu_awt_xlib_la_LDFLAGS): Likewise.
	(libgcj_bc_la_LDFLAGS): Likewise.
	(libgij_la_DEPENDENCIES): Add dependency on libgcj-noncore.la when
	building sublibs.
	(libgcj_tools_la_DEPENDENCIES, libjvm_la_DEPENDENCIES,
	lib_gnu_awt_xlib_la_DEPENDENCIES, jv_convert_DEPENDENCIES,
	gcj_dbtool_DEPENDENCIES, gc_analyze_DEPENDENCIES, ecjx_DEPENDENCIES):
	Likewise.
	* Makefile.in: Regenerate.
	* sysdep/i386/backtrace.h (MAIN_FUNC): New #define for main function,
	set appropriately for Cygwin on that platform or to "main" elsewhere.
	(fallback_backtrace): Use it to limit stack unwind.

libjava/libltdl/ChangeLog:

	* ltdl.h (LT_SCOPE): Change conditional to avoid breaking
	auto-export during libgcj DLL linking.
	* Makefile.am (libltdl_la_LDFLAGS): Remove -bindir switch.
	* Makefile.in: Regenerate.

  Bootstrapped at -j4 on i686-pc-cygwin.  Tests currently running, results
anticipated in a few hours.  Assuming (as I have every reason to expect) no
regressions, OK for HEAD?

    cheers,
      DaveK

-------------- next part --------------
A non-text attachment was scrubbed...
Name: libjava-sublibs-final.diff
Type: text/x-c
Size: 19653 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/java-patches/attachments/20090831/8638e0f1/attachment.bin>


More information about the Java-patches mailing list