diff options
author | Felix Fietkau <nbd@openwrt.org> | 2006-04-20 03:45:03 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2006-04-20 03:45:03 +0000 |
commit | 290190f5a69d4b308e56cad98d81d876fa80289b (patch) | |
tree | 956f348606a1c0dd041a533bdd7a1eb979652c05 /package | |
parent | 95011de87182e89bcc644061bfbfd8a5fef54886 (diff) | |
download | master-187ad058-290190f5a69d4b308e56cad98d81d876fa80289b.tar.gz master-187ad058-290190f5a69d4b308e56cad98d81d876fa80289b.tar.bz2 master-187ad058-290190f5a69d4b308e56cad98d81d876fa80289b.zip |
add proper package dependency handling
git-svn-id: svn://svn.openwrt.org/openwrt/branches/buildroot-ng/openwrt@3679 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
-rw-r--r-- | package/rules.mk | 55 |
1 files changed, 37 insertions, 18 deletions
diff --git a/package/rules.mk b/package/rules.mk index 8bf769d889..f64e96945b 100644 --- a/package/rules.mk +++ b/package/rules.mk @@ -3,7 +3,6 @@ ifneq ($(DUMP),) all: dumpinfo else all: compile -endif define Build/DefaultTargets $(PKG_BUILD_DIR)/.prepared: @@ -12,18 +11,31 @@ $(PKG_BUILD_DIR)/.prepared: $(call Build/Prepare) touch $$@ -$(PKG_BUILD_DIR)/.configured: +$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared $(call Build/Configure) touch $$@ -$(PKG_BUILD_DIR)/.built: +ifeq ($(shell $(SCRIPT_DIR)/timestamp.pl -p $(PKG_BUILD_DIR) .),.) +$(PKG_BUILD_DIR)/.prepared: clean +endif + +$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured $(call Build/Compile) touch $$@ +package-clean: + $(call Build/Clean) + rm -f $(PKG_BUILD_DIR)/.built + +package-recompile: + rm -f $(PKG_BUILD_DIR)/.built + +.PHONY: package-clean package-recompile + define Build/DefaultTargets endef endef - +endif define Package/Default CONFIGFILE:= @@ -64,15 +76,24 @@ IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg/$(1) INFO_$(1):=$(IPKG_STATE_DIR)/info/$(1).list ifneq ($(PACKAGE_$(1)),) -compile-targets: $$(IPKG_$(1)) +COMPILE_$(1):=1 endif ifneq ($(DEVELOPER),) -compile-targets: $$(IPKG_$(1)) +COMPILE_$(1):=1 endif ifeq ($(PACKAGE_$(1)),y) install-targets: $$(INFO_$(1)) endif +ifneq ($$(COMPILE_$(1)),) +ifeq ($$(shell $(SCRIPT_DIR)/timestamp.pl -p -x ipkg $$(IPKG_$(1)) $(PKG_BUILD_DIR)),$(PKG_BUILD_DIR)) +$(PKG_BUILD_DIR)/.built: package-recompile +endif + +compile-targets: $$(IPKG_$(1)) +endif + + IDEPEND_$(1):=$$(strip $$(DEPENDS)) DUMPINFO += \ @@ -97,25 +118,24 @@ $$(IDIR_$(1))/CONTROL/control: $(PKG_BUILD_DIR)/.prepared echo "Maintainer: $(MAINTAINER)" >> $$(IDIR_$(1))/CONTROL/control echo "Architecture: $(PKGARCH)" >> $$(IDIR_$(1))/CONTROL/control echo "Description: $(TITLE)" >> $$(IDIR_$(1))/CONTROL/control - echo "$(DESCRIPTION)" | sed -e 's,\\,\n ,g' >> $$(IDIR_$(1))/CONTROL/control + echo " $(DESCRIPTION)" | sed -e 's,\\,\n ,g' >> $$(IDIR_$(1))/CONTROL/control chmod 644 $$(IDIR_$(1))/CONTROL/control for file in conffiles preinst postinst prerm postrm; do \ [ -f ./ipkg/$(1).$$$$file ] && cp ./ipkg/$(1).$$$$file $$(IDIR_$(1))/CONTROL/$$$$file || true; \ done -$$(IPKG_$(1)): $$(IDIR_$(1))/CONTROL/control $(PKG_BUILD_DIR)/.built $(PACKAGE_DIR) +$$(IPKG_$(1)): $$(IDIR_$(1))/CONTROL/control $(PKG_BUILD_DIR)/.built $(call Package/$(1)/install,$$(IDIR_$(1))) + mkdir -p $(PACKAGE_DIR) $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR) $$(INFO_$(1)): $$(IPKG_$(1)) $(IPKG) install $$(IPKG_$(1)) $(1)-clean: - rm -f $$(IPKG_$(1)) + rm -f $(PACKAGE_DIR)/$(1)_* clean: $(1)-clean -PACKAGES += $(1) - ifneq ($(__DEFAULT_TARGETS),1) $(eval $(call Build/DefaultTargets)) endif @@ -163,6 +183,10 @@ define Build/Compile $(call Build/Compile/Default) endef +define Build/Clean + $(MAKE) clean +endef + ifneq ($(DUMP),) dumpinfo: $(DUMPINFO) @@ -191,14 +215,9 @@ install: @$(CMD_TRACE) "installing... " @$(MAKE) install-targets $(MAKE_TRACE) -mostlyclean: rebuild: $(CMD_TRACE) "rebuilding... " - @-$(MAKE) mostlyclean 2>&1 >/dev/null - if [ -f $(PKG_BUILD_DIR)/.built ]; then \ - $(MAKE) clean $(MAKE_TRACE); \ - fi - $(MAKE) compile $(MAKE_TRACE) + $(MAKE) package-clean compile $(MAKE_TRACE) $(PACKAGE_DIR): mkdir -p $@ @@ -210,4 +229,4 @@ clean: rm -rf $(PKG_BUILD_DIR) endif -.PHONY: all source prepare compile install clean dumpinfo +.PHONY: all source prepare compile install clean rebuild dumpinfo compile-targets install-targets clean-targets |