
if is_mode("debug") then
    add_defines("DEBUG_ENABLED")
end


-- more on https://xmake.io/#/manual/project_target
target(PROJECT_NAME)
    set_kind("shared")
    set_default(true)

    add_packages("godotcpp4")

    -- more on https://xmake.io/#/manual/project_target?id=targetadd_files
    add_files("../src/**.cpp")

    add_includedirs("../include")

    -- change the output name
    set_basename(PROJECT_NAME .. ".$(os)_$(mode)_$(arch)")

    -- libraries will saved in os level folder
    set_targetdir("../" .. GODOT_PROJECT_FOLDER .. "/lib")

    -- where to save .obj files
    -- we use a seprate folder, so that it will not populate the targer folder
    set_objectdir("../build/.objs")

    -- where .d files are saved
    set_dependir("../build/.deps")

    -- set_optimize("smallest")

    -- handlers

    -- before_run(function (target)  end)
    -- after_run(function (target)  end)
    -- before_build(function (target)  end)
    -- after_build(function (target)  end)
    -- before_clean(function (target)  end)
    -- after_clean(function (target)  end)

    on_run(
        (function(godot_project_folder)
            return function(target)
                local cmd = format("godot --path %s", godot_project_folder)
                os.execv("echo", {cmd})
                os.exec(cmd)
            end
        end)(GODOT_PROJECT_FOLDER)
    )

    on_package(function(target)
        import("core.base.task")

        target_platform = "Unknown"

        if is_plat("windows") then
            target_platform = "Windows Desktop"
        elseif is_plat("macosx") then
            target_platform = "macOS"
        elseif is_plat("linux") then
            target_platform = "Linux/X11"
        elseif is_plat("android") then
            target_platform = "Android"
        end

        task.run("export", {}, target_platform)
    end)

    after_clean(function (target) 
        import("core.base.task")
        task.run("clean-publish")
    end)