summaryrefslogtreecommitdiffstats
path: root/include/package-ipkg.mk
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2007-03-15 23:57:18 +0000
committerFelix Fietkau <nbd@openwrt.org>2007-03-15 23:57:18 +0000
commit7b1a36cab40624bc52a6475633d06cfb4ba11527 (patch)
tree43fda4720515e7431689b7d39252af13730c4abc /include/package-ipkg.mk
parent568c02662375728abb5b278132e06470c2974a20 (diff)
downloadmaster-31e0f0ae-7b1a36cab40624bc52a6475633d06cfb4ba11527.tar.gz
master-31e0f0ae-7b1a36cab40624bc52a6475633d06cfb4ba11527.tar.bz2
master-31e0f0ae-7b1a36cab40624bc52a6475633d06cfb4ba11527.zip
split package.mk and clean up build system code (based on patch by mbm), makes the code more readable and speeds up metadata scan
SVN-Revision: 6571
Diffstat (limited to 'include/package-ipkg.mk')
-rw-r--r--include/package-ipkg.mk105
1 files changed, 105 insertions, 0 deletions
diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk
new file mode 100644
index 0000000000..0d6ab8af91
--- /dev/null
+++ b/include/package-ipkg.mk
@@ -0,0 +1,105 @@
+#
+# Copyright (C) 2006,2007 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define BuildIPKGVariable
+ $(call shexport,Package/$(1)/$(2))
+ $(1)_COMMANDS += var2file "$(call shvar,Package/$(1)/$(2))" $(2);
+endef
+
+ifeq ($(DUMP),)
+define BuildIPKG
+ IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk
+ IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg/$(1)
+ INFO_$(1):=$(IPKG_STATE_DIR)/info/$(1).list
+
+ ifdef Package/$(1)/install
+ ifeq ($(CONFIG_PACKAGE_$(1)),y)
+ install: $$(INFO_$(1))
+ endif
+
+ ifneq ($(CONFIG_PACKAGE_$(1))$(DEVELOPER)$(SDK),)
+ compile: $$(IPKG_$(1))
+ else
+ compile: $(1)-disabled
+ $(1)-disabled:
+ @echo "WARNING: skipping $(1) -- package not selected"
+ endif
+ endif
+
+ ifeq ($(FORCEREBUILD),y)
+ $$(IPKG_$(1)): FORCE
+ endif
+
+ IDEPEND_$(1):=$$(strip $$(DEPENDS))
+
+
+ $(eval $(call BuildIPKGVariable,$(1),conffiles))
+ $(eval $(call BuildIPKGVariable,$(1),preinst))
+ $(eval $(call BuildIPKGVariable,$(1),postinst))
+ $(eval $(call BuildIPKGVariable,$(1),prerm))
+ $(eval $(call BuildIPKGVariable,$(1),postrm))
+ $$(IDIR_$(1))/CONTROL/control: $(PKG_BUILD_DIR)/.version-$(1)_$(VERSION)_$(PKGARCH)
+ @rm -f $(PACKAGE_DIR)/$(1)_*
+ mkdir -p $$(IDIR_$(1))/CONTROL
+ echo "Package: $(1)" > $$(IDIR_$(1))/CONTROL/control
+ echo "Version: $(VERSION)" >> $$(IDIR_$(1))/CONTROL/control
+ ( \
+ DEPENDS='$(EXTRA_DEPENDS)'; \
+ for depend in $$(filter-out @%,$$(IDEPEND_$(1))); do \
+ DEPENDS=$$$${DEPENDS:+$$$$DEPENDS, }$$$${depend##+}; \
+ done; \
+ echo "Depends: $$$$DEPENDS" >> $$(IDIR_$(1))/CONTROL/control; \
+ )
+ echo "Source: $(SOURCE)" >> $$(IDIR_$(1))/CONTROL/control
+ echo "Section: $(SECTION)" >> $$(IDIR_$(1))/CONTROL/control
+ echo "Priority: $(PRIORITY)" >> $$(IDIR_$(1))/CONTROL/control
+ echo "Maintainer: $(MAINTAINER)" >> $$(IDIR_$(1))/CONTROL/control
+ echo "Architecture: $(PKGARCH)" >> $$(IDIR_$(1))/CONTROL/control
+ echo "Description: $(DESCRIPTION)" | sed -e 's,\\,\n,g' | sed -e 's,^[[:space:]]*$$$$, .,g' >> $$(IDIR_$(1))/CONTROL/control
+ chmod 644 $$(IDIR_$(1))/CONTROL/control
+ (cd $$(IDIR_$(1))/CONTROL; \
+ $($(1)_COMMANDS) \
+ )
+
+ $$(IPKG_$(1)): $(PKG_BUILD_DIR)/.built $$(IDIR_$(1))/CONTROL/control
+ $(call Package/$(1)/install,$$(IDIR_$(1)))
+ mkdir -p $(PACKAGE_DIR)
+ -find $$(IDIR_$(1)) -name CVS | xargs rm -rf
+ -find $$(IDIR_$(1)) -name .svn | xargs rm -rf
+ -find $$(IDIR_$(1)) -name '.#*' | xargs rm -f
+ $(RSTRIP) $$(IDIR_$(1))
+ $(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
+ @[ -f $$(IPKG_$(1)) ] || false
+
+ $$(INFO_$(1)): $$(IPKG_$(1))
+ $(IPKG) install $$(IPKG_$(1))
+
+ $(1)-clean:
+ rm -f $(PACKAGE_DIR)/$(1)_*
+
+ clean: $(1)-clean
+
+ $(PKG_BUILD_DIR)/.version-$(1)_$(VERSION)_$(PKGARCH): $(PKG_BUILD_DIR)/.prepared
+ -@rm -f $(PKG_BUILD_DIR)/.version-$(1)_* 2>/dev/null
+ @touch $$@
+
+ $$(eval $$(call Build/DefaultTargets,$(1)))
+
+ ifdef Package/$(1)/install
+ ifneq ($$(CONFIG_PACKAGE_$(1))$(DEVELOPER)$(SDK),)
+ ifneq ($(MAKECMDGOALS),prereq)
+ ifneq ($(DUMP),1)
+ ifneq ($$(shell $(SCRIPT_DIR)/timestamp.pl -p -x ipkg -x ipkg-install '$$(IPKG_$(1))' '$(PKG_BUILD_DIR)'),$$(IPKG_$(1)))
+ $(PKG_BUILD_DIR)/.built: package-rebuild
+ $$(info Rebuilding $(subst $(TOPDIR)/,,$$(IPKG_$(1))))
+ endif
+ endif
+ endif
+ endif
+ endif
+endef
+endif