# 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
