Updates docs for SR1 with final revision
[genesis.git] / fuel / build / cache.mk
1 #############################################################################
2 # Copyright (c) 2015 Ericsson AB and others.
3 # stefan.k.berg@ericsson.com
4 # jonas.bjurel@ericsson.com
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
10
11 SHELL = /bin/bash
12 CACHEVALIDATE := $(addsuffix .validate,$(SUBDIRS))
13 CACHECLEAN := $(addsuffix .clean,$(CACHEFILES) $(CACHEDIRS))
14
15 ############################################################################
16 # BEGIN of variables to customize
17 #
18 #CACHEDIRS := foo/bar
19
20 CACHEFILES += .versions
21 CACHEFILES += $(shell basename $(ISOSRC))
22 #
23 # END of variables to customize
24 ############################################################################
25
26 .PHONY: prepare-cache
27 prepare-cache: make-cache-dir $(CACHEDIRS) $(CACHEFILES)
28
29 .PHONY: make-cache-dir
30 make-cache-dir:
31         @rm -rf ${CACHE_DIR}
32         @mkdir ${CACHE_DIR}
33
34 .PHONY: clean-cache
35 clean-cache: $(CACHECLEAN)
36         @rm -rf ${CACHE_DIR}
37
38 .PHONY: $(CACHEDIRS)
39 $(CACHEDIRS):
40         @mkdir -p $(dir $(CACHE_DIR)/$@)
41         @if [ ! -d $(BUILD_BASE)/$@ ]; then\
42            mkdir -p $(BUILD_BASE)/$@;\
43         fi
44         @ln -s $(BUILD_BASE)/$@ $(CACHE_DIR)/$@
45
46 .PHONY: $(CACHEFILES)
47 $(CACHEFILES):
48         @mkdir -p $(dir $(CACHE_DIR)/$@)
49         @if [ ! -d $(dir $(BUILD_BASE)/$@) ]; then\
50            mkdir -p $(dir $(BUILD_BASE)/$@);\
51         fi
52
53         @if [ ! -f $(BUILD_BASE)/$@ ]; then\
54            echo " " > $(BUILD_BASE)/$@;\
55            ln -s $(BUILD_BASE)/$@ $(CACHE_DIR)/$@;\
56            rm -f $(BUILD_BASE)/$@;\
57         else\
58            ln -s $(BUILD_BASE)/$@ $(CACHE_DIR)/$@;\
59         fi
60
61 .PHONY: validate-cache
62 validate-cache: $(CACHEVALIDATE)
63         @if [ "$(shell md5sum $(BUILD_BASE)/config.mk | cut -f1 -d " ")" != "$(shell cat $(VERSION_FILE) | grep config.mk | awk '{print $$NF}')" ]; then\
64            echo "Cache does not match current config.mk definition, cache must be rebuilt";\
65            exit 1;\
66         fi;
67
68         @if [ "$(shell md5sum $(BUILD_BASE)/cache.mk | cut -f1 -d " ")" != "$(shell cat $(VERSION_FILE) | grep cache.mk | awk '{print $$NF}')" ]; then\
69            echo "Cache does not match current cache.mk definition, cache must be rebuilt";\
70            exit 1;\
71         fi;
72
73 # Once the Make structure is refactored, this should go in as a validate-cache
74 # taget in the fuel Makefile
75
76         @REMOTE_ID=$(shell git ls-remote $(FUEL_MAIN_REPO) $(FUEL_MAIN_TAG)^{} | awk '{print $$(NF-1)}'); \
77         if [ -z $$REMOTE_ID ] || [ $$REMOTE_ID = " " ]; \
78         then \
79            REMOTE_ID=$(shell git ls-remote $(FUEL_MAIN_REPO) $(FUEL_MAIN_TAG) | awk '{print $$(NF-1)}'); \
80         fi; \
81         if [[ $$REMOTE_ID != $(shell cat $(VERSION_FILE) | grep fuel | awk '{print $$NF}') ]]; \
82         then \
83            echo "Cache does not match upstream Fuel, cache must be rebuilt!"; \
84            exit 1; \
85         fi
86
87 .PHONY: $(CACHEVALIDATE)
88 $(CACHEVALIDATE): %.validate:
89         @echo VALIDATE $(CACHEVALIDATE)
90         $(MAKE) -C $* -f Makefile validate-cache
91
92 .PHONY: $(CACHECLEAN)
93 $(CACHECLEAN): %.clean:
94         rm -rf ${CACHE_DIR}/$*