您的位置:首页 > 产品设计 > UI/UE

quilt.mk源码

2016-03-15 14:57 423 查看
#
2# Copyright (C) 2007-2009 OpenWrt.org
3#
4# This is free software, licensed under the GNU General Public License v2.
5# See /LICENSE for more information.
6
7ifneq ($(if $(DUMP),1,$(__quilt_inc)),1)
8__quilt_inc:=1
9
10ifeq ($(TARGET_BUILD),1)
11PKG_BUILD_DIR:=$(LINUX_DIR)
12endif
13PATCH_DIR?=./patches
14FILES_DIR?=./files
15HOST_PATCH_DIR?=$(PATCH_DIR)
16HOST_FILES_DIR?=$(FILES_DIR)
17
18ifeq ($(MAKECMDGOALS),refresh)
19override QUILT=1
20endif
21
22QUILT_CMD:=quilt --quiltrc=-
23
24define filter_series
25sed -e s,\\\#.*,, $(1) | grep -E \[a-zA-Z0-9\]
26endef
27
28define PatchDir/Quilt
29@mkdir -p "$(1)/patches$(if $(3),/$(patsubst %/,%,$(3)))"
30@if [ -s "$(2)/series" ]; then \
31mkdir -p "$(1)/patches/$(3)"; \
32cp "$(2)/series" "$(1)/patches/$(3)"; \
33fi
34@for patch in $$$$( (cd "$(2)" && if [ -f
series ]; then $(call filter_series,series); else ls
| sort; fi; ) 2>/dev/null ); do ( \
35cp "$(2)/$$$$patch" "$(1)/patches/$(3)"; \
36echo "$(3)$$$$patch" >> "$(1)/patches/series"; \
37); done
38$(if $(3),@echo $(3) >> "$(1)/patches/.subdirs")
39endef
40
41define PatchDir/Default
42@if [ -d "$(2)" ] && [ "$$$$(ls
$(2) | wc -l)" -gt 0 ]; then \
43export PATCH="$(PATCH)"; \
44if [ -s "$(2)/series" ]; then \
45$(call filter_series,$(2)/series) |
xargs -n1 \
46$(KPATCH) "$(1)" "$(2)"; \
47else \
48$(KPATCH) "$(1)" "$(2)"; \
49fi; \
50fi
51endef
52
53define PatchDir
54$(call PatchDir/$(if $(strip $(QUILT)),Quilt,Default),$(strip $(1)),$(strip $(2)),$(strip $(3)))
55endef
56
57define HostPatchDir
58$(call PatchDir/$(if $(strip $(HOST_QUILT)),Quilt,Default),$(strip $(1)),$(strip $(2)),$(strip $(3)))
59endef
60
61ifneq ($(PKG_BUILD_DIR),)
62QUILT?=$(if $(wildcard $(PKG_BUILD_DIR)/.quilt_used),y)
63ifneq ($(QUILT),)
64STAMP_CHECKED:=$(PKG_BUILD_DIR)/.quilt_checked
65override CONFIG_AUTOREBUILD=
66quilt-check: $(STAMP_CHECKED)
67endif
68endif
69
70ifneq ($(HOST_BUILD_DIR),)
71HOST_QUILT?=$(if $(findstring command,$(origin
QUILT)),$(QUILT),$(if $(wildcard $(HOST_BUILD_DIR)/.quilt_used),y))
72ifneq ($(HOST_QUILT),)
73HOST_STAMP_CHECKED:=$(HOST_BUILD_DIR)/.quilt_checked
74override CONFIG_AUTOREBUILD=
75host-quilt-check: $(HOST_STAMP_CHECKED)
76endif
77endif
78
79define Host/Patch/Default
80$(if $(HOST_QUILT),rm -rf $(HOST_BUILD_DIR)/patches;
mkdir -p $(HOST_BUILD_DIR)/patches)
81$(call HostPatchDir,$(HOST_BUILD_DIR),$(HOST_PATCH_DIR),)
82$(if $(HOST_QUILT),touch $(HOST_BUILD_DIR)/.quilt_used)
83endef
84
85define Build/Patch/Default
86$(if $(QUILT),rm -rf $(PKG_BUILD_DIR)/patches;
mkdir -p $(PKG_BUILD_DIR)/patches)
87$(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR),)
88$(if $(QUILT),touch $(PKG_BUILD_DIR)/.quilt_used)
89endef
90
91kernel_files=$(foreach fdir,$(GENERIC_FILES_DIR) $(FILES_DIR),$(fdir)/.)
92define Kernel/Patch/Default
93rm -rf $(PKG_BUILD_DIR)/patches; mkdir -p $(PKG_BUILD_DIR)/patches
94$(if $(kernel_files),$(CP) $(kernel_files) $(LINUX_DIR)/)
95find $(LINUX_DIR)/ -name \*.rej -or -name \*.orig
| $(XARGS) rm -f
96$(call PatchDir,$(PKG_BUILD_DIR),$(GENERIC_PATCH_DIR),generic/)
97$(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR),platform/)
98endef
99
100define Quilt/RefreshDir
101mkdir -p $(2)
102-rm -f $(2)/* 2>/dev/null >/dev/null
103@( \
104for patch in $$$$($(if $(3),grep "^$(3)",cat) $(1)/patches/series
| awk '{print $$$$1}'); do \
105$(CP) -v "$(1)/patches/$$$$patch" $(2); \
106done; \
107)
108endef
109
110define Quilt/Refresh/Host
111$(call Quilt/RefreshDir,$(HOST_BUILD_DIR),$(PATCH_DIR))
112endef
113
114define Quilt/Refresh/Package
115$(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR))
116endef
117
118define Quilt/Refresh/Kernel
119@[ -z "$$(grep -v '^generic/' $(PKG_BUILD_DIR)/patches/series | grep -v '^platform/')" ] || { \
120echo "All kernel patches must start with either generic/ or platform/"; \
121false; \
122}
123$(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(GENERIC_PATCH_DIR),generic/)
124$(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR),platform/)
125endef
126
127define Quilt/Template
128$($(2)STAMP_CONFIGURED): $($(2)STAMP_CHECKED) FORCE
129$($(2)STAMP_CHECKED): $($(2)STAMP_PREPARED)
130if [ -s "$(1)/patches/series" ]; then \
131(cd "$(1)"; \
132if $(QUILT_CMD) next >/dev/null 2>&1; then \
133$(QUILT_CMD) push -a; \
134else \
135$(QUILT_CMD) top >/dev/null 2>&1; \
136fi \
137); \
138fi
139touch "$$@"
140
141$(3)quilt-check: $($(2)STAMP_PREPARED) FORCE
142@[ -f "$(1)/.quilt_used" ] || { \
143echo "The source directory was not unpacked using quilt. Please rebuild with QUILT=1"; \
144false; \
145}
146@[ -f "$(1)/patches/series" ] || { \
147echo "The source directory contains no quilt patches."; \
148false; \
149}
150@[ -n "$$$$(ls $(1)/patches/series)" -o "$$$$(cat $(1)/patches/series | md5sum)" = "$$(sort
$(1)/patches/series | md5sum)" ] || { \
151echo "The patches are not sorted in the right order. Please fix."; \
152false; \
153}
154
155$(3)refresh: $(3)quilt-check
156@cd "$(1)"; $(QUILT_CMD) pop -a -f >/dev/null 2>/dev/null
157@cd "$(1)"; while $(QUILT_CMD) next 2>/dev/null >/dev/null && $(QUILT_CMD) push; do \
158QUILT_DIFF_OPTS="-p" $(QUILT_CMD) refresh
-p ab --no-index --no-timestamps; \
159done; ! $(QUILT_CMD) next 2>/dev/null >/dev/null
160$(Quilt/Refresh/$(4))
161
162$(3)update: $(3)quilt-check
163$(Quilt/Refresh/$(4))
164endef
165
166Build/Quilt=$(call Quilt/Template,$(PKG_BUILD_DIR),,,$(if $(TARGET_BUILD),Kernel,Package))
167Host/Quilt=$(call Quilt/Template,$(HOST_BUILD_DIR),HOST_,host-,Host)
168
169endif
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: