set(DV_CORE_INCLUDE_FILES include/dvc_config.h include/dvc_pre_declare.h ) source_group("include" FILES ${DV_CORE_INCLUDE_FILES}) ################# # math ################# set(DV_CORE_MATH_INCLUDE_FILES include/math/dvc_vector2.h include/math/dvc_vector3.h include/math/dvc_vector4.h include/math/dvc_matrix3.h include/math/dvc_matrix4.h include/math/dvc_math_util.h include/math/dvc_fix_point.h ) source_group("include/math" FILES ${DV_CORE_MATH_INCLUDE_FILES}) set(DV_CORE_MATH_SOURCE_FILES source/math/dvc_vector2.cpp source/math/dvc_vector3.cpp source/math/dvc_vector4.cpp source/math/dvc_matrix3.cpp source/math/dvc_matrix4.cpp source/math/dvc_math_util.cpp source/math/dvc_fix_point.cpp ) source_group("source/math" FILES ${DV_CORE_MATH_SOURCE_FILES}) ################# # scene ################# set(DV_CORE_SCENE_INCLUDE_FILES include/scene/dvc_scene.h include/scene/dvc_scene_node.h ) source_group("include/scene" FILES ${DV_CORE_SCENE_INCLUDE_FILES}) set(DV_CORE_SCENE_SOURCE_FILES source/scene/dvc_scene.cpp source/scene/dvc_scene_node.cpp ) source_group("source/scene" FILES ${DV_CORE_SCENE_SOURCE_FILES}) ################# # scene component ################# set(DV_CORE_SCENE_COMPONENT_INCLUDE_FILES include/scene/component/dvc_component.h include/scene/component/dvc_mesh_component.h include/scene/component/dvc_camera_component.h include/scene/component/dvc_light_component.h ) source_group("include/scene/component" FILES ${DV_CORE_SCENE_COMPONENT_INCLUDE_FILES}) set(DV_CORE_SCENE_COMPONENT_SOURCE_FILES source/scene/component/dvc_component.cpp source/scene/component/dvc_mesh_component.cpp source/scene/component/dvc_camera_component.cpp source/scene/component/dvc_light_component.cpp ) source_group("source/scene/component" FILES ${DV_CORE_SCENE_COMPONENT_SOURCE_FILES}) ################# # asset ################# set(DV_CORE_ASSET_INCLUDE_FILES include/asset/dvc_mesh.h include/asset/dvc_image.h include/asset/dvc_texture.h include/asset/dvc_material.h ) source_group("include/asset" FILES ${DV_CORE_ASSET_INCLUDE_FILES}) set(DV_CORE_ASSET_SOURCE_FILES source/asset/dvc_mesh.cpp source/asset/dvc_image.cpp source/asset/dvc_texture.cpp source/asset/dvc_material.cpp ) source_group("source/asset" FILES ${DV_CORE_ASSET_SOURCE_FILES}) ################# # device ################# set(DV_CORE_DEVICE_INCLUDE_FILES include/device/dvc_device.h include/device/dvc_buffer.h include/device/dvc_buffer_view.h include/device/dvc_buffer_accessor.h include/device/dvc_render_target.h include/device/dvc_pixel_buffer.h include/device/dvc_uniform_buffer.h include/device/dvc_vertex_desc.h ) source_group("include/device" FILES ${DV_CORE_DEVICE_INCLUDE_FILES}) set(DV_CORE_DEVICE_SOURCE_FILES source/device/dvc_device.cpp source/device/dvc_buffer.cpp source/device/dvc_buffer_view.cpp source/device/dvc_buffer_accessor.cpp source/device/dvc_render_target.cpp source/device/dvc_pixel_buffer.cpp source/device/dvc_uniform_buffer.cpp source/device/dvc_vertex_desc.cpp ) source_group("source/device" FILES ${DV_CORE_DEVICE_SOURCE_FILES}) ################# # pipe ################# set(DV_CORE_PIPE_INCLUDE_FILES include/pipe/dvc_render_pipe.h include/pipe/dvc_renderable.h include/pipe/dvc_renderable_entity.h include/pipe/dvc_render_step0_input_assember.h include/pipe/dvc_render_step1_vertex_shader.h include/pipe/dvc_render_step2_rasterizer.h include/pipe/dvc_render_step3_output_merge.h ) source_group("include/pipe" FILES ${DV_CORE_PIPE_INCLUDE_FILES}) set(DV_CORE_PIPE_SOURCE_FILES source/pipe/dvc_render_pipe.cpp source/pipe/dvc_renderable.cpp source/pipe/dvc_renderable_entity.cpp source/pipe/dvc_render_step0_input_assember.cpp source/pipe/dvc_render_step1_vertex_shader.cpp source/pipe/dvc_render_step2_rasterizer.cpp source/pipe/dvc_render_step3_output_merge.cpp ) source_group("source/pipe" FILES ${DV_CORE_PIPE_SOURCE_FILES}) ################# # rasterizer ################# set(DV_CORE_RASTERIZER_INCLUDE_FILES include/rasterizer/dvc_rasterizer_triangle.h ) source_group("include/rasterizer" FILES ${DV_CORE_RASTERIZER_INCLUDE_FILES}) set(DV_CORE_RASTERIZER_SOURCE_FILES source/rasterizer/dvc_rasterizer_triangle.cpp ) source_group("source/rasterizer" FILES ${DV_CORE_RASTERIZER_SOURCE_FILES}) ################# # shader ################# set(DV_CORE_SHADER_INCLUDE_FILES include/shader/dvc_shader_interface.h include/shader/dvc_shader_functions.h ) source_group("include/shader" FILES ${DV_CORE_SHADER_INCLUDE_FILES}) set(DV_CORE_SHADER_SOURCE_FILES source/shader/dvc_shader_interface.cpp source/shader/dvc_shader_functions.cpp ) source_group("source/shader" FILES ${DV_CORE_SHADER_SOURCE_FILES}) ################# # core library ################# include_directories( ${DV_AUTO_INCLUDE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/include ) add_library(dv_core SHARED ${DV_CORE_INCLUDE_FILES} ${DV_CORE_MATH_INCLUDE_FILES} ${DV_CORE_MATH_SOURCE_FILES} ${DV_CORE_SCENE_INCLUDE_FILES} ${DV_CORE_SCENE_SOURCE_FILES} ${DV_CORE_SCENE_COMPONENT_INCLUDE_FILES} ${DV_CORE_SCENE_COMPONENT_SOURCE_FILES} ${DV_CORE_DEVICE_INCLUDE_FILES} ${DV_CORE_DEVICE_SOURCE_FILES} ${DV_CORE_ASSET_INCLUDE_FILES} ${DV_CORE_ASSET_SOURCE_FILES} ${DV_CORE_PIPE_INCLUDE_FILES} ${DV_CORE_PIPE_SOURCE_FILES} ${DV_CORE_RASTERIZER_INCLUDE_FILES} ${DV_CORE_RASTERIZER_SOURCE_FILES} ${DV_CORE_SHADER_INCLUDE_FILES} ${DV_CORE_SHADER_SOURCE_FILES} ) target_compile_definitions(dv_core PRIVATE DV_CORE_EXPORTS ) ################# # copy runtime dll(for debug) ################# add_custom_command( TARGET dv_core POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_BINARY_DIR}/source/console/$<$:Debug>$<$:Release>/$ ) add_custom_command( TARGET dv_core POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_BINARY_DIR}/test/unit/$<$:Debug>$<$:Release>/$ ) add_custom_command( TARGET dv_core POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_BINARY_DIR}/test/rasterization/$<$:Debug>$<$:Release>/$ ) ################# # install ################# install(DIRECTORY include/ DESTINATION include/core FILES_MATCHING PATTERN "*.h" ) if(MSVC) install(TARGETS dv_core RUNTIME DESTINATION bin/$<$:Debug>$<$:Release> ARCHIVE DESTINATION lib/$<$:Debug>$<$:Release> ) else(MSVC) install(TARGETS dv_core RUNTIME DESTINATION bin ARCHIVE DESTINATION lib ) endif(MSVC)