X-Git-Url: http://rtime.felk.cvut.cz/gitweb/pes-rpp/rpp-lib.git/blobdiff_plain/7620bd277ac6367b09581d47ca08bdf80743430f..4f60ce7f8f6ca73e52a658914d27c0e4bf5049b4:/Makefile diff --git a/Makefile b/Makefile index 5f13aac..62551c7 100644 --- a/Makefile +++ b/Makefile @@ -1,35 +1,73 @@ -# This makefile tries to build all RPP projects by calling various -# Eclipse commands from command line. +# Copyright (C) 2013-2015 Czech Technical University in Prague # -# See http://processors.wiki.ti.com/index.php/Projects_-_Command_Line_Build/Create -# and https://bugs.eclipse.org/bugs/show_bug.cgi?id=186847 +# Authors: +# - Michal Sojka +# +# 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. -ECLIPSE=/opt/ti/ccsv5/eclipse/eclipse +TARGETS=$(sort $(notdir $(patsubst %/,%,$(dir $(wildcard build/*/Makefile.config))))) -all: +SUBDIRS = $(foreach t,$(TARGETS),build/$(t)/Debug build/$(t)/apps/helloworld build/$(t)/apps/rpp-test-suite) -.workspace: - mkdir .workspace +subdir-targets = $(SUBDIRS:%=subdir-%) -define build_ccs -all: $1 -$1: .workspace - $(ECLIPSE) -noSplash -data .workspace -application com.ti.ccstudio.apps.projectImport -ccs.location $(CURDIR)/apps/$1 - $(ECLIPSE) -noSplash -data .workspace -application com.ti.ccstudio.apps.projectBuild -ccs.projects $1 -endef +all: $(subdir-targets) + +print-targets: + @echo "Building for targets: $(TARGETS)" + +clean: $(subdir-targets) + +lib: # Build only the library + $(MAKE) -C build/tms570_hydctr/Debug + +doc: # Build API documentation (Doxygen) + $(MAKE) -C rpp/doc/api/ -define build_cdt -all: $1 -$1: .workspace - $(ECLIPSE) -noSplash -data .workspace -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import $(CURDIR)/apps/$1 - $(ECLIPSE) -noSplash -data .workspace -application org.eclipse.cdt.managedbuilder.core.headlessbuild -build $1 +.PHONY: all clean lib + +# 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 -$(eval $(call build_ccs,rpp-lib)) -$(eval $(call build_ccs,rpp-test-suite)) +# 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 build_cdt,rpp-lib_posix)) -$(eval $(call build_cdt,rpp-test-suite_posix)) +$(eval $(call release_rules,rpp-lib)) +release: $(RELEASE_BASENAME).zip -ccs-help: .workspace - $(ECLIPSE) -noSplash -data .workspace -application com.ti.ccstudio.apps.projectBuild -ccs.help +$(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