
function(create_test_executable TEST_NAME TEST_SOURCE CUSTOM_MAIN)
    if(WIN32)
        add_executable(${TEST_NAME} WIN32 ${TEST_SOURCE})
        set_target_properties(${TEST_NAME} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
    elseif(APPLE)
        add_executable(${TEST_NAME} MACOSX_BUNDLE ${TEST_SOURCE})
        set_target_properties(${TEST_NAME} PROPERTIES XCODE_GENERATE_SCHEME TRUE CMAKE_XCODE_SCHEME_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
    else(UNIX)
        add_executable(${TEST_NAME} ${TEST_SOURCE})
    endif()

    target_link_libraries(${TEST_NAME} PRIVATE tamashii::core tamashii::vkrenderer tamashii::implementations)
    if(CUSTOM_MAIN)
        target_link_libraries(${TEST_NAME} PRIVATE Catch2::Catch2WithMain)
        add_dependencies(${TEST_NAME} Catch2::Catch2WithMain)
    else(CUSTOM_MAIN)
        target_link_libraries(${TEST_NAME} PRIVATE Catch2::Catch2)
        add_dependencies(${TEST_NAME} Catch2::Catch2)
    endif()
    #add_dependencies(${TEST_NAME} tamashii::core tamashii::vkrenderer tamashii::implementations)
    set_target_properties(${TEST_NAME} PROPERTIES FOLDER ${FRAMEWORK_TEST_FOLDER})
    
    catch_discover_tests(${TEST_NAME})
endfunction()

include(Catch)
create_test_executable(glsl_shader_test glsl_shader_test.cpp TRUE)

