# Should be changed to /usr/local
prefix=$(HOME)
bindir=$(prefix)/bin
libdir=$(prefix)/lib/cogito
sharedir=$(prefix)/share/cogito
INSTALL?=install
### --- END CONFIGURATION SECTION ---
SCRIPT= cg-object-id cg-add cg-admin-lsobj cg-admin-uncommit \
cg-branch-add cg-branch-ls cg-reset cg-clone cg-commit cg-diff \
cg-export cg-help cg-init cg-log cg-merge cg-mkpatch cg-patch \
cg-fetch cg-restore cg-rm cg-seek cg-status cg-tag cg-tag-ls cg-update \
cg cg-admin-ls cg-push cg-branch-chg cg-admin-cat cg-clean \
cg-admin-setuprepo cg-switch cg-mv cg-admin-rewritehist
LIB_SCRIPT=cg-Xlib cg-Xmergefile cg-Xfetchprogress
GEN_SCRIPT= cg-version
VERSION= VERSION
SHARE_FILES= default-exclude
### Build rules
.PHONY: all cogito
all: cogito
cogito: $(GEN_SCRIPT)
ifneq (,$(wildcard .git))
GIT_HEAD=.git/$(shell git-symbolic-ref HEAD)
GIT_HEAD_ID=$(shell cg-object-id -d)
endif
cg-version: cg-version.in $(VERSION) $(GIT_HEAD)
@echo Generating cg-version...
@rm -f $@
@sed -e 's/@@VERSION@@/$(shell cat $(VERSION))/' \
-e 's/@@GIT_HEAD_ID@@/$(GIT_HEAD_ID)/' \
< $< > $@
@chmod +x $@
doc:
$(MAKE) -C Documentation all
### Testing rules
test: all
$(MAKE) -C t/ all
$(MAKE) -C Documentation/ test
### Installation rules
sedlibdir=$(shell echo $(libdir) | sed 's/\//\\\//g')
sedsharedir=$(shell echo $(sharedir) | sed 's/\//\\\//g')
.PHONY: install install-cogito install-doc
install: install-cogito
install-cogito: $(SCRIPT) $(LIB_SCRIPT) $(GEN_SCRIPT)
$(INSTALL) -m755 -d $(DESTDIR)$(bindir)
$(INSTALL) $(SCRIPT) $(GEN_SCRIPT) $(DESTDIR)$(bindir)
for i in 'cg-cancel:cg-reset' 'commit-id:cg-object-id' \
'tree-id:cg-object-id' 'parent-id:cg-object-id' \
'cg-commit-id:cg-object-id' \
'cg-tree-id:cg-object-id' 'cg-parent-id:cg-object-id' \
'cg-pull:cg-fetch'; do \
old=`echo $$i | cut -d : -f 1`; \
new=`echo $$i | cut -d : -f 2`; \
rm -f $(DESTDIR)$(bindir)/$$old; \
ln -s $$new $(DESTDIR)$(bindir)/$$old; \
done
$(INSTALL) -m755 -d $(DESTDIR)$(libdir)
$(INSTALL) $(LIB_SCRIPT) $(DESTDIR)$(libdir)
cd $(DESTDIR)$(bindir); \
for file in $(SCRIPT) $(GEN_SCRIPT); do \
sed -e 's/\$${COGITO_LIB}/\$${COGITO_LIB:-$(sedlibdir)\/}/g' \
-e 's/\$${COGITO_SHARE}/\$${COGITO_SHARE:-$(sedsharedir)\/}/g' \
$$file > $$file.new; \
cat $$file.new > $$file; rm $$file.new; \
done
cd $(DESTDIR)$(libdir); \
for file in $(LIB_SCRIPT); do \
sed -e 's/\$${COGITO_LIB}/\$${COGITO_LIB:-$(sedlibdir)\/}/g' \
-e 's/\$${COGITO_SHARE}/\$${COGITO_SHARE:-$(sedsharedir)\/}/g' \
$$file > $$file.new; \
cat $$file.new > $$file; rm $$file.new; \
done
$(INSTALL) -m755 -d $(DESTDIR)$(sharedir)
$(INSTALL) -m644 $(SHARE_FILES) $(DESTDIR)$(sharedir)
install-doc:
$(MAKE) -C Documentation install
uninstall:
cd $(DESTDIR)$(bindir) && rm -f $(SCRIPT) $(GEN_SCRIPT)
cd $(DESTDIR)$(libdir) && rm -f $(LIB_SCRIPT)
cd $(DESTDIR)$(sharedir) && rm -f $(SHARE_FILES)
### Maintainer's dist rules
cogito.spec: cogito.spec.in $(VERSION)
sed -e 's/@@VERSION@@/$(shell cat $(VERSION) | cut -d"-" -f2)/g' < $< > $@
GIT_TARNAME=$(shell cat $(VERSION))
dist: cogito.spec
cg-export $(GIT_TARNAME).tar
@mkdir -p $(GIT_TARNAME)
@cp cogito.spec $(GIT_TARNAME)
tar rf $(GIT_TARNAME).tar $(GIT_TARNAME)/cogito.spec
@rm -rf $(GIT_TARNAME)
gzip -f -9 $(GIT_TARNAME).tar
rpm: dist
rpmbuild -ta $(GIT_TARNAME).tar.gz
deb: dist
tar zxf $(GIT_TARNAME).tar.gz
dpkg-source -b $(GIT_TARNAME)
cd $(GIT_TARNAME) && fakeroot debian/rules binary \
&& cd .. && rm -rf $(GIT_TARNAME)
Portfile: Portfile.in $(VERSION) dist
sed -e 's/@@VERSION@@/$(shell cat $(VERSION) | cut -d"-" -f2)/g' < Portfile.in > Portfile
echo "checksums md5 " `md5sum $(GIT_TARNAME).tar.gz | cut -d ' ' -f 1` >> Portfile
### Cleaning rules
clean:
rm -f $(GEN_SCRIPT)
rm -f cogito-*.tar.gz cogito.spec
$(MAKE) -C Documentation/ clean
syntax highlighted by Code2HTML, v. 0.9.1