• Tom Finegan's avatar
    Add shared library support to the CMake build. · 84f2d796
    Tom Finegan authored
    This is enabled via:
    $ cmake path/to/aom -DBUILD_SHARED_LIBS=1
    
    Currently supports only Linux and MacOS targets. Symbol visibility
    is handled by exports.cmake and its helpers exports_sources.cmake
    and generate_exports.cmake.
    
    Some sweeping changes were required to properly support shared libs
    and control symbol visibility:
    
    - Object libraries are always linked privately into static
      libraries.
    - Static libraries are always linked privately into eachother
      in the many cases where the CMake build merges multiple library
      targets.
    - aom_dsp.cmake now links all its targets into the aom_dsp static
      library target, and privately links aom_dsp into the aom target.
    - av1.cmake now links all its targets into the aom_av1 static library
      target, and privately links in aom_dsp and aom_scale as well. It
      then privately links aom_av1 into the aom target.
    - The aom_mem, aom_ports, aom_scale, and aom_util targets are now
      static libs that are privately linked into the aom target.
    - In CMakeLists.txt libyuv and libwebm are now privately linked into
      app targets.
    - The ASM and intrinsic library functions in aom_optimization.cmake
      now both require a dependent target argument. This facilitates the
      changes noted above regarding new privately linked static library
      targets for ASM and intrinsics sources.
    
    BUG=aomedia:76,aomedia:556
    
    Change-Id: I4892059880c5de0f479da2e9c21d8ba2fa7390c3
    84f2d796
CMakeLists.txt 17.5 KB