workspace "rive"
configurations {"debug", "release"}

require 'setup_compiler'

-- Are we in the "rive-pls" or "rive" repository?
local handle = io.popen("git remote -v")
local git_remote = handle:read("*a")
handle:close()
if string.find(git_remote, "rive%-pls") then
    -- In rive-pls. Rive runtime is a submodule.
    RIVE_RUNTIME_DIR = path.getabsolute("../submodules/rive-cpp")
else
    -- In rive. Rive runtime is further up the tree.
    RIVE_RUNTIME_DIR = path.getabsolute("../../runtime")
end

filter "system:windows or macosx or linux"
do
    -- Define RIVE_DESKTOP_GL outside of a project so that it also gets defined for consumers. It is
    -- the responsibility of consumers to call gladLoadCustomLoader() when RIVE_DESKTOP_GL is
    -- defined.
    defines {"RIVE_DESKTOP_GL"}
end

filter "system:android"
do
    defines {"RIVE_GLES"}
end

filter "system:ios"
do
    defines {"RIVE_IOS"}
end

filter "system:emscripten"
do
    defines {"RIVE_WASM"}
end

newoption {
    trigger = "obfuscate",
    description = "force-include ../obfuscator/pls_renames.h to obfuscate PLS variable names",
}
filter {"options:obfuscate"}
do
    forceincludes {"../obfuscator/pls_renames.h"}
end

filter {}

-- Minify PLS shaders, and precompile them into metal libraries if targeting ios or macosx.
newoption {
    trigger = "human-readable-shaders",
    description = "don't minimize or obfuscate shaders",
}
project "rive_pls_shaders"
do
    kind 'Makefile'
    local makecommand = "@make -C " .. path.getabsolute("../renderer/shaders")
    if _OPTIONS["human-readable-shaders"]
    then
        makecommand = makecommand .. " FLAGS=--human-readable"
    end
    cleancommands {makecommand .. " clean"}

    filter "system:macosx"
    do
        buildcommands {makecommand .. " rive_pls_macosx_metallib"}
        rebuildcommands {makecommand .. " rive_pls_macosx_metallib"}
    end

    filter "system:ios"
    do
        buildcommands {makecommand .. " rive_pls_ios_metallib"}
        rebuildcommands {makecommand .. " rive_pls_ios_metallib"}
    end

    filter {"system:not macosx", "system:not ios"}
    do
        buildcommands {makecommand .. " minify"}
        rebuildcommands {makecommand .. " minify"}
    end

    filter "system:windows"
    do
        architecture "x64"
    end
end

newoption {
    trigger = "nop-obj-c",
    description = "include Metal classes, but as no-ops (for compilers that don't support Obj-C)",
}
project "rive_pls_renderer"
do
    dependson 'rive_pls_shaders'
    kind 'StaticLib'
    language "C++"
    cppdialect "C++17"
    exceptionhandling "Off"
    rtti "Off"
    targetdir "%{cfg.buildcfg}"
    objdir "obj/%{cfg.buildcfg}"
    includedirs {"../include",
                 "../glad",
                 "../renderer",
                 RIVE_RUNTIME_DIR .. "/include"}
    flags { "FatalWarnings" }

    files {"../renderer/*.cpp"}

    -- The Visual Studio clang toolset doesn't recognize -ffp-contract.
    filter "system:not windows"
    do
        buildoptions {"-ffp-contract=on",
                      "-fassociative-math"}
    end

    filter "system:windows or macosx or linux or android"
    do
        files {"../renderer/gl/buffer_ring_gl.cpp",
               "../renderer/gl/gl_utils.cpp",
               "../renderer/gl/pls_render_context_gl.cpp",
               "../renderer/gl/pls_render_target_gl.cpp"}
    end

    filter "system:windows or macosx or linux"
    do
        files {"../renderer/gl/pls_impl_webgl.cpp", -- Emulate WebGL with ANGLE.
               "../renderer/gl/pls_impl_rw_texture.cpp",
               "../glad/glad.c",
               "../glad/glad_custom.c"}  -- GL loader library for ANGLE.
    end

    filter "system:android"
    do
        targetdir "android_%{cfg.buildcfg}"
        objdir "obj/android_%{cfg.buildcfg}"
        files {"../renderer/gl/load_gles_extensions.cpp",
               "../renderer/gl/pls_impl_ext_native.cpp",
               "../renderer/gl/pls_impl_framebuffer_fetch.cpp"}
    end

    filter {"system:macosx or ios", "options:not nop-obj-c"}
    do
        files {"../renderer/metal/*.mm"}
        buildoptions {"-fobjc-arc"}
    end

    filter {"options:nop-obj-c"}
    do
        files {"../renderer/metal/pls_metal_nop.cpp"}
    end

    filter "system:windows"
    do
        architecture "x64"
        files {"../renderer/d3d/*.cpp"}
    end

    if os.host() == 'macosx'
    then
        iphoneos_sysroot = os.outputof("xcrun --sdk iphoneos --show-sdk-path")
        iphonesimulator_sysroot = os.outputof("xcrun --sdk iphonesimulator --show-sdk-path")

        filter "system:ios"
        do
            buildoptions {"-Wno-deprecated-declarations"} -- Suppress warnings that GL is deprecated.
        end

        filter {"system:ios", "options:variant=system"}
        do
            targetdir "iphoneos_%{cfg.buildcfg}"
            objdir "obj/iphoneos_%{cfg.buildcfg}"
            buildoptions {
                "--target=arm64-apple-ios13.0.0",
                "-mios-version-min=13.0.0",
                "-isysroot " .. iphoneos_sysroot,
            }
        end

        filter {"system:ios", "options:variant=simulator"}
        do
            targetdir "iphonesimulator_%{cfg.buildcfg}"
            objdir "obj/iphonesimulator_%{cfg.buildcfg}"
            buildoptions {
                "--target=arm64-apple-ios13.0.0-simulator",
                "-mios-version-min=13.0.0",
                "-isysroot " .. iphonesimulator_sysroot,
            }
        end
    end

    filter "system:emscripten"
    do
        targetdir "wasm_%{cfg.buildcfg}"
        objdir "obj/wasm_%{cfg.buildcfg}"
        files {"../renderer/gl/pls_impl_webgl.cpp"}
        buildoptions {"-pthread"}
    end

    filter "configurations:debug"
    do
        defines {"DEBUG"}
        symbols "On"
    end

    filter "configurations:release"
    do
        defines {"RELEASE"}
        defines {"NDEBUG"}
        optimize "On"
    end
end

newoption {
    trigger = 'variant',
    value = 'type',
    description = 'Choose a particular variant to build',
    allowed = {
        {'system', 'Builds the static library for the provided system'},
        {'simulator', 'Builds for an emulator/simulator for the provided system'}
    },
    default = 'system'
}
