• Andreas Rheinhardt's avatar
    Makefile: Redo duplicating object files in shared builds · 20b0d24c
    Andreas Rheinhardt authored
    In case of shared builds, some object files containing tables
    are currently duplicated into other libraries: log2_tab.c,
    golomb.c, reverse.c. The check for whether this is duplicated
    is simply whether CONFIG_SHARED is true. Yet this is crude:
    E.g. libavdevice includes reverse.c for shared builds, but only
    needs it for the decklink input device, which given that decklink
    is not enabled by default will be unused in most libavdevice.so.
    
    This commit changes this by making it more explicit about what
    to duplicate from other libraries. To do this, two new Makefile
    variables were added: SHLIBOBJS and STLIBOBJS. SHLIBOBJS contains
    the objects that are duplicated from other libraries in case of
    shared builds; STLIBOBJS contains stuff that a library has to
    provide for other libraries in case of static builds. These new
    variables provide a way to enable/disable with a finer granularity
    than just whether shared builds are enabled or not. E.g. lavd's
    Makefile now contains: SHLIBOBJS-$(CONFIG_DECKLINK_INDEV) += reverse.o
    
    Another example is provided by the golomb tables. These are provided
    by lavc for static builds, even if one uses a build configuration
    that makes only lavf use them. Therefore lavc's Makefile contains
    STLIBOBJS-$(CONFIG_MXF_MUXER) += golomb.o, whereas lavf's Makefile
    has a corresponding SHLIBOBJS-$(CONFIG_MXF_MUXER) += golomb_tab.o.
    E.g. in case the MXF muxer is the only component needing these tables
    only libavformat.so will contain them for shared builds; currently
    libavcodec.so does so, too.
    (There is currently a CONFIG_EXTRA group for golomb. But actually
    one would need two groups (golomb_avcodec and golomb_avformat) in
    order to know when and where to include these tables. Therefore
    this commit uses a Makefile-based approach for this and stops
    using these groups for the users in libavformat.)
    Signed-off-by: 's avatarAndreas Rheinhardt <andreas.rheinhardt@outlook.com>
    20b0d24c
Makefile 3.82 KB