You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			365 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Makefile
		
	
			
		
		
	
	
			365 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Makefile
		
	
# vim:filetype=make:foldmethod=marker:fdl=0:
 | 
						|
#
 | 
						|
# Makefile: install/uninstall/link vim plugin files.
 | 
						|
# Author: Cornelius <cornelius.howl@gmail.com>
 | 
						|
# Date:   一  3/15 22:49:26 2010
 | 
						|
# Version:  1.0
 | 
						|
#
 | 
						|
# PLEASE DO NOT EDIT THIS FILE. THIS FILE IS AUTO-GENERATED FROM Makefile.tpl
 | 
						|
# LICENSE {{{
 | 
						|
# Copyright (c) 2010 <Cornelius (c9s)>
 | 
						|
#
 | 
						|
# Permission is hereby granted, free of charge, to any person
 | 
						|
# obtaining a copy of this software and associated documentation
 | 
						|
# files (the "Software"), to deal in the Software without
 | 
						|
# restriction, including without limitation the rights to use,
 | 
						|
# copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
						|
# copies of the Software, and to permit persons to whom the
 | 
						|
# Software is furnished to do so, subject to the following
 | 
						|
# conditions:
 | 
						|
#
 | 
						|
# The above copyright notice and this permission notice shall be
 | 
						|
# included in all copies or substantial portions of the Software.
 | 
						|
#
 | 
						|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
						|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 | 
						|
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | 
						|
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 | 
						|
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 | 
						|
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
						|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 | 
						|
# OTHER DEALINGS IN THE SOFTWARE.
 | 
						|
# }}}
 | 
						|
# VIM RECORD FORMAT: {{{
 | 
						|
# {
 | 
						|
#           version => 0.2,    # record spec version
 | 
						|
#           generated_by => 'Vimana-' . $Vimana::VERSION,
 | 
						|
#           install_type => 'auto',    # auto , make , rake ... etc
 | 
						|
#           package => $self->package_name,
 | 
						|
#           files => \@e,
 | 
						|
# }
 | 
						|
# }}}
 | 
						|
 | 
						|
# INTERNAL VARIABLES {{{
 | 
						|
 | 
						|
RECORD_FILE=.record
 | 
						|
PWD=`pwd`
 | 
						|
README_FILES=`ls -1 | grep -i readme`
 | 
						|
WGET_OPT=-c -nv
 | 
						|
CURL_OPT=
 | 
						|
RECORD_SCRIPT=.mkrecord
 | 
						|
TAR=tar czvf
 | 
						|
 | 
						|
GIT_SOURCES=
 | 
						|
 | 
						|
# INTERNAL FUNCTIONS {{{
 | 
						|
record_file = \
 | 
						|
		PTYPE=`cat $(1) | perl -nle 'print $$1 if /^"\s*script\s*type:\s*(\S*)$$/i'` ;\
 | 
						|
		echo $(VIMRUNTIME)/$$PTYPE/$(1) >> $(2)
 | 
						|
 | 
						|
# }}}
 | 
						|
 | 
						|
# PUBLIC FUNCTIONS {{{
 | 
						|
 | 
						|
GIT_SOURCES=
 | 
						|
DEPEND_DIR=/tmp/vim-deps
 | 
						|
 | 
						|
# Usage:
 | 
						|
#
 | 
						|
# 		$(call install_git_sources)
 | 
						|
#
 | 
						|
 | 
						|
install_git_source = \
 | 
						|
		PWD=$(PWD) ; \
 | 
						|
		mkdir -p $(DEPEND_DIR) ; \
 | 
						|
		cd $(DEPEND_DIR) ; \
 | 
						|
		for git_uri in $(GIT_SOURCES) ; do \
 | 
						|
			OUTDIR=$$(echo $$git_uri | perl -pe 's{^.*/}{}') ;\
 | 
						|
			echo $$OUTDIR ; \
 | 
						|
			if [[ -e $$OUTDIR ]] ; then \
 | 
						|
				cd $$OUTDIR ; \
 | 
						|
				git pull origin master && \
 | 
						|
				make install && cd .. ; \
 | 
						|
			else \
 | 
						|
				git clone $$git_uri $$OUTDIR && \
 | 
						|
				cd $$OUTDIR && \
 | 
						|
				make install && cd .. ; \
 | 
						|
			fi; \
 | 
						|
		done ;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
