Files
bacnet_stack/test/Makefile
T
Kari Argillander 0177c59f4a Use pre-commit and editorconfig (#753)
* Add editorconfig and pre-commit config

Editorconfig is widly used and supported file. It says basic things how
files should be formatted.

pre-commit is tool which can automatically check some basic checks like
code formatting everytime someone makes commit. This can also be used in
CI to run these things. Then it is very easy to do same things locally
as in CI. This also makes easy to select clang-format version so
everyone is using same one.

* clang-format: Ignore folders where are external code

We should not format external code. Add clang-format files to exclude
those. We should move external code always to example external/ folder
so we can exclude those more easily.

* clang-format: Remove custom zephyr/.clang-gormat

This clang-format file where introduces before our root clang-format. It
does not make sense anymore as we have root clang-format. Removing this
will unifie formatting in whole repo.

* clang-format: Add couple new rules

Add couple new formatting rules.

Always align const to left side. We did have only one place where it was
right side so this make sense as it is already rule for us.

I choose also insertbraces becuase when I run this I notice that we have
lot of multiline code without braces. So very error prone places. This
will take error possibility away. Repo also always use braces even with
single line statments so this does not matter much.

* ci: Add pre-commit validation

Validate pre-commit in CI.

* format: Convert spaces to tabs in Makefiles

Makefile normally use tabs. We enforce that with editorconfig. Fix
couple places where spaces where still in use.

---------

Co-authored-by: Kari Argillander <kari.argillander@fidelix.com>
2024-08-28 17:04:00 -05:00

87 lines
2.2 KiB
Makefile

# Main Makefile for BACnet-stack applications, tests, and sample ports
# Export the variables defined here to all subprocesses
# (see http://www.gnu.org/software/automake/manual/make/Special-Targets.html)
.EXPORT_ALL_VARIABLES:
# all: demos router-ipv6 ${DEMO_LINUX}
.PHONY: all
all: test
BUILD_DIR=build
CTEST_OPTIONS := --quiet --output-on-failure
CTEST_OPTIONS += --output-junit test-results.xml
# determine the compile environment name
ifeq ($(OS),Windows_NT)
SYS := $(shell gcc -dumpmachine)
ifneq (, $(findstring mingw, $(SYS)))
UNAME_S := MinGW
else ifneq (, $(findstring cygwin, $(SYS)))
UNAME_S := Cygwin
else
UNAME_S := Windows
endif
else
UNAME_S := $(shell uname -s)
UNAME_S := $(patsubst BSD%,BSD,$(UNAME_S))
endif
# unlimited parallel makefile jobs can
# overwhelm builders with limited resources
# set job limits based on number of core processors
ifeq (${JOBS},)
ifeq ($(UNAME_S),Windows)
JOBS = "-j %NUMBER_OF_PROCESSORS%"
endif
ifeq ($(UNAME_S),Linux)
JOBS = "-j $(shell nproc)"
endif
ifeq ($(UNAME_S),Darwin)
JOBS = "-j $(sysctl -n hw.ncpu)"
endif
ifeq ($(UNAME_S),BSD)
JOBS = "-j $(sysctl -n hw.ncpu)"
endif
ifeq ($(UNAME_S),MinGW)
JOBS = "-j"
endif
endif
.PHONY: test
test:
[ -d $(BUILD_DIR) ] || mkdir -p $(BUILD_DIR)
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake .. && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . $(JOBS) --clean-first && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && ctest $(CTEST_OPTIONS)
[ -d $(BUILD_DIR) ] && $(MAKE) -C $(BUILD_DIR) lcov
.PHONY: retest
retest:
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . $(JOBS) && cd ..
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && ctest $(CTEST_OPTIONS)
[ -d $(BUILD_DIR) ] && $(MAKE) -C $(BUILD_DIR) lcov
.PHONY: report
report:
[ -d $(BUILD_DIR) ] && cat $(BUILD_DIR)/Testing/Temporary/LastTest*.log
.PHONY: rebuild
rebuild:
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . --clean-first && cd ..
.PHONY: env
env:
@echo "Makefile environment variables"
@echo "UNAME_S=$(UNAME_S)"
@echo "JOBS=$(JOBS)"
@echo "MAKEFLAGS=$(MAKEFLAGS)"
@echo "CTEST_OPTIONS=$(CTEST_OPTIONS)"
@echo "BUILD_DIR=$(BUILD_DIR)"
.PHONY: clean
clean:
-rm -rf $(BUILD_DIR)