-# This makefile tries to build all RPP projects in this repository.
+# Copyright (C) 2013-2015 Czech Technical University in Prague
+#
+# Authors:
+# - Michal Sojka <sojkam1@fel.cvut.cz>
+#
+# This document contains proprietary information belonging to Czech
+# Technical University in Prague. Passing on and copying of this
+# document, and communication of its contents is not permitted
+# without prior written authorization.
+#
+# File : Makefile
+# Abstract:
+# This makefile tries to build all RPP projects in this repository.
-SUBDIRS = Debug POSIX apps/rpp-test-suite/Debug #apps/rpp-test-suite_posix/Debug
+TARGETS=$(sort $(notdir $(patsubst %/,%,$(dir $(wildcard build/*/Makefile.config)))))
+
+SUBDIRS = $(foreach t,$(TARGETS),build/$(t)/Debug build/$(t)/apps/helloworld build/$(t)/apps/rpp-test-suite)
subdir-targets = $(SUBDIRS:%=subdir-%)
all: $(subdir-targets)
+print-targets:
+ @echo "Building for targets: $(TARGETS)"
+
clean: $(subdir-targets)
lib: # Build only the library
- $(MAKE) -C Debug
+ $(MAKE) -C build/tms570_hydctr/Debug
+
+doc: # Build API documentation (Doxygen)
+ $(MAKE) -C rpp/doc/api/
.PHONY: all clean lib
-subdir-%:
- $(MAKE) -C $* $(MAKECMDGOALS)
+# Multiple submakes are invoked in the same directory - e.g.
+# rpp-test-suite/Debug/GNUmakefile invokes Debug/GNUmakefile. We don't
+# want these targets to be invoked twice so we forbid parallel
+# invocation in this Makefile. Note that the submakes still run in
+# parallel.
+.NOTPARALLEL:
+
+subdir-build/%: print-targets
+ $(MAKE) -C $(@:subdir-%=%) $(MAKECMDGOALS)
+
+
+UNCRUSTIFY_FILES = $(shell git ls-files|git check-attr --stdin uncrustify|awk -F: '/uncrustify: set$$/ {print $$1}')
+UNCRUSTIFY_CFG = etc/uncrustify.cfg
+define UNCRUSTIFY_ALL
+$(foreach i,$(UNCRUSTIFY_FILES),git show HEAD:$i | uncrustify -c $(UNCRUSTIFY_CFG) -o $i
+)
+endef
+
+# Usage: Run 'make uncrustify' and then 'git add -p' to commit the
+# changes you agree with.
+uncrustify:
+ git diff --quiet # Check that the tree is clean
+ $(UNCRUSTIFY_ALL)
+
+
+include common.mk
+
+$(eval $(call release_rules,rpp-lib))
+release: $(RELEASE_BASENAME).zip
-# TODO
-# test-suite-posix:
-# $(MAKE) -C apps/rpp-test-suite_posix/Debug
+$(RELEASE_BASENAME)::
+# lwIP
+ git --git-dir=lwip/.git archive --prefix=$@/lwip/ $(RELEASE_COMMIT) | tar xf -
+# API doc
+ rm -rf rpp/doc/api/html
+ $(MAKE) -C rpp/doc/api
+ mkdir -p $@/rpp/doc/api/html
+ cp -rT rpp/doc/api/html $@/rpp/doc/api/html