Build static libaom without internal deps in CMake.

Change the internal lib targets so that external apps
need link only libaom instead of all internal library
targets and libaom.

BUG=aomedia:76,aomedia:609

Change-Id: I38862fcd90cb585300b6b23e8558f78a1934750f
diff --git a/aom_dsp/aom_dsp.cmake b/aom_dsp/aom_dsp.cmake
index f39da7c..9182d35 100644
--- a/aom_dsp/aom_dsp.cmake
+++ b/aom_dsp/aom_dsp.cmake
@@ -415,7 +415,9 @@
 function (setup_aom_dsp_targets)
   add_library(aom_dsp_common OBJECT ${AOM_DSP_COMMON_SOURCES})
   list(APPEND AOM_LIB_TARGETS aom_dsp_common)
-  add_library(aom_dsp STATIC $<TARGET_OBJECTS:aom_dsp_common>)
+  create_dummy_source_file("aom_av1" "c" "dummy_source_file")
+  add_library(aom_dsp OBJECT "${dummy_source_file}")
+  target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_common>)
   list(APPEND AOM_LIB_TARGETS aom_dsp)
 
   # Not all generators support libraries consisting only of object files. Add a
@@ -425,112 +427,107 @@
   if (CONFIG_AV1_DECODER)
     add_library(aom_dsp_decoder OBJECT ${AOM_DSP_DECODER_SOURCES})
     set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_dsp_decoder)
-    target_sources(aom_dsp PRIVATE $<TARGET_OBJECTS:aom_dsp_decoder>)
+    target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_decoder>)
   endif ()
 
   if (CONFIG_AV1_ENCODER)
     add_library(aom_dsp_encoder OBJECT ${AOM_DSP_ENCODER_SOURCES})
     set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_dsp_encoder)
-    target_sources(aom_dsp PRIVATE $<TARGET_OBJECTS:aom_dsp_encoder>)
+    target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp_encoder>)
   endif ()
 
   if (HAVE_SSE2)
-    add_asm_library("aom_dsp_common_sse2" "AOM_DSP_COMMON_ASM_SSE2" "aom_dsp")
+    add_asm_library("aom_dsp_common_sse2" "AOM_DSP_COMMON_ASM_SSE2" "aom")
     add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_common"
-                                   "AOM_DSP_COMMON_INTRIN_SSE2" "aom_dsp")
+                                   "AOM_DSP_COMMON_INTRIN_SSE2" "aom")
 
     if (CONFIG_AV1_ENCODER)
       add_asm_library("aom_dsp_encoder_sse2" "AOM_DSP_ENCODER_ASM_SSE2"
-                      "aom_dsp")
+                      "aom")
       add_intrinsics_object_library("-msse2" "sse2" "aom_dsp_encoder"
-                                    "AOM_DSP_ENCODER_INTRIN_SSE2" "aom_dsp")
+                                    "AOM_DSP_ENCODER_INTRIN_SSE2" "aom")
     endif()
   endif ()
 
   if (HAVE_SSE3 AND CONFIG_AV1_ENCODER)
-    add_asm_library("aom_dsp_encoder_sse3" "AOM_DSP_ENCODER_INTRIN_SSE3"
-                    "aom_dsp")
+    add_asm_library("aom_dsp_encoder_sse3" "AOM_DSP_ENCODER_INTRIN_SSE3" "aom")
   endif ()
 
   if (HAVE_SSSE3)
-    add_asm_library("aom_dsp_common_ssse3" "AOM_DSP_COMMON_ASM_SSSE3" "aom_dsp")
+    add_asm_library("aom_dsp_common_ssse3" "AOM_DSP_COMMON_ASM_SSSE3" "aom")
     add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_common"
-                                  "AOM_DSP_COMMON_INTRIN_SSSE3" "aom_dsp")
+                                  "AOM_DSP_COMMON_INTRIN_SSSE3" "aom")
 
     if (CONFIG_AV1_ENCODER)
       if ("${AOM_TARGET_CPU}" STREQUAL "x86_64")
         list(APPEND AOM_DSP_ENCODER_ASM_SSSE3
              ${AOM_DSP_ENCODER_ASM_SSSE3_X86_64})
       endif ()
-      add_asm_library("aom_dsp_encoder_ssse3" "AOM_DSP_ENCODER_ASM_SSSE3"
-                      "aom_dsp")
+      add_asm_library("aom_dsp_encoder_ssse3" "AOM_DSP_ENCODER_ASM_SSSE3" "aom")
       if (AOM_DSP_ENCODER_INTRIN_SSSE3)
         add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp_encoder"
