| | |
| | | # |
| | | # CDDL HEADER END |
| | | # |
| | | # Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. |
| | | |
| | | # |
| | | # Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved. |
| | | # |
| | | .NOTPARALLEL: |
| | | |
| | | UNPACK = $(WS_TOOLS)/userland-unpack |
| | | FETCH = $(WS_TOOLS)/userland-fetch |
| | | include $(WS_MAKE_RULES)/prep-download.mk |
| | | |
| | | ARCHIVES += $(COMPONENT_ARCHIVE) |
| | | CLEAN_PATHS += $(SOURCE_DIR) |
| | | include $(WS_MAKE_RULES)/prep-hg.mk |
| | | include $(WS_MAKE_RULES)/prep-git.mk |
| | | include $(WS_MAKE_RULES)/prep-svn.mk |
| | | include $(WS_MAKE_RULES)/prep-unpack.mk |
| | | include $(WS_MAKE_RULES)/prep-patch.mk |
| | | |
| | | # In order to override PATCH_DIR and PATCH_PATTERN in component makefiles, they |
| | | # need to be conditionally set here. This means that the override needs to |
| | | # happen prior to including prep.mk. Otherwise other variables set here which |
| | | # are based on those will be expanded too early for the override to take effect. |
| | | # You also can't override PATCHES after including prep.mk; if you want to |
| | | # append filenames to PATCHES, you'll have to set $(EXTRA_PATCHES) prior to |
| | | # inclusion. |
| | | PATCH_DIR ?= patches |
| | | PATCH_PATTERN ?= *.patch |
| | | PATCHES = $(shell find $(PATCH_DIR) -type f -name '$(PATCH_PATTERN)' \ |
| | | 2>/dev/null | sort) $(EXTRA_PATCHES) |
| | | STAMPS = $(PATCHES:$(PATCH_DIR)/%=$(SOURCE_DIR)/.%ed) |
| | | download:: |
| | | |
| | | $(SOURCE_DIR)/.%ed: $(PATCH_DIR)/% |
| | | $(GPATCH) -d $(@D) $(GPATCH_FLAGS) < $< |
| | | $(TOUCH) $@ |
| | | unpack:: download |
| | | |
| | | # template for download rules. add new rules with $(call download-rule, suffix) |
| | | define download-rule |
| | | ARCHIVES += $$(COMPONENT_ARCHIVE$(1)) |
| | | CLOBBER_PATHS += $$(COMPONENT_ARCHIVE$(1)) |
| | | $$(USERLAND_ARCHIVES)$$(COMPONENT_ARCHIVE$(1)): Makefile |
| | | $$(FETCH) --file $$@ \ |
| | | $$(COMPONENT_ARCHIVE_URL$(1):%=--url %) \ |
| | | $$(COMPONENT_ARCHIVE_HASH$(1):%=--hash %) |
| | | $$(TOUCH) $$@ |
| | | endef |
| | | patch:: unpack |
| | | |
| | | # Generate the download rules from the above template |
| | | NUM_ARCHIVES = 1 2 3 4 5 6 7 |
| | | $(eval $(call download-rule,)) |
| | | $(foreach suffix,$(NUM_ARCHIVES),$(eval $(call download-rule,_$(suffix)))) |
| | | |
| | | $(SOURCE_DIR)/.unpacked: download Makefile $(PATCHES) |
| | | $(RM) -r $(SOURCE_DIR) |
| | | $(UNPACK) $(UNPACK_ARGS) $(USERLAND_ARCHIVES)$(COMPONENT_ARCHIVE) |
| | | $(COMPONENT_POST_UNPACK_ACTION) |
| | | $(TOUCH) $@ |
| | | |
| | | $(SOURCE_DIR)/.patched: $(SOURCE_DIR)/.unpacked $(STAMPS) |
| | | $(TOUCH) $@ |
| | | |
| | | $(SOURCE_DIR)/.prep: $(SOURCE_DIR)/.patched |
| | | $(SOURCE_DIR)/.prep: component-environment-prep download unpack patch |
| | | $(COMPONENT_PREP_ACTION) |
| | | $(TOUCH) $@ |
| | | |
| | | prep:: $(SOURCE_DIR)/.prep |
| | | |
| | | download:: $(ARCHIVES:%=$(USERLAND_ARCHIVES)%) |
| | | |
| | | clean:: |
| | | $(PRE_CLEAN_ACTION) |
| | | $(RM) -r $(CLEAN_PATHS) |
| | | |
| | | clobber:: clean |