1# Copyright (c) 2021 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import("//build/ohos_var.gni")
15
16# ndk library, ndk header configuration
17_ndk_library_targets = [
18  "//interface/sdk_c/sensors/miscdevice/vibrator:lib_vibrator_ndk",
19  "//interface/sdk_c/sensors/miscdevice/vibrator:ndk_vibrator_header",
20  "//interface/sdk_c/third_party/zlib:libz_ndk",
21  "//interface/sdk_c/third_party/zlib:zlib_header",
22  "//interface/sdk_c/global/resource_management:librawfile_ndk",
23  "//interface/sdk_c/global/resource_management:rawfile_header",
24  "//interface/sdk_c/global/resource_management:native_resmgr_ndk",
25  "//interface/sdk_c/global/resource_management:native_resmgr_header",
26  "//interface/sdk_c/hiviewdfx/hiappevent:libhiappevent_header",
27  "//interface/sdk_c/hiviewdfx/hiappevent:libhiappevent_ndk",
28  "//interface/sdk_c/hiviewdfx/hidebug:libohhidebug",
29  "//interface/sdk_c/hiviewdfx/hidebug:oh_hidebug_header",
30  "//interface/sdk_c/hiviewdfx/hicollie:libohhicollie",
31  "//interface/sdk_c/hiviewdfx/hicollie:oh_hicollie_header",
32  "//interface/sdk_c/hiviewdfx/hilog:hilog_header",
33  "//interface/sdk_c/hiviewdfx/hilog:libhilog_ndk",
34  "//interface/sdk_c/hiviewdfx/hitrace:hitrace_header",
35  "//interface/sdk_c/hiviewdfx/hitrace:libhitrace_ndk",
36  "//interface/sdk_c/network/netstack/net_websocket:libnet_websocket",
37  "//interface/sdk_c/network/netstack/net_websocket:websocket_header",
38  "//interface/sdk_c/network/netssl:libnet_ssl_ndk",
39  "//interface/sdk_c/network/netssl:net_ssl_header",
40  "//interface/sdk_c/security/access_token:libability_access_control",
41  "//interface/sdk_c/security/access_token:accesstoken_header",
42  "//interface/sdk_c/security/huks:libhuks_ndk",
43  "//interface/sdk_c/security/huks:huks_header",
44  "//interface/sdk_c/security/asset:libasset_ndk",
45  "//interface/sdk_c/security/asset:asset_header",
46  "//interface/sdk_c/startup/init/syscap:libdeviceinfo_ndk",
47  "//interface/sdk_c/startup/init/syscap:deviceinfo_header",
48  "//interface/sdk_c/third_party/mindspore/kits:mindspore_header",
49  "//interface/sdk_c/third_party/mindspore/kits:mindspore_lib",
50  "//interface/sdk_c/web/webview/interfaces/native:web_header",
51  "//interface/sdk_c/web/webview/interfaces/native:libohweb",
52  "//interface/sdk_c/BasicServicesKit:libos_account_ndk",
53  "//interface/sdk_c/BasicServicesKit:os_account_ndk_header",
54  "//interface/sdk_c/ability/ability_runtime/child_process:child_process_header",
55  "//interface/sdk_c/ability/ability_runtime/child_process:libchild_process",
56  "//interface/sdk_c/AbilityKit/ability_runtime:ability_runtime_ndk_header",
57  "//interface/sdk_c/AbilityKit/ability_runtime:libability_runtime",
58  "//interface/sdk_c/arkui/ace_engine/native:ace_header",
59  "//interface/sdk_c/arkui/ace_engine/native:arkui_header",
60  "//interface/sdk_c/arkui/ace_engine/native:libace_ndk",
61  "//interface/sdk_c/arkui/napi:libnapi_ndk",
62  "//interface/sdk_c/arkui/napi:napi_header",
63  "//interface/sdk_c/arkui/window_manager:window_manager_header",
64  "//interface/sdk_c/arkui/window_manager:native_window_manager",
65  "//interface/sdk_c/arkui/display_manager:display_manager_header",
66  "//interface/sdk_c/arkui/display_manager:native_display_manager",
67  "//interface/sdk_c/ark_runtime/jsvm:libjsvm_ndk",
68  "//interface/sdk_c/ark_runtime/jsvm:jsvm_header",
69  "//interface/sdk_c/bundlemanager/bundle_framework/bundle:bundle_header",
70  "//interface/sdk_c/bundlemanager/bundle_framework/bundle:libbundle_ndk",
71  "//interface/sdk_c/third_party/node:node_header",
72  "//interface/sdk_c/graphic/graphic_2d/EGL:libEGL_ndk",
73  "//interface/sdk_c/graphic/graphic_2d/EGL:EGL_header",
74  "//interface/sdk_c/graphic/graphic_2d/GLES2:libGLESv2_ndk",
75  "//interface/sdk_c/graphic/graphic_2d/GLES2:GLES2_header",
76  "//interface/sdk_c/graphic/graphic_2d/GLES3:libGLESv3_ndk",
77  "//interface/sdk_c/graphic/graphic_2d/GLES3:GLES3_header",
78  "//interface/sdk_c/graphic/graphic_2d/KHR:KHR_header",
79  "//interface/sdk_c/graphic/graphic_2d/native_window:libnative_window_ndk",
80  "//interface/sdk_c/graphic/graphic_2d/native_window:native_window_header",
81  "//interface/sdk_c/graphic/graphic_2d/native_buffer:libnative_buffer_ndk",
82  "//interface/sdk_c/graphic/graphic_2d/native_buffer:native_buffer_header",
83  "//interface/sdk_c/graphic/graphic_2d/native_image:libnative_image_ndk",
84  "//interface/sdk_c/graphic/graphic_2d/native_image:native_image_header",
85  "//interface/sdk_c/graphic/graphic_2d/native_vsync:libnative_vsync_ndk",
86  "//interface/sdk_c/graphic/graphic_2d/native_vsync:native_vsync_header",
87  "//interface/sdk_c/graphic/graphic_2d/native_color_space_manager:libnative_color_space_manager_ndk",
88  "//interface/sdk_c/graphic/graphic_2d/native_color_space_manager:native_color_space_manager_header",
89  "//interface/sdk_c/graphic/graphic_2d/native_drawing:libnative_drawing_ndk",
90  "//interface/sdk_c/graphic/graphic_2d/native_drawing:native_drawing_header",
91  "//interface/sdk_c/graphic/graphic_2d/native_effect:libnative_effect_ndk",
92  "//interface/sdk_c/graphic/graphic_2d/native_effect:native_effect_header",
93  "//interface/sdk_c/IPCKit:libipc_capi",
94  "//interface/sdk_c/IPCKit:ipc_capi_header",
95  "//interface/sdk_c/ConnectivityKit/bluetooth:libbluetooth_ndk",
96  "//interface/sdk_c/ConnectivityKit/bluetooth:bluetooth_ndk_header",
97  "//interface/sdk_c/LocationKit:liblocation_ndk",
98  "//interface/sdk_c/LocationKit:location_ndk_header",
99  "//interface/sdk_c/NotificationKit:libnotification_ndk",
100  "//interface/sdk_c/NotificationKit:ohnotification_header",
101  "//interface/sdk_c/third_party/libuv:libuv_ndk",
102  "//interface/sdk_c/third_party/libuv:libuv_header",
103  "//interface/sdk_c/third_party/libuv:libuv_uv_header",
104  "//interface/sdk_c/third_party/icu4c:libicu_ndk",
105  "//interface/sdk_c/third_party/icu4c:icu_unicode_header",
106  "//interface/sdk_c/multimedia/av_codec/audio_decoder:libnative_media_adec",
107  "//interface/sdk_c/multimedia/av_codec/audio_decoder:native_media_adec_header",
108  "//interface/sdk_c/multimedia/av_codec/audio_encoder:libnative_media_aenc",
109  "//interface/sdk_c/multimedia/av_codec/audio_encoder:native_media_aenc_header",
110  "//interface/sdk_c/multimedia/av_codec/audio_codec:libnative_media_acodec",
111  "//interface/sdk_c/multimedia/av_codec/audio_codec:native_media_acodec_header",
112  "//interface/sdk_c/multimedia/av_codec/video_decoder:libnative_media_vdec",
113  "//interface/sdk_c/multimedia/av_codec/video_decoder:native_media_vdec_header",
114  "//interface/sdk_c/multimedia/av_codec/video_encoder:libnative_media_venc",
115  "//interface/sdk_c/multimedia/av_codec/video_encoder:native_media_venc_header",
116  "//interface/sdk_c/multimedia/av_codec/codec_base:libnative_media_codecbase",
117  "//interface/sdk_c/multimedia/av_codec/codec_base:native_media_codecbase_header",
118  "//interface/sdk_c/multimedia/av_codec/avmuxer:libnative_media_avmuxer",
119  "//interface/sdk_c/multimedia/av_codec/avmuxer:native_media_avmuxer_header",
120  "//interface/sdk_c/multimedia/av_codec/avdemuxer:libnative_media_avdemuxer",
121  "//interface/sdk_c/multimedia/av_codec/avdemuxer:native_media_avdemuxer_header",
122  "//interface/sdk_c/multimedia/av_codec/avsource:libnative_media_avsource",
123  "//interface/sdk_c/multimedia/av_codec/avsource:native_media_avsource_header",
124  "//interface/sdk_c/multimedia/av_codec/avcencinfo:libnative_media_avcencinfo",
125  "//interface/sdk_c/multimedia/av_codec/avcencinfo:native_media_avcencinfo_header",
126  "//interface/sdk_c/multimedia/drm_framework:libnative_drm",
127  "//interface/sdk_c/multimedia/drm_framework:native_drm_header",
128  "//interface/sdk_c/multimedia/media_foundation/core:native_media_core_header",
129  "//interface/sdk_c/multimedia/media_foundation/core:native_media_core_common_header",
130  "//interface/sdk_c/multimedia/media_foundation/core:libnative_media_core",
131  "//interface/sdk_c/multimedia/media_library/media_asset_manager:libmedia_asset_manager",
132  "//interface/sdk_c/multimedia/media_library/media_asset_manager:media_asset_manager_header",
133  "//interface/sdk_c/multimedia/player_framework/avscreen_capture:libnative_avscreen_capture",
134  "//interface/sdk_c/multimedia/player_framework/avscreen_capture:native_avscreen_capture_header",
135  "//interface/sdk_c/multimedia/player_framework/avplayer:libavplayer",
136  "//interface/sdk_c/multimedia/player_framework/avplayer:avplayer_header",
137  "//interface/sdk_c/multimedia/audio_framework:libohaudio_ndk",
138  "//interface/sdk_c/multimedia/audio_framework:ohaudio_header",
139  "//interface/sdk_c/multimedia/av_session:libohavsession_ndk",
140  "//interface/sdk_c/multimedia/av_session:ohavsession_header",
141  "//interface/sdk_c/multimedia/camera_framework:libohcamera",
142  "//interface/sdk_c/multimedia/camera_framework:camera_ndk_header",
143  "//interface/sdk_c/multimedia/image_framework:libpixelmap_ndk",
144  "//interface/sdk_c/multimedia/image_framework:libpixelmap",
145  "//interface/sdk_c/multimedia/image_framework:libpixelmap_header",
146  "//interface/sdk_c/multimedia/image_framework:image_header",
147  "//interface/sdk_c/multimedia/image_framework:libimage_ndk",
148  "//interface/sdk_c/multimedia/image_framework:image_ndk_header",
149  "//interface/sdk_c/multimedia/image_framework:libimage_receiver_ndk",
150  "//interface/sdk_c/multimedia/image_framework:image_receiver_ndk_header",
151  "//interface/sdk_c/multimedia/image_framework:libimage_source_ndk",
152  "//interface/sdk_c/multimedia/image_framework:image_source_ndk_header",
153  "//interface/sdk_c/multimedia/image_framework:libimage_source",
154  "//interface/sdk_c/multimedia/image_framework:libimage_source_header",
155  "//interface/sdk_c/multimedia/image_framework:libimage_packer_ndk",
156  "//interface/sdk_c/multimedia/image_framework:image_packer_ndk_header",
157  "//interface/sdk_c/multimedia/image_framework:libimage_packer",
158  "//interface/sdk_c/multimedia/image_framework:libimage_packer_header",
159  "//interface/sdk_c/multimedia/image_framework:libpicture",
160  "//interface/sdk_c/multimedia/image_framework:libpicture_header",
161  "//interface/sdk_c/multimedia/image_framework:libimage_common",
162  "//interface/sdk_c/multimedia/image_framework:libimage_common_header",
163  "//interface/sdk_c/multimedia/image_effect:libimage_effect",
164  "//interface/sdk_c/multimedia/image_effect:libimage_effect_header",
165  "//interface/sdk_c/multimedia/video_processing_engine/video_processing:libvideo_processing_ndk",
166  "//interface/sdk_c/multimedia/video_processing_engine/video_processing:video_processing_ndk_headers",
167  "//interface/sdk_c/multimedia/video_processing_engine/image_processing:libimage_processing_ndk",
168  "//interface/sdk_c/multimedia/video_processing_engine/image_processing:image_processing_ndk_headers",
169  "//interface/sdk_c/third_party/openSLES:sles_header",
170  "//interface/sdk_c/third_party/openSLES:libOpenSLES_ndk",
171  "//interface/sdk_c/ai/neural_network_runtime:libneural_network_core_ndk",
172  "//interface/sdk_c/ai/neural_network_runtime:libneural_network_runtime_ndk",
173  "//interface/sdk_c/ai/neural_network_runtime:libneural_network_runtime_header",
174  "//interface/sdk_c/commonlibrary/memory_utils/libpurgeablemem:libpurgeable_memory_ndk",
175  "//interface/sdk_c/commonlibrary/memory_utils/libpurgeablemem:purgeable_memory_header",
176  "//interface/sdk_c/distributeddatamgr/relational_store:data_ndk_header",
177  "//interface/sdk_c/distributeddatamgr/relational_store:native_rdb_ndk_header",
178  "//interface/sdk_c/distributeddatamgr/relational_store:libnative_rdb_ndk",
179  "//interface/sdk_c/distributeddatamgr/udmf:libudmf",
180  "//interface/sdk_c/distributeddatamgr/udmf:udmf_ndk_header",
181  "//interface/sdk_c/distributeddatamgr/pasteboard:libpasteboard",
182  "//interface/sdk_c/distributeddatamgr/pasteboard:pasteboard_ndk_header",
183  "//interface/sdk_c/distributeddatamgr/preferences:preferences_ndk_header",
184  "//interface/sdk_c/distributeddatamgr/preferences:libohpreferences",
185  "//interface/sdk_c/drivers/external_device_manager/usb:libusb_ndk",
186  "//interface/sdk_c/drivers/external_device_manager/usb:usb_header",
187  "//interface/sdk_c/drivers/external_device_manager/hid:libhid",
188  "//interface/sdk_c/drivers/external_device_manager/hid:hid_header",
189  "//interface/sdk_c/drivers/external_device_manager/base:libddk_base",
190  "//interface/sdk_c/drivers/external_device_manager/base:ddk_header",
191  "//interface/sdk_c/graphic/graphic_2d/vulkan:libvulkan_ndk",
192  "//interface/sdk_c/graphic/graphic_2d/vulkan:vulkan_header",
193  "//interface/sdk_c/graphic/graphic_2d/vulkan:vulkan_header_vk_video",
194  "//interface/sdk_c/resourceschedule/ffrt:libffrt_ndk",
195  "//interface/sdk_c/resourceschedule/ffrt:ffrt_header",
196  "//interface/sdk_c/network/netmanager:libnet_connection",
197  "//interface/sdk_c/network/netmanager:netconn_header",
198  "//interface/sdk_c/sensors/sensor:libsensor_ndk",
199  "//interface/sdk_c/sensors/sensor:sensor_ndk_header",
200  "//interface/sdk_c/resourceschedule/qos_manager:libqos_ndk",
201  "//interface/sdk_c/resourceschedule/qos_manager:qos_header",
202  "//interface/sdk_c/filemanagement/fileio:libohfileio",
203  "//interface/sdk_c/filemanagement/fileio:oh_fileio_header",
204  "//interface/sdk_c/filemanagement/environment:libohenvironment",
205  "//interface/sdk_c/filemanagement/environment:oh_environment_header",
206  "//interface/sdk_c/filemanagement/file_uri:libohfileuri",
207  "//interface/sdk_c/filemanagement/file_uri:oh_file_uri_header",
208  "//interface/sdk_c/filemanagement/fileshare:libohfileshare",
209  "//interface/sdk_c/filemanagement/fileshare:oh_file_share_header",
210  "//interface/sdk_c/multimodalinput/kits/c:libohinput_ndk",
211  "//interface/sdk_c/multimodalinput/kits/c:ohinput_header",
212  "//interface/sdk_c/BasicServicesKit:libohprint_ndk",
213  "//interface/sdk_c/BasicServicesKit:ohprint_header",
214  "//interface/sdk_c/multimedia/image_framework:libohimage",
215  "//interface/sdk_c/multimedia/image_framework:ohimage_header",
216  "//interface/sdk_c/multimedia/image_framework:libimage_receiver",
217  "//interface/sdk_c/multimedia/image_framework:image_receiver_header",
218  "//interface/sdk_c/graphic/graphic_2d/native_display_soloist:libnative_display_soloist_ndk",
219  "//interface/sdk_c/graphic/graphic_2d/native_display_soloist:native_display_soloist_header",
220  "//interface/sdk_c/third_party/musl/ndk_script:copy_compatible_config",
221  "//interface/sdk_c/CryptoArchitectureKit:libohcrypto",
222  "//interface/sdk_c/CryptoArchitectureKit:crypto_capi_header",
223  "//interface/sdk_c/BasicServicesKit:libohscan_ndk",
224  "//interface/sdk_c/BasicServicesKit:ohscan_header",
225  "//interface/sdk_c/DataProtectionKit:libohdlp_permission",
226  "//interface/sdk_c/DataProtectionKit:dlppermission_capi_header",
227  "//interface/sdk_c/inputmethod:libohinputmethod",
228  "//interface/sdk_c/inputmethod:libohinputmethod_header",
229  "//interface/sdk_c/BasicServicesKit:libtime_service_ndk",
230  "//interface/sdk_c/BasicServicesKit:time_service_ndk_header",
231  "//interface/sdk_c/BasicServicesKit:libcommonevent_ndk",
232  "//interface/sdk_c/BasicServicesKit:ohcommonevent_header",
233  "//interface/sdk_c/BasicServicesKit:ohbattery_info_header",
234  "//interface/sdk_c/BasicServicesKit:libohbattery_info_ndk",
235  "//interface/sdk_c/telephony/cellular_data:libtelephony_data",
236  "//interface/sdk_c/telephony/cellular_data:telephony_data_header",
237  "//interface/sdk_c/telephony/core_service:libtelephony_radio",
238  "//interface/sdk_c/telephony/core_service:telephony_radio_header",
239  "//interface/sdk_c/ConnectivityKit/wifi:libwifi_ndk",
240  "//interface/sdk_c/ConnectivityKit/wifi:wifi_ndk_header",
241  "//interface/sdk_c/backgroundtasks/transient:libtransient_task_ndk",
242  "//interface/sdk_c/backgroundtasks/transient:transient_task_header",
243]
244
245_ndk_base_libs = [
246  "//interface/sdk_c/third_party/musl/ndk_script/adapter:libc_ndk",
247  "//interface/sdk_c/third_party/musl/ndk_script:musl_ndk_libs_arm32",
248  "//interface/sdk_c/third_party/musl/ndk_script:musl_ndk_libs_aarch64",
249  "//interface/sdk_c/third_party/musl/ndk_script:musl_ndk_libs_x86_64",
250  "//interface/sdk_c/third_party/musl/ndk_script:ndk_toolchain",
251]
252_ndk_sysroot_uapi =
253    [ "//interface/sdk_c/third_party/musl/ndk_script:musl_sysroot" ]
254
255_ndk_cmake = [
256  "//prebuilts/cmake/darwin-x86:darwin_cmake_copy",
257  "//prebuilts/cmake/linux-x86:linux_cmake_copy",
258  "//prebuilts/cmake/windows-x86:windows_cmake_copy",
259  "//prebuilts/cmake/ohos:ohos_cmake_copy",
260  "//build/ohos/ndk:ndk_cmake_files",
261]
262
263if (host_os == "mac") {
264  _ndk_cmake += [ "//build/ohos/ndk:copy_darwin_ohos_cmake" ]
265} else {
266  _ndk_cmake += [
267    "//build/ohos/ndk:copy_linux_ohos_cmake",
268    "//build/ohos/ndk:copy_windows_ohos_cmake",
269    "//build/ohos/ndk:copy_ohos_ohos_cmake",
270  ]
271}
272
273_ndk_ninja = []
274if (host_os == "mac") {
275  _ndk_ninja += [ "//prebuilts/build-tools/darwin-x86/bin:darwin_ninja_copy" ]
276} else {
277  _ndk_ninja += [
278    "//prebuilts/build-tools/linux-x86/bin:linux_ninja_copy",
279    "//prebuilts/build-tools/windows-x86/bin:windows_ninja_copy",
280    "//prebuilts/build-tools/ohos/bin:ohos_ninja_copy",
281  ]
282}
283
284_ndk_targets_list = _ndk_library_targets + _ndk_base_libs + _ndk_sysroot_uapi +
285                    _ndk_cmake + _ndk_ninja
286
287_parse_script = "//build/ohos/ndk/parse_ndk_targets.py"
288_parse_args = [
289  "--source-root-dir",
290  rebase_path("//", root_build_dir),
291  "--ndk-lib-target-list",
292]
293_parse_args += _ndk_targets_list
294
295all_ndk_targets_list = exec_script(_parse_script, _parse_args, "list lines")
296
297if (ndk_platform == "win") {
298  all_ndk_targets_list +=
299      [ "//interface/sdk_c/third_party/musl/ndk_script:windows_x86_64" ]
300} else if (ndk_platform == "mac") {
301  if (host_cpu == "arm64") {
302    all_ndk_targets_list +=
303        [ "//interface/sdk_c/third_party/musl/ndk_script:darwin_arm64" ]
304  } else {
305    all_ndk_targets_list +=
306        [ "//interface/sdk_c/third_party/musl/ndk_script:darwin_x86_64" ]
307  }
308} else if (ndk_platform == "linux") {
309  all_ndk_targets_list +=
310      [ "//interface/sdk_c/third_party/musl/ndk_script:linux_x86_64" ]
311} else if (ndk_platform == "ohos") {
312  all_ndk_targets_list +=
313      [ "//interface/sdk_c/third_party/musl/ndk_script:ohos_arm64" ]
314} else if (ndk_platform == "default") {
315  if (host_os == "mac") {
316    if (host_cpu == "arm64") {
317      all_ndk_targets_list +=
318          [ "//interface/sdk_c/third_party/musl/ndk_script:darwin_arm64" ]
319    } else {
320      all_ndk_targets_list +=
321          [ "//interface/sdk_c/third_party/musl/ndk_script:darwin_x86_64" ]
322    }
323  } else {
324    all_ndk_targets_list += [
325      "//interface/sdk_c/third_party/musl/ndk_script:windows_x86_64",
326      "//interface/sdk_c/third_party/musl/ndk_script:linux_x86_64",
327      "//interface/sdk_c/third_party/musl/ndk_script:ohos_arm64",
328    ]
329  }
330}
331