| # Copyright 2023 The Pigweed Authors |
| # |
| # 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 |
| # |
| # https://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. |
| |
| # BUILD.bazel file for stm32xxx_hal_driver. |
| |
| # buildifier: disable=module-docstring |
| # Must point to a cc_library exposing a header named stm32f4xx_hal_conf.h (or |
| # similar for other families) that contains the HAL configuration |
| label_flag( |
| name = "hal_config", |
| build_setting_default = ":unspecified", |
| ) |
| |
| # May point to a non-default implementation of timebase. |
| label_flag( |
| name = "timebase", |
| build_setting_default = ":default_timebase", |
| ) |
| |
| # Should point to the corresponding cmsis_device library. Hidden behind a label |
| # flag so that it can be overriden in projects that build for more than one |
| # family of STM processors. |
| label_flag( |
| name = "cmsis_device", |
| build_setting_default = "@cmsis_device", |
| ) |
| |
| label_flag( |
| name = "cmsis_init", |
| build_setting_default = "@cmsis_device//:default_cmsis_init", |
| ) |
| |
| # Special target used as a default value of the hal_config label_flag. It's not |
| # compatible with any platform: To use Pigweed's STM32Cube integration, you |
| # must provide a hal_config. |
| cc_library( |
| name = "unspecified", |
| target_compatible_with = ["@platforms//:incompatible"], |
| ) |
| |
| _DISABLED_WARNINGS = [ |
| "-Wno-unused-parameter", |
| "-Wno-redundant-decls", |
| "-Wno-sign-compare", |
| "-Wno-undef", |
| "-Wno-implicit-function-declaration", |
| "-Wno-switch-enum", |
| ] |
| |
| cc_library( |
| name = "default_timebase", |
| srcs = glob(["Src/*_hal_timebase_tim_template.c"]), |
| copts = _DISABLED_WARNINGS, |
| deps = [":hal_driver_without_timebase"], |
| ) |
| |
| cc_library( |
| name = "hal_driver", |
| copts = _DISABLED_WARNINGS, |
| deps = [ |
| ":hal_driver_without_timebase", |
| ":timebase", |
| ], |
| ) |
| |
| cc_library( |
| name = "hal_driver_without_timebase", |
| srcs = glob( |
| [ |
| "Src/*.c", |
| "Src/Legacy/*.c", |
| ], |
| exclude = ["Src/*_template.c"], |
| ), |
| copts = _DISABLED_WARNINGS, |
| deps = [ |
| ":cmsis_device", |
| ":cmsis_init", |
| ":hal_headers", |
| ], |
| ) |
| |
| cc_library( |
| name = "hal_headers", |
| hdrs = glob( |
| [ |
| "Inc/*.h", |
| "Inc/Legacy/*.h", |
| ], |
| exclude = [ |
| # Excluded because implementers may want to override this template. |
| "Inc/*_hal_conf_template.h", |
| ], |
| ), |
| copts = _DISABLED_WARNINGS, |
| defines = [ |
| "USE_HAL_DRIVER", |
| ], |
| includes = [ |
| "Inc", |
| "Inc/Legacy", |
| ], |
| deps = [ |
| ":cmsis_device", |
| ":hal_config", |
| ], |
| ) |