-                                      "AOM_DSP_ENCODER_INTRIN_SSSE3" "aom_dsp")
+                                      "AOM_DSP_ENCODER_INTRIN_SSSE3" "aom")
       endif ()
     endif ()
   endif ()
 
   if (HAVE_SSE4_1)
     add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_common"
-                                  "AOM_DSP_COMMON_INTRIN_SSE4_1" "aom_dsp")
+                                  "AOM_DSP_COMMON_INTRIN_SSE4_1" "aom")
     if (CONFIG_AV1_ENCODER)
       if (AOM_DSP_ENCODER_INTRIN_SSE4_1)
         add_intrinsics_object_library("-msse4.1" "sse4_1" "aom_dsp_encoder"
-                                      "AOM_DSP_ENCODER_INTRIN_SSE4_1" "aom_dsp")
+                                      "AOM_DSP_ENCODER_INTRIN_SSE4_1" "aom")
       endif ()
       add_asm_library("aom_dsp_encoder_sse4_1" "AOM_DSP_ENCODER_ASM_SSE4_1"
-                      "aom_dsp")
+                      "aom")
     endif ()
   endif ()
 
   if (HAVE_AVX AND "${AOM_TARGET_CPU}" STREQUAL "x86_64")
     if (CONFIG_AV1_ENCODER)
       add_asm_library("aom_dsp_encoder_avx" "AOM_DSP_ENCODER_AVX_ASM_X86_64"
-                      "aom_dsp")
+                      "aom")
     endif ()
   endif ()
 
   if (HAVE_AVX2)
     add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_common"
-                                  "AOM_DSP_COMMON_INTRIN_AVX2" "aom_dsp")
+                                  "AOM_DSP_COMMON_INTRIN_AVX2" "aom")
     if (CONFIG_AV1_ENCODER)
       add_intrinsics_object_library("-mavx2" "avx2" "aom_dsp_encoder"
-                                    "AOM_DSP_ENCODER_INTRIN_AVX2" "aom_dsp")
+                                    "AOM_DSP_ENCODER_INTRIN_AVX2" "aom")
     endif ()
   endif ()
 
   if (HAVE_NEON_ASM)
     if (AOM_ADS2GAS_REQUIRED)
-      add_gas_asm_library("aom_dsp_common_neon" "AOM_DSP_COMMON_ASM_NEON"
-                          "aom_dsp")
+      add_gas_asm_library("aom_dsp_common_neon" "AOM_DSP_COMMON_ASM_NEON" "aom")
     else ()
-      add_asm_library("aom_dsp_common_neon" "AOM_DSP_COMMON_ASM_NEON" "aom_dsp")
+      add_asm_library("aom_dsp_common_neon" "AOM_DSP_COMMON_ASM_NEON" "aom")
     endif ()
   endif ()
 
   if (HAVE_NEON)
     add_intrinsics_object_library("${AOM_NEON_INTRIN_FLAG}" "neon"
                                   "aom_dsp_common" "AOM_DSP_COMMON_INTRIN_NEON"
-                                  "aom_dsp")
+                                  "aom")
   endif ()
 
   if (HAVE_DSPR2)
     add_intrinsics_object_library("" "dspr2" "aom_dsp_common"
-                                  "AOM_DSP_COMMON_INTRIN_DSPR2" "aom_dsp")
+                                  "AOM_DSP_COMMON_INTRIN_DSPR2" "aom")
   endif ()
 
   if (HAVE_MSA)
     add_intrinsics_object_library("" "msa" "aom_dsp_common"
-                                  "AOM_DSP_COMMON_INTRIN_MSA" "aom_dsp")
+                                  "AOM_DSP_COMMON_INTRIN_MSA" "aom")
     if (CONFIG_AV1_ENCODER)
       add_intrinsics_object_library("" "msa" "aom_dsp_encoder"
-                                    "AOM_DSP_ENCODER_INTRIN_MSA" "aom_dsp")
+                                    "AOM_DSP_ENCODER_INTRIN_MSA" "aom")
     endif ()
   endif ()
 
-  target_link_libraries(aom PRIVATE aom_dsp)
-
   # Pass the new lib targets up to the parent scope instance of
   # $AOM_LIB_TARGETS.
   set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE)
