123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- default: help
- SRC := ../contracts
- DST := patched
- DIFF := diff
- SRCS := $(shell find $(SRC) -type f)
- DSTS := $(shell find $(DST) -type f)
- DIFFS := $(shell find $(DIFF) -type f)
- ###############################################################################
- # Apply all patches in the $DIFF folder to the $DST folder
- apply: $(DST) $(patsubst $(DIFF)/%.patch,$(DST)/%,$(subst _,/,$(DIFFS)))
- # Reset the $DST folder
- $(DST): FORCE
- @rm -rf $@
- @cp -r $(SRC) $@
- # Update a solidity file in the $DST directory using the corresponding patch
- $(DST)/%.sol: FORCE | $(DST)
- @echo Applying patch to $@
- @patch -p0 -d $(DST) < $(patsubst $(DST)_%,$(DIFF)/%.patch,$(subst /,_,$@))
- ###############################################################################
- # Record all difference between $SRC and $DST in patches
- record: $(DIFF) $(patsubst %,$(DIFF)/%.patch,$(subst /,_,$(subst $(SRC)/,,$(SRCS)) $(subst $(DST)/,,$(DSTS))))
- # Create the $DIFF folder
- $(DIFF): FORCE
- @rm -rf $@
- @mkdir $@
- # Create the patch file by comparing the source and the destination
- $(DIFF)/%.patch: FORCE | $(DIFF)
- @echo Generating patch $@
- @diff -ruN \
- $(patsubst $(DIFF)/%.patch,$(SRC)/%,$(subst _,/,$@)) \
- $(patsubst $(DIFF)/%.patch,$(DST)/%,$(subst _,/,$@)) \
- | sed 's+$(SRC)/++g' \
- | sed 's+$(DST)/++g' \
- > $@
- @[ -s $@ ] || rm $@
- ###############################################################################
- help:
- @echo "usage:"
- @echo " make apply: create $(DST) directory by applying the patches to $(SRC)"
- @echo " make record: record the patches capturing the differences between $(SRC) and $(DST)"
- @echo " make clean: remove all generated files (those ignored by git)"
- clean:
- git clean -fdX
- FORCE: ;
|