]> rtime.felk.cvut.cz Git - jenkicar/rpp-simulink.git/blobdiff - Makefile
Change license to MIT
[jenkicar/rpp-simulink.git] / Makefile
index 9edf12b22a220afebb39c518cfedbd1075430cd3..e9e3f4feb6a0c6a07f5302c9afdcbfcca9845f82 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,32 +1,73 @@
-RELEASE_PREFIX = rpp-simulink
 
-include rpp/lib/Makefile.var
+release4eaton:
+       $(MAKE) release RELEASE_TARGET=tms570_hydctr RELEASE_ATTR=eaton
+
+release4us:
+       $(MAKE) release RELEASE_TARGET=tms570_rpp RELEASE_ATTR=
+
+.PHONY: commit-lib-update
+commit-lib-update:
+       test $$($(TESTSW_LIB_COMMIT)) = $$($(SIMULINK_LIB_COMMIT))
+       if git --git-dir=doc/test-sw/.git diff-index --quiet HEAD -- rpp-lib; \
+       then echo "Nothing to commit in test-sw"; \
+       else git --git-dir=doc/test-sw/.git commit -m "Update lib submodule" rpp-lib; \
+       fi
+       git commit  -m "Update lib submodule" doc/test-sw rpp/lib
+
+TESTSW_LIB_COMMIT = git --git-dir=doc/test-sw/rpp-lib/.git rev-parse HEAD
+SIMULINK_LIB_COMMIT = git --git-dir=rpp/lib/.git rev-parse HEAD
+
+
+ifeq ($(or $(release_in_progress),$(MAKECMDGOALS)),release)
+export release_in_progress = release
+
+include rpp/lib/Makefile.var   # for rpp_lib_* variables
 include rpp/lib/common.mk
 
+RELEASE_TARGET = $(error Please set RELEASE_TARGET variable on command line)
+
+include rpp/lib/build/$(RELEASE_TARGET)/Makefile.config
+
+$(eval $(call release_rules,rpp-simulink))
+
 release: $(RELEASE_BASENAME).zip
-       cp rpp/lib/rpp-lib-*.zip .
+       if [ $$($(SIMULINK_LIB_COMMIT)) != $$($(TESTSW_LIB_COMMIT)) ]; then echo >&2 "Library version mismatch"; exit 1; fi
+       cp rpp/lib/$(shell make -C rpp/lib --silent print-release-basename).zip .
        $(MAKE) -C doc/test-sw release
-       cp doc/test-sw/rpp-test-*.zip .
+       cp doc/test-sw/$(shell make -C doc/test-sw --silent print-release-basename).zip .
        cp doc/rpp_simulink.pdf rpp_simulink-$(RELEASE_VERSION).pdf
 
-cp_lib = cd rpp/lib/$(LIB_RELEASE_BASENAME) && cp --parents $(1) ../../../$(@)/rpp/lib/
+RELEASE_LIB_GIT_FILES = \
+       common.mk \
+       Makefile.var \
+       build/$(RELEASE_TARGET)/$(TARGET_CCXML) \
+       build/$(RELEASE_TARGET)/$(TARGET_LDCMD) \
+       build/Makefile.rules \
+       build/Makefile.rules.arm \
+       os/$(rpp_lib_OS)/include/ \
+       rpp/include/
+
+RELEASE_LIB_GEN_FILES = Makefile.config rpp-lib.lib build/gio_names.txt
 
 $(RELEASE_BASENAME):: LIB_RELEASE_BASENAME:=$(shell make -C rpp/lib --silent print-release-basename)
-$(RELEASE_BASENAME):: lib
-# Copy compiled library
-       mkdir -p $@/rpp/lib
-       cp --parents rpp/lib/rpp-lib.lib $@/
-# Copy library headers and linkes scripts
-       $(call cp_lib,rpp/$(rpp_lib_$(TARGET)_LD_SCRIPT))
-       $(call cp_lib,-r rpp/include)
-       $(call cp_lib,-r os/$(rpp_lib_OS)/include)
-       $(call cp_lib,-r lwip/src/include)
-       cp --parents rpp/loadti/$(rpp_lib_$(TARGET)_TARGET_CFG) $@/
+$(RELEASE_BASENAME):: release-lib
+# Copy library headers and binaries
+       git --git-dir=rpp/lib/.git archive --worktree-attributes --prefix=$@/rpp/lib/ HEAD $(RELEASE_LIB_GIT_FILES) | tar xf -
+ifneq ($(filter lwip/src/include,$(rpp_lib_INCLUDES)),)
+       git --git-dir=rpp/lib/lwip/.git archive --worktree-attributes --prefix=$@/rpp/lib/lwip/ HEAD src/include/ | tar xf -
+endif
+       cp --parents  $(RELEASE_LIB_GEN_FILES:%=rpp/lib/%) $@/
 # Compile and include the PDF documentation
        $(MAKE) -C doc
        mkdir -p $@/doc
        cp doc/rpp_simulink.pdf $@/doc
 
-lib:
-       $(MAKE) -C rpp/lib/Release # Compile the lib
-       $(MAKE) -C rpp/lib release # Create release zip and directory
+release-lib:
+# Compile the lib
+       $(MAKE) -C rpp/lib/build/$(RELEASE_TARGET)/Release
+# Create release zip and directory. Note that this also setups ignored
+# files, which is required for correct function of $(RELEASE_BASENAME)
+# target.
+       $(MAKE) -C rpp/lib release
+
+endif # release