endif
define Build/DefaultTargets
-$(PKG_BUILD_DIR)/.prepared:
- rm -rf $(PKG_BUILD_DIR)
- mkdir -p $(PKG_BUILD_DIR)
+$(PKG_BUILD_DIR)/.prepared: FORCE $(DL_DIR)/$(PKG_SOURCE)
+ifeq ($(shell $(SCRIPT_DIR)/timestamp.pl -p $(PKG_BUILD_DIR) .),.)
+ @-rm -rf $(PKG_BUILD_DIR)
+ @mkdir -p $(PKG_BUILD_DIR)
$(call Build/Prepare)
- touch $$@
+ @touch $$@
+endif
$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.prepared
$(call Build/Configure)
touch $$@
-ifeq ($(shell $(SCRIPT_DIR)/timestamp.pl -p $(PKG_BUILD_DIR) .),.)
-$(PKG_BUILD_DIR)/.prepared: clean
-endif
-
-$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.configured
+$(PKG_BUILD_DIR)/.built: FORCE $(PKG_BUILD_DIR)/.configured
+#$#$#(error $$(shell $(SCRIPT_DIR)/timestamp.pl -p -x ipkg $$(IPKG_$(1)) $(PKG_BUILD_DIR)))
+ifeq ($$(shell $(SCRIPT_DIR)/timestamp.pl -p -x ipkg $$(IPKG_$(1)) $(PKG_BUILD_DIR)),$(PKG_BUILD_DIR))
$(call Build/Compile)
touch $$@
+endif
-package-clean:
+package-clean: FORCE
$(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
DESCRIPTION:=
endef
+define RequiredField
+ifeq ($$($(1)),)
+$$(error Package/$$(1) is missing the $(1) field)
+endif
+endef
+
define BuildPackage
$(eval $(call Package/Default))
$(eval $(call Package/$(1)))
-ifeq ($(TITLE),)
-$$(error Package $(1) has no TITLE)
-endif
-ifeq ($(CATEGORY),)
-$$(error Package $(1) has no CATEGORY)
-endif
-ifeq ($(PRIORITY),)
-$$(error Package $(1) has no PRIORITY)
-endif
-ifeq ($(VERSION),)
-$$(error Package $(1) has no VERSION)
-endif
+$(foreach FIELD, TITLE CATEGORY PRIORITY VERSION, $(eval $(call RequiredField,$(FIELD))))
+
ifeq ($(PKGARCH),)
PKGARCH:=$(ARCH)
endif
-$(eval
+
ifeq ($(DESCRIPTION),)
-DESCRIPTION:=$(TITLE)
+$(eval DESCRIPTION:=$(TITLE))
endif
-)
IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk
IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg/$(1)
INFO_$(1):=$(IPKG_STATE_DIR)/info/$(1).list
-ifneq ($(CONFIG_PACKAGE_$(1)),)
-COMPILE_$(1):=1
-endif
-ifneq ($(DEVELOPER),)
+ifneq ($(CONFIG_PACKAGE_$(1))$(DEVELOPER),)
COMPILE_$(1):=1
endif
+
ifeq ($(CONFIG_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))
+ifneq ($(COMPILE_$(1)),)
+compile-targets: $(IPKG_$(1))
endif
-
IDEPEND_$(1):=$$(strip $$(DEPENDS))
DUMPINFO += \
clean: $(1)-clean
ifneq ($(__DEFAULT_TARGETS),1)
-$(eval $(call Build/DefaultTargets))
+$$(eval $$(call Build/DefaultTargets,$(1)))
endif
endef
ifneq ($(strip $(PKG_SOURCE)),)
$(DL_DIR)/$(PKG_SOURCE):
- @$(CMD_TRACE) "downloading... "
- $(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(PKG_SOURCE)" "$(PKG_MD5SUM)" $(PKG_SOURCE_URL) $(MAKE_TRACE)
-
-$(PKG_BUILD_DIR)/.prepared: $(DL_DIR)/$(PKG_SOURCE)
+ $(SCRIPT_DIR)/download.pl "$(DL_DIR)" "$(PKG_SOURCE)" "$(PKG_MD5SUM)" $(PKG_SOURCE_URL)
endif
ifneq ($(strip $(PKG_CAT)),)
define Build/Prepare/Default
- if [ "$(PKG_CAT)" = "unzip" ]; then \
+ @if [ "$(PKG_CAT)" = "unzip" ]; then \
unzip -d $(PKG_BUILD_DIR) $(DL_DIR)/$(PKG_SOURCE) ; \
else \
$(PKG_CAT) $(DL_DIR)/$(PKG_SOURCE) | tar -C $(PKG_BUILD_DIR)/.. $(TAR_OPTIONS) - ; \
fi
- if [ -d ./patches ]; then \
+ @if [ -d ./patches ]; then \
$(PATCH) $(PKG_BUILD_DIR) ./patches ; \
fi
endef
endef
define Build/Configure/Default
- (cd $(PKG_BUILD_DIR); \
+ @(cd $(PKG_BUILD_DIR); \
[ -x configure ] && \
$(TARGET_CONFIGURE_OPTS) \
CFLAGS="$(TARGET_CFLAGS)" \
endef
define Build/Configure
-$(call Build/Configure/Default)
+$(call Build/Configure/Default,)
endef
define Build/Compile/Default
dumpinfo:
$(DUMPINFO)
else
-
-source: $(DL_DIR)/$(PKG_SOURCE)
-prepare: source
- @[ -f $(PKG_BUILD_DIR)/.prepared ] || { \
- $(CMD_TRACE) "preparing... "; \
- $(MAKE) $(PKG_BUILD_DIR)/.prepared $(MAKE_TRACE); \
- }
-
-configure: prepare
- @[ -f $(PKG_BUILD_DIR)/.configured ] || { \
- $(CMD_TRACE) "configuring... "; \
- $(MAKE) $(PKG_BUILD_DIR)/.configured $(MAKE_TRACE); \
- }
-
-compile-targets:
-compile: configure
- @$(CMD_TRACE) "compiling... "
- @$(MAKE) compile-targets $(MAKE_TRACE)
-
-install-targets:
-install:
- @$(CMD_TRACE) "installing... "
- @$(MAKE) install-targets $(MAKE_TRACE)
-
-rebuild:
- $(CMD_TRACE) "rebuilding... "
- $(MAKE) package-clean compile $(MAKE_TRACE)
-
+
$(PACKAGE_DIR):
mkdir -p $@
-clean-targets:
-clean:
- @$(CMD_TRACE) "cleaning... "
- @$(MAKE) clean-targets $(MAKE_TRACE)
+source: FORCE $(DL_DIR)/$(PKG_SOURCE)
+prepare: FORCE $(PKG_BUILD_DIR)/.prepared
+configure: FORCE $(PKG_BUILD_DIR)/.configured
+
+compile-targets: FORCE
+compile: FORCE compile-targets
+
+install-targets: FORCE
+install: FORCE install-targets
+
+clean-targets: FORCE
+clean: FORCE
+ @$(MAKE) clean-targets
rm -rf $(PKG_BUILD_DIR)
endif
-.PHONY: all source prepare compile install clean rebuild dumpinfo compile-targets install-targets clean-targets
+.PHONY: FORCE
+FORCE: