1#pragma once
2
3#include <any>
4#include <string>
5#include <vector>
6
7#include "taichi/runtime/gfx/aot_utils.h"
8#include "taichi/runtime/gfx/runtime.h"
9#include "taichi/runtime/gfx/aot_module_builder_impl.h"
10#include "taichi/runtime/gfx/aot_graph_data.h"
11#include "taichi/codegen/spirv/kernel_utils.h"
12#include "taichi/aot/module_builder.h"
13#include "taichi/aot/module_loader.h"
14#include "taichi/common/virtual_dir.h"
15
16namespace taichi::lang {
17namespace gfx {
18
19struct TI_DLL_EXPORT AotModuleParams {
20 std::string module_path{};
21 const io::VirtualDir *dir{nullptr};
22 GfxRuntime *runtime{nullptr};
23 bool enable_lazy_loading{false};
24
25 AotModuleParams() = default;
26
27 [[deprecated]] AotModuleParams(const std::string &path, GfxRuntime *rt)
28 : module_path(path), runtime(rt) {
29 }
30 AotModuleParams(const io::VirtualDir *dir, GfxRuntime *rt)
31 : dir(dir), runtime(rt) {
32 }
33};
34
35TI_DLL_EXPORT std::unique_ptr<aot::Module> make_aot_module(
36 std::any mod_params,
37 Arch device_api_backend);
38
39} // namespace gfx
40} // namespace taichi::lang
41