• Andreas Rheinhardt's avatar
    ffbuild/common: Fix CPPFLAGS applied for compiling C++ files · a7817337
    Andreas Rheinhardt authored
    Currently, $(CPPFLAGS) and $(CFLAGS) are prepended to CXXFLAGS
    (the flags for compiling C++) like this:
    CXXFLAGS := $(CPPFLAGS) $(CFLAGS) $(CXXFLAGS)
    Using ":=" creates a simply expanded variable, i.e. the values
    of the variable at the time of assignment are used and later
    modifications to them are ignored (using a recursively expanding
    variable (i.e. "=" instead of ":=") is not really possible here,
    as there would be an infinite loop when evaluating CXXFLAGS).
    
    Yet we perform later additions to CPPFLAGS: HAVE_AV_CONFIG_H and
    BUILDING_libfoo are defined. These do not reach C++ compilations.
    
    To fix this a trick is employed to prepend to a recursively
    expanded variable while keeping it recursively expanded.
    
    There are two practical consequences of this: C++ files now no longer
    include the version.h header, but only the version_major.h header
    of their library, saving some recompilations. Furthermore, they
    now get some optimized math functions (namely the ones from
    lavu/intmath.h instead of the ones from lavu/common.h).
    (av_parity() is the only one for which it makes a difference.)
    Signed-off-by: 's avatarAndreas Rheinhardt <andreas.rheinhardt@outlook.com>
    a7817337
common.mak 6.39 KB