ud3tn/Makefile

226 lines
6.6 KiB
Makefile
Raw Permalink Normal View History

###############################################################################
# Default Commands
###############################################################################
.PHONY: all
all: posix
.PHONY: ud3tn
ud3tn: posix
.PHONY: clean
clean::
$(RM) -rf build/
###############################################################################
# Execution and Deployment
###############################################################################
.PHONY: run-posix
run-posix: posix
build/posix/ud3tn
.PHONY: run-unittest-posix
run-unittest-posix: unittest-posix
build/posix/testud3tn
.PHONY: run-unittest-posix-with-coverage
run-unittest-posix-with-coverage:
$(MAKE) run-unittest-posix coverage=yes && geninfo build/posix -b . -o ./coverage1.info && genhtml coverage1.info -o build/coverage && echo "Coverage report has been generated in 'file://$$(pwd)/build/coverage/index.html'"
###############################################################################
# Tools
###############################################################################
.PHONY: gdb-posix
gdb-posix: posix
$(TOOLCHAIN_POSIX)gdb build/posix/ud3tn
.PHONY: aap2-proto-headers
aap2-proto-headers:
python3 external/nanopb/generator/nanopb_generator.py -Icomponents --output-dir=generated --error-on-unmatched aap2/aap2.proto
protoc -Icomponents/aap2 --python_out=python-ud3tn-utils/ud3tn_utils/aap2/generated/ aap2.proto
.PHONY: storage-agent-proto-headers
storage-agent-proto-headers:
python3 external/nanopb/generator/nanopb_generator.py -Icomponents --output-dir=generated --error-on-unmatched agents/storage/storage_agent.proto
protoc -Icomponents/agents/storage --python_out=python-ud3tn-utils/ud3tn_utils/storage_agent/generated/ storage_agent.proto
###############################################################################
# Docs
###############################################################################
.PHONY: pandoc-gen-doc
pandoc-gen-doc:
pandoc --from man --to gfm+definition_lists --shift-heading-level-by 1 --output doc/references/manpage.md doc/ud3tn.1
.PHONY: protoc-gen-doc
protoc-gen-doc:
protoc --doc_out=doc/references/protobuf --doc_opt=doc/references/protobuf/protoc-gen-doc-markdown.tmpl,index.md components/aap2/aap2.proto components/agents/storage/storage_agent.proto
.PHONY: doc
doc: pandoc-gen-doc protoc-gen-doc
mkdocs build --site-dir result/
###############################################################################
# Tests
###############################################################################
.PHONY: integration-test
integration-test:
pytest test/integration
.PHONY: integration-test-tcpspp
integration-test-tcpspp:
CLA=tcpspp pytest test/integration
.PHONY: integration-test-tcpcl
integration-test-tcpcl:
CLA=tcpcl pytest test/integration
.PHONY: integration-test-mtcp
integration-test-mtcp:
CLA=mtcp pytest test/integration
# Directory for the virtual Python envionment
VENV := .venv
ifeq "$(verbose)" "yes"
PIP = pip
else
PIP = pip -q
GET_PIP += > /dev/null
endif
.PHONY: virtualenv
virtualenv:
@echo "Create virtualenv in $(VENV)/ ..."
@python3 -m venv $(VENV)
@echo "Install/update dependencies..."
. $(VENV)/bin/activate && $(MAKE) update-virtualenv
@echo
@echo "=> To activate the virtualenv, source $(VENV)/bin/activate"
@echo " or use environment-setup tools like"
@echo " - virtualenv"
@echo " - virtualenvwrapper"
@echo " - direnv"
.PHONY: update-virtualenv
update-virtualenv:
@echo "Update pip..."
$(PIP) install -U pip
@echo "Install local dependencies to site-packages..."
$(PIP) install -e ./pyd3tn
$(PIP) install -e ./python-ud3tn-utils
@echo "Install additional dependencies ..."
$(PIP) install -U -r ./test/integration/requirements.txt
$(PIP) install -U -r ./tools/analysis/requirements.txt
###############################################################################
# Code Quality Tests (and Release Tool)
###############################################################################
.PHONY: check-style
check-style:
bash ./tools/analysis/stylecheck.sh
.PHONY: clang-check-posix
clang-check-posix: ccmds-posix
bash ./tools/analysis/clang-check.sh clang-check "posix"
.PHONY: clang-tidy-posix
clang-tidy-posix: ccmds-posix
bash ./tools/analysis/clang-check.sh "clang-tidy --use-color" "posix"
###############################################################################
# Flags
###############################################################################
-include config.mk
CPPFLAGS += -Wall
ifeq "$(type)" "release"
CPPFLAGS += -O2
else
CPPFLAGS += -g -O0 -DDEBUG
endif
ifneq "$(wextra)" "no"
ifeq "$(wextra)" "all"
CPPFLAGS += -Wextra -Wconversion -Wundef -Wshadow -Wsign-conversion -Wformat-security
else
CPPFLAGS += -Wextra -Wno-error=extra -Wno-unused-parameter
ifneq ($(TOOLCHAIN),clang)
CPPFLAGS += -Wno-override-init -Wno-unused-but-set-parameter
endif
endif
endif
ifeq "$(werror)" "yes"
CPPFLAGS += -Werror
endif
ifneq "$(verbose)" "yes"
Q := @
quiet := quiet_
MAKEFLAGS += --no-print-directory
endif
ifeq "$(sanitize-strict)" "yes"
sanitize ?= yes
ARCH_FLAGS += -fno-sanitize-recover=address,undefined
ifeq "$(TOOLCHAIN)" "clang"
ARCH_FLAGS += -fno-sanitize-recover=unsigned-integer-overflow,implicit-conversion,local-bounds
endif
endif
ifeq "$(sanitize)" "yes"
ARCH_FLAGS += -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined
ifeq "$(TOOLCHAIN)" "clang"
ARCH_FLAGS += -fsanitize=unsigned-integer-overflow,implicit-conversion,local-bounds
endif
else
ifeq "$(TOOLCHAIN)" "clang"
ifeq "$(sanitize)" "memory"
ARCH_FLAGS += -fsanitize=memory -fsanitize-memory-track-origins
ifeq "$(sanitize-strict)" "yes"
ARCH_FLAGS += -fno-sanitize-recover=memory
endif
endif
ifeq "$(sanitize)" "thread"
ARCH_FLAGS += -fsanitize=thread
ifeq "$(sanitize-strict)" "yes"
ARCH_FLAGS += -fno-sanitize-recover=thread
endif
endif
endif
endif
ifeq "$(coverage)" "yes"
ARCH_FLAGS += --coverage
endif
###############################################################################
# uD3TN-Builds
###############################################################################
.PHONY: posix posix-lib posix-all data-decoder aap2sendfile aap2recvfile unittest-posix ccmds-posix
PLATFORM ?= posix
include mk/$(PLATFORM).mk
include mk/build.mk
posix: build/posix/ud3tn
posix-lib: build/posix/libud3tn.so build/posix/libud3tn.a
posix-all: posix posix-lib
data-decoder: build/posix/ud3tndecode
aap2sendfile: build/posix/aap2sendfile
aap2recvfile: build/posix/aap2recvfile
unittest-posix: build/posix/testud3tn
ccmds-posix: build/posix/compile_commands.json