blob: 295de748d7a5a7cebb670c2610860c70a3789888 [file] [log] [blame] [edit]
# Copyright 2025 The Fuchsia Authors
#
# Use of this source code is governed by a MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT
import("kernel_elf_binary.gni")
# Compile an ELF binary image to be loaded by physload.
#
# This defines a kernel_elf_binary() target that with settings appropriate for
# being a physload module with a `PhysLoadModuleMain` function (as declared in
# "physload.h"). See kernel_elf_binary() for more details.
#
# Parameters
#
# * has_patches
# - Optional: As for kernel_elf_image(), but with the opposite default.
# - Type: bool
# - Default: false
#
# All other parameters are as for kernel_elf_binary().
#
template("physload_module") {
kernel_elf_binary(target_name) {
assert_no_deps = []
deps = []
has_patches = false
forward_variables_from(invoker, "*", [ "target_type" ])
target_type = "loadable_module"
deps += [ "//zircon/kernel/phys:physload.module" ]
assert_no_deps += [ "//zircon/kernel/phys:uart-console" ]
}
}
set_defaults("physload_module") {
# This isn't default_shared_library_configs even though loadable_module()
# defaults to that. The physload modules don't use any _symbolic_ dynamic
# linking, so they can use -fPIE rather than -fPIC in code generation even
# though they are linked as -shared.
configs = default_executable_configs
}