cmake: add folders for IDE generators
this moves tests, testdata and x86 assembly/intrinsics projects to their
own folders to reduce the noise at the top level
Change-Id: Id00b6f3bae4ead7fd6ab5a9811ad3b7c154a9863
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7237f8b..39c3285 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -56,6 +56,9 @@
unset(LT_REVISION)
unset(LT_AGE)
+# Enable generators like Xcode and Visual Studio to place projects in folders.
+set_property(GLOBAL PROPERTY USE_FOLDERS TRUE)
+
include("${AOM_ROOT}/build/cmake/aom_configure.cmake")
include("${AOM_ROOT}/aom_dsp/aom_dsp.cmake")
include("${AOM_ROOT}/aom_mem/aom_mem.cmake")
@@ -323,19 +326,23 @@
#
if(ENABLE_EXAMPLES OR ENABLE_TESTS OR ENABLE_TOOLS)
add_library(aom_common_app_util OBJECT ${AOM_COMMON_APP_UTIL_SOURCES})
+ set_property(TARGET ${example} PROPERTY FOLDER examples)
if(CONFIG_AV1_DECODER)
add_library(aom_decoder_app_util OBJECT ${AOM_DECODER_APP_UTIL_SOURCES})
+ set_property(TARGET ${example} PROPERTY FOLDER examples)
# obudec depends on internal headers that require *rtcd.h
add_dependencies(aom_decoder_app_util aom_rtcd)
endif()
if(CONFIG_AV1_ENCODER)
add_library(aom_encoder_app_util OBJECT ${AOM_ENCODER_APP_UTIL_SOURCES})
+ set_property(TARGET ${example} PROPERTY FOLDER examples)
endif()
endif()
if((CONFIG_AV1_DECODER OR CONFIG_AV1_ENCODER) AND ENABLE_EXAMPLES)
add_executable(resize_util "${AOM_ROOT}/examples/resize_util.c"
$<TARGET_OBJECTS:aom_common_app_util>)
+ set_property(TARGET ${example} PROPERTY FOLDER examples)
list(APPEND AOM_APP_TARGETS resize_util)
endif()
@@ -787,12 +794,14 @@
if(ENABLE_EXAMPLES)
foreach(example ${AOM_EXAMPLE_TARGETS})
list(APPEND AOM_DIST_EXAMPLES $<TARGET_FILE:${example}>)
+ set_property(TARGET ${example} PROPERTY FOLDER examples)
endforeach()
endif()
if(ENABLE_TOOLS)
foreach(tool ${AOM_TOOL_TARGETS})
list(APPEND AOM_DIST_TOOLS $<TARGET_FILE:${tool}>)
+ set_property(TARGET ${tool} PROPERTY FOLDER tools)
endforeach()
endif()
diff --git a/build/cmake/aom_optimization.cmake b/build/cmake/aom_optimization.cmake
index 03db9d9..9c2afe9 100644
--- a/build/cmake/aom_optimization.cmake
+++ b/build/cmake/aom_optimization.cmake
@@ -44,6 +44,7 @@
endif()
set(target_name ${target_to_update}_${opt_name}_intrinsics)
add_library(${target_name} OBJECT ${${sources}})
+ set_property(TARGET ${target_name} PROPERTY FOLDER ${AOM_TARGET_CPU})
if(MSVC)
get_msvc_intrinsic_flag(${flag} "flag")
@@ -142,6 +143,7 @@
# targets, make this OBJECT instead of STATIC to hide the target from
# consumers of the AOM cmake build.
add_library(${lib_name} STATIC ${${asm_sources}})
+ set_property(TARGET ${lib_name} PROPERTY FOLDER ${AOM_TARGET_CPU})
foreach(asm_source ${${asm_sources}})
get_filename_component(asm_source_name "${asm_source}" NAME)
diff --git a/test/test.cmake b/test/test.cmake
index 0cd3c94..94d1350 100644
--- a/test/test.cmake
+++ b/test/test.cmake
@@ -19,6 +19,8 @@
include("${AOM_ROOT}/test/test_data_util.cmake")
set(AOM_UNIT_TEST_DATA_LIST_FILE "${AOM_ROOT}/test/test-data.sha1")
+set(AOM_IDE_TEST_FOLDER "test")
+set(AOM_IDE_TESTDATA_FOLDER "testdata")
list(APPEND AOM_UNIT_TEST_WRAPPER_SOURCES "${AOM_GEN_SRC_DIR}/usage_exit.c"
"${AOM_ROOT}/test/test_libaom.cc")
@@ -355,6 +357,7 @@
add_library(
aom_gtest STATIC
"${AOM_ROOT}/third_party/googletest/src/googletest/src/gtest-all.cc")
+ set_property(TARGET aom_gtest PROPERTY FOLDER ${AOM_IDE_TEST_FOLDER})
if(MSVC OR WIN32)
target_compile_definitions(aom_gtest PRIVATE GTEST_OS_WINDOWS=1)
elseif(CONFIG_MULTITHREAD AND CMAKE_USE_PTHREADS_INIT)
@@ -374,21 +377,25 @@
# list into separate object library targets, and then linking them into
# test_libaom.
add_library(test_aom_common OBJECT ${AOM_UNIT_TEST_COMMON_SOURCES})
+ set_property(TARGET test_aom_common PROPERTY FOLDER ${AOM_IDE_TEST_FOLDER})
add_dependencies(test_aom_common aom)
if(CONFIG_AV1_DECODER)
add_library(test_aom_decoder OBJECT ${AOM_UNIT_TEST_DECODER_SOURCES})
+ set_property(TARGET test_aom_decoder PROPERTY FOLDER ${AOM_IDE_TEST_FOLDER})
add_dependencies(test_aom_decoder aom)
endif()
if(CONFIG_AV1_ENCODER)
add_library(test_aom_encoder OBJECT ${AOM_UNIT_TEST_ENCODER_SOURCES})
+ set_property(TARGET test_aom_encoder PROPERTY FOLDER ${AOM_IDE_TEST_FOLDER})
add_dependencies(test_aom_encoder aom)
endif()
add_executable(test_libaom ${AOM_UNIT_TEST_WRAPPER_SOURCES}
$<TARGET_OBJECTS:aom_common_app_util>
$<TARGET_OBJECTS:test_aom_common>)
+ set_property(TARGET test_libaom PROPERTY FOLDER ${AOM_IDE_TEST_FOLDER})
list(APPEND AOM_APP_TARGETS test_libaom)
if(CONFIG_AV1_DECODER)
@@ -412,6 +419,8 @@
add_executable(test_intra_pred_speed
${AOM_TEST_INTRA_PRED_SPEED_SOURCES}
$<TARGET_OBJECTS:aom_common_app_util>)
+ set_property(TARGET test_intra_pred_speed
+ PROPERTY FOLDER ${AOM_IDE_TEST_FOLDER})
target_link_libraries(test_intra_pred_speed ${AOM_LIB_LINK_TYPE} aom
aom_gtest)
list(APPEND AOM_APP_TARGETS test_intra_pred_speed)
@@ -470,12 +479,15 @@
-DAOM_TEST_FILE="${test_file}"
-DAOM_TEST_CHECKSUM=${test_file_checksum} -P
"${AOM_ROOT}/test/test_data_download_worker.cmake")
+ set_property(TARGET testdata_${test_index}
+ PROPERTY FOLDER ${AOM_IDE_TESTDATA_FOLDER})
list(APPEND testdata_targets testdata_${test_index})
endforeach()
# Create a custom build target for running each test data download target.
add_custom_target(testdata)
add_dependencies(testdata ${testdata_targets})
+ set_property(TARGET testdata PROPERTY FOLDER ${AOM_IDE_TESTDATA_FOLDER})
# Skip creation of test run targets when generating for Visual Studio and
# Xcode unless the user explicitly requests IDE test hosting. This is done
@@ -501,9 +513,11 @@
-DTEST_LIBAOM=$<TARGET_FILE:test_libaom> -P
"${AOM_ROOT}/test/test_runner.cmake"
DEPENDS testdata test_libaom)
+ set_property(TARGET ${test_name} PROPERTY FOLDER ${AOM_IDE_TEST_FOLDER})
list(APPEND test_targets ${test_name})
endforeach()
add_custom_target(runtests)
+ set_property(TARGET runtests PROPERTY FOLDER ${AOM_IDE_TEST_FOLDER})
add_dependencies(runtests ${test_targets})
endif()
endif()