add_executable(TheChef
        main.cpp
        "ShaderCompiler.h" "ShaderCompiler.cpp"
)

target_compile_features(TheChef PRIVATE cxx_std_17)

# Good practice for tools
target_compile_definitions(TheChef PRIVATE
        _CRT_SECURE_NO_WARNINGS
)
if (NOT TARGET nlohmann_json::nlohmann_json)
    add_subdirectory(third_party/json)
endif()

if(NOT TARGET spdlog::spdlog)
    add_subdirectory(third_party/spdlog)
endif()

find_package(Python3 REQUIRED COMPONENTS Interpreter)

set(GLSLANG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/glslang")
set(SCRIPT     "${GLSLANG_DIR}/update_glslang_sources.py")

execute_process(
        COMMAND "${Python3_EXECUTABLE}" "${SCRIPT}"
        WORKING_DIRECTORY "${GLSLANG_DIR}"
        RESULT_VARIABLE rc
        OUTPUT_VARIABLE out
        ERROR_VARIABLE err
        OUTPUT_STRIP_TRAILING_WHITESPACE
        ERROR_STRIP_TRAILING_WHITESPACE
)

if(NOT rc EQUAL 0)
    message(FATAL_ERROR
            "update_glslang_sources.py failed (exit code ${rc})\n"
            "--- stdout ---\n${out}\n"
            "--- stderr ---\n${err}\n"
    )
endif()

add_subdirectory(third_party/glslang)


target_link_libraries(TheChef PRIVATE nlohmann_json::nlohmann_json spdlog::spdlog glslang glslang-default-resource-limits)

        # Optional: warnings
if (MSVC)
    target_compile_options(TheChef PRIVATE /W4)
else()
    target_compile_options(TheChef PRIVATE -Wall -Wextra -Wpedantic)
endif()

