# Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, # are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, this list of # conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright notice, this list # of conditions and the following disclaimer in the documentation and/or other materials # provided with the distribution. # # 3. Neither the name of the copyright holder nor the names of its contributors may be used # to endorse or promote products derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import("//drivers/hdf_core/framework/tools/hc-gen/hc_gen.gni") import("//kernel/liteos_a/liteos.gni") HDF_FRAMEWORKS_PATH = "//drivers/hdf_core/framework" HDF_PERIPHERAL_PATH = "//drivers/peripheral" HDF_ADAPTERS_PATH = "//drivers/hdf_core/adapter" template("hdf_driver") { if (defined(invoker.module_switch)) { forward_variables_from(invoker, [ "module_switch" ]) } else { module_switch = true } if (module_switch && defined(invoker.hcs_sources) && !defined(invoker.sources)) { hc_gen_hex("${target_name}_hc_gen_hex") { sources = invoker.hcs_sources } } if (module_switch && defined(invoker.hcs_sources) && defined(invoker.sources) && defined(invoker.outputs)) { hc_gen_macro("${target_name}_hc_gen_macro") { sources = invoker.hcs_sources outputs = invoker.outputs } } kernel_module(target_name) { forward_variables_from(invoker, "*", [ "configs", "visibility", ]) if (defined(invoker.configs)) { configs += invoker.configs } if (defined(invoker.visibility)) { visibility += invoker.visibility } if (module_switch && defined(invoker.hcs_sources) && !defined(invoker.sources)) { hc_gen = ":${target_name}_hc_gen_hex" generated_sources = get_target_outputs(hc_gen) sources_raw = generated_sources sources = filter_exclude(sources_raw, [ "*.hcb" ]) if (defined(invoker.deps)) { deps += [ hc_gen ] } else { deps = [ hc_gen ] } } if (module_switch && defined(invoker.hcs_sources) && defined(invoker.sources)) { hc_gen_macro = ":${target_name}_hc_gen_macro" generated_include = get_path_info(get_target_outputs(hc_gen_macro), "dir") if (defined(invoker.include_dirs)) { include_dirs += generated_include } else { include_dirs = generated_include } if (defined(invoker.deps)) { deps += [ hc_gen_macro ] } else { deps = [ hc_gen_macro ] } } } } set_defaults("hdf_driver") { configs = [ "$HDFTOPDIR:hdf_config" ] visibility = [ "$HDFTOPDIR:*" ] }