BUILD.gn 14.4 KB
Newer Older
1
# Copyright (c) 2020-2021 Huawei Device Co., Ltd.
M
mamingshuai 已提交
2 3 4 5 6 7 8 9 10 11 12
# 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.
13 14 15 16 17

init_common_sources = [
  "init/init_capability.c",
  "init/init_common_cmds.c",
  "init/init_common_service.c",
S
sun_fan 已提交
18
  "init/init_config.c",
X
xionglei6 已提交
19
  "init/init_group_manager.c",
X
xionglei6 已提交
20
  "init/init_service_file.c",
21 22 23 24 25
  "init/init_service_manager.c",
  "init/init_service_socket.c",
  "init/main.c",
]

Z
zhong_ning 已提交
26 27
if (defined(ohos_lite)) {
  # feature: init
M
Mupceet 已提交
28
  executable("lite_init") {
29
    output_name = "init"
Z
zhong_ning 已提交
30
    defines = [
M
Mupceet 已提交
31
      "_GNU_SOURCE",
Z
zhong_ning 已提交
32
      "OHOS_LITE",
M
Mupceet 已提交
33
      "__MUSL__",
Z
zhong_ning 已提交
34 35
    ]
    sources = [
36 37 38 39 40 41 42
      "init/adapter/init_adapter.c",
      "init/lite/init.c",
      "init/lite/init_cmds.c",
      "init/lite/init_jobs.c",
      "init/lite/init_reboot.c",
      "init/lite/init_service.c",
      "init/lite/init_signal_handler.c",
Z
zhong_ning 已提交
43
    ]
44 45
    sources += init_common_sources

Z
zhong_ning 已提交
46
    include_dirs = [
Z
zhong_ning 已提交
47
      "//base/startup/init_lite/services/include",
M
Mupceet 已提交
48
      "//base/startup/init_lite/services/include/param",
49
      "//base/startup/init_lite/services/init/include",
Z
zhong_ning 已提交
50
      "//base/startup/init_lite/services/log",
51
      "//base/startup/init_lite/services/loopevent/include",
X
xionglei6 已提交
52
      "//base/startup/init_lite/interfaces/innerkits/include",
Z
zhong_ning 已提交
53 54
      "//third_party/cJSON",
      "//third_party/bounds_checking_function/include",
Z
zhong_ning 已提交
55
      "//base/hiviewdfx/hilog_lite/interfaces/native/kits",
X
xionglei6 已提交
56
      "//base/startup/init_lite/interfaces/innerkits/fd_holder",
Z
zhong_ning 已提交
57
    ]
M
mamingshuai 已提交
58

Z
zhong_ning 已提交
59
    cflags = [ "-Wall" ]
M
Mupceet 已提交
60
    ldflags = []
Z
zhong_ning 已提交
61
    deps = [
Z
zhong_ning 已提交
62
      "//base/hiviewdfx/hilog_lite/frameworks/featured:hilog_shared",
M
Mupceet 已提交
63
      "//base/startup/init_lite/services/log:init_log",
64
      "//base/startup/init_lite/services/loopevent:loopevent",
M
Mupceet 已提交
65 66 67 68
      "//base/startup/init_lite/services/param:param_init",
      "//base/startup/init_lite/services/utils:libinit_tools",
      "//build/lite/config/component/cJSON:cjson_static",
      "//third_party/bounds_checking_function:libsec_static",
Z
zhong_ning 已提交
69
    ]
M
Mupceet 已提交
70

Z
zhong_ning 已提交
71
    if (ohos_kernel_type == "liteos_a") {
M
Mupceet 已提交
72
      defines += [ "__LITEOS_A__" ]
73
      include_dirs += [
S
sun_fan 已提交
74
        "//kernel/liteos_a/syscall",
M
Mupceet 已提交
75 76
        "//kernel/liteos_a/kernel/include",
        "//base/startup/init_lite/interfaces/kits/syscap",
77 78 79
        "//base/startup/init_lite/initsync/include",
      ]
      deps += [ "//base/startup/init_lite/initsync:initsync" ]
Z
zhong_ning 已提交
80 81
    }
    if (ohos_kernel_type == "linux") {
M
Mupceet 已提交
82 83 84 85
      defines += [
        "NEED_EXEC_RCS_LINUX",
        "__LINUX__",
      ]
Z
zhong_ning 已提交
86 87 88 89
      ldflags += [
        "-lm",
        "-lpthread",
      ]
Y
yangming_ha 已提交
90
      deps += [
91 92 93
        "//third_party/mksh",
        "//third_party/toybox",
      ]
Z
zhong_ning 已提交
94 95
    }
  }
M
mamingshuai 已提交
96

Z
zhong_ning 已提交
97 98
  if (ohos_build_type == "debug") {
    group("unittest") {
M
Mupceet 已提交
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
      deps = [ "//base/startup/init_lite/test/unittest/lite:init_test" ]
    }
  }

  copy("ohos.para") {
    sources = [ "//base/startup/init_lite/services/etc/param/ohos.para" ]
    outputs = [ "$root_out_dir/system/etc/param/ohos.para" ]
  }

  copy("ohos.para.dac") {
    sources = [ "//base/startup/init_lite/services/etc/param/ohos.para.dac" ]
    outputs = [ "$root_out_dir/system/etc/param/ohos.para.dac" ]
  }
  copy("ohos.const") {
    sources =
        [ "//base/startup/init_lite/services/etc/param/ohos_const/ohos.para" ]
    outputs = [ "$root_out_dir/system/etc/param/ohos_const/ohos.para" ]
  }

  copy("ohos.passwd") {
    sources = [ "//base/startup/init_lite/services/etc_lite/passwd" ]
    outputs = [ "$root_out_dir/etc/passwd" ]
  }
  copy("ohos.group") {
    sources = [ "//base/startup/init_lite/services/etc_lite/group" ]
    outputs = [ "$root_out_dir/etc/group" ]
  }

  group("init_lite") {
    deps = [
      ":lite_init",
      ":ohos.const",
      ":ohos.para",
      ":ohos.para.dac",
    ]
    if (ohos_kernel_type == "linux") {
      deps += [
        ":ohos.group",
        ":ohos.passwd",
      ]
Z
zhong_ning 已提交
139 140 141
    }
  }
} else {
H
handyohos 已提交
142
  import("//base/startup/init_lite/begetd.gni")
Z
zhong_ning 已提交
143
  import("//build/ohos.gni")
H
handyohos 已提交
144
  import("//build/ohos/native_stub/native_stub.gni")
M
mamingshuai 已提交
145

Z
zhong_ning 已提交
146
  ohos_executable("init") {
147
    sources = [
X
xionglei6 已提交
148
      "//base/startup/init_lite/interfaces/innerkits/fd_holder/fd_holder_internal.c",
149 150
      "init/adapter/init_adapter.c",
      "init/standard/device.c",
X
xionglei6 已提交
151
      "init/standard/fd_holder_service.c",
152
      "init/standard/init.c",
153
      "init/standard/init_cmdexecutor.c",
154 155
      "init/standard/init_cmds.c",
      "init/standard/init_jobs.c",
S
sun_fan 已提交
156
      "init/standard/init_mount.c",
157 158 159 160
      "init/standard/init_reboot.c",
      "init/standard/init_service.c",
      "init/standard/init_signal_handler.c",
      "init/standard/switch_root.c",
161
    ]
162

163 164 165 166 167 168 169
    modulemgr_sources = [
      "//base/startup/init_lite/interfaces/innerkits/hookmgr/hookmgr.c",
      "//base/startup/init_lite/interfaces/innerkits/modulemgr/modulemgr.c",
      "init/module_engine/init_modulemgr.c",
    ]
    sources += modulemgr_sources

170 171
    sources += init_common_sources

172
    include_dirs = [
Z
zhr758 已提交
173
      "//base/customization/config_policy/interfaces/innerkits/include",
174 175
      "//base/security/access_token/interfaces/innerkits/token_setproc/include",
      "//base/security/access_token/interfaces/innerkits/nativetoken/include",
X
xionglei6 已提交
176
      "//base/startup/init_lite/interfaces/innerkits/sandbox/include",
Z
zhong_ning 已提交
177
      "//base/startup/init_lite/services/include/param",
Z
zhong_ning 已提交
178
      "//base/startup/init_lite/services/include",
179
      "//base/startup/init_lite/services/init/include",
180
      "//base/startup/init_lite/services/init/module_engine/include",
Z
zhong_ning 已提交
181
      "//base/startup/init_lite/services/log",
182
      "//base/startup/init_lite/interfaces/innerkits/include",
X
xionglei6 已提交
183 184 185
      "//base/startup/init_lite/services/loopevent/include",
      "//base/startup/init_lite/interfaces/innerkits/include",
      "//base/startup/init_lite/interfaces/innerkits/fd_holder",
X
xionglei6 已提交
186
      "//base/startup/init_lite/ueventd/include",
187 188 189 190
      "//third_party/cJSON",
      "//third_party/bounds_checking_function/include",
    ]
    deps = [
Z
zhr758 已提交
191
      "//base/customization/config_policy/frameworks/config_policy:configpolicy_util_for_init_static",
192 193
      "//base/security/access_token/interfaces/innerkits/nativetoken:libnativetoken",
      "//base/security/access_token/interfaces/innerkits/token_setproc:libtoken_setproc",
194
      "//base/startup/init_lite/interfaces/innerkits:libfsmanager_static",
X
xionglei6 已提交
195
      "//base/startup/init_lite/interfaces/innerkits/sandbox:libsandbox_static",
Z
zhong_ning 已提交
196
      "//base/startup/init_lite/services/log:init_log",
X
xionglei6 已提交
197
      "//base/startup/init_lite/services/loopevent:loopevent",
M
Mupceet 已提交
198
      "//base/startup/init_lite/services/param:param_init",
X
xionglei6 已提交
199 200
      "//base/startup/init_lite/services/utils:libinit_tools",
      "//base/startup/init_lite/services/utils:libinit_utils",
X
xionglei6 已提交
201
      "//base/startup/init_lite/ueventd:libueventd_ramdisk_static",
202 203 204
      "//third_party/bounds_checking_function:libsec_static",
      "//third_party/cJSON:cjson_static",
    ]
205

206 207 208
    deps += [ "//base/startup/init_lite/services/init/module_engine:libinit_stub_versionscript" ]

    deps += [ "//base/startup/init_lite/services/modules:static_modules" ]
H
handyohos 已提交
209

Q
Qin Fandong 已提交
210 211
    cflags = []

Z
zhong_ning 已提交
212 213 214
    if (use_musl) {
      deps += [
        "//third_party/mksh:sh",
Z
zhong_ning 已提交
215
        "//third_party/toybox:toybox",
Z
zhong_ning 已提交
216 217
      ]
    }
S
sun_fan 已提交
218

Q
Qin Fandong 已提交
219 220 221 222 223 224 225 226 227 228 229 230 231
    if (build_selinux) {
      include_dirs += [
        "//third_party/selinux/libselinux/include/",
        "//base/security/selinux/interfaces/policycoreutils/include/",
      ]
      deps += [
        "//base/security/selinux:libload_policy",
        "//base/security/selinux:librestorecon",
        "//third_party/selinux:libselinux",
      ]
      cflags += [ "-DWITH_SELINUX" ]
    }

M
Mupceet 已提交
232
    defines = [ "PARAM_SUPPORT_TRIGGER" ]
X
xionglei6 已提交
233 234 235 236 237 238 239
    if (param_test) {
      defines += [
        "OHOS_SERVICE_DUMP",
        "INIT_TEST",
      ]
    }

240 241 242 243
    if (target_cpu == "arm64") {
      defines += [ "SUPPORT_64BIT" ]
    }

X
xionglei6 已提交
244
    if (!enable_ramdisk) {
X
xionglei6 已提交
245
      defines += [ "DISABLE_INIT_TWO_STAGES" ]
S
sun_fan 已提交
246
    }
247 248 249
    if (support_jsapi) {
      defines += [ "SUPPORT_PROFILER_HIDEBUG" ]
    }
S
sun_fan 已提交
250

Y
yanghongliang 已提交
251 252 253
    if (defined(product_name) && product_name == "rk3568") {
      defines += [ "PRODUCT_RK" ]
    }
H
handyohos 已提交
254
    version_script = get_label_info(
255
                         "//base/startup/init_lite/services/init/module_engine:libinit_stub_versionscript",
H
handyohos 已提交
256
                         "target_gen_dir") + "/" + get_label_info(
257
                         "//base/startup/init_lite/services/init/module_engine:libinit_stub_versionscript",
H
handyohos 已提交
258
                         "name") + stub_version_script_suffix
X
xionglei6 已提交
259
    defines += [ "_GNU_SOURCE" ]
Z
zhong_ning 已提交
260 261 262
    install_images = [
      "system",
      "updater",
X
xionglei6 已提交
263
      "ramdisk",
Z
zhong_ning 已提交
264
    ]
265
    install_enable = true
Z
zhong_ning 已提交
266
    part_name = "init"
M
mamingshuai 已提交
267 268
  }

Z
zhong_ning 已提交
269 270 271 272
  group("startup_init") {
    deps = [
      ":init",
      ":init_etc",
S
sun_fan 已提交
273
      "//base/startup/init_lite/services/param:param_client",
M
Mupceet 已提交
274
      "//base/startup/init_lite/services/param:param_init",
Z
zhong_ning 已提交
275
    ]
H
handyohos 已提交
276 277 278 279 280 281 282
    if (param_feature_watcher) {
      deps += [
        "//base/startup/init_lite/services/param/watcher:param_watcher",
        "//base/startup/init_lite/services/param/watcher:param_watcher.rc",
        "//base/startup/init_lite/services/param/watcher/sa_profile:param_watcher_profile",
      ]
    }
Z
zhong_ning 已提交
283 284 285
  }

  # init etc files group
Z
zhong_ning 已提交
286
  ohos_prebuilt_etc("init.cfg") {
X
xionglei6 已提交
287
    if (!enable_ramdisk) {
S
sun_fan 已提交
288 289 290 291 292
      source =
          "//base/startup/init_lite/services/etc/init.without_two_stages.cfg"
    } else {
      source = "//base/startup/init_lite/services/etc/init.cfg"
    }
Z
zhong_ning 已提交
293 294 295
    part_name = "init"
  }

296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319
  ohos_prebuilt_etc("misc.cfg") {
    source = "//base/startup/init_lite/services/etc/misc.cfg"
    relative_install_dir = "init"
    part_name = "init"
  }

  ohos_prebuilt_etc("watchdog.cfg") {
    source = "//base/startup/init_lite/services/etc/watchdog.cfg"
    relative_install_dir = "init"
    part_name = "init"
  }

  ohos_prebuilt_etc("console.cfg") {
    source = "//base/startup/init_lite/services/etc/console.cfg"
    relative_install_dir = "init"
    part_name = "init"
  }

  ohos_prebuilt_etc("ueventd.cfg") {
    source = "//base/startup/init_lite/services/etc/ueventd.cfg"
    relative_install_dir = "init"
    part_name = "init"
  }

Z
zhong_ning 已提交
320 321
  ohos_prebuilt_etc("passwd") {
    source = "//base/startup/init_lite/services/etc/passwd"
Z
zhong_ning 已提交
322 323 324 325
    install_images = [
      "system",
      "updater",
    ]
Z
zhong_ning 已提交
326 327 328
    part_name = "init"
  }

S
sun_fan 已提交
329 330
  ohos_prebuilt_etc("group") {
    source = "//base/startup/init_lite/services/etc/group"
Z
zhong_ning 已提交
331 332 333 334
    install_images = [
      "system",
      "updater",
    ]
S
sun_fan 已提交
335 336 337
    part_name = "init"
  }

Z
zhong_ning 已提交
338 339 340 341 342 343 344 345 346 347
  ohos_prebuilt_etc("init.usb.cfg") {
    source = "//base/startup/init_lite/services/etc/init.usb.cfg"
    part_name = "init"
  }

  ohos_prebuilt_etc("init.usb.configfs.cfg") {
    source = "//base/startup/init_lite/services/etc/init.usb.configfs.cfg"
    part_name = "init"
  }

Z
zhong_ning 已提交
348
  ohos_prebuilt_etc("ohos.para") {
S
sun_fan 已提交
349
    source = "//base/startup/init_lite/services/etc/param/ohos.para"
Z
zhong_ning 已提交
350
    part_name = "init"
S
sun_fan 已提交
351 352 353 354 355 356 357
    module_install_dir = "etc/param"
  }

  ohos_prebuilt_etc("ohos.para.dac") {
    source = "//base/startup/init_lite/services/etc/param/ohos.para.dac"
    part_name = "init"
    module_install_dir = "etc/param"
Z
zhong_ning 已提交
358 359
  }

360 361 362 363 364 365
  ohos_prebuilt_etc("ohos_const.para") {
    source = "//base/startup/init_lite/services/etc/param/ohos_const/ohos.para"
    part_name = "init"
    module_install_dir = "etc/param/ohos_const"
  }

X
xionglei6 已提交
366 367 368 369 370
  ohos_prebuilt_etc("boot.group") {
    source = "//base/startup/init_lite/services/etc/device.boot.group.cfg"
    part_name = "init"
  }

X
xionglei6 已提交
371 372 373 374 375
  ohos_prebuilt_etc("charing.group") {
    source = "//base/startup/init_lite/services/etc/device.charing.group.cfg"
    part_name = "init"
  }

L
lnlan 已提交
376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392
  ohos_prebuilt_etc("syscap.para") {
    source =
        "${preloader_output_dir}/${product_name}/system/etc/param/syscap.para"
    module_install_dir = "etc/param/"
    part_name = "init"
  }

  ohos_prebuilt_etc("syscap.json") {
    source = "${preloader_output_dir}/${product_name}/system/etc/syscap.json"
    part_name = "init"
  }

  ohos_prebuilt_etc("systemcapability.json") {
    source = "${preloader_output_dir}/${product_name}/system/etc/SystemCapability.json"
    part_name = "init"
  }

X
xionglei6 已提交
393
  ohos_prebuilt_etc("system-sandbox.json") {
Z
zff 已提交
394 395 396 397 398
    if (target_cpu == "arm64") {
      source = "//base/startup/init_lite/interfaces/innerkits/sandbox/system-sandbox64.json"
    } else {
      source = "//base/startup/init_lite/interfaces/innerkits/sandbox/system-sandbox.json"
    }
X
xionglei6 已提交
399 400 401 402 403
    part_name = "init"
    module_install_dir = "etc/sandbox"
  }

  ohos_prebuilt_etc("chipset-sandbox.json") {
Z
zff 已提交
404 405 406 407 408
    if (target_cpu == "arm64") {
      source = "//base/startup/init_lite/interfaces/innerkits/sandbox/chipset-sandbox64.json"
    } else {
      source = "//base/startup/init_lite/interfaces/innerkits/sandbox/chipset-sandbox.json"
    }
X
xionglei6 已提交
409 410 411 412
    part_name = "init"
    module_install_dir = "etc/sandbox"
  }

X
xionglei6 已提交
413
  ohos_prebuilt_etc("privapp-sandbox.json") {
Z
zff 已提交
414 415 416 417 418
    if (target_cpu == "arm64") {
      source = "//base/startup/init_lite/interfaces/innerkits/sandbox/privapp-sandbox64.json"
    } else {
      source = "//base/startup/init_lite/interfaces/innerkits/sandbox/privapp-sandbox.json"
    }
X
xionglei6 已提交
419 420 421 422 423
    part_name = "init"
    module_install_dir = "etc/sandbox"
  }

  ohos_prebuilt_etc("app-sandbox.json") {
Z
zff 已提交
424 425 426 427 428
    if (target_cpu == "arm64") {
      source = "//base/startup/init_lite/interfaces/innerkits/sandbox/app-sandbox64.json"
    } else {
      source = "//base/startup/init_lite/interfaces/innerkits/sandbox/app-sandbox.json"
    }
X
xionglei6 已提交
429 430
    part_name = "init"
    module_install_dir = "etc/sandbox"
X
xionglei6 已提交
431 432
  }

433 434 435 436 437 438
  ohos_prebuilt_etc("appdata-sandbox.json") {
    source = "//base/startup/appspawn_standard/appdata-sandbox.json"
    part_name = "init"
    module_install_dir = "etc/sandbox"
  }

X
xionglei6 已提交
439 440 441 442
  ohos_prebuilt_etc("init.reboot") {
    source = "//base/startup/init_lite/services/etc/init.reboot.cfg"
    part_name = "init"
    module_install_dir = "etc/init"
X
xionglei6 已提交
443 444
  }

Z
zhong_ning 已提交
445
  group("init_etc") {
Z
zhong_ning 已提交
446
    deps = [
X
xionglei6 已提交
447
      ":app-sandbox.json",
448
      ":appdata-sandbox.json",
X
xionglei6 已提交
449
      ":boot.group",
X
xionglei6 已提交
450
      ":charing.group",
X
xionglei6 已提交
451
      ":chipset-sandbox.json",
452
      ":console.cfg",
Z
zhong_ning 已提交
453
      ":group",
Z
zhong_ning 已提交
454
      ":init.cfg",
X
xionglei6 已提交
455
      ":init.reboot",
Z
zhong_ning 已提交
456 457
      ":init.usb.cfg",
      ":init.usb.configfs.cfg",
458
      ":misc.cfg",
Z
zhong_ning 已提交
459
      ":ohos.para",
S
sun_fan 已提交
460
      ":ohos.para.dac",
461
      ":ohos_const.para",
Z
zhong_ning 已提交
462
      ":passwd",
X
xionglei6 已提交
463
      ":privapp-sandbox.json",
L
lnlan 已提交
464 465
      ":syscap.json",
      ":syscap.para",
X
xionglei6 已提交
466
      ":system-sandbox.json",
L
lnlan 已提交
467
      ":systemcapability.json",
468 469
      ":ueventd.cfg",
      ":watchdog.cfg",
Z
zhong_ning 已提交
470
    ]
M
mamingshuai 已提交
471 472
  }
}