set(CORE_NAME Core)

find_package(Vulkan REQUIRED)

file(GLOB_RECURSE SRC "*.cpp" "*.c" "*.h" "*.hpp")

add_library(Core STATIC ${SRC})
target_compile_features(Core PRIVATE cxx_std_17)
target_include_directories(Core PUBLIC
        ${PROJECT_SOURCE_DIR}/FastRTTI
)
target_include_directories(Core
        PRIVATE 
        ${CMAKE_CURRENT_SOURCE_DIR}
        ${PROJECT_SOURCE_DIR}/glfw/Include
		${PROJECT_SOURCE_DIR}/RenderEngineSDK
        ${Vulkan_INCLUDE_DIRS}
)

target_link_libraries(Core PRIVATE
        ${CMAKE_DL_LIBS} # For linux
        FastRTTI
        glfw
        Vulkan::Vulkan
)

file(GLOB_RECURSE HEADERS
		"${CMAKE_CURRENT_SOURCE_DIR}/*.h"
		"${CMAKE_CURRENT_SOURCE_DIR}/*.hpp"
)

foreach (HEADER ${HEADERS})
	file(RELATIVE_PATH R_PATH
			"${CMAKE_CURRENT_SOURCE_DIR}"
			"${HEADER}"
	)
	
	get_filename_component(HEADER_DIR ${R_PATH} DIRECTORY)
	
	add_custom_command(
			TARGET Core
			POST_BUILD
			COMMAND ${CMAKE_COMMAND} -E make_directory
			"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/include/${HEADER_DIR}"
			COMMAND ${CMAKE_COMMAND} -E copy_if_different
			"${HEADER}"
			"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/include/${R_PATH}"
			
			COMMENT "Copy Core headers"
	)
endforeach ()