CMakeLists: Derive the source file listings from targets directly (#118)

This gets rid of the need to store to individual variables before creating
the target itself, cleaning up the variables in the surrounding scope a little bit.
This commit is contained in:
Mat M 2017-11-26 06:39:27 -05:00 committed by MerryMage
parent 12eaf496fd
commit c6d09adcb7
3 changed files with 22 additions and 22 deletions

View file

@ -1,12 +1,14 @@
# This function should be passed a list of all files in a target. It will automatically generate # This function should be passed a name of an existing target. It will automatically generate
# file groups following the directory hierarchy, so that the layout of the files in IDEs matches the # file groups following the directory hierarchy, so that the layout of the files in IDEs matches the
# one in the filesystem. # one in the filesystem.
function(create_directory_groups) function(create_target_directory_groups target_name)
# Place any files that aren't in the source list in a separate group so that they don't get in # Place any files that aren't in the source list in a separate group so that they don't get in
# the way. # the way.
source_group("Other Files" REGULAR_EXPRESSION ".") source_group("Other Files" REGULAR_EXPRESSION ".")
foreach(file_name ${ARGV}) get_target_property(target_sources "${target_name}" SOURCES)
foreach(file_name IN LISTS target_sources)
get_filename_component(dir_name "${file_name}" PATH) get_filename_component(dir_name "${file_name}" PATH)
# Group names use '\' as a separator even though the entire rest of CMake uses '/'... # Group names use '\' as a separator even though the entire rest of CMake uses '/'...
string(REPLACE "/" "\\" group_name "${dir_name}") string(REPLACE "/" "\\" group_name "${dir_name}")

View file

@ -1,4 +1,5 @@
set(SRCS add_library(dynarmic
# Source files
common/memory_pool.cpp common/memory_pool.cpp
frontend/arm/types.cpp frontend/arm/types.cpp
frontend/disassembler/disassembler_arm.cpp frontend/disassembler/disassembler_arm.cpp
@ -31,9 +32,8 @@ set(SRCS
ir_opt/dead_code_elimination_pass.cpp ir_opt/dead_code_elimination_pass.cpp
ir_opt/get_set_elimination_pass.cpp ir_opt/get_set_elimination_pass.cpp
ir_opt/verification_pass.cpp ir_opt/verification_pass.cpp
)
set(HEADERS # Header files
../include/dynarmic/callbacks.h ../include/dynarmic/callbacks.h
../include/dynarmic/coprocessor.h ../include/dynarmic/coprocessor.h
../include/dynarmic/coprocessor_util.h ../include/dynarmic/coprocessor_util.h
@ -70,10 +70,11 @@ set(HEADERS
frontend/translate/translate.h frontend/translate/translate.h
frontend/translate/translate_arm/translate_arm.h frontend/translate/translate_arm/translate_arm.h
ir_opt/passes.h ir_opt/passes.h
) )
if (ARCHITECTURE_x86_64) if (ARCHITECTURE_x86_64)
list(APPEND SRCS target_sources(dynarmic PRIVATE
# Source files
backend_x64/abi.cpp backend_x64/abi.cpp
backend_x64/block_of_code.cpp backend_x64/block_of_code.cpp
backend_x64/constant_pool.cpp backend_x64/constant_pool.cpp
@ -82,9 +83,8 @@ if (ARCHITECTURE_x86_64)
backend_x64/interface_x64.cpp backend_x64/interface_x64.cpp
backend_x64/jitstate.cpp backend_x64/jitstate.cpp
backend_x64/reg_alloc.cpp backend_x64/reg_alloc.cpp
)
list(APPEND HEADERS # Headers
backend_x64/abi.h backend_x64/abi.h
backend_x64/block_of_code.h backend_x64/block_of_code.h
backend_x64/constant_pool.h backend_x64/constant_pool.h
@ -96,18 +96,17 @@ if (ARCHITECTURE_x86_64)
) )
if (WIN32) if (WIN32)
list(APPEND SRCS backend_x64/exception_handler_windows.cpp) target_sources(dynarmic PRIVATE backend_x64/exception_handler_windows.cpp)
else() else()
list(APPEND SRCS backend_x64/exception_handler_generic.cpp) target_sources(dynarmic PRIVATE backend_x64/exception_handler_generic.cpp)
endif() endif()
else() else()
message(FATAL_ERROR "Unsupported architecture") message(FATAL_ERROR "Unsupported architecture")
endif() endif()
include(CreateDirectoryGroups) include(CreateDirectoryGroups)
create_directory_groups(${SRCS} ${HEADERS}) create_target_directory_groups(dynarmic)
add_library(dynarmic ${SRCS} ${HEADERS})
target_include_directories(dynarmic target_include_directories(dynarmic
PUBLIC ../include PUBLIC ../include
PRIVATE .) PRIVATE .)

View file

@ -1,10 +1,10 @@
set(SRCS add_executable(dynarmic_tests
# Source files
arm/fuzz_arm.cpp arm/fuzz_arm.cpp
arm/fuzz_thumb.cpp arm/fuzz_thumb.cpp
arm/test_arm_disassembler.cpp arm/test_arm_disassembler.cpp
arm/test_thumb_instructions.cpp arm/test_thumb_instructions.cpp
main.cpp main.cpp
rand_int.h
skyeye_interpreter/dyncom/arm_dyncom_dec.cpp skyeye_interpreter/dyncom/arm_dyncom_dec.cpp
skyeye_interpreter/dyncom/arm_dyncom_interpreter.cpp skyeye_interpreter/dyncom/arm_dyncom_interpreter.cpp
skyeye_interpreter/dyncom/arm_dyncom_thumb.cpp skyeye_interpreter/dyncom/arm_dyncom_thumb.cpp
@ -15,9 +15,9 @@ set(SRCS
skyeye_interpreter/skyeye_common/vfp/vfpdouble.cpp skyeye_interpreter/skyeye_common/vfp/vfpdouble.cpp
skyeye_interpreter/skyeye_common/vfp/vfpinstr.cpp skyeye_interpreter/skyeye_common/vfp/vfpinstr.cpp
skyeye_interpreter/skyeye_common/vfp/vfpsingle.cpp skyeye_interpreter/skyeye_common/vfp/vfpsingle.cpp
)
set(HEADERS # Header files
rand_int.h
skyeye_interpreter/dyncom/arm_dyncom_dec.h skyeye_interpreter/dyncom/arm_dyncom_dec.h
skyeye_interpreter/dyncom/arm_dyncom_interpreter.h skyeye_interpreter/dyncom/arm_dyncom_interpreter.h
skyeye_interpreter/dyncom/arm_dyncom_run.h skyeye_interpreter/dyncom/arm_dyncom_run.h
@ -29,12 +29,11 @@ set(HEADERS
skyeye_interpreter/skyeye_common/vfp/asm_vfp.h skyeye_interpreter/skyeye_common/vfp/asm_vfp.h
skyeye_interpreter/skyeye_common/vfp/vfp.h skyeye_interpreter/skyeye_common/vfp/vfp.h
skyeye_interpreter/skyeye_common/vfp/vfp_helper.h skyeye_interpreter/skyeye_common/vfp/vfp_helper.h
) )
include(CreateDirectoryGroups) include(CreateDirectoryGroups)
create_directory_groups(${SRCS} ${HEADERS}) create_target_directory_groups(dynarmic_tests)
add_executable(dynarmic_tests ${SRCS})
target_link_libraries(dynarmic_tests PRIVATE dynarmic boost catch) target_link_libraries(dynarmic_tests PRIVATE dynarmic boost catch)
target_include_directories(dynarmic_tests PRIVATE . ../src) target_include_directories(dynarmic_tests PRIVATE . ../src)
target_compile_options(dynarmic_tests PRIVATE ${DYNARMIC_CXX_FLAGS}) target_compile_options(dynarmic_tests PRIVATE ${DYNARMIC_CXX_FLAGS})