blob: f5457bc6d84fb7a5742bc8725257877e3f0faedb [file] [log] [blame]
# Copyright 2020 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.
SHELL := $(shell which /bin/bash)
ifeq ($(ROOTDIR),)
$(error $$ROOTDIR IS NOT DEFINED -- don\'t forget to source setup.sh)
endif
.DEFAULT_GOAL := simulate
include $(ROOTDIR)/build/preamble.mk
include $(ROOTDIR)/build/toolchain.mk
include $(ROOTDIR)/build/cantrip.mk
include $(ROOTDIR)/build/cantrip_tools.mk
include $(ROOTDIR)/build/cantrip_apps.mk
include $(ROOTDIR)/build/cantrip_builtins.mk
include $(ROOTDIR)/build/cantrip_sel4test.mk
include $(ROOTDIR)/build/cantrip_tests.mk
include $(ROOTDIR)/build/minisel.mk
include $(ROOTDIR)/build/flatbuffers.mk
include $(ROOTDIR)/build/spike.mk
include $(ROOTDIR)/build/verilator.mk
include $(ROOTDIR)/build/platforms/$(PLATFORM)/platform.mk
## Installs build prerequisites
#
# This installs a series of typical Linux tools needed to build the whole of the
# shodan system.
prereqs: $(ROOTDIR)/scripts/install-prereqs.sh \
$(ROOTDIR)/scripts/python-requirements.txt \
${CANTRIP_PLATFORM_PYTHON_DEPS} \
${CANTRIP_PLATFORM_APT_DEPS}
$(ROOTDIR)/scripts/install-prereqs.sh \
-p "$(ROOTDIR)/scripts/python-requirements.txt \
${CANTRIP_PLATFORM_PYTHON_DEPS}" \
-a "${CANTRIP_PLATFORM_APT_DEPS}"
$(OUT):
@mkdir -p $(OUT)
## Installs the RISCV compiler and emulator tooling
#
# This includes Rust, GCC, CLANG, verilator, qemu, and renode.
#
# Output is placed in cache/ and out/host.
tools:: install_rust install_gcc install_llvm install_kelvin renode qemu
## Cleans the entire system
#
# This amounts to an `rm -rf out/` and removes all build artifacts.
clean::
rm -rf $(OUT)
.PHONY:: prereqs clean cantrip simulate tools