fix a rebuild bug related to quilt
[openwrt/staging/wigyori.git] / include / package.mk
1 #
2 # Copyright (C) 2006-2007 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 all: $(if $(DUMP),dumpinfo,compile)
9
10 PKG_BUILD_DIR ?= $(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
11 PKG_INSTALL_DIR ?= $(PKG_BUILD_DIR)/ipkg-install
12
13 include $(INCLUDE_DIR)/prereq.mk
14 include $(INCLUDE_DIR)/host.mk
15 include $(INCLUDE_DIR)/unpack.mk
16 include $(INCLUDE_DIR)/depends.mk
17
18 STAMP_PREPARED:=$(PKG_BUILD_DIR)/.prepared$(if $(DUMP),,_$(shell find ${CURDIR} $(PKG_FILE_DEPEND) $(DEP_FINDPARAMS) | md5s))
19 STAMP_CONFIGURED:=$(PKG_BUILD_DIR)/.configured
20 STAMP_BUILT:=$(PKG_BUILD_DIR)/.built
21
22 include $(INCLUDE_DIR)/quilt.mk
23 include $(INCLUDE_DIR)/package-defaults.mk
24 include $(INCLUDE_DIR)/package-dumpinfo.mk
25 include $(INCLUDE_DIR)/package-ipkg.mk
26
27 override MAKEFLAGS=
28 export CONFIG_SITE:=$(INCLUDE_DIR)/site/$(REAL_GNU_TARGET_NAME)
29
30 ifeq ($(DUMP)$(filter prereq clean refresh update,$(MAKECMDGOALS)),)
31 ifneq ($(if $(QUILT),,$(CONFIG_AUTOREBUILD)),)
32 define Build/Autoclean
33 $(PKG_BUILD_DIR)/.dep_files: $(STAMP_PREPARED)
34 $(call rdep,${CURDIR} $(PKG_FILE_DEPEND),$(STAMP_PREPARED))
35 $(if $(filter prepare,$(MAKECMDGOALS)),,$(call rdep,$(PKG_BUILD_DIR),$(STAMP_BUILT),$(PKG_BUILD_DIR)/.dep_files, -and -not -path "/.*" -and -not -path "*/ipkg*"))
36 endef
37 endif
38 endif
39
40
41 define Build/DefaultTargets
42 ifneq ($(strip $(PKG_SOURCE_URL)),)
43 download: $(DL_DIR)/$(PKG_SOURCE)
44
45 $(DL_DIR)/$(PKG_SOURCE):
46 mkdir -p $(DL_DIR)
47 $(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(PKG_SOURCE)" "$(PKG_MD5SUM)" $(PKG_SOURCE_URL)
48
49 $(STAMP_PREPARED): $(DL_DIR)/$(PKG_SOURCE)
50 endif
51
52 $(call Build/Autoclean)
53
54 $(STAMP_PREPARED):
55 @-rm -rf $(PKG_BUILD_DIR)
56 @mkdir -p $(PKG_BUILD_DIR)
57 $(Build/Prepare)
58 touch $$@
59
60 $(STAMP_CONFIGURED): $(STAMP_PREPARED)
61 $(Build/Configure)
62 touch $$@
63
64 $(STAMP_BUILT): $(STAMP_CONFIGURED)
65 $(Build/Compile)
66 touch $$@
67
68 ifdef Build/InstallDev
69 compile: $(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed
70 $(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed: $(STAMP_BUILT)
71 mkdir -p $(STAGING_DIR)/stampfiles
72 $(Build/InstallDev)
73 touch $$@
74 endif
75
76 define Build/DefaultTargets
77 endef
78 endef
79
80 define BuildPackage
81 $(eval $(Package/Default))
82 $(eval $(Package/$(1)))
83
84 # <HACK> Support obsolete DESCRIPTION field
85 ifndef Package/$(1)/description
86 define Package/$(1)/description
87 $(TITLE)$(subst \,
88 ,\ $(DESCRIPTION))
89 endef
90 endif
91 # </HACK>
92
93 $(foreach FIELD, TITLE CATEGORY PRIORITY SECTION VERSION,
94 ifeq ($($(FIELD)),)
95 $$(error Package/$(1) is missing the $(FIELD) field)
96 endif
97 )
98
99 $(call shexport,Package/$(1)/description)
100 $(call shexport,Package/$(1)/config)
101
102 $(Dumpinfo)
103 $(BuildIPKG)
104 endef
105
106 define Build/Prepare
107 $(call Build/Prepare/Default,)
108 endef
109
110 define Build/Configure
111 $(call Build/Configure/Default,)
112 endef
113
114 define Build/Compile
115 $(call Build/Compile/Default,)
116 endef
117
118 $(PACKAGE_DIR):
119 mkdir -p $@
120
121 dumpinfo:
122 download:
123 prepare: $(STAMP_PREPARED)
124 configure: $(STAMP_CONFIGURED)
125 compile:
126 install:
127 clean: FORCE
128 $(Build/UninstallDev)
129 $(Build/Clean)
130 @rm -f $(STAGING_DIR)/stampfiles/.$(PKG_NAME)-installed
131 @rm -rf $(PKG_BUILD_DIR)