What's cooking (2014/02 #04)
[git.git] / Make
blobb18be7769c2e1f38be144eedee31068a877b0086
1 #!/bin/sh
3 if test -z "$GIT"
4 then
5 case "$(git version 2>/dev/null)" in
6 "git version"*)
7 GIT=git ;;
8 *)
9 echo >&2 "No git to bootstrap"
10 exit 1 ;;
11 esac
14 inst_prefix=$(
15 IFS=:
16 for p in $PATH
18 probed=${p%/git-active/bin}
19 if test "$probed" != "$p"
20 then
21 echo "$probed"
22 exit
24 done
25 echo $HOME
28 LANG=C
29 old_style_def_fix=b79d18c92d9f4841a6a1a29b7b2373a8ff9871e1
31 : ${O=-O2}
33 for cv in PYTHON_PATH=python TCL_PATH=tclsh TCLTKPATH=wish
35 cmd=${cv#*=}
36 var=${cv%=*}
37 eval $(
38 if test -f "/usr/bin/$cmd"
39 then
40 break
42 for p in /usr/bin /usr/local/bin
44 if test -f "$p/$cmd"
45 then
46 echo "$var=$p/$cmd; export $var"
47 break
49 found=$(find "$p/$cmd"* -type f 2>/dev/null | head -n 1)
50 if test -f "$found"
51 then
52 echo "$var=$found; export $var"
53 break
55 done
57 done
59 Wall="-Wall -Wvla -Wdeclaration-after-statement -Wno-format-zero-length${Wall+ $Wall}"
60 tests= jobs= skip= oldtest= with_dash=
62 case `uname` in
63 OpenBSD)
64 O="-fgnu89-inline"
65 skip="t9402"
67 NetBSD)
68 OLD_ICONV=YesPlease; export OLD_ICONV
69 skip="t5000 t9402"
71 FreeBSD)
72 OLD_ICONV=YesPlease; export OLD_ICONV
73 skip="t5560"
75 SunOS)
76 NEEDS_CRYPTO_WITH_SSL=YesPlease ; export NEEDS_CRYPTO_WITH_SSL
77 NO_PEDANTIC=CannotDo Wall=
79 esac
81 old_style_def_fix () {
82 rev=$($GIT rev-parse HEAD 2>/dev/null) &&
83 case "$($GIT merge-base "$old_style_def_fix" "$rev")" in
84 $old_style_def_fix)
85 printf "%s\n" "-Wold-style-definition"
87 esac
90 determine_branch () {
91 expr "$($GIT symbolic-ref HEAD 2>/dev/null)" : 'refs/heads/\(.*\)' ||
92 echo detached
95 determine_version () {
96 v=`$GIT describe HEAD`
97 expr "$v" : '.*-g[0-9a-f]*$' >/dev/null && {
98 echo >&2 "You are on 'snap' but $v is not an official version."
99 exit 1
101 echo "$v"
104 determine_long_version () {
105 $GIT describe HEAD 2>/dev/null || echo unknown-g00000000 |
106 sed -e 's/-/./g'
109 while case $# in 0) break ;; esac
111 case "$1" in
112 -pedantic | --pedantic)
113 case "$NO_PEDANTIC" in
114 ?*) ;;
116 O="-Werror $(old_style_def_fix) -std=c99 $O"
117 O="-Wno-pointer-to-int-cast $O"
118 O="-Wpointer-arith -Woverflow -Wunused $O"
120 esac
121 # -Wvla
122 # O="$O -fwrapv -fno-strict-overflow"
124 -j*)
125 case "$NO_JOBS" in
126 ?*) jobs= ;;
127 '') jobs=$1 ;;
128 esac
130 -noprove | --noprove)
131 oldtest=t
133 -loose | --loose)
134 Wall=
136 --locale=*)
137 LANG=${1#*=}
139 --test=*)
140 tests=$(
141 cd t &&
142 for t in ${1#*=}
144 eval echo "t$t-*.sh"
145 done | tr '\012' ' '
148 --dash)
149 with_dash=y
152 shift
153 break
156 echo >&2 "Eh $1?"
157 exit 1
160 break
162 esac
163 shift
164 done
166 test -f /bin/dash || with_dash=
168 if test -z "$tests" && test -n "$skip"
169 then
170 GIT_SKIP_TESTS="${GIT_SKIP_TESTS:-$skip}"
171 export GIT_SKIP_TESTS
173 if test -z "$oldtest" &&
174 sh -c 'prove --version >/dev/null 2>&1' &&
175 sh -c 'prove --exec : >/dev/null 2>&1'
176 then
177 DEFAULT_TEST_TARGET=prove GIT_PROVE_OPTS="$jobs"
178 export DEFAULT_TEST_TARGET GIT_PROVE_OPTS
181 LC_ALL=$LANG
182 export LANG LC_ALL
184 branch=$(determine_branch)
186 case "$branch" in
187 next | maint | master | pu | jch)
188 prefix="$inst_prefix/git-$branch"
190 snap)
191 v=$(determine_version)
192 prefix="$inst_prefix/git-snap-$v"
195 prefix="$inst_prefix/git-test" ;;
196 esac
198 determine_long_version >version
200 set "prefix=$prefix" "$@"
201 if test -n "$with_dash" && test -f /bin/dash
202 then
203 set "SHELL_PATH=/bin/dash" "$@"
206 set MAN_BASE_URL='"http://www.kernel.org/pub/software/scm/git/docs/"' \
207 ASCIIDOC_NO_ROFF=YesPlease \
208 ASCIIDOC8=YesPlease \
209 BLK_SHA1=YesPlease \
210 GNU_ROFF=YesPlease \
211 "$@"
213 # Platform hack
214 if test -z "${make:+set}" && {
215 test -x /usr/local/bin/gmake ||
216 test -x /usr/pkg/bin/gmake ||
217 test -x /usr/bin/gmake
219 then
220 make=gmake
222 if test -f /bin/ginstall
223 then
224 set INSTALL=ginstall "$@"
227 CFLAGS="$O $Wall -g"
228 OK_TO_USE_CFLAGS=Yes
229 if test -n "${NO_CFLAGS+set}"
230 then
231 unset OK_TO_USE_CFLAGS
234 ${make-make} \
235 $jobs \
236 ETC_GITCONFIG=$prefix/etc/gitconfig \
237 ${OK_TO_USE_CFLAGS+"CFLAGS=$CFLAGS"} \
238 ${tests:+"T=$tests"} \
239 "$@"
240 status=$?
241 rm -f version
242 exit $status