path := ~/.mld filebase = $(basename $(notdir $(file))) suffix = $(subst .,,$(suffix $(file))) version ?= $(shell date +%Y.%m.%d) filelink = $(path)/$(notdir $(file)) newfile = $(path)/$(filebase)-$(version).$(suffix) # file = src/name.tgz # url = "http://surce-file.tgz" # rule = src/create-source-file.tgz .PHONY: $(filelink) $(file): $(filelink) @test -e $^ && mkdir -p $(dir $@) @test -e $^ && ln -fs $(path)/$(shell readlink $^) $@ $(filelink): $(newfile) @if [ "$(shell readlink $@)" != "$(^F)" ]; then \ test -e $@ -a -e $^ && diff $^ $@ >/dev/null && rm $^; \ test -e $@ -a -e $^ && rm -f $(path)/$(shell readlink $@); \ test -e $^ && ln -fs $(notdir $^) $@; \ fi || true $(newfile): @mkdir -p $(@D) @if [ -n "$(url)" ]; then \ wget -T 5 -t 2 "$(url)" -O $@ || rm -f $@ || true; \ elif [ -n "$(rule)" ]; then \ $(MAKE) -sf Makefile $(rule) file=$@ version=0 >&2 || rm -f $@ || true; \ fi version: $(filelink) @readlink $^ | sed "s/.*-\(.*\)\.$(suffix)/\\1/g" clean: rm -f $(path)/$(name)-* $(path)/$(name).* clean_all: rm -rf $(path)/*