xref: /freebsd/contrib/ntp/scripts/build/genver (revision 416ba5c74546f32a993436a99516d35008e9f384)
1*2b15cb3dSCy Schubert#! /bin/sh
2*2b15cb3dSCy Schubert
3*2b15cb3dSCy Schubert# possible usage: $0 [-f] [version.m4] [version.def]
4*2b15cb3dSCy Schubert#
5*2b15cb3dSCy Schubert# -f would be 'force the update'
6*2b15cb3dSCy Schubert
7*2b15cb3dSCy Schubertforce=0
8*2b15cb3dSCy Schubertoutputs=
9*2b15cb3dSCy Schubertfor i in $*
10*2b15cb3dSCy Schubertdo
11*2b15cb3dSCy Schubert    case "$i" in
12*2b15cb3dSCy Schubert     -f)
13*2b15cb3dSCy Schubert	force=1
14*2b15cb3dSCy Schubert	;;
15*2b15cb3dSCy Schubert     *version.m4)
16*2b15cb3dSCy Schubert	outputs="m4/version.m4 $outputs"
17*2b15cb3dSCy Schubert	;;
18*2b15cb3dSCy Schubert     *version.def)
19*2b15cb3dSCy Schubert	outputs="include/version.def $outputs"
20*2b15cb3dSCy Schubert	;;
21*2b15cb3dSCy Schubert     *version.texi)
22*2b15cb3dSCy Schubert	outputs="include/version.texi $outputs"
23*2b15cb3dSCy Schubert	;;
24*2b15cb3dSCy Schubert     *) echo "Unrecognized option: $i"
25*2b15cb3dSCy Schubert	exit 1
26*2b15cb3dSCy Schubert	;;
27*2b15cb3dSCy Schubert    esac
28*2b15cb3dSCy Schubertdone
29*2b15cb3dSCy Schubert
30*2b15cb3dSCy Schubertcase "$outputs" in
31*2b15cb3dSCy Schubert '') outputs="m4/version.m4 include/version.def include/version.texi" ;;
32*2b15cb3dSCy Schubertesac
33*2b15cb3dSCy Schubert
34*2b15cb3dSCy Schubertset -e
35*2b15cb3dSCy Schubert
36*2b15cb3dSCy Schubert. ../packageinfo.sh
37*2b15cb3dSCy Schubert
38*2b15cb3dSCy Schubertdversion=`../scripts/build/VersionName -p ../packageinfo.sh`
39*2b15cb3dSCy Schubert
40*2b15cb3dSCy Schubertset +e
41*2b15cb3dSCy Schubert
42*2b15cb3dSCy Schubert# Create intermediate files in $TEMPDIR defaulting it to /tmp
43*2b15cb3dSCy Schubert# if not set.  This avoids races when multiple builds run in
44*2b15cb3dSCy Schubert# parallel on shared source.
45*2b15cb3dSCy Schubert
46*2b15cb3dSCy SchubertTEMPDIR=${TEMPDIR=/tmp}
47*2b15cb3dSCy Schubert
48*2b15cb3dSCy Schubertcase "$outputs" in
49*2b15cb3dSCy Schubert *version.m4*)
50*2b15cb3dSCy Schubert    echo "m4_define([VERSION_NUMBER],[${dversion}])" > "${TEMPDIR}/version.m4+"
51*2b15cb3dSCy Schubert    cmp -s "${TEMPDIR}/version.m4+" m4/version.m4
52*2b15cb3dSCy Schubert    rc=$?
53*2b15cb3dSCy Schubert    case "$force$rc" in
54*2b15cb3dSCy Schubert     00)
55*2b15cb3dSCy Schubert	rm -f "${TEMPDIR}/version.m4+"
56*2b15cb3dSCy Schubert	;;
57*2b15cb3dSCy Schubert     *)
58*2b15cb3dSCy Schubert	mv "${TEMPDIR}/version.m4+" m4/version.m4
59*2b15cb3dSCy Schubert	;;
60*2b15cb3dSCy Schubert    esac
61*2b15cb3dSCy Schubert    ;;
62*2b15cb3dSCy Schubertesac
63*2b15cb3dSCy Schubert
64*2b15cb3dSCy Schubertcase "$outputs" in
65*2b15cb3dSCy Schubert *version.def*)
66*2b15cb3dSCy Schubert    echo "version = '${dversion}';" > "${TEMPDIR}/version.def+"
67*2b15cb3dSCy Schubert    cmp -s "${TEMPDIR}/version.def+" include/version.def
68*2b15cb3dSCy Schubert    rc=$?
69*2b15cb3dSCy Schubert    case "$force$rc" in
70*2b15cb3dSCy Schubert     00)
71*2b15cb3dSCy Schubert	rm -f "${TEMPDIR}/version.def+"
72*2b15cb3dSCy Schubert	;;
73*2b15cb3dSCy Schubert     *)
74*2b15cb3dSCy Schubert	mv "${TEMPDIR}/version.def+" include/version.def
75*2b15cb3dSCy Schubert	;;
76*2b15cb3dSCy Schubert    esac
77*2b15cb3dSCy Schubert    ;;
78*2b15cb3dSCy Schubertesac
79*2b15cb3dSCy Schubert
80*2b15cb3dSCy Schubertcase "$outputs" in
81*2b15cb3dSCy Schubert *version.texi*)
82*2b15cb3dSCy Schubert    echo "@set UPDATED `date +'%d %B %Y'`"	>  "${TEMPDIR}/version.texi+"
83*2b15cb3dSCy Schubert    echo "@set EDITION $dversion"		>> "${TEMPDIR}/version.texi+"
84*2b15cb3dSCy Schubert    echo "@set VERSION $dversion"		>> "${TEMPDIR}/version.texi+"
85*2b15cb3dSCy Schubert    cmp -s "${TEMPDIR}/version.texi+" include/version.texi
86*2b15cb3dSCy Schubert    rc=$?
87*2b15cb3dSCy Schubert    case "$force$rc" in
88*2b15cb3dSCy Schubert     00)
89*2b15cb3dSCy Schubert	rm -f "${TEMPDIR}/version.texi+"
90*2b15cb3dSCy Schubert	;;
91*2b15cb3dSCy Schubert     *)
92*2b15cb3dSCy Schubert	mv "${TEMPDIR}/version.texi+" include/version.texi
93*2b15cb3dSCy Schubert	;;
94*2b15cb3dSCy Schubert    esac
95*2b15cb3dSCy Schubert    ;;
96*2b15cb3dSCy Schubertesac
97