# install file by inspecting content
 | 
						|
install_file = \
 | 
						|
		PTYPE=`cat $(1) | perl -nle 'print $$1 if /^"\s*script\s*type:\s*(\S*)$$/i'` ;\
 | 
						|
		cp -v $(1) $(VIMRUNTIME)/$$PTYPE/$(1)
 | 
						|
 | 
						|
link_file = \
 | 
						|
		PTYPE=`cat $(1) | perl -nle 'print $$1 if /^"\s*script\s*type:\s*(\S*)$$/i'` ;\
 | 
						|
		cp -v $(1) $(VIMRUNTIME)/$$PTYPE/$(1)
 | 
						|
 | 
						|
unlink_file = \
 | 
						|
		PTYPE=`cat $(1) | perl -nle 'print $$1 if /^"\s*script\s*type:\s*(\S*)$$/i'` ;\
 | 
						|
		rm -fv $(VIMRUNTIME)/$$PTYPE/$(1)
 | 
						|
 | 
						|
# fetch script from an url
 | 
						|
fetch_url = \
 | 
						|
		@if [[ -e $(2) ]] ; then 				\
 | 
						|
			exit								\
 | 
						|
		; fi	 							    \
 | 
						|
		; echo " => $(2)"						\
 | 
						|
		; if [[ ! -z `which curl` ]] ; then   \
 | 
						|
			curl $(CURL_OPT) $(1) -o $(2) ;					\
 | 
						|
		; elif [[ ! -z `which wget` ]] ; then 	\
 | 
						|
			wget $(WGET_OPT) $(1) -O $(2)  				    \
 | 
						|
		; fi  									\
 | 
						|
		; echo $(2) >> .bundlefiles
 | 
						|
 | 
						|
 | 
						|
install_source = \
 | 
						|
		for git_uri in $(GIT_SOURCES) ; do \
 | 
						|
			OUTDIR=$$(echo $$git_uri | perl -pe 's{^.*/}{}') ;\
 | 
						|
			echo $$OUTDIR ; \
 | 
						|
		done
 | 
						|
 | 
						|
# fetch script from github
 | 
						|
fetch_github = \
 | 
						|
		@if [[ -e $(5) ]] ; then 				\
 | 
						|
			exit								\
 | 
						|
		; fi	 							    \
 | 
						|
		; echo " => $(5)"						\
 | 
						|
		; if [[ ! -z `which curl` ]] ; then                        	    \
 | 
						|
			curl $(CURL_OPT) http://github.com/$(1)/$(2)/raw/$(3)/$(4) -o $(5)      \
 | 
						|
		; elif [[ ! -z `which wget` ]] ; then                               \
 | 
						|
			wget $(WGET_OPT) http://github.com/$(1)/$(2)/raw/$(3)/$(4) -O $(5)  \
 | 
						|
		; fi									\
 | 
						|
		; echo $(5) >> .bundlefiles
 | 
						|
 | 
						|
# fetch script from local file
 | 
						|
fetch_local = @cp -v $(1) $(2) \
 | 
						|
		; @echo $(2) >> .bundlefiles
 | 
						|
 | 
						|
# 1: NAME , 2: URI
 | 
						|
dep_from_git = \
 | 
						|
		D=/tmp/$(1)-$$RANDOM ; git clone $(2) $$D ; cd $$D ; make install ; 
 | 
						|
 | 
						|
dep_from_svn = \
 | 
						|
		D=/tmp/$(1)-$$RANDOM ; svn checkout $(2) $$D ; cd $$D ; make install ;
 | 
						|
 | 
						|
# }}}
 | 
						|
# }}}
 | 
						|
# ======= DEFAULT CONFIG ======= {{{
 | 
						|
 | 
						|
# Default plugin name
 | 
						|
NAME=`basename \`pwd\``
 | 
						|
VERSION=0.1
 | 
						|
 | 
						|
# Files to add to tarball:
 | 
						|
DIRS=`ls -1F | grep / | sed -e 's/\///'`
 | 
						|
 | 
						|
# Runtime path to install:
 | 
						|
VIMRUNTIME=~/.vim
 | 
						|
 | 
						|
# Other Files to be added:
 | 
						|
FILES=`ls -1 | grep '.vim$$'`
 | 
						|
MKFILES=Makefile `ls -1 | grep '.mk$$'`
 | 
						|
 | 
						|
# ======== USER CONFIG ======= {{{
 | 
						|
#   please write config in config.mk
 | 
						|
#   this will override default config
 | 
						|
#
 | 
						|
# Custom Name:
 | 
						|
#
 | 
						|
# 	NAME=[plugin name]
 | 
						|
#
 | 
						|
# Custom dir list:
 | 
						|
#
 | 
						|
# 	DIRS=autoload after doc syntax plugin 
 | 
						|
#
 | 
						|
# Files to add to tarball:
 | 
						|
#
 | 
						|
# 	FILES=
 | 
						|
# 
 | 
						|
# Bundle dependent scripts:
 | 
						|
#
 | 
						|
# 	bundle-deps:
 | 
						|
# 	  $(call fetch_github,[account id],[project],[branch],[source path],[target path])
 | 
						|
# 	  $(call fetch_url,[file url],[target path])
 | 
						|
# 	  $(call fetch_local,[from],[to])
 | 
						|
 | 
						|
SHELL=bash
 | 
						|
 | 
						|
CONFIG_FILE=config.mk
 | 
						|
-include ~/.vimauthor.mk
 | 
						|
-include $(CONFIG_FILE)
 | 
						|
 | 
						|
# }}}
 | 
						|
# }}}
 | 
						|
# ======= SECTIONS ======= {{{
 | 
						|
-include ext.mk
 | 
						|
 | 
						|
all: install-deps install
 | 
						|
 | 
						|
install-deps:
 | 
						|
	# check required binaries
 | 
						|
	[[ -n $$(which git) ]]
 | 
						|
	[[ -n $$(which bash) ]]
 | 
						|
	[[ -n $$(which vim) ]]
 | 
						|
	[[ -n $$(which wget) || -n $$(which curl) ]]
 | 
						|
	$(call install_git_sources)
 | 
						|
 | 
						|
check-require:
 | 
						|
	@if [[ -n `which wget` || -n `which curl` || -n `which fetch` ]]; then echo "wget|curl|fetch: OK" ; else echo "wget|curl|fetch: NOT OK" ; fi
 | 
						|
	@if [[ -n `which vim` ]] ; then echo "vim: OK" ; else echo "vim: NOT OK" ; fi
 | 
						|
 | 
						|
config:
 | 
						|
	@rm -f $(CONFIG_FILE)
 | 
						|
	@echo "NAME="                                                                                      >> $(CONFIG_FILE)
 | 
						|
	@echo "VERSION="                                                                                           >> $(CONFIG_FILE)
 | 
						|
	@echo "#DIRS="
 | 
						|
	@echo "#FILES="
 | 
						|
	@echo ""                                                                                           >> $(CONFIG_FILE)
 | 
						|
	@echo "bundle-deps:"                                                                               >> $(CONFIG_FILE)
 | 
						|
	@echo "\t\t\$$(call fetch_github,ID,REPOSITORY,BRANCH,PATH,TARGET_PATH)" >> $(CONFIG_FILE)
 | 
						|
	@echo "\t\t\$$(call fetch_url,FILE_URL,TARGET_PATH)"                                           >> $(CONFIG_FILE)
 | 
						|
 | 
						|
 | 
						|
init-author:
 | 
						|
	@echo "AUTHOR=" > ~/.vimauthor.mk
 | 
						|
 | 
						|
bundle-deps:
 | 
						|
 | 
						|
bundle: bundle-deps
 | 
						|
 | 
						|
dist: bundle mkfilelist
 | 
						|
	@$(TAR) $(NAME)-$(VERSION).tar.gz --exclude '*.svn' --exclude '.git' $(DIRS) $(README_FILES) $(FILES) $(MKFILES)
 | 
						|
	@echo "$(NAME)-$(VERSION).tar.gz is ready."
 | 
						|
 | 
						|
init-runtime:
 | 
						|
	@mkdir -vp $(VIMRUNTIME)
 | 
						|
	@mkdir -vp $(VIMRUNTIME)/record
 | 
						|
	@if [[ -n "$(DIRS)" ]] ; then find $(DIRS) -type d | while read dir ;  do \
 | 
						|
			mkdir -vp $(VIMRUNTIME)/$$dir ; done ; fi
 | 
						|
 | 
						|
release:
 | 
						|
	if [[ -n `which vimup` ]] ; then \
 | 
						|
	fi
 | 
						|
 | 
						|
pure-install:
 | 
						|
	@echo "Using Shell:" $(SHELL) 
 | 
						|
	@echo "Installing"
 | 
						|
	@if [[ -n "$(DIRS)" ]] ; then find $(DIRS) -type f | while read file ; do \
 | 
						|
			cp -v $$file $(VIMRUNTIME)/$$file ; done ; fi
 | 
						|
	@echo "$(FILES)" | while read vimfile ; do \
 | 
						|
		if [[ -n $$vimfile ]] ; then \
 | 
						|
			$(call install_file,$$vimfile) ; fi ; done
 | 
						|
 | 
						|
install: init-runtime bundle pure-install record
 | 
						|
 | 
						|
 | 
						|
uninstall-files:
 | 
						|
	@echo "Uninstalling"
 | 
						|
	@if [[ -n "$(DIRS)" ]] ; then find $(DIRS) -type f | while read file ; do \
 | 
						|
			rm -fv $(VIMRUNTIME)/$$file ; done ; fi
 | 
						|
	@echo "$(FILES)" | while read vimfile ; do \
 | 
						|
		if [[ -n $$vimfile ]] ; then \
 | 
						|
			$(call unlink_file,$$vimfile) ; fi ; done
 | 
						|
 | 
						|
uninstall: uninstall-files rmrecord
 | 
						|
 | 
						|
link: init-runtime
 | 
						|
	@echo "Linking"
 | 
						|
	@if [[ -n "$(DIRS)" ]]; then find $(DIRS) -type f | while read file ; do \
 | 
						|
			ln -sfv $(PWD)/$$file $(VIMRUNTIME)/$$file ; done ; fi
 | 
						|
	@echo "$(FILES)" | while read vimfile ; do \
 | 
						|
		if [[ -n $$vimfile ]] ; then \
 | 
						|
			$(call link_file,$$vimfile) ; fi ; done
 | 
						|
 | 
						|
mkfilelist:
 | 
						|
	@echo $(NAME) > $(RECORD_FILE)
 | 
						|
	@echo $(VERSION) >> $(RECORD_FILE)
 | 
						|
	@if [[ -n "$(DIRS)" ]] ; then find $(DIRS) -type f | while read file ; do \
 | 
						|
			echo $(VIMRUNTIME)/$$file >> $(RECORD_FILE) ; done ; fi
 | 
						|
	@echo "$(FILES)" | while read vimfile ; do \
 | 
						|
		if [[ -n $$vimfile ]] ; then \
 | 
						|
			$(call record_file,$$vimfile,$(RECORD_FILE)) ; fi ; done
 | 
						|
 | 
						|
vimball-edit:
 | 
						|
	find $(DIRS) -type f > .tmp_list
 | 
						|
	vim .tmp_list
 | 
						|
	vim .tmp_list -c ":%MkVimball $(NAME)-$(VERSION) ." -c "q"
 | 
						|
	@rm -vf .tmp_list
 | 
						|
	@echo "$(NAME)-$(VERSION).vba is ready."
 | 
						|
 | 
						|
vimball:
 | 
						|
	find $(DIRS) -type f > .tmp_list
 | 
						|
	vim .tmp_list -c ":%MkVimball $(NAME)-$(VERSION) ." -c "q"
 | 
						|
	@rm -vf .tmp_list
 | 
						|
	@echo "$(NAME)-$(VERSION).vba is ready."
 | 
						|
 | 
						|
mkrecordscript:
 | 
						|
		@echo ""  >  $(RECORD_SCRIPT)
 | 
						|
		@echo "fun! s:mkmd5(file)"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "  if executable('md5')"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "    return system('cat ' . a:file . ' | md5')"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "  else"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "    return \"\""  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "  endif"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "endf"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "let files = readfile('.record')"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "let package_name = remove(files,0)"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "let script_version      = remove(files,0)"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "let record = { 'version' : 0.3 , 'generated_by': 'Vim-Makefile' , 'script_version': script_version , 'install_type' : 'makefile' , 'package' : package_name , 'files': [  ] }"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "for file in files "  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "  let md5 = s:mkmd5(file)"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "  cal add( record.files , {  'checksum': md5 , 'file': file  } )"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "endfor"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "redir => output"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "silent echon record"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "redir END"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "let content = join(split(output,\"\\\\n\"),'')"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "let record_file = expand('~/.vim/record/' . package_name )"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "cal writefile( [content] , record_file )"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "cal delete('.record')"  >> $(RECORD_SCRIPT)
 | 
						|
		@echo "echo \"Done\""  >> $(RECORD_SCRIPT)
 | 
						|
 | 
						|
 | 
						|
record: mkfilelist mkrecordscript
 | 
						|
	vim --noplugin -V10install.log -c "so $(RECORD_SCRIPT)" -c "q"
 | 
						|
	@echo "Vim script record making log: install.log"
 | 
						|
#	@rm -vf $(RECORD_FILE)
 | 
						|
 | 
						|
rmrecord:
 | 
						|
	@echo "Removing Record"
 | 
						|
	@rm -vf $(VIMRUNTIME)/record/$(NAME)
 | 
						|
 | 
						|
clean: clean-bundle-deps
 | 
						|
	@rm -vf $(RECORD_FILE)
 | 
						|
	@rm -vf $(RECORD_SCRIPT)
 | 
						|
	@rm -vf install.log
 | 
						|
	@rm -vf *.tar.gz
 | 
						|
 | 
						|
clean-bundle-deps:
 | 
						|
	@echo "Removing Bundled scripts..."
 | 
						|
	@if [[ -e .bundlefiles ]] ; then \
 | 
						|
		rm -fv `echo \`cat .bundlefiles\``; \
 | 
						|
	fi
 | 
						|
	@rm -fv .bundlefiles
 | 
						|
 | 
						|
update:
 | 
						|
	@echo "Updating Makefile..."
 | 
						|
	@URL=http://github.com/c9s/vim-makefile/raw/master/Makefile ; \
 | 
						|
	if [[ -n `which curl` ]]; then \
 | 
						|
		curl $$URL -o Makefile ; \
 | 
						|
	if [[ -n `which wget` ]]; then \
 | 
						|
		wget -c $$URL ; \
 | 
						|
	elif [[ -n `which fetch` ]]; then \
 | 
						|
		fetch $$URL ; \
 | 
						|
	fi
 | 
						|
 | 
						|
version:
 | 
						|
	@echo version - $(MAKEFILE_VERSION)
 | 
						|
 | 
						|
# }}}
 |