195 lines
5.2 KiB
Makefile
195 lines
5.2 KiB
Makefile
# -*- Makefile -*-
|
|
#
|
|
# DROPS (Dresden Realtime OPerating System) Component
|
|
#
|
|
# Makefile-Template to run tests with Fiasco-UX
|
|
#
|
|
# install.inc is used, see there for further documentation
|
|
|
|
ifeq ($(origin _L4DIR_MK_RUNUX_MK),undefined)
|
|
_L4DIR_MK_RUNUX_MK=y
|
|
|
|
ROLE = runux.mk
|
|
.general.d: $(L4DIR)/mk/runux.mk
|
|
|
|
# set a mode, so binary.inc is satisfied
|
|
MODE ?= l4env
|
|
|
|
# include all Makeconf.locals, define common rules/variables
|
|
include $(L4DIR)/mk/Makeconf
|
|
include $(L4DIR)/mk/binary.inc
|
|
|
|
# if we have a system set, build
|
|
ifneq ($(SYSTEM),)
|
|
|
|
##
|
|
# !WARNING!
|
|
#
|
|
# This is a preliminary test to allow l4check to run Fiasco-UX tests for
|
|
# multiple SYSTEMS. This currently only works for x86.
|
|
ifneq ($(ARCH),x86)
|
|
$(error "$(ROLE) currently does not support $(ARCH).")
|
|
endif
|
|
|
|
# now check if the current API has a FIASCOUX variable set and if so use it
|
|
# XXX could be overloaded by $(OSYSTEM) == $(ARCH)-$(L4API) or $(SYSTEM)
|
|
ifneq ($(FIASCOUX_$(L4API)),)
|
|
FIASCOUX = $(FIASCOUX_$(L4API))
|
|
else
|
|
$(warning "Using generic(?) Fiasco UX "$(FIASCOUX)" to test $(L4API).")
|
|
endif
|
|
|
|
# the testapplication
|
|
# test if variables are set
|
|
ifeq ($(TEST_SERVER),)
|
|
DO_TARGET := no_ptest
|
|
else
|
|
DO_TARGET := ptest
|
|
endif
|
|
# TEST_CLIENT might be empty. Testing server stand-alone
|
|
ifneq ($(TEST_CLIENT),)
|
|
TEST_CLIENT_PARAM = $(addprefix -c ,$(TEST_CLIENT))
|
|
endif
|
|
ifneq ($(BASE_SERVERS),)
|
|
$(warning $(BASE_SERVERS))
|
|
BASESERVERS = $(foreach server, $(BASE_SERVERS), -b $(server) $(BASE_SERVERS_PARAM_$(server)))
|
|
endif
|
|
|
|
# expected output and what to do on mismatch
|
|
EXPECTED_OUT ?= expected.txt
|
|
TIMEOUT ?= 10
|
|
DEBUG_PERL ?= 0
|
|
TMP_OUT ?= tmp_out.txt
|
|
|
|
# specify files to delete when doing 'make clean'
|
|
DEL_ON_CLEAN = $(TMP_OUT) core
|
|
|
|
ifneq ($(DEBUG_PERL),0)
|
|
DEBUG_PERL_ = -v
|
|
else
|
|
DEBUG_PERL_ =
|
|
endif
|
|
|
|
ifneq ($(MEMORY),)
|
|
MEMORY_ = -m $(MEMORY)
|
|
endif
|
|
|
|
ifneq ($(FIASCOUX_PARAM),)
|
|
FIASCOUX_PARAM_ = -p $(FIASCOUX_PARAM)
|
|
endif
|
|
|
|
# allow failure of test
|
|
#
|
|
# If EXPECT_FAIL is set, the test if the output matches must fail, otherwise
|
|
# ptest will return an error.
|
|
ifeq ($(EXPECT_FAIL),1)
|
|
EXPECT_FAIL_ = --expectfail
|
|
else
|
|
EXPECT_FAIL_ =
|
|
endif
|
|
|
|
# do keep ALL output
|
|
#
|
|
# if FILTER_KEEP_ALL is set, the Fiasco UX output is only filtered for escape
|
|
# sequences. All other output is printed into temporary file
|
|
ifeq ($(FILTER_KEEP_ALL),1)
|
|
FILTER_KEEP_ = --filterlevel=0
|
|
else
|
|
FILTER_KEEP_ =
|
|
endif
|
|
|
|
# no framebuffer device
|
|
#
|
|
# If NO_FBUF_DEV is set, Fiasco UX will not open an X window to display
|
|
# graphical output. This is useful for testing graphical applications.
|
|
ifeq ($(NO_FBUF_DEV),1)
|
|
NO_FBUF_DEV_ = --nofb
|
|
else
|
|
NO_FBUF_DEV_ =
|
|
endif
|
|
|
|
# enable symbols and lines per default
|
|
USE_SYMBOLS ?= y
|
|
USE_LINES ?= y
|
|
|
|
ifeq ($(USE_SYMBOLS),y)
|
|
USE_SYMBOLS_ = --symbols
|
|
else
|
|
USE_SYMBOLS_ =
|
|
endif
|
|
ifeq ($(USE_LINES),y)
|
|
USE_LINES_ = --lines
|
|
else
|
|
USE_LINES_ =
|
|
endif
|
|
|
|
all:: $(DO_TARGET)
|
|
|
|
# install.inc eventually defines rules for every target
|
|
include $(L4DIR)/mk/install.inc
|
|
|
|
no_ptest:
|
|
@echo "No test defined, skipping"
|
|
|
|
ptest:: $(EXPECTED_OUT) $(BID_OBJ_Makefile).inc
|
|
$(VERBOSE)echo "Running Fiasco UX to test $(TEST_SERVER)"
|
|
$(VERBOSE)EXPECTED_OUT=$(EXPECTED_OUT) PKGNAME=$(PKGNAME) \
|
|
L4DIR=$(L4DIR) OBJ_BASE=$(OBJ_BASE) TMP_OUT=$(TMP_OUT) \
|
|
COMPARE_CMD=$(COMPARE_CMD) \
|
|
$(L4DIR)/mk/ptest -s $(TEST_SERVER) $(TEST_CLIENT_PARAM) \
|
|
-f $(FIASCOUX) $(FIASCOUX_PARAM_) -t $(TIMEOUT) \
|
|
-O OBJ-$(SYSTEM) \
|
|
$(BASESERVERS) $(DEBUG_PERL_) $(MEMORY_) $(EXPECT_FAIL_) \
|
|
$(FILTER_KEEP_) $(NO_FBUF_DEV_) $(USE_SYMBOLS_) $(USE_LINES_)
|
|
|
|
genexp:: $(EXPECTED_OUT) $(BID_OBJ_Makefile).inc
|
|
|
|
$(EXPECTED_OUT):
|
|
$(VERBOSE)echo "Running Fiasco UX to generate expected output"
|
|
$(VERBOSE)EXPECTED_OUT=$(EXPECTED_OUT) PKGNAME=$(PKGNAME) \
|
|
L4DIR=$(L4DIR) OBJ_BASE=$(OBJ_BASE) TMP_OUT=$(TMP_OUT) \
|
|
COMPARE=$(COMPARE_CMD) \
|
|
$(L4DIR)/mk/ptest -s $(TEST_SERVER) $(TEST_CLIENT_PARAM) \
|
|
-f $(FIASCOUX) $(FIASCOUX_PARAM_) -t $(TIMEOUT) \
|
|
-O OBJ-$(SYSTEM) \
|
|
$(BASESERVERS) $(DEBUG_PERL_) $(MEMORY_) $(EXPECT_FAIL_) \
|
|
$(FILTER_KEEP_) $(NO_FBUF_DEV_) $(USE_SYMBOLS_) $(USE_LINES_) \
|
|
--generate
|
|
$(VERBOSE)touch .expect-autogenerated
|
|
|
|
plainrun:: $(BID_OBJ_Makefile).inc
|
|
$(VERBOSE)echo "Starting Fiasco UX"
|
|
$(VERBOSE)EXPECTED_OUT=$(EXPECTED_OUT) PKGNAME=$(PKGNAME) \
|
|
L4DIR=$(L4DIR) OBJ_BASE=$(OBJ_BASE) TMP_OUT=$(TMP_OUT) \
|
|
COMPARE_CMD=$(COMPARE_CMD) \
|
|
$(L4DIR)/mk/ptest -s $(TEST_SERVER) $(TEST_CLIENT_PARAM) \
|
|
-f $(FIASCOUX) $(FIASCOUX_PARAM_) -t $(TIMEOUT) \
|
|
-O OBJ-$(SYSTEM) \
|
|
$(BASESERVERS) $(DEBUG_PERL_) $(MEMORY_) $(FILTER_KEEP_) \
|
|
$(NO_FBUF_DEV_) $(USE_SYMBOLS_) $(USE_LINES_) --plainrun
|
|
|
|
endif # system defined
|
|
|
|
ptest genexp plainrun:: $(foreach arch,$(TARGET_SYSTEMS),\
|
|
$(OBJ_DIR)/OBJ-$(arch)/$(BID_OBJ_Makefile))
|
|
$(if $(TARGET_SYSTEMS), $(VERBOSE)set -e ; \
|
|
for d in $(TARGET_SYSTEMS) ; do \
|
|
PWD=$(OBJ_DIR)/OBJ-$$d $(MAKE) -C $(OBJ_DIR)/OBJ-$$d -f $(BID_OBJ_Makefile) \
|
|
$@ ; done )
|
|
|
|
.PHONY: all ptest genexp plainrun clean cleanall help no_ptest
|
|
-include $(DEPSVAR)
|
|
|
|
help::
|
|
@echo "Specify a target:"
|
|
@echo "all - run test"
|
|
@echo "test - run test"
|
|
@echo "genexp - generate file with expected output"
|
|
@echo "plainrun - just run binaries (no filter, no comparison)"
|
|
@echo "clean - delete generated intermediate files"
|
|
@echo "cleanall - delete all generated files (include genexp target)"
|
|
@echo "help - this help"
|
|
@echo
|
|
|
|
endif # _L4DIR_MK_RUNUX_MK undefined
|