diff --git a/aom_mem/aom_mem.cmake b/aom_mem/aom_mem.cmake
index a064a9d..a142824 100644
--- a/aom_mem/aom_mem.cmake
+++ b/aom_mem/aom_mem.cmake
@@ -19,9 +19,9 @@
 # Creates the aom_mem build target and makes libaom depend on it. The libaom
 # target must exist before this function is called.
 function (setup_aom_mem_targets)
-  add_library(aom_mem STATIC ${AOM_MEM_SOURCES})
+  add_library(aom_mem OBJECT ${AOM_MEM_SOURCES})
   set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_mem PARENT_SCOPE)
-  target_link_libraries(aom PRIVATE aom_mem)
+  target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_mem>)
 endfunction ()
 
 endif ()  # AOM_AOM_MEM_AOM_MEM_CMAKE_
diff --git a/aom_ports/aom_ports.cmake b/aom_ports/aom_ports.cmake
index b9063b1..922691e 100644
--- a/aom_ports/aom_ports.cmake
+++ b/aom_ports/aom_ports.cmake
@@ -43,9 +43,9 @@
     add_asm_library("aom_ports" "AOM_PORTS_ASM_MMX" "aom")
     set(aom_ports_has_symbols 1)
   elseif ("${AOM_TARGET_CPU}" MATCHES "arm")
-    add_library(aom_ports STATIC ${AOM_PORTS_SOURCES_ARM})
+    add_library(aom_ports OBJECT ${AOM_PORTS_SOURCES_ARM})
     set(aom_ports_has_symbols 1)
-    target_link_libraries(aom PRIVATE aom_ports)
+    target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_ports>)
   endif ()
 
   if (aom_ports_has_symbols)
diff --git a/aom_scale/aom_scale.cmake b/aom_scale/aom_scale.cmake
index 58d9a5f..b52fd83 100644
--- a/aom_scale/aom_scale.cmake
+++ b/aom_scale/aom_scale.cmake
@@ -25,8 +25,8 @@
 # Creates the aom_scale build target and makes libaom depend on it. The libaom
 # target must exist before this function is called.
 function (setup_aom_scale_targets)
-  add_library(aom_scale STATIC ${AOM_SCALE_SOURCES})
-  target_link_libraries(aom PRIVATE aom_scale)
+  add_library(aom_scale OBJECT ${AOM_SCALE_SOURCES})
+  target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_scale>)
 
   if (HAVE_DSPR2)
     add_intrinsics_object_library("" "dspr2" "aom_scale"
diff --git a/aom_util/aom_util.cmake b/aom_util/aom_util.cmake
index 8ffbd51..144d773 100644
--- a/aom_util/aom_util.cmake
+++ b/aom_util/aom_util.cmake
@@ -26,9 +26,9 @@
 # Creates the aom_util build target and makes libaom depend on it. The libaom
 # target must exist before this function is called.
 function (setup_aom_util_targets)
-  add_library(aom_util STATIC ${AOM_UTIL_SOURCES})
+  add_library(aom_util OBJECT ${AOM_UTIL_SOURCES})
   set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_util PARENT_SCOPE)
-  target_link_libraries(aom PRIVATE aom_util)
+  target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_util>)
 endfunction ()
 
 endif ()  # AOM_AOM_UTIL_AOM_UTIL_CMAKE_
diff --git a/av1/av1.cmake b/av1/av1.cmake
index a4001e5..8bc9a57 100644
--- a/av1/av1.cmake
+++ b/av1/av1.cmake
@@ -443,7 +443,10 @@
 function (setup_av1_targets)
   add_library(aom_av1_common OBJECT ${AOM_AV1_COMMON_SOURCES})
   list(APPEND AOM_LIB_TARGETS aom_av1_common)
-  add_library(aom_av1 STATIC $<TARGET_OBJECTS:aom_av1_common>)
+
+  create_dummy_source_file("aom_av1" "c" "dummy_source_file")
+  add_library(aom_av1 OBJECT "${dummy_source_file}")
+  target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_av1_common>)
   list(APPEND AOM_LIB_TARGETS aom_av1)
 
   # Not all generators support libraries consisting only of object files. Add a
@@ -465,59 +468,57 @@
   if (HAVE_SSE2)
     require_flag_nomsvc("-msse2" NO)
     add_intrinsics_object_library("-msse2" "sse2" "aom_av1_common"
-                                  "AOM_AV1_COMMON_INTRIN_SSE2" "aom_av1")
+                                  "AOM_AV1_COMMON_INTRIN_SSE2" "aom")
     if (CONFIG_AV1_DECODER)
       if (AOM_AV1_DECODER_ASM_SSE2)
-        add_asm_library("aom_av1_decoder_sse2" "AOM_AV1_DECODER_ASM_SSE2"
-                        "aom_av1")
+        add_asm_library("aom_av1_decoder_sse2" "AOM_AV1_DECODER_ASM_SSE2" "aom")
       endif ()
 
       if (AOM_AV1_DECODER_INTRIN_SSE2)
         add_intrinsics_object_library("-msse2" "sse2" "aom_av1_decoder"
-                                      "AOM_AV1_DECODER_INTRIN_SSE2" "aom_av1")
+                                      "AOM_AV1_DECODER_INTRIN_SSE2" "aom")
       endif ()
     endif ()
 
     if (CONFIG_AV1_ENCODER)
-      add_asm_library("aom_av1_encoder_sse2" "AOM_AV1_ENCODER_ASM_SSE2"
-                      "aom_av1")
+      add_asm_library("aom_av1_encoder_sse2" "AOM_AV1_ENCODER_ASM_SSE2" "aom")
       add_intrinsics_object_library("-msse2" "sse2" "aom_av1_encoder"
-                                    "AOM_AV1_ENCODER_INTRIN_SSE2" "aom_av1")
+                                    "AOM_AV1_ENCODER_INTRIN_SSE2" "aom")
     endif ()
   endif ()
 
   if (HAVE_SSSE3)
     require_flag_nomsvc("-mssse3" NO)
     add_intrinsics_object_library("-mssse3" "ssse3" "aom_av1_common"
-                                  "AOM_AV1_COMMON_INTRIN_SSSE3" "aom_av1")
+                                  "AOM_AV1_COMMON_INTRIN_SSSE3" "aom")
 
     if (CONFIG_AV1_DECODER)
       if (AOM_AV1_DECODER_INTRIN_SSSE3)
         add_intrinsics_object_library("-mssse3" "ssse3" "aom_av1_decoder"
-                                      "AOM_AV1_DECODER_INTRIN_SSSE3" "aom_av1")
+                                      "AOM_AV1_DECODER_INTRIN_SSSE3" "aom")
       endif ()
     endif ()
 
     if (CONFIG_AV1_ENCODER)
       add_intrinsics_object_library("-mssse3" "ssse3" "aom_av1_encoder"
-                                    "AOM_AV1_ENCODER_INTRIN_SSSE3" "aom_av1")
+                                    "AOM_AV1_ENCODER_INTRIN_SSSE3" "aom")
     endif ()
   endif ()
 
   if (HAVE_SSE4_1)
     require_flag_nomsvc("-msse4.1" NO)
     add_intrinsics_object_library("-msse4.1" "sse4" "aom_av1_common"
-                                  "AOM_AV1_COMMON_INTRIN_SSE4_1" "aom_av1")
+                                  "AOM_AV1_COMMON_INTRIN_SSE4_1" "aom")
 
     if (CONFIG_AV1_ENCODER)
       if ("${AOM_TARGET_CPU}" STREQUAL "x86_64")
         add_asm_library("aom_av1_encoder_ssse3"
-                        "AOM_AV1_ENCODER_ASM_SSSE3_X86_64" "aom_av1")
+                        "AOM_AV1_ENCODER_ASM_SSSE3_X86_64" "aom")
       endif ()
 
       if (AOM_AV1_ENCODER_INTRIN_SSE4_1)
         add_intrinsics_object_library("-msse4.1" "sse4" "aom_av1_encoder"
-                                      "AOM_AV1_ENCODER_INTRIN_SSE4_1" "aom_av1")
+                                      "AOM_AV1_ENCODER_INTRIN_SSE4_1" "aom")
       endif ()
     endif ()
   endif ()
@@ -525,11 +526,11 @@
   if (HAVE_AVX2)
     require_flag_nomsvc("-mavx2" NO)
     add_intrinsics_object_library("-mavx2" "avx2" "aom_av1_common"
-                                  "AOM_AV1_COMMON_INTRIN_AVX2" "aom_av1")
+                                  "AOM_AV1_COMMON_INTRIN_AVX2" "aom")
 
     if (CONFIG_AV1_ENCODER)
       add_intrinsics_object_library("-mavx2" "avx2" "aom_av1_encoder"
-                                    "AOM_AV1_ENCODER_INTRIN_AVX2" "aom_av1")
+                                    "AOM_AV1_ENCODER_INTRIN_AVX2" "aom")
     endif ()
   endif ()
 
@@ -538,31 +539,31 @@
       add_intrinsics_object_library("${AOM_INTRIN_NEON_FLAG}"
                                     "neon"
                                     "aom_av1_common"
-                                    "AOM_AV1_COMMON_INTRIN_NEON" "aom_av1")
+                                    "AOM_AV1_COMMON_INTRIN_NEON" "aom")
     endif ()
 
     if (AOM_AV1_ENCODER_INTRIN_NEON)
       add_intrinsics_object_library("${AOM_INTRIN_NEON_FLAG}"
                                     "neon"
                                     "aom_av1_encoder"
-                                    "AOM_AV1_ENCODER_INTRIN_NEON" "aom_av1")
+                                    "AOM_AV1_ENCODER_INTRIN_NEON" "aom")
     endif ()
   endif ()
 
   if (HAVE_DSPR2)
     add_intrinsics_object_library("" "dspr2" "aom_av1_common"
-                                  "AOM_AV1_COMMON_INTRIN_DSPR2" "aom_av1")
+                                  "AOM_AV1_COMMON_INTRIN_DSPR2" "aom")
   endif ()
 
   if (HAVE_MSA)
     add_intrinsics_object_library("" "msa" "aom_av1_common"
-                                  "AOM_AV1_COMMON_INTRIN_MSA" "aom_av1")
+                                  "AOM_AV1_COMMON_INTRIN_MSA" "aom")
     add_intrinsics_object_library("" "msa" "aom_av1_encoder"
-                                  "AOM_AV1_ENCODER_INTRIN_MSA" "aom_av1")
+                                  "AOM_AV1_ENCODER_INTRIN_MSA" "aom")
   endif ()
 
-  target_link_libraries(aom_av1 PRIVATE aom_dsp aom_scale)
-  target_link_libraries(aom PRIVATE aom_av1)
+  target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_dsp>)
+  target_sources(aom PRIVATE $<TARGET_OBJECTS:aom_scale>)
 
   # Pass the new lib targets up to the parent scope instance of
   # $AOM_LIB_TARGETS.
diff --git a/build/cmake/aom_optimization.cmake b/build/cmake/aom_optimization.cmake
index 18cbed2..456798c 100644
--- a/build/cmake/aom_optimization.cmake
+++ b/build/cmake/aom_optimization.cmake
@@ -131,7 +131,7 @@
                        COMMENT "Building ASM object ${asm_object}"
                        WORKING_DIRECTORY "${AOM_CONFIG_DIR}"
                        VERBATIM)
-    target_sources(${lib_name} PRIVATE "${asm_object}")
+    target_sources(aom PRIVATE "${asm_object}")
   endforeach ()
 
   # The above created a target containing only ASM sources. Cmake needs help
@@ -141,8 +141,6 @@
   # at you, xcode generator).
   add_dummy_source_file_to_target("${lib_name}" "c")
 
-  target_link_libraries(${dependent_target} PRIVATE ${lib_name})
-
   # Add the new lib target to the global list of aom library targets.
   list(APPEND AOM_LIB_TARGETS ${lib_name})
   set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE)
diff --git a/build/cmake/util.cmake b/build/cmake/util.cmake
index 9aad172..62841a6 100644
--- a/build/cmake/util.cmake
+++ b/build/cmake/util.cmake
@@ -11,13 +11,18 @@
 if (NOT AOM_BUILD_CMAKE_UTIL_CMAKE_)
 set(AOM_BUILD_CMAKE_UTIL_CMAKE_ 1)
 
-function (add_dummy_source_file_to_target target_name extension)
-  set(dummy_source_file "${AOM_CONFIG_DIR}/${target_name}_dummy.${extension}")
-  file(WRITE "${dummy_source_file}"
+function (create_dummy_source_file basename extension out_file_path)
+  set(dummy_source_file "${AOM_CONFIG_DIR}/${basename}.${extension}")
+   file(WRITE "${dummy_source_file}"
        "// Generated file. DO NOT EDIT!\n"
        "// ${target_name} needs a ${extension} file to force link language, \n"
-       "// ignore me.\n"
+       "// or to silence a harmless CMake warning: Ignore me.\n"
        "void ${target_name}_dummy_function(void) {}\n")
+  set(${out_file_path} ${dummy_source_file} PARENT_SCOPE)
+endfunction ()
+
+function (add_dummy_source_file_to_target target_name extension)
+  create_dummy_source_file("${target_name}" "${extension}" "dummy_source_file")
   target_sources(${target_name} PRIVATE ${dummy_source_file})
 endfunction ()