From e0fe796115632634b9796eb64ad3eb44342fecf0 Mon Sep 17 00:00:00 2001 From: Mateusz Hoppe Date: Wed, 29 Jan 2020 17:43:20 +0100 Subject: [PATCH] Create core library - include only enabled gen files Change-Id: Id3251b72253d25f92c83f6ca465903366d9e78e7 Signed-off-by: Mateusz Hoppe --- CMakeLists.txt | 16 +++++ core/CMakeLists.txt | 65 ++++++++++++++++++- core/command_stream/preemption.inl | 1 - core/enable_gens.cmake | 57 ++++++++++++++++ runtime/CMakeLists.txt | 2 +- runtime/core_files.cmake | 1 - runtime/dll/CMakeLists.txt | 2 + runtime/enable_gens.cmake | 27 +------- unit_tests/CMakeLists.txt | 2 +- unit_tests/aub_tests/CMakeLists.txt | 2 +- unit_tests/linux/CMakeLists.txt | 10 +-- unit_tests/mt_tests/CMakeLists.txt | 2 +- .../page_fault_manager_tests/CMakeLists.txt | 2 +- unit_tests/windows/CMakeLists.txt | 2 +- 14 files changed, 147 insertions(+), 44 deletions(-) create mode 100644 core/enable_gens.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 882957f955..079edffad4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -810,12 +810,28 @@ endif() add_subdirectory_unique(offline_compiler ${NEO_BUILD_DIR}/offline_compiler) target_compile_definitions(ocloc PRIVATE MOCKABLE_VIRTUAL=) + +if(DONT_CARE_OF_VIRTUALS) + set(NEO_CORE_RELEASE_LIB_NAME "neo_core") + set(NEO_CORE_MOCKABLE_LIB_NAME ${NEO_CORE_RELEASE_LIB_NAME}) +else() + set(NEO_CORE_RELEASE_LIB_NAME "neo_core") + if(NOT SKIP_UNIT_TESTS) + set(NEO_CORE_MOCKABLE_LIB_NAME "neo_core_mockable") + endif() +endif() add_subdirectory_unique(core) macro(generate_runtime_lib LIB_NAME MOCKABLE GENERATE_EXEC) set(NEO_STATIC_LIB_NAME ${LIB_NAME}) set(SHARINGS_ENABLE_LIB_NAME "${LIB_NAME}_sharings_enable") set(GENERATE_EXECUTABLE ${GENERATE_EXEC}) + + if(${MOCKABLE}) + set(NEO_CORE_LIB ${NEO_CORE_MOCKABLE_LIB_NAME}) + else() + set(NEO_CORE_LIB ${NEO_CORE_RELEASE_LIB_NAME}) + endif() if(NOT BUILD_WITHOUT_RUNTIME) add_subdirectory(runtime "${NEO_BUILD_DIR}/${LIB_NAME}") else() diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index f282a57b7a..32175be65d 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -1,7 +1,70 @@ # -# Copyright (C) 2019 Intel Corporation +# Copyright (C) 2019-2020 Intel Corporation # # SPDX-License-Identifier: MIT # +if(NOT DEFINED NEO_CORE_RELEASE_LIB_NAME) + MESSAGE(FATAL_ERROR "NEO Core library name undefined!") +endif() + +include(enable_gens.cmake) + +function(generate_core_lib LIB_NAME MOCKABLE) + add_library(${LIB_NAME} STATIC + ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt + ${CMAKE_CURRENT_SOURCE_DIR}/enable_gens.cmake + ${CORE_SOURCES} + ) + if(${MOCKABLE}) + target_compile_definitions(${LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=virtual) + else() + target_compile_definitions(${LIB_NAME} PUBLIC MOCKABLE_VIRTUAL=) + endif() + + list(APPEND LIB_FLAGS_DEFINITIONS ${SUPPORTED_GEN_FLAGS_DEFINITONS}) + + target_compile_definitions(${LIB_NAME} PUBLIC ${LIB_FLAGS_DEFINITIONS}) + + target_include_directories(${LIB_NAME} PUBLIC + ${ENGINE_NODE_DIR} + ${NEO__GMM_INCLUDE_DIR} + ${CIF_BASE_DIR} + ${IGC_OCL_ADAPTOR_DIR} + ${NEO__IGC_INCLUDE_DIR} + ${KHRONOS_HEADERS_DIR} + ) + + if(WIN32) + target_include_directories(${LIB_NAME} PUBLIC + ${WDK_INCLUDE_PATHS} + ) + else() + target_include_directories(${LIB_NAME} PUBLIC + ${I915_INCLUDES_DIR} + ) + endif() + create_project_source_tree(${LIB_NAME}) +endfunction() + add_subdirectories() + +set(CORE_SOURCES ${CORE_SRCS_GENX_ALL_BASE}) + +append_sources_from_properties(CORE_SOURCES NEO_CORE_COMMAND_CONTAINER) + +if(NOT MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -fPIC") +endif() + +if(DONT_CARE_OF_VIRTUALS) + generate_core_lib(${NEO_CORE_RELEASE_LIB_NAME} TRUE) +else() + generate_core_lib(${NEO_CORE_RELEASE_LIB_NAME} FALSE) + if(NOT SKIP_UNIT_TESTS) + generate_core_lib(${NEO_CORE_MOCKABLE_LIB_NAME} TRUE) + + endif() +endif() + +set_property(GLOBAL PROPERTY NEO_CORE_SRCS_LINK ${CORE_SRCS_LINK}) diff --git a/core/command_stream/preemption.inl b/core/command_stream/preemption.inl index da1c157f2b..2f72002b76 100644 --- a/core/command_stream/preemption.inl +++ b/core/command_stream/preemption.inl @@ -8,7 +8,6 @@ #include "core/command_stream/preemption.h" #include "core/helpers/hw_helper.h" #include "core/memory_manager/graphics_allocation.h" -#include "runtime/built_ins/built_ins.h" #include "runtime/built_ins/sip.h" #include "runtime/command_queue/gpgpu_walker.h" #include "runtime/device/device.h" diff --git a/core/enable_gens.cmake b/core/enable_gens.cmake new file mode 100644 index 0000000000..2ea78a6ecd --- /dev/null +++ b/core/enable_gens.cmake @@ -0,0 +1,57 @@ +# +# Copyright (C) 2020 Intel Corporation +# +# SPDX-License-Identifier: MIT +# + +set(CORE_SRCS_GENX_H_BASE + hw_cmds.h + hw_info.h + hw_cmds_base.h +) + +set(CORE_RUNTIME_SRCS_GENX_CPP_BASE + command_encoder + preamble + preemption +) + +macro(macro_for_each_platform) + string(TOLOWER ${PLATFORM_IT} PLATFORM_IT_LOWER) + + foreach(PLATFORM_FILE "hw_cmds_${PLATFORM_IT_LOWER}.h" "hw_info_${PLATFORM_IT_LOWER}.h") + if(EXISTS ${CORE_GENX_PREFIX}/${PLATFORM_FILE}) + list(APPEND CORE_SRCS_${GEN_TYPE}_H_BASE ${CORE_GENX_PREFIX}/${PLATFORM_FILE}) + endif() + endforeach() + +endmacro() + +macro(macro_for_each_gen) + set(CORE_GENX_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/${GEN_TYPE_LOWER}) + set(GENERATED_GENX_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/generated/${GEN_TYPE_LOWER}) + + foreach(SRC_IT ${CORE_SRCS_GENX_H_BASE}) + list(APPEND CORE_SRCS_${GEN_TYPE}_H_BASE ${CORE_GENX_PREFIX}/${SRC_IT}) + endforeach() + + list(APPEND CORE_SRCS_${GEN_TYPE}_H_BASE "${GENERATED_GENX_PREFIX}/hw_cmds_generated_${GEN_TYPE_LOWER}.inl") + list(APPEND CORE_SRCS_${GEN_TYPE}_H_BASE "${CORE_GENX_PREFIX}/hw_info_${GEN_TYPE_LOWER}.h") + + foreach(SRC_IT ${CORE_RUNTIME_SRCS_GENX_CPP_BASE}) + list(APPEND CORE_SRCS_${GEN_TYPE}_CPP_BASE ${CORE_GENX_PREFIX}/${SRC_IT}_${GEN_TYPE_LOWER}.cpp) + endforeach() + + apply_macro_for_each_platform() + + list(APPEND ${GEN_TYPE}_SRC_LINK_BASE ${CORE_GENX_PREFIX}/enable_family_full_core_${GEN_TYPE_LOWER}.cpp) + list(APPEND ${GEN_TYPE}_SRC_LINK_BASE ${CORE_GENX_PREFIX}/enable_hw_info_config_${GEN_TYPE_LOWER}.cpp) + list(APPEND ${GEN_TYPE}_SRC_LINK_BASE ${CORE_GENX_PREFIX}/enable_${GEN_TYPE_LOWER}.cpp) + + list(APPEND CORE_SRCS_GENX_ALL_BASE ${CORE_SRCS_${GEN_TYPE}_H_BASE}) + list(APPEND CORE_SRCS_GENX_ALL_BASE ${CORE_SRCS_${GEN_TYPE}_CPP_BASE}) + list(APPEND CORE_SRCS_LINK ${${GEN_TYPE}_SRC_LINK_BASE}) + +endmacro() + +apply_macro_for_each_gen("SUPPORTED") diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt index 0be462fe7d..00571a26a5 100644 --- a/runtime/CMakeLists.txt +++ b/runtime/CMakeLists.txt @@ -148,7 +148,7 @@ if(${GENERATE_EXECUTABLE}) add_subdirectory(dll) - target_link_libraries(${NEO_DYNAMIC_LIB_NAME} ${NEO_STATIC_LIB_NAME} ${IGDRCL_EXTRA_LIBS}) + target_link_libraries(${NEO_DYNAMIC_LIB_NAME} ${NEO_STATIC_LIB_NAME} ${NEO_CORE_LIB} ${NEO_STATIC_LIB_NAME} ${IGDRCL_EXTRA_LIBS}) target_include_directories(${NEO_DYNAMIC_LIB_NAME} BEFORE PRIVATE ${CMAKE_CURRENT_BINARY_DIR} diff --git a/runtime/core_files.cmake b/runtime/core_files.cmake index ea02dbf058..4bb27ae2ef 100644 --- a/runtime/core_files.cmake +++ b/runtime/core_files.cmake @@ -8,7 +8,6 @@ target_sources(${NEO_STATIC_LIB_NAME} PRIVATE ${NEO_SOURCE_DIR}/runtime/core_fil append_sources_from_properties(NEO_CORE_SOURCES NEO_CORE_BUILT_INS - NEO_CORE_COMMAND_CONTAINER NEO_CORE_COMMAND_STREAM NEO_CORE_COMMANDS NEO_CORE_DEBUG_SETTINGS diff --git a/runtime/dll/CMakeLists.txt b/runtime/dll/CMakeLists.txt index 2ba7652ed0..0c3a73eae3 100644 --- a/runtime/dll/CMakeLists.txt +++ b/runtime/dll/CMakeLists.txt @@ -36,6 +36,8 @@ set(RUNTIME_SRCS_DLL_BASE ${EXPORTS_FILENAME} ) +append_sources_from_properties(RUNTIME_SRCS_DLL_BASE NEO_CORE_SRCS_LINK) + set(RUNTIME_SRCS_DLL_LINUX ${CMAKE_CURRENT_SOURCE_DIR}/linux/allocator_helper.cpp ${CMAKE_CURRENT_SOURCE_DIR}/linux/create_drm_memory_manager.cpp diff --git a/runtime/enable_gens.cmake b/runtime/enable_gens.cmake index 3dce77a74a..68a386ae5a 100644 --- a/runtime/enable_gens.cmake +++ b/runtime/enable_gens.cmake @@ -17,12 +17,6 @@ set(RUNTIME_SRCS_GENX_H_BASE aub_mapper.h ) -set(CORE_SRCS_GENX_H_BASE - hw_cmds.h - hw_info.h - hw_cmds_base.h -) - set(RUNTIME_SRCS_GENX_CPP_BASE aub_command_stream_receiver aub_mem_dump @@ -41,12 +35,6 @@ set(RUNTIME_SRCS_GENX_CPP_BASE tbx_command_stream_receiver ) -set(CORE_RUNTIME_SRCS_GENX_CPP_BASE - command_encoder - preamble - preemption -) - macro(macro_for_each_platform) string(TOLOWER ${PLATFORM_IT} PLATFORM_IT_LOWER) @@ -71,24 +59,17 @@ endmacro() macro(macro_for_each_gen) set(GENX_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/${GEN_TYPE_LOWER}) - set(CORE_GENX_PREFIX "${NEO_SOURCE_DIR}/core/${GEN_TYPE_LOWER}") - set(GENERATED_GENX_PREFIX "${NEO_SOURCE_DIR}/core/generated/${GEN_TYPE_LOWER}") # Add default GEN files foreach(SRC_IT ${RUNTIME_SRCS_GENX_H_BASE}) list(APPEND RUNTIME_SRCS_${GEN_TYPE}_H_BASE ${GENX_PREFIX}/${SRC_IT}) endforeach() - foreach(SRC_IT ${CORE_SRCS_GENX_H_BASE}) - list(APPEND RUNTIME_SRCS_${GEN_TYPE}_H_BASE ${CORE_GENX_PREFIX}/${SRC_IT}) - endforeach() + foreach(SRC_IT "state_compute_mode_helper_${GEN_TYPE_LOWER}.cpp") if(EXISTS ${GENX_PREFIX}/${SRC_IT}) list(APPEND RUNTIME_SRCS_${GEN_TYPE}_CPP_BASE ${GENX_PREFIX}/${SRC_IT}) endif() endforeach() - list(APPEND RUNTIME_SRCS_${GEN_TYPE}_H_BASE "${GENERATED_GENX_PREFIX}/hw_cmds_generated_${GEN_TYPE_LOWER}.inl") - list(APPEND RUNTIME_SRCS_${GEN_TYPE}_H_BASE "${CORE_GENX_PREFIX}/hw_info_${GEN_TYPE_LOWER}.h") - if(EXISTS "${GENX_PREFIX}/additional_files_${GEN_TYPE_LOWER}.cmake") include("${GENX_PREFIX}/additional_files_${GEN_TYPE_LOWER}.cmake") endif() @@ -105,9 +86,6 @@ macro(macro_for_each_gen) list(APPEND RUNTIME_SRCS_${GEN_TYPE}_CPP_${OS_IT} ${GENX_PREFIX}/${SRC_IT}_${GEN_TYPE_LOWER}.cpp) endforeach() endforeach() - foreach(SRC_IT ${CORE_RUNTIME_SRCS_GENX_CPP_BASE}) - list(APPEND RUNTIME_SRCS_${GEN_TYPE}_CPP_BASE ${CORE_GENX_PREFIX}/${SRC_IT}_${GEN_TYPE_LOWER}.cpp) - endforeach() apply_macro_for_each_platform() @@ -115,9 +93,6 @@ macro(macro_for_each_gen) list(APPEND RUNTIME_SRCS_${GEN_TYPE}_CPP_LINUX ${GENX_PREFIX}/linux/hw_info_config_${GEN_TYPE_LOWER}.cpp) list(APPEND ${GEN_TYPE}_SRC_LINK_BASE ${GENX_PREFIX}/enable_family_full_ocl_${GEN_TYPE_LOWER}.cpp) - list(APPEND ${GEN_TYPE}_SRC_LINK_BASE ${CORE_GENX_PREFIX}/enable_family_full_core_${GEN_TYPE_LOWER}.cpp) - list(APPEND ${GEN_TYPE}_SRC_LINK_BASE ${CORE_GENX_PREFIX}/enable_hw_info_config_${GEN_TYPE_LOWER}.cpp) - list(APPEND ${GEN_TYPE}_SRC_LINK_BASE ${CORE_GENX_PREFIX}/enable_${GEN_TYPE_LOWER}.cpp) list(APPEND RUNTIME_SRCS_GENX_ALL_BASE ${RUNTIME_SRCS_${GEN_TYPE}_H_BASE}) list(APPEND RUNTIME_SRCS_GENX_ALL_BASE ${RUNTIME_SRCS_${GEN_TYPE}_CPP_BASE}) diff --git a/unit_tests/CMakeLists.txt b/unit_tests/CMakeLists.txt index 1a9f861f78..795a3b330a 100644 --- a/unit_tests/CMakeLists.txt +++ b/unit_tests/CMakeLists.txt @@ -142,7 +142,7 @@ if(NOT MSVC) set_source_files_properties(helpers/uint16_sse4_tests.cpp PROPERTIES COMPILE_FLAGS -msse4.2) endif() -target_link_libraries(igdrcl_tests ${NEO_MOCKABLE_LIB_NAME}) +target_link_libraries(igdrcl_tests ${NEO_MOCKABLE_LIB_NAME} ${NEO_CORE_MOCKABLE_LIB_NAME} ${NEO_MOCKABLE_LIB_NAME}) target_link_libraries(igdrcl_tests igdrcl_mocks) option(SHOW_VERBOSE_UTESTS_RESULTS "Use the default/verbose test output" OFF) diff --git a/unit_tests/aub_tests/CMakeLists.txt b/unit_tests/aub_tests/CMakeLists.txt index bd122886e3..f2a2a46e44 100644 --- a/unit_tests/aub_tests/CMakeLists.txt +++ b/unit_tests/aub_tests/CMakeLists.txt @@ -68,7 +68,7 @@ copy_gmm_dll_for(igdrcl_aub_tests) add_subdirectories() target_link_libraries(igdrcl_aub_tests igdrcl_mocks) -target_link_libraries(igdrcl_aub_tests ${NEO_MOCKABLE_LIB_NAME}) +target_link_libraries(igdrcl_aub_tests ${NEO_MOCKABLE_LIB_NAME} ${NEO_CORE_MOCKABLE_LIB_NAME} ${NEO_MOCKABLE_LIB_NAME}) target_link_libraries(igdrcl_aub_tests igdrcl_mocks) target_link_libraries(igdrcl_aub_tests gmock-gtest ${IGDRCL_EXTRA_LIBS}) if(UNIX) diff --git a/unit_tests/linux/CMakeLists.txt b/unit_tests/linux/CMakeLists.txt index 4bbd61b484..50c8e7da02 100644 --- a/unit_tests/linux/CMakeLists.txt +++ b/unit_tests/linux/CMakeLists.txt @@ -36,14 +36,6 @@ if(NEO__LIBVA_FOUND) list(APPEND IGDRCL_SRCS_linux_dll_tests ${CMAKE_CURRENT_SOURCE_DIR}/va_tests.cpp) endif(NEO__LIBVA_FOUND) -macro(macro_for_each_platform) - list(APPEND IGDRCL_SRCS_linux_dll_tests ${NEO_SOURCE_DIR}/runtime/${GEN_TYPE_LOWER}/hw_info_${PLATFORM_IT_LOWER}.inl) -endmacro() -macro(macro_for_each_gen) - apply_macro_for_each_platform() -endmacro() -apply_macro_for_each_gen("TESTED") - foreach(target_name linux_tests linux_dll_tests) add_executable(igdrcl_${target_name} ${IGDRCL_SRCS_${target_name}} @@ -51,7 +43,7 @@ foreach(target_name linux_tests linux_dll_tests) $ $ ) - target_link_libraries(igdrcl_${target_name} ${NEO_MOCKABLE_LIB_NAME} igdrcl_mocks ${IGDRCL_EXTRA_LIBS} gmock-gtest) + target_link_libraries(igdrcl_${target_name} ${NEO_MOCKABLE_LIB_NAME} ${NEO_CORE_MOCKABLE_LIB_NAME} ${NEO_MOCKABLE_LIB_NAME} igdrcl_mocks ${IGDRCL_EXTRA_LIBS} gmock-gtest) set_property(TARGET igdrcl_${target_name} APPEND_STRING PROPERTY COMPILE_FLAGS ${ASAN_FLAGS}) target_include_directories(igdrcl_${target_name} PRIVATE diff --git a/unit_tests/mt_tests/CMakeLists.txt b/unit_tests/mt_tests/CMakeLists.txt index 5f0127aeff..afec4c5d25 100644 --- a/unit_tests/mt_tests/CMakeLists.txt +++ b/unit_tests/mt_tests/CMakeLists.txt @@ -24,7 +24,7 @@ target_include_directories(igdrcl_mt_tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) add_subdirectories() target_link_libraries(igdrcl_mt_tests ${TSAN_LIB}) -target_link_libraries(igdrcl_mt_tests ${NEO_MOCKABLE_LIB_NAME}) +target_link_libraries(igdrcl_mt_tests ${NEO_MOCKABLE_LIB_NAME} ${NEO_CORE_MOCKABLE_LIB_NAME} ${NEO_MOCKABLE_LIB_NAME}) target_link_libraries(igdrcl_mt_tests gmock-gtest) target_link_libraries(igdrcl_mt_tests igdrcl_mocks ${IGDRCL_EXTRA_LIBS}) diff --git a/unit_tests/page_fault_manager_tests/CMakeLists.txt b/unit_tests/page_fault_manager_tests/CMakeLists.txt index 5c84f5431f..5104e48496 100644 --- a/unit_tests/page_fault_manager_tests/CMakeLists.txt +++ b/unit_tests/page_fault_manager_tests/CMakeLists.txt @@ -35,7 +35,7 @@ if(UNIX) ) endif() -target_link_libraries(neo_page_fault_manager_tests ${NEO_MOCKABLE_LIB_NAME} igdrcl_mocks gmock-gtest ${IGDRCL_EXTRA_LIBS}) +target_link_libraries(neo_page_fault_manager_tests ${NEO_MOCKABLE_LIB_NAME} ${NEO_CORE_MOCKABLE_LIB_NAME} ${NEO_MOCKABLE_LIB_NAME} igdrcl_mocks gmock-gtest ${IGDRCL_EXTRA_LIBS}) target_include_directories(neo_page_fault_manager_tests PRIVATE ${NEO_SOURCE_DIR}/core/unit_tests/test_macros${BRANCH_DIR_SUFFIX} diff --git a/unit_tests/windows/CMakeLists.txt b/unit_tests/windows/CMakeLists.txt index eb8428e7a7..615357e7e4 100644 --- a/unit_tests/windows/CMakeLists.txt +++ b/unit_tests/windows/CMakeLists.txt @@ -27,7 +27,7 @@ add_executable(igdrcl_windows_dll_tests ${CMAKE_CURRENT_SOURCE_DIR}/test_mode.h ) -target_link_libraries(igdrcl_windows_dll_tests ${NEO_MOCKABLE_LIB_NAME} igdrcl_mocks gmock-gtest ${IGDRCL_EXTRA_LIBS}) +target_link_libraries(igdrcl_windows_dll_tests ${NEO_MOCKABLE_LIB_NAME} ${NEO_CORE_MOCKABLE_LIB_NAME} igdrcl_mocks gmock-gtest ${IGDRCL_EXTRA_LIBS}) target_include_directories(igdrcl_windows_dll_tests PRIVATE ${NEO_SOURCE_DIR}/core/unit_tests/test_macros${BRANCH_DIR_SUFFIX}