64 lines
2.0 KiB
Makefile
64 lines
2.0 KiB
Makefile
CUR_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
|
PROJECT_DIR := $(realpath $(CUR_DIR)/../)
|
|
|
|
TEST_SUITES := empty hello_world malloc file getpid spawn pipe time
|
|
BUILD_TEST_SUITES := $(TEST_SUITES:%=%)
|
|
RUN_TEST_SUITES := $(TEST_SUITES:%=test-%)
|
|
CLEAN_TEST_SUITES := $(TEST_SUITES:%=clean-%)
|
|
|
|
# Use echo program instead of built-in echo command in shell. This ensures
|
|
# that echo can recognize escaped sequences (with -e argument) regardless of
|
|
# the specific shell (e.g., bash, zash, etc.)
|
|
ECHO := /bin/echo -e
|
|
# Shell escaped sequences for colorful output
|
|
CYAN := \033[1;36m
|
|
GREEN := \033[1;32m
|
|
RED := \033[1;31m
|
|
NO_COLOR := \033[0m
|
|
|
|
.PHONY: all build test clean $(BUILD_TEST_SUITES) $(RUN_TEST_SUITES) $(CLEAN_TEST_SUITES)
|
|
|
|
#############################################################################
|
|
# Build tests
|
|
#############################################################################
|
|
|
|
all: build
|
|
|
|
build: $(BUILD_TEST_SUITES)
|
|
|
|
$(BUILD_TEST_SUITES): %:
|
|
@$(ECHO) "$(CYAN)BUILD TEST => $@$(NO_COLOR)"
|
|
@$(MAKE) --no-print-directory -C $@
|
|
@$(ECHO) "$(GREEN)DONE$(NO_COLOR)"
|
|
|
|
#############################################################################
|
|
# Run tests
|
|
#############################################################################
|
|
|
|
test: build $(RUN_TEST_SUITES)
|
|
|
|
pal: $(PROJECT_DIR)/src/pal/pal
|
|
@cp $< pal
|
|
|
|
libocclum.signed.so: $(PROJECT_DIR)/src/libos/libocclum.signed.so
|
|
@cp $< libocclum.signed.so
|
|
|
|
$(RUN_TEST_SUITES): test-%: % pal libocclum.signed.so
|
|
@$(ECHO) "$(CYAN)RUN TEST => $<$(NO_COLOR)"
|
|
@$(MAKE) --no-print-directory -C $< test ; \
|
|
if [ $$? -eq 0 ] ; then \
|
|
$(ECHO) "$(GREEN)PASS$(NO_COLOR)" ; \
|
|
else \
|
|
$(ECHO) "$(RED)FAILED$(NO_COLOR)" ; \
|
|
fi ;
|
|
|
|
#############################################################################
|
|
# Misc
|
|
#############################################################################
|
|
|
|
clean: $(CLEAN_TEST_SUITES)
|
|
@$(RM) -f pal libocclum.signed.so
|
|
|
|
$(CLEAN_TEST_SUITES): clean-%:
|
|
@$(MAKE) --no-print-directory -C $(patsubst clean-%,%,$@) clean
|