# # Copyright (c) 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_m/liteos.gni") HDF_FRAMEWORKS_PATH = "//drivers/hdf_core/framework" HDF_PERIPHERAL_PATH = "//drivers/peripheral" HDF_ADAPTER_PLATFORM_PATH = "//drivers/hdf_core/adapter/platform" template("hdf_driver") { if (defined(invoker.module_switch)) { forward_variables_from(invoker, [ "module_switch" ]) } else { module_switch = true } if (defined(invoker.macro_switch)) { macro_switch = invoker.macro_switch } else { macro_switch = false } if (!macro_switch && module_switch && defined(invoker.hcs_sources)) { hc_gen_hex("${target_name}_hc_gen_hex") { sources = invoker.hcs_sources } } if (macro_switch && module_switch && defined(invoker.hcs_sources)) { hc_gen_macro("${target_name}_hc_gen_macro") { sources = invoker.hcs_sources outputs = [ "$target_gen_dir/hdf_config_macro.h" ] } } kernel_module(target_name) { if (defined(invoker.special_visibility)) { visibility += invoker.special_visibility } forward_variables_from(invoker, "*", [ "configs", "visibility", ]) if (defined(invoker.configs)) { configs += invoker.configs } if (defined(invoker.visibility)) { visibility += invoker.visibility } if (module_switch && !macro_switch && defined(invoker.hcs_sources)) { hc_gen = ":${target_name}_hc_gen_hex" generated_sources = get_target_outputs(hc_gen) sources_raw = [] if (defined(invoker.sources)) { sources_raw += generated_sources } else { sources_raw = generated_sources } sources = filter_exclude(sources_raw, [ "*.hcb" ]) if (defined(invoker.deps)) { deps += [ hc_gen ] } else { deps = [ hc_gen ] } } if (module_switch && macro_switch && defined(invoker.hcs_sources)) { hc_gen_macro = ":${target_name}_hc_gen_macro" if (defined(invoker.deps)) { deps += [ hc_gen_macro ] } else { deps = [ hc_gen_macro ] } } } } set_defaults("hdf_driver") { configs = [ "$HDFTOPDIR:hdf_config" ] visibility = [ "$HDFTOPDIR:*" ] visibility += [ "//drivers/hdf_core/adapter/*" ] visibility += [ "//drivers/hdf_core/interfaces/*" ] }