quilt.mk源码

来源:互联网 发布:php图片$_get 编辑:程序博客网 时间:2024/06/06 05:07
#2# Copyright (C) 2007-2009 OpenWrt.org3#4# This is free software, licensed under the GNU General Public License v2.5# See /LICENSE for more information.67ifneq ($(if $(DUMP),1,$(__quilt_inc)),1)8__quilt_inc:=19 10ifeq ($(TARGET_BUILD),1)11  PKG_BUILD_DIR:=$(LINUX_DIR)12endif13PATCH_DIR?=./patches14FILES_DIR?=./files15HOST_PATCH_DIR?=$(PATCH_DIR)16HOST_FILES_DIR?=$(FILES_DIR)17 18ifeq ($(MAKECMDGOALS),refresh)19  override QUILT=120endif2122QUILT_CMD:=quilt --quiltrc=-23 24define filter_series25sed -e s,\\\#.*,, $(1) | grep -E \[a-zA-Z0-9\]26endef2728define PatchDir/Quilt29        @mkdir -p "$(1)/patches$(if $(3),/$(patsubst %/,%,$(3)))"30        @if [ -s "$(2)/series" ]then \31                mkdir -p "$(1)/patches/$(3)"\32                cp "$(2)/series" "$(1)/patches/$(3)"\33        fi34        @for patch in $$$$( (cd "$(2)" && if [ -f series ]then $(call filter_series,series)else ls | sort; fi) 2>/dev/null )do ( \35                cp "$(2)/$$$$patch" "$(1)/patches/$(3)"\36                echo "$(3)$$$$patch" >> "$(1)/patches/series"\37        )done38        $(if $(3),@echo $(3) >> "$(1)/patches/.subdirs")39endef4041define PatchDir/Default42        @if [ -d "$(2)" ] && [ "$$$$(ls $(2) | wc -l)" -gt 0 ]then \43                export PATCH="$(PATCH)"\44                if [ -s "$(2)/series" ]then \45                        $(call filter_series,$(2)/series) | xargs -n1 \46                                $(KPATCH) "$(1)" "$(2)"\47                else \48                        $(KPATCH) "$(1)" "$(2)"; \49                fi; \50        fi51endef5253define PatchDir54$(call PatchDir/$(if $(strip $(QUILT)),Quilt,Default),$(strip $(1)),$(strip $(2)),$(strip $(3)))55endef5657define HostPatchDir58$(call PatchDir/$(if $(strip $(HOST_QUILT)),Quilt,Default),$(strip $(1)),$(strip $(2)),$(strip $(3)))59endef6061ifneq ($(PKG_BUILD_DIR),)62  QUILT?=$(if $(wildcard $(PKG_BUILD_DIR)/.quilt_used),y)63  ifneq ($(QUILT),)64    STAMP_CHECKED:=$(PKG_BUILD_DIR)/.quilt_checked65    override CONFIG_AUTOREBUILD=66    quilt-check: $(STAMP_CHECKED)67  endif68endif6970ifneq ($(HOST_BUILD_DIR),)71  HOST_QUILT?=$(if $(findstring command,$(origin QUILT)),$(QUILT),$(if $(wildcard $(HOST_BUILD_DIR)/.quilt_used),y))72  ifneq ($(HOST_QUILT),)73    HOST_STAMP_CHECKED:=$(HOST_BUILD_DIR)/.quilt_checked74    override CONFIG_AUTOREBUILD=75    host-quilt-check: $(HOST_STAMP_CHECKED)76  endif77endif7879define Host/Patch/Default80        $(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)83endef8485define Build/Patch/Default86        $(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)89endef9091kernel_files=$(foreach fdir,$(GENERIC_FILES_DIR) $(FILES_DIR),$(fdir)/.)92define Kernel/Patch/Default93        rm -rf $(PKG_BUILD_DIR)/patches; mkdir -p $(PKG_BUILD_DIR)/patches94        $(if $(kernel_files),$(CP) $(kernel_files) $(LINUX_DIR)/)95        find $(LINUX_DIR)/ -name \*.rej -or -name \*.orig | $(XARGS) rm -f96        $(call PatchDir,$(PKG_BUILD_DIR),$(GENERIC_PATCH_DIR),generic/)97        $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR),platform/)98endef99100define Quilt/RefreshDir101        mkdir -p $(2)102        -rm -f $(2)/* 2>/dev/null >/dev/null103        @( \104                for patch in $$$$($(if $(3),grep "^$(3)",cat) $(1)/patches/series | awk '{print $$$$1}')do \105                        $(CP) -v "$(1)/patches/$$$$patch" $(2)\106                done\107        )108endef109110define Quilt/Refresh/Host111        $(call Quilt/RefreshDir,$(HOST_BUILD_DIR),$(PATCH_DIR))112endef113114define Quilt/Refresh/Package115        $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR))116endef117118define Quilt/Refresh/Kernel119        @[ -z "$$(grep -v '^generic/' $(PKG_BUILD_DIR)/patches/series | grep -v '^platform/')" ] || { \120                echo "All kernel patches must start with either generic/ or platform/"\121                false\122        }123        $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(GENERIC_PATCH_DIR),generic/)124        $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR),platform/)125endef126127define Quilt/Template128  $($(2)STAMP_CONFIGURED)$($(2)STAMP_CHECKED) FORCE129  $($(2)STAMP_CHECKED)$($(2)STAMP_PREPARED)130        if [ -s "$(1)/patches/series" ]then \131                (cd "$(1)"\132                        if $(QUILT_CMD) next >/dev/null 2>&1; then \133                                $(QUILT_CMD) push -a; \134                        else \135                                $(QUILT_CMD) top >/dev/null 2>&1; \136                        fi \137                ); \138        fi139        touch "$$@"140 141  $(3)quilt-check: $($(2)STAMP_PREPARED) FORCE142        @[ -f "$(1)/.quilt_used" ] || { \143                echo "The source directory was not unpacked using quilt. Please rebuild with QUILT=1"\144                false\145        }146        @[ -f "$(1)/patches/series" ] || { \147                echo "The source directory contains no quilt patches."\148                false\149        }150        @[ -n "$$$$(ls $(1)/patches/series)" -o "$$$$(cat $(1)/patches/series | md5sum)" = "$$(sort $(1)/patches/series | md5sum)" ] || { \151                echo "The patches are not sorted in the right order. Please fix."\152                false\153        }154 155  $(3)refresh: $(3)quilt-check156        @cd "$(1)"$(QUILT_CMD) pop -a -f >/dev/null 2>/dev/null157        @cd "$(1)"while $(QUILT_CMD) next 2>/dev/null >/dev/null && $(QUILT_CMD) push; do \158                QUILT_DIFF_OPTS="-p" $(QUILT_CMD) refresh -p ab --no-index --no-timestamps; \159        done; ! $(QUILT_CMD) next 2>/dev/null >/dev/null160        $(Quilt/Refresh/$(4))161 162  $(3)update: $(3)quilt-check163        $(Quilt/Refresh/$(4))164endef165166Build/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
0 0
原创粉丝点击