# Copyright (c) 2023-2025 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("//build/ohos.gni")
import("//foundation/arkui/ace_engine/ace_config.gni")
fs_dirs = "//foundation/filemanagement/file_api/interfaces/kits/js"
libhilog_dirs = "//foundation/filemanagement/file_api/utils/filemgmt_libhilog"
libn_dirs = "//foundation/filemanagement/file_api/utils/filemgmt_libn"
utils_dirs = "//foundation/filemanagement/file_api/utils"
libn_src = [
"$libn_dirs/src/n_async/n_async_work_callback.cpp",
"$libn_dirs/src/n_async/n_async_work_promise.cpp",
"$libn_dirs/src/n_async/n_ref.cpp",
"$libn_dirs/src/n_class.cpp",
"$libn_dirs/src/n_error.cpp",
"$libn_dirs/src/n_func_arg.cpp",
"$libn_dirs/src/n_val.cpp",
]
plugin_fs_dirs = "//plugins/file/fs"
template("plugin_fs_static") {
forward_variables_from(invoker, "*")
ohos_source_set(target_name) {
defines += invoker.defines
cflags_cc += invoker.cflags_cc
include_dirs = [
"$fs_dirs/src/mod_fs",
"$fs_dirs/src/mod_fs/properties",
"$fs_dirs/src/mod_fs/class_file",
"$fs_dirs/src/mod_fs/class_stat",
"$fs_dirs/src/mod_fs/class_stream",
"$fs_dirs/src/mod_fs/class_randomaccessfile",
"$libhilog_dirs",
"$libn_dirs/include",
"$libn_dirs/include/n_async",
"$plugin_fs_dirs/common/",
"$plugin_fs_dirs/src/",
"$plugin_fs_dirs/src/class_readeriterator",
"$plugin_fs_dirs/src/class_atomicFile",
"$utils_dirs/common/include",
"//base/hiviewdfx/hilog/interfaces/native/innerkits/include",
"//third_party/libuv/include",
"//foundation/graphic/graphic_2d/rosen/modules/platform/ipc_core",
"//commonlibrary/c_utils/base/include",
"$fs_dirs/src/common",
]
if (target_os != "ios") {
include_dirs += [ "$fs_dirs/src/mod_fs/class_watcher" ]
}
sources = libn_src
sources += [
"$fs_dirs/src/common/file_api_debug.cpp",
"$fs_dirs/src/common/file_fs_trace.cpp",
"$fs_dirs/src/mod_fs/class_randomaccessfile/randomaccessfile_n_exporter.cpp",
"$fs_dirs/src/mod_fs/class_stat/stat_n_exporter.cpp",
"$fs_dirs/src/mod_fs/class_stream/stream_n_exporter.cpp",
"$fs_dirs/src/mod_fs/common_func.cpp",
"$fs_dirs/src/mod_fs/properties/close.cpp",
"$fs_dirs/src/mod_fs/properties/create_randomaccessfile.cpp",
"$fs_dirs/src/mod_fs/properties/create_streamrw.cpp",
"$fs_dirs/src/mod_fs/properties/dup.cpp",
"$fs_dirs/src/mod_fs/properties/fdatasync.cpp",
"$fs_dirs/src/mod_fs/properties/fsync.cpp",
"$fs_dirs/src/mod_fs/properties/lstat.cpp",
"$fs_dirs/src/mod_fs/properties/rename.cpp",
"$fs_dirs/src/mod_fs/properties/rmdirent.cpp",
"$fs_dirs/src/mod_fs/properties/stat.cpp",
"$fs_dirs/src/mod_fs/properties/symlink.cpp",
"$fs_dirs/src/mod_fs/properties/truncate.cpp",
"$fs_dirs/src/mod_fs/properties/utimes.cpp",
"$plugin_fs_dirs/common/fd_guard.cpp",
"$plugin_fs_dirs/module.cpp",
"$plugin_fs_dirs/src/class_atomicFile/atomicfile_n_exporter.cpp",
"$plugin_fs_dirs/src/class_readeriterator/readeriterator_n_exporter.cpp",
"$plugin_fs_dirs/src/copy_file.cpp",
"$plugin_fs_dirs/src/copydir.cpp",
"$plugin_fs_dirs/src/create_stream.cpp",
"$plugin_fs_dirs/src/fdopen_stream.cpp",
"$plugin_fs_dirs/src/file_n_exporter.cpp",
"$plugin_fs_dirs/src/fs_utils.cpp",
"$plugin_fs_dirs/src/listfile.cpp",
"$plugin_fs_dirs/src/lseek.cpp",
"$plugin_fs_dirs/src/mkdtemp.cpp",
"$plugin_fs_dirs/src/move.cpp",
"$plugin_fs_dirs/src/movedir.cpp",
"$plugin_fs_dirs/src/open.cpp",
"$plugin_fs_dirs/src/prop_n_exporter.cpp",
"$plugin_fs_dirs/src/read_lines.cpp",
"$plugin_fs_dirs/src/read_text.cpp",
"$plugin_fs_dirs/src/xattr.cpp",
]
if (target_os != "ios") {
sources += [
"$fs_dirs/src/mod_fs/class_watcher/watcher_entity.cpp",
"$fs_dirs/src/mod_fs/class_watcher/watcher_n_exporter.cpp",
"$fs_dirs/src/mod_fs/properties/watcher.cpp",
]
}
deps = [
"//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_${target_os}",
"//plugins/interfaces/native:plugin_log",
"//plugins/libs/napi:napi_${target_os}",
"//plugins/libs/uv:uv_${target_os}",
]
if (target_os == "ios") {
defines += [ "IOS_PLATFORM" ]
}
use_exceptions = true
if (target_os == "ios") {
defines += [ "IOS_PLATFORM" ]
}
subsystem_name = "plugins"
part_name = "file_fs"
}
}
foreach(item, ace_platforms) {
plugin_fs_static("file_fs_static_" + item.name) {
defines = []
cflags_cc = []
config = {
}
if (defined(item.config)) {
config = item.config
}
if (defined(config.defines)) {
defines = config.defines
}
if (defined(config.cflags_cc)) {
cflags_cc = config.cflags_cc
}
}
}