1fa7767c5Sopenharmony_ci# Copyright (C) 2023 Huawei Device Co., Ltd.
2fa7767c5Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3fa7767c5Sopenharmony_ci# you may not use this file except in compliance with the License.
4fa7767c5Sopenharmony_ci# You may obtain a copy of the License at
5fa7767c5Sopenharmony_ci#
6fa7767c5Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
7fa7767c5Sopenharmony_ci#
8fa7767c5Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9fa7767c5Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10fa7767c5Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11fa7767c5Sopenharmony_ci# See the License for the specific language governing permissions and
12fa7767c5Sopenharmony_ci# limitations under the License.
13fa7767c5Sopenharmony_ci
14fa7767c5Sopenharmony_ciimport("//build/ohos.gni")
15fa7767c5Sopenharmony_ciimport("//foundation/multimedia/media_foundation/config.gni")
16fa7767c5Sopenharmony_ci
17fa7767c5Sopenharmony_ciif (hst_is_standard_sys) {
18fa7767c5Sopenharmony_ci  group("capi_packages") {
19fa7767c5Sopenharmony_ci    deps = [ ":native_media_core" ]
20fa7767c5Sopenharmony_ci  }
21fa7767c5Sopenharmony_ci
22fa7767c5Sopenharmony_ci  config("media_foundation_capi_public_config") {
23fa7767c5Sopenharmony_ci    include_dirs = [
24fa7767c5Sopenharmony_ci      "./",
25fa7767c5Sopenharmony_ci      "./common",
26fa7767c5Sopenharmony_ci      "$histreamer_root_dir/interface/inner_api",
27fa7767c5Sopenharmony_ci    ]
28fa7767c5Sopenharmony_ci    defines = [
29fa7767c5Sopenharmony_ci      "HST_ANY_WITH_NO_RTTI",
30fa7767c5Sopenharmony_ci      "MEDIA_OHOS",
31fa7767c5Sopenharmony_ci    ]
32fa7767c5Sopenharmony_ci  }
33fa7767c5Sopenharmony_ci
34fa7767c5Sopenharmony_ci  config("media_foundation_capi_config") {
35fa7767c5Sopenharmony_ci    cflags = [
36fa7767c5Sopenharmony_ci      "-fno-exceptions",
37fa7767c5Sopenharmony_ci      "-Wall",
38fa7767c5Sopenharmony_ci      "-fno-common",
39fa7767c5Sopenharmony_ci      "-fstack-protector-all",
40fa7767c5Sopenharmony_ci      "-Wshadow",
41fa7767c5Sopenharmony_ci      "-FPIC",
42fa7767c5Sopenharmony_ci      "-FS",
43fa7767c5Sopenharmony_ci      "-O2",
44fa7767c5Sopenharmony_ci      "-D_FORTIFY_SOURCE=2",
45fa7767c5Sopenharmony_ci      "-Wformat=2",
46fa7767c5Sopenharmony_ci      "-Wdate-time",
47fa7767c5Sopenharmony_ci    ]
48fa7767c5Sopenharmony_ci
49fa7767c5Sopenharmony_ci    cflags_cc = [
50fa7767c5Sopenharmony_ci      "-std=c++17",
51fa7767c5Sopenharmony_ci      "-fno-rtti",
52fa7767c5Sopenharmony_ci    ]
53fa7767c5Sopenharmony_ci  }
54fa7767c5Sopenharmony_ci
55fa7767c5Sopenharmony_ci  ohos_shared_library("native_media_core") {
56fa7767c5Sopenharmony_ci    stack_protector_ret = true
57fa7767c5Sopenharmony_ci    install_enable = true
58fa7767c5Sopenharmony_ci
59fa7767c5Sopenharmony_ci    sanitize = {
60fa7767c5Sopenharmony_ci      ubsan = true
61fa7767c5Sopenharmony_ci      boundary_sanitize = true
62fa7767c5Sopenharmony_ci      cfi = true
63fa7767c5Sopenharmony_ci      cfi_cross_dso = true
64fa7767c5Sopenharmony_ci      debug = false
65fa7767c5Sopenharmony_ci      integer_overflow = true
66fa7767c5Sopenharmony_ci    }
67fa7767c5Sopenharmony_ci
68fa7767c5Sopenharmony_ci    configs = [ ":media_foundation_capi_config" ]
69fa7767c5Sopenharmony_ci    public_configs = [ ":media_foundation_capi_public_config" ]
70fa7767c5Sopenharmony_ci
71fa7767c5Sopenharmony_ci    deps = [ "$histreamer_root_dir/src:media_foundation" ]
72fa7767c5Sopenharmony_ci
73fa7767c5Sopenharmony_ci    sources = [
74fa7767c5Sopenharmony_ci      "./native_avbuffer.cpp",
75fa7767c5Sopenharmony_ci      "./native_avformat.cpp",
76fa7767c5Sopenharmony_ci      "./native_avmemory.cpp",
77fa7767c5Sopenharmony_ci    ]
78fa7767c5Sopenharmony_ci
79fa7767c5Sopenharmony_ci    external_deps = [
80fa7767c5Sopenharmony_ci      "c_utils:utils",
81fa7767c5Sopenharmony_ci      "graphic_surface:surface",
82fa7767c5Sopenharmony_ci      "graphic_surface:sync_fence",
83fa7767c5Sopenharmony_ci      "hilog:libhilog",
84fa7767c5Sopenharmony_ci      "ipc:ipc_core",
85fa7767c5Sopenharmony_ci    ]
86fa7767c5Sopenharmony_ci
87fa7767c5Sopenharmony_ci    output_extension = "so"
88fa7767c5Sopenharmony_ci    innerapi_tags = [ "ndk" ]
89fa7767c5Sopenharmony_ci    subsystem_name = "multimedia"
90fa7767c5Sopenharmony_ci    part_name = "media_foundation"
91fa7767c5Sopenharmony_ci  }
92fa7767c5Sopenharmony_ci} else {
93fa7767c5Sopenharmony_ci  group("capi_packages") {
94fa7767c5Sopenharmony_ci  }
95fa7767c5Sopenharmony_ci  group("native_media_core") {
96fa7767c5Sopenharmony_ci  }
97fa7767c5Sopenharmony_ci}
98