• unknown's avatar
    MWL#74: Shared libmysqld.so library. · 0de9a4ab
    unknown authored
    Switch makefiles to use libtool to build libmysqld.so, as well as all its
    dependencies.
    
    The previous MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS() declaration is removed,
    as it does not work well with a libtool build. Instead, plugins that need it
    can specify an alternate object in MYSQL_PLUGIN_STATIC() that will be used for
    embedded library. The plugin must then take care itself of compiling the
    special object for embedded, rebuilding the source files previously listed in
    MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS() with @plugin_embedded_defs@ in
    CFLAGS/CXXFLAGS. The extra target @XXX_embedded_static_target@ is available
    for the special object, this will be empty when --without-embedded-server.
    
    All in-tree plugins are changed to build their static targets with libtool.
    Additional plugins that want to work with libmysqld.so will need to be
    similarly modified to build with libtool (or otherwise provide an -fPIC
    object). Dynamically loaded plugins are not affected.
    
    The old libraries like libmysys.a, libmyisam.a and similar libraries, which
    were installed by `make install` though this is of little use, are still built
    and installed to not break package scripts etc. that expect them. These
    libraries are kept static to avoid introducing new .so dependencies.
    
    The patch also fixes a handfull of duplicate symbol linker errors, where we
    included some object twice during linking; these for one reason or another did
    not produce errors before but caused problems on some platforms with this
    patch (eg. Mac OS X linker is more strict for shared objects).
    
    This patch only does what is necessary to build libmysqld.so. There are some
    more cleanups that are possible now that we are using libtool more fully,
    which could done in subsequent patches (though we may not bother as we are
    switching from autotools to CMake anyway):
    
     - In libmysql_r/, we should be able to just link libmysys.la etc, instead of
       symlinking and re-compiling sources into the directory.
    
     - In libmysql/, we can similarly avoid symlinking and recompiling sources if
       we instead build a libmysys_nothread.la library with appropriate CFLAGS and
       link that.
    
     - In sql/, we can build a separate target libmysql_int.la with appropriate
       CFLAGS for embedded and use that in libmysqld/ instead of symlinking
       sources.
    
     - libmysys.a, libmyisam.a and similar libraries could be installed as .so
       also to save on code size; or alternatively could be not installed at all.
    
    
    client/Makefile.am:
      Updated for using libtool
    config/ac-macros/plugins.m4:
      Replace MUSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS with mechanism for plugins
      to specify alternate object for embedded.
    configure.in:
      Fix linking duplicate objects related to THREAD_LOBJECTS.
    dbug/Makefile.am:
      Updated for using libtool
    extra/Makefile.am:
      Fix relative paths.
    libmysqld/Makefile.am:
      Build libmysqld.la using libtool
    libmysqld/examples/Makefile.am:
      Updated to use libtool
    mysys/Makefile.am:
      Updated to use libtool.
      Fix linking duplicate objects related to THREAD_LOBJECTS.
    mysys/my_uuid.c:
      Fix conflicting global mutex name by making it static.
    regex/Makefile.am:
      Updated to use libtool
    sql/Makefile.am:
      Updated to use libtool
    sql/item_func.cc:
      Fix conflicting mutex name.
    sql/mysql_priv.h:
      Fix conflicting mutex name
    sql/mysqld.cc:
      Fix conflicting mutex name.
      Add missing call of my_uuid_end().
    storage/archive/Makefile.am:
      Updated to use libtool
    storage/archive/plug.in:
      Updated to use libtool
    storage/blackhole/Makefile.am:
      Updated to use libtool
    storage/blackhole/plug.in:
      Updated to use libtool
    storage/csv/Makefile.am:
      Updated to use libtool
    storage/csv/plug.in:
      Updated to use libtool
    storage/example/Makefile.am:
      Updated to use libtool
    storage/federated/Makefile.am:
      Updated to use libtool
    storage/federated/plug.in:
      Updated to use libtool
    storage/federatedx/Makefile.am:
      Updated to use libtool
    storage/federatedx/plug.in:
      Updated to use libtool
    storage/heap/Makefile.am:
      Updated to use libtool
    storage/heap/plug.in:
      Updated to use libtool
    storage/innobase/Makefile.am:
      Updated to use libtool
    storage/innobase/plug.in.disabled:
      Updated to use libtool
    storage/innodb_plugin/Makefile.am:
      Updated to use libtool
    storage/maria/CMakeLists.txt:
      Fix linking duplicate object in maria_dump_log, causes failure on Mac OS X
    storage/maria/Makefile.am:
      Updated to use libtool
      Fix linking duplicate object in maria_dump_log, causes link failure on Mac OS X
    storage/maria/ma_loghandler.c:
      Move maria_dump_log code to separate file to fix duplicate object link failures.
    storage/maria/ma_loghandler.h:
      Move maria_dump_log code to separate file to fix duplicate object link failures.
    storage/maria/maria_dump_log.c:
      Move maria_dump_log code to separate file to fix duplicate object link failures.
    storage/maria/plug.in:
      Updated to use libtool
    storage/myisam/Makefile.am:
      Updated to use libtool
    storage/myisam/plug.in:
      Updated to use libtool
    storage/myisammrg/Makefile.am:
      Updated to use libtool
    storage/myisammrg/plug.in:
      Updated to use libtool
    storage/pbxt/plug.in:
      Updated to use libtool
    storage/pbxt/src/Makefile.am:
      Updated to use libtool
    storage/xtradb/Makefile.am:
      Updated to use libtool
    storage/xtradb/plug.in:
      Updated to use libtool
    strings/Makefile.am:
      Updated to use libtool
    unittest/unit.pl:
      Don't attempt to run libtool internal files as unit tests.
    vio/Makefile.am:
      Updated to use libtool
    0de9a4ab
plugins.m4 25.1 KB