| # Copyright 2022 Google LLC |
| # |
| # 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. |
| |
| SPRINGBOK_BUILD_DIR := $(OUT)/springbok/rvv |
| SPRINGBOK_SRC_DIR := $(ROOTDIR)/sw/vec |
| SPRINGBOK_BUILD_SCALAR_DIR := $(OUT)/springbok/scalar |
| SPRINGBOK_BUILD_FOR_TBM_DIR := $(OUT)/springbok/rvv_for_tbm |
| |
| $(SPRINGBOK_BUILD_DIR)/build.ninja: |
| cmake -B $(SPRINGBOK_BUILD_DIR) -GNinja $(SPRINGBOK_SRC_DIR) |
| |
| # Set up BUILD_SIMPLIFIELD_CORE CMake option to remove usages of unimplemented |
| # ISA extentions, such as f-ext. |
| $(SPRINGBOK_BUILD_SCALAR_DIR)/build.ninja: |
| cmake -B $(SPRINGBOK_BUILD_SCALAR_DIR) -GNinja \ |
| -DBUILD_SIMPLIFIED_CORE=ON \ |
| $(SPRINGBOK_SRC_DIR) |
| |
| $(SPRINGBOK_BUILD_FOR_TBM_DIR)/build.ninja: |
| cmake -B $(SPRINGBOK_BUILD_FOR_TBM_DIR) -GNinja \ |
| -DBUILD_FOR_TBM=ON \ |
| $(SPRINGBOK_SRC_DIR) |
| |
| ## Vector core BSP and RVV test code |
| # |
| # This target builds the springbok BSP as well as the associated vector test |
| # code. Source code is in sw/vec, while output is placed in out/springbok/rvv. |
| springbok: $(SPRINGBOK_BUILD_DIR)/build.ninja |
| cmake --build $(SPRINGBOK_BUILD_DIR) |
| |
| test_springbok: springbok |
| cd $(SPRINGBOK_BUILD_DIR) && ctest -j 16 |
| |
| ## Springbok test code with simplified configuration |
| # |
| # This target builds the springbok SW artifacts with scalar-only configuration. |
| # Source code is in sw/vec, while the output is placed in out/springbok/scalar. |
| springbok_simplified: $(SPRINGBOK_BUILD_SCALAR_DIR)/build.ninja |
| cmake --build $(SPRINGBOK_BUILD_SCALAR_DIR) |
| |
| ## Similar to 'springbok', but build the vector tests for TBM (i.e. shorter). |
| # |
| # For dev only, no need to added this to CI. |
| # The tests will use only one AVL value (17). |
| springbok_for_tbm: $(SPRINGBOK_BUILD_FOR_TBM_DIR)/build.ninja |
| cmake --build $(SPRINGBOK_BUILD_FOR_TBM_DIR) |
| |
| springbok_clean: |
| rm -rf $(SPRINGBOK_BUILD_DIR) |
| |
| springbok_simplified_clean: |
| rm -rf $(SPRINGBOK_BUILD_SCALAR_DIR) |
| |
| springbok_for_tbm_clean: |
| rm -rf $(SPRINGBOK_BUILD_FOR_TBM_DIR) |
| |
| .PHONY:: springbok springbok_clean test_springbok springbok_simplified springbok_simplified_clean springbok_for_tbm springbok_for_tbm_clean |