Add shared library support to the CMake build.
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
Showing with 331 additions and 95 deletions