| # 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/verilator.mk |
| |
| include $(ROOTDIR)/build/platforms/$(PLATFORM)/platform.mk |
| |
| prereqs_apt: $(ROOTDIR)/scripts/install-prereqs.sh \ |
| ${PLATFORM_APT_DEPS} |
| $(ROOTDIR)/scripts/install-prereqs.sh \ |
| -a "${PLATFORM_APT_DEPS}" |
| |
| prereqs_py: $(ROOTDIR)/scripts/install-prereqs.sh \ |
| $(ROOTDIR)/scripts/python-requirements.txt ${PLATFORM_PYTHON_DEPS} |
| $(ROOTDIR)/scripts/install-prereqs.sh \ |
| -p "$(ROOTDIR)/scripts/python-requirements.txt ${PLATFORM_PYTHON_DEPS}" |
| |
| ## Installs build prerequisites |
| # |
| # This installs a series of typical Linux tools needed to build the whole of the |
| # shodan system. |
| prereqs:: prereqs_apt prereqs_py |
| |
| $(OUT): |
| @mkdir -p $(OUT) |
| |
| ## Installs the RISCV compiler and emulator tooling |
| # |
| # This includes Rust, GCC, CLANG, verilator, and renode. |
| # |
| # Output is placed in cache/ and out/host. |
| tools:: install_rust install_gcc install_llvm install_kelvin renode |
| |
| ## Cleans the entire system |
| # |
| # This amounts to an `rm -rf out/` and removes all build artifacts. |
| clean:: |
| rm -rf $(OUT) |
| |
| .PHONY:: prereqs prereqs_apt prereqs_py clean cantrip simulate tools |