1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
# BSTSTYLES are the standard styles that we distribute
BSTSTYLES=plainurl.bst unsrturl.bst alphaurl.bst abbrvurl.bst
# TESTSTYLES are a couple of extra ones that we explicitly test
TESTSTYLES=mlaurl.bst
MAINTAINER_FILES= Makefile configure
GENERATED=urlbst urlbst.tex urlbst.pdf urlbst.html \
README VERSION $(BSTSTYLES)
# distribute generated files
# ...plus the configure files
# ...plus the configured files
DISTRIBS=$(GENERATED) \
configure configure.ac \
urlbst.in urlbst.bib urlbst.tex.in urlbst.html.in Makefile.in
prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
DIST=urlbst-@PACKAGE_VERSION@
### Implicit rules
# Don't include --inlinelinks when generating %url.bst here, as we
# do want the links visible when generating the documentation, and it's
# probably abetter default in any case.
%url.bst: urlbst
export BSTINPUTS=test: ; \
if test -z "`kpsewhich ${@:url.bst=.bst}`"; then \
echo "Can't locate ${@:url.bst=.bst}"; \
else \
./urlbst --eprint --doi --pubmed --hyperref `kpsewhich ${@:url.bst=.bst}` $@; \
fi
# Incomplete TeX support
%.ps: %.dvi
dvips -o $@ $<
%.bbl: %.tex plainurl.bst
pdflatex $<
if grep -q 'Citation.*undefined' ${<:.tex=.log}; then \
bibtex ${<:.tex=}; \
pdflatex $<; \
rm ${<:.tex=.pdf}; \
fi
%.pdf: %.tex %.bbl
pdflatex $<
%.dvi: %.tex %.bbl
latex $<
%.gz: %
gzip --best -f $<
### Targets start here
all: urlbst
dist: $(DIST).tar.gz
$(DIST).tar: $(DISTRIBS)
sed '1s,.*,#! /usr/bin/env perl,' urlbst >tmp && mv tmp urlbst \
&& chmod +x urlbst
rm -Rf $(DIST) $(DIST).tar
mkdir $(DIST)
cp $(DISTRIBS) $(DIST)
tar cf $@ $(DIST)
rm -Rf $(DIST)
urlbst: urlbst.in config.status
./config.status urlbst
urlbst.tex: urlbst.tex.in config.status
./config.status urlbst.tex
urlbst.html: urlbst.html.in config.status
./config.status urlbst.html
Makefile: Makefile.in config.status
./config.status Makefile
configure: configure.ac
autoconf
config.status: configure
./configure
# Version stamp file, included in the distribution for convenience,
# so it's easy to see which version it is has been unpacked at CTAN.
VERSION:
echo $(DIST) >VERSION
# The README is just a plain-text version of urlbst.html
README: urlbst.html
lynx -dump -nolist urlbst.html >README
# Very simple install target -- hardly worth bothering, really....
install: urlbst
cp urlbst $(bindir)
# Very simple test target -- just check that we don't bomb converting
# the standard styles
test: $(BSTSTYLES) $(TESTSTYLES)
for f in $(BSTSTYLES) $(TESTSTYLES); do \
ROOT=`echo $$f|sed s/\.bst$$//`; \
printf '\\relax\n' > test-$$ROOT.aux; \
printf '\\citation{*}\n' >> test-$$ROOT.aux; \
printf '\\bibdata{urlbst}\n' >> test-$$ROOT.aux; \
printf '\\bibstyle{'"$$ROOT"'}\n' >> test-$$ROOT.aux; \
bibtex test-$$ROOT; \
done
# Brute-force test target, which finds all the system .bst files,
# converts them, and runs BibTeX on them. It doesn't test the results
# in any way -- you have to do that by eye.
#
# No, this is a hopelessly blunderbus approach. And in any case the
# 'locate *.bst' doesn't work. At least the following would find only things
# on the .bst search path.
# BSTPATH=`kpsepath bst`
# for d in `IFS=:; echo $BSTPATH`; do
# dd=`expr "$d" : '!*\(.*[^/]\)/*$'`
# echo dd=$dd
# test -d "$dd" && find $dd -name \*.bst
# done
test-all:
printf '\\relax\n'>test-all.mainaux
sed -n 's/^.*{\(test:.*\),/\\citation{\1}/p' urlbst.bib>>test-all.mainaux
for f in `locate '*.bst' | grep -v norman`; do T=`echo $$f|sed 's+.*/\(.*\)\.bst+\1url+'`;perl urlbst $$f $$T.bst; if test $$? = 0; then TF=test-$$T.aux; cp test-all.mainaux $$TF;printf '\\bibdata{urlbst}\n'>>$$TF; printf '\\bibstyle{$$T}\n'>>$$TF; else rm $$T.bst; fi done
for f in `ls test-*.aux|sed s+.aux++`;do bibtex $$f;done
rm test-all.mainaux
# Tarball for unpacking in the webpage distribution directory
webpage-tarball.tar: urlbst.pdf urlbst.html $(DIST).tar.gz
mkdir webpage-tarball
cp urlbst.pdf $(DIST).tar.gz webpage-tarball
cp urlbst.html webpage-tarball/index.html
cd webpage-tarball; tar cf ../webpage-tarball.tar *
rm -Rf webpage-tarball
tidy:
rm -f webpage-tarball.tar
rm -f *~ test-*
rm -f *.aux *.bbl *.log *.blg *.dvi *.pdf
clean: tidy
rm -f *.bst
rm -Rf config.status autom4te.cache
rm -f $(GENERATED)
maintainer-clean: clean
rm -f $(MAINTAINER_FILES)
|