workspace('rive')
configurations({ 'debug', 'release' })

dependencies = os.getenv('DEPENDENCIES')

rive = '../../'

dofile(path.join(path.getabsolute(rive) .. '/build', 'premake5.lua'))

project('rive_tess_renderer')
do
    kind('StaticLib')
    language('C++')
    cppdialect('C++11')
    toolset('clang')
    targetdir('%{cfg.system}/bin/%{cfg.buildcfg}')
    objdir('%{cfg.system}/obj/%{cfg.buildcfg}')
    includedirs({
        '../include',
        rive .. '/include',
        dependencies .. '/sokol',
        dependencies .. '/earcut.hpp/include/mapbox',
        dependencies .. '/libtess2/Include',
    })
    files({ '../src/**.cpp', dependencies .. '/libtess2/Source/**.c' })
    buildoptions({ '-Wall', '-fno-exceptions', '-fno-rtti', '-Werror=format' })

    filter('configurations:debug')
    do
        buildoptions({ '-g' })
        defines({ 'DEBUG' })
        symbols('On')
    end

    filter('configurations:release')
    do
        buildoptions({ '-flto=full' })
        defines({ 'RELEASE', 'NDEBUG' })
        optimize('On')
    end

    filter({ 'options:graphics=gl' })
    do
        defines({ 'SOKOL_GLCORE33' })
    end

    filter({ 'options:graphics=metal' })
    do
        defines({ 'SOKOL_METAL' })
    end

    filter({ 'options:graphics=d3d' })
    do
        defines({ 'SOKOL_D3D11' })
    end

    newoption({
        trigger = 'graphics',
        value = 'gl',
        description = 'The graphics api to use.',
        allowed = { { 'gl' }, { 'metal' }, { 'd3d' } },
    })
end

project('rive_tess_tests')
do
    dependson('rive_tess_renderer')
    dependson('rive')
    kind('ConsoleApp')
    language('C++')
    cppdialect('C++17')
    toolset('clang')
    targetdir('%{cfg.system}/bin/%{cfg.buildcfg}')
    objdir('%{cfg.system}/obj/%{cfg.buildcfg}')
    includedirs({
        rive .. 'dev/test/include', -- for catch.hpp
        rive .. 'test', -- for things like rive_file_reader.hpp
        '../include',
        rive .. '/include',
        dependencies .. '/sokol',
        dependencies .. '/earcut.hpp/include/mapbox',
    })
    files({ '../test/**.cpp', rive .. 'utils/no_op_factory.cpp' })
    links({ 'rive_tess_renderer', 'rive', 'rive_harfbuzz', 'rive_sheenbidi' })
    buildoptions({ '-Wall', '-fno-exceptions', '-fno-rtti', '-Werror=format' })
    defines({ 'TESTING' })

    filter('configurations:debug')
    do
        buildoptions({ '-g' })
        defines({ 'DEBUG' })
        symbols('On')
    end

    filter('configurations:release')
    do
        buildoptions({ '-flto=full' })
        defines({ 'RELEASE', 'NDEBUG' })
        optimize('On')
    end
end
