| # 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. |
| |
| # CantripOS Test Applications |
| |
| # NB: these are platform-specific |
| RUST_TARGET := unknown |
| CANTRIP_APP_ARCH := unknown |
| |
| # TODO(jtgans): should include from platforms/${PLATFORM}/platform.mk |
| include $(ROOTDIR)/build/platforms/$(PLATFORM)/cantrip_apps.mk |
| |
| # C apps |
| |
| CANTRIP_SRC_C_APP := $(CANTRIP_SRC_DIR)/apps/c |
| CANTRIP_OUT_C_APP_DEBUG := $(CANTRIP_OUT_DEBUG)/apps/c |
| CANTRIP_OUT_C_APP_RELEASE := $(CANTRIP_OUT_RELEASE)/apps/c |
| |
| $(CANTRIP_OUT_C_APP_DEBUG)/%.elf: $(CANTRIP_SRC_C_APP)/%.c $(CANTRIP_KERNEL_DEBUG) |
| $(MAKE) -C $(dir $<) \ |
| LIBSEL4_SRC=$(SEL4_KERNEL_DIR)/libsel4 \ |
| OUT_CANTRIP=$(CANTRIP_OUT_DEBUG) \ |
| BUILD_ARCH=${CANTRIP_APP_ARCH} \ |
| BUILD_ROOT=$(CANTRIP_OUT_C_APP_DEBUG) \ |
| RUST_TARGET=${RUST_TARGET} \ |
| BUILD_TYPE=debug |
| .PRECIOUS:: $(CANTRIP_OUT_C_APP_DEBUG)/%.elf |
| |
| $(CANTRIP_OUT_C_APP_RELEASE)/%.elf: $(CANTRIP_SRC_C_APP)/%.c $(CANTRIP_KERNEL_RELEASE) |
| $(MAKE) -C $(dir $<) \ |
| LIBSEL4_SRC=$(SEL4_KERNEL_DIR)/libsel4 \ |
| OUT_CANTRIP=$(CANTRIP_OUT_RELEASE) \ |
| BUILD_ARCH=${CANTRIP_APP_ARCH} \ |
| RUST_TARGET=${RUST_TARGET} \ |
| BUILD_ROOT=$(CANTRIP_OUT_C_APP_RELEASE) \ |
| BUILD_TYPE=release |
| .PRECIOUS:: $(CANTRIP_OUT_C_APP_RELEASE)/%.elf |
| |
| # Rust apps |
| |
| CANTRIP_SRC_RUST_APP := $(CANTRIP_SRC_DIR)/apps/rust |
| CANTRIP_OUT_RUST_APP_DEBUG := $(CANTRIP_OUT_DEBUG)/apps/rust |
| CANTRIP_OUT_RUST_APP_RELEASE := $(CANTRIP_OUT_RELEASE)/apps/rust |
| |
| # NB: pass SEL4_DIR for sel4-config to find the kernel |
| |
| $(CANTRIP_OUT_RUST_APP_DEBUG)/%.elf: $(CANTRIP_SRC_RUST_APP)/%.rs $(CANTRIP_KERNEL_DEBUG) |
| $(MAKE) -C $(dir $<) \ |
| OUT_CANTRIP=$(CANTRIP_OUT_DEBUG) \ |
| SEL4_DIR=$(SEL4_KERNEL_DIR) \ |
| BUILD_ARCH=${CANTRIP_APP_ARCH} \ |
| RUST_TARGET=${RUST_TARGET} \ |
| BUILD_ROOT=$(CANTRIP_OUT_RUST_APP_DEBUG) \ |
| BUILD_TYPE=debug |
| .PRECIOUS:: $(CANTRIP_OUT_RUST_APP_DEBUG)/%.elf |
| |
| $(CANTRIP_OUT_RUST_APP_RELEASE)/%.elf: $(CANTRIP_SRC_RUST_APP)/%.rs $(CANTRIP_KERNEL_RELEASE) |
| $(MAKE) -C $(dir $<) \ |
| OUT_CANTRIP=$(CANTRIP_OUT_RELEASE) \ |
| SEL4_DIR=$(SEL4_KERNEL_DIR) \ |
| BUILD_ARCH=${CANTRIP_APP_ARCH} \ |
| RUST_TARGET=${RUST_TARGET} \ |
| BUILD_ROOT=$(CANTRIP_OUT_RUST_APP_RELEASE) \ |
| BUILD_TYPE=release |
| .PRECIOUS:: $(CANTRIP_OUT_RUST_APP_RELEASE)/%.elf |
| |
| ## Build the hello-world C application in debug mode. |
| hello_debug_c: $(CANTRIP_OUT_C_APP_DEBUG)/hello/hello.app |
| ## Build the hello-world C application in release mode. |
| hello_release_c: $(CANTRIP_OUT_C_APP_RELEASE)/hello/hello.app |
| ## Build the hello-world Rust application in debug mode. |
| hello_debug_rust: $(CANTRIP_OUT_RUST_APP_DEBUG)/hello/hello.app |
| ## Build the hello-world Rust application in release mode. |
| hello_release_rust: $(CANTRIP_OUT_RUST_APP_RELEASE)/hello/hello.app |
| ## Build the hello-world C and Rust applications in debug mode. |
| hello_debug: hello_debug_c hello_debug_rust |
| ## Build the hello-world C and Rust applications in release mode. |
| hello_release: hello_release_c hello_release_rust |
| |
| ## Build the fibonacci C application in debug mode. |
| fibonacci_debug_c: $(CANTRIP_OUT_C_APP_DEBUG)/fibonacci/fibonacci.app |
| ## Build the fibonacci C application in release mode. |
| fibonacci_release_c: $(CANTRIP_OUT_C_APP_RELEASE)/fibonacci/fibonacci.app |
| ## Build the fibonacci Rust application in debug mode. |
| fibonacci_debug_rust: $(CANTRIP_OUT_RUST_APP_DEBUG)/fibonacci/fibonacci.app |
| ## Build the fibonacci Rust application in release mode. |
| fibonacci_release_rust: $(CANTRIP_OUT_RUST_APP_RELEASE)/fibonacci/fibonacci.app |
| ## Build the Fibonacci C and Rust applications in debug mode. |
| fibonacci_debug: fibonacci_debug_c fibonacci_debug_rust |
| ## Build the Fibonacci C and Rust applications in release mode. |
| fibonacci_release: fibonacci_release_c fibonacci_release_rust |
| |
| ## Build the keyval Rust application in debug mode. |
| keyval_debug: $(CANTRIP_OUT_RUST_APP_DEBUG)/keyval/keyval.app |
| ## Build the keyval Rust application in release mode. |
| keyval_release: $(CANTRIP_OUT_RUST_APP_RELEASE)/keyval/keyval.app |
| |
| ## Build the logtest Rust application in debug mode. |
| logtest_debug: $(CANTRIP_OUT_RUST_APP_DEBUG)/logtest/logtest.app |
| ## Build the logtest Rust application in release mode. |
| logtest_release: $(CANTRIP_OUT_RUST_APP_RELEASE)/logtest/logtest.app |
| |
| ## Build the mltest Rust application in debug mode. |
| mltest_debug: $(CANTRIP_OUT_RUST_APP_DEBUG)/mltest/mltest.app |
| ## Build the mltest Rust application in release mode. |
| mltest_release: $(CANTRIP_OUT_RUST_APP_RELEASE)/mltest/mltest.app |
| |
| ## Build the panic Rust application in debug mode. |
| panic_debug: $(CANTRIP_OUT_RUST_APP_DEBUG)/panic/panic.app |
| ## Build the panic Rust application in release mode. |
| panic_release: $(CANTRIP_OUT_RUST_APP_RELEASE)/panic/panic.app |
| |
| ## Build the suicide C application in debug mode. |
| suicide_debug: $(CANTRIP_OUT_C_APP_DEBUG)/suicide/suicide.app |
| ## Build the suicide C application in release mode. |
| suicide_release: $(CANTRIP_OUT_C_APP_RELEASE)/suicide/suicide.app |
| |
| ## Build the timer Rust application in debug mode. |
| timer_debug: $(CANTRIP_OUT_RUST_APP_DEBUG)/timer/timer.app |
| ## Build the timer Rust application in release mode. |
| timer_release: $(CANTRIP_OUT_RUST_APP_RELEASE)/timer/timer.app |
| |
| .PHONY:: hello_debug hello_release |
| .PHONY:: fibonacci_debug fibonacci_release |
| .PHONY:: keyval_debug keyval_release |
| .PHONY:: logtest_debug logtest_release |
| .PHONY:: mltest_debug mltest_release |
| .PHONY:: panic_debug panic_release |
| .PHONY:: suicide_debug suicide_release |
| .PHONY:: timer_debug timer_release |