]> git.ipfire.org Git - thirdparty/git.git/blame - Make
What's cooking (2024/01 #09)
[thirdparty/git.git] / Make
CommitLineData
1ad3ae4c
JH
1#!/bin/sh
2
bd45e1c3
JH
3MASTER=master
4
81a1b6df
JH
5if test -z "$GIT"
6then
7 case "$(git version 2>/dev/null)" in
8 "git version"*)
9 GIT=git ;;
10 *)
11 echo >&2 "No git to bootstrap"
12 exit 1 ;;
13 esac
14fi
936a95a0
JH
15
16inst_prefix=$(
17 IFS=:
18 for p in $PATH
19 do
20 probed=${p%/git-active/bin}
21 if test "$probed" != "$p"
22 then
23 echo "$probed"
24 exit
25 fi
26 done
27 echo $HOME
28)
997283a8 29
f355f256 30LANG=C
c36a8442 31
079b34d9
JH
32for cv in PYTHON_PATH=python TCL_PATH=tclsh TCLTKPATH=wish
33do
34 cmd=${cv#*=}
35 var=${cv%=*}
36 eval $(
37 if test -f "/usr/bin/$cmd"
38 then
39 break
40 fi
41 for p in /usr/bin /usr/local/bin
42 do
43 if test -f "$p/$cmd"
44 then
45 echo "$var=$p/$cmd; export $var"
46 break
47 fi
48 found=$(find "$p/$cmd"* -type f 2>/dev/null | head -n 1)
49 if test -f "$found"
50 then
51 echo "$var=$found; export $var"
52 break
53 fi
54 done
55 )
56done
57
09537cff 58tests= jobs= skip= oldtest= with_dash= testpen=
a55cb8ee 59clean=:
119ae8ad 60
079b34d9
JH
61case `uname` in
62OpenBSD)
3303f663 63 # O="-fgnu89-inline"
9f15e753 64 skip="t9402"
a8516ddd 65 ;;
94b7fd87
JH
66NetBSD)
67 OLD_ICONV=YesPlease; export OLD_ICONV
68 skip="t5000 t9402"
69 ;;
079b34d9
JH
70FreeBSD)
71 OLD_ICONV=YesPlease; export OLD_ICONV
ca2a4aa4 72 skip="t5560"
079b34d9
JH
73 ;;
74SunOS)
75 NEEDS_CRYPTO_WITH_SSL=YesPlease ; export NEEDS_CRYPTO_WITH_SSL
3303f663 76 NO_PEDANTIC=CannotDo
079b34d9
JH
77 ;;
78esac
79
119ae8ad 80determine_branch () {
fd9c53d5
JH
81 expr "$($GIT symbolic-ref --no-recurse HEAD 2>/dev/null ||
82 $GIT symbolic-ref HEAD 2>/dev/null)" : 'refs/heads/\(.*\)' ||
119ae8ad
JH
83 echo detached
84}
85
86determine_version () {
87 v=`$GIT describe HEAD`
88 expr "$v" : '.*-g[0-9a-f]*$' >/dev/null && {
89 echo >&2 "You are on 'snap' but $v is not an official version."
90 exit 1
91 }
92 echo "$v"
93}
94
95determine_long_version () {
96 $GIT describe HEAD 2>/dev/null || echo unknown-g00000000 |
97 sed -e 's/-/./g'
98}
99
ddc2105c
JH
100BUILTIN_CLEAN_FIX=8687f777
101if ! git merge-base --is-ancestor $BUILTIN_CLEAN_FIX HEAD
102then
103 NO_PEDANTIC=YesPlease
104fi
105
3303f663 106DEVELOPER=
d1eae690
JH
107case "$NO_PEDANTIC" in
108?*) ;;
109'')
3303f663
JH
110 DEVELOPER=1
111 ;;
112'not-used-anymore')
bafe7fb3 113 # PEDANT="-Wtypedef-redefinition $PEDANT"
364297f9 114 PEDANT="-Werror -Wold-style-definition $PEDANT"
d1eae690
JH
115 PEDANT="-Wpointer-arith -Woverflow -Wunused $PEDANT"
116 PEDANT="-Wold-style-declaration -Wstrict-prototypes $PEDANT"
3303f663 117 PEDANT="-Wstrict-prototypes $PEDANT"
d1eae690
JH
118 ;;
119esac
120
ef4ede09
JH
121while case $# in 0) break ;; esac
122do
123 case "$1" in
d1eae690
JH
124 --pedantic)
125 echo >&2 "(no need to say --pedantic)"
ef4ede09 126 ;;
f5d9ae24 127 -j*)
96d720e4
JH
128 case "$NO_JOBS" in
129 ?*) jobs= ;;
130 '') jobs=$1 ;;
131 esac
f5d9ae24 132 ;;
007cb031
JH
133 -noprove | --noprove)
134 oldtest=t
135 ;;
f355f256 136 -loose | --loose)
3303f663 137 DEVELOPER= PEDANT=
3169eb47 138 ;;
3135db2b
JH
139 --memtrash)
140 testpen=testpen.$$
141 ;;
142 --memtrash=*)
143 testpen=testpen.${1#--memtrash=}
144 ;;
f355f256
JH
145 --locale=*)
146 LANG=${1#*=}
147 ;;
148 --test=*)
149 tests=$(
150 cd t &&
3c5a7dd0 151 IFS="$IFS,"
f355f256
JH
152 for t in ${1#*=}
153 do
154 eval echo "t$t-*.sh"
155 done | tr '\012' ' '
156 )
157 ;;
d4ebbfcb
JH
158 --long)
159 GIT_TEST_LONG=YesPlease
160 export GIT_TEST_LONG
161 ;;
49781092
JH
162 --dash)
163 with_dash=y
164 ;;
f7ad3c78
JH
165 --)
166 shift
167 break
168 ;;
169 -*)
ef4ede09
JH
170 echo >&2 "Eh $1?"
171 exit 1
172 ;;
f7ad3c78
JH
173 *)
174 break
175 ;;
ef4ede09
JH
176 esac
177 shift
178done
3135db2b
JH
179
180if test -n "$testpen"
181then
182 for TRASH in /dev/shm /tmp ""
183 do
184 if test -n "$TRASH" &&
185 mkdir -p "$TRASH/$testpen" 2>/dev/null &&
186 test -w "$TRASH/$testpen"
187 then
a55cb8ee
JH
188 testpen=$(cd "$TRASH/$testpen" && /bin/pwd)
189 TRASH="--root=$testpen"
190 clean="$clean; rmdir '$testpen'"
3135db2b
JH
191 break
192 fi
193 done
194 GIT_TEST_OPTS="$TRASH${GIT_TEST_OPTS+" $GIT_TEST_OPTS"}"
195 export GIT_TEST_OPTS
196fi
197
49781092
JH
198test -f /bin/dash || with_dash=
199
ca2a4aa4
JH
200if test -z "$tests" && test -n "$skip"
201then
2c14e53b
JH
202 GIT_SKIP_TESTS="${GIT_SKIP_TESTS:-$skip}"
203 export GIT_SKIP_TESTS
ca2a4aa4 204fi
007cb031
JH
205if test -z "$oldtest" &&
206 sh -c 'prove --version >/dev/null 2>&1' &&
7e62b4a7
JH
207 sh -c 'prove --exec : >/dev/null 2>&1'
208then
bafe7fb3 209 # --state=slow,save
232e2967
JH
210 DEFAULT_TEST_TARGET=prove
211 GIT_PROVE_OPTS="${GIT_PROVE_OPTS:+$GIT_PROVE_OPTS }--timer $jobs"
212 export DEFAULT_TEST_TARGET GIT_PROVE_OPTS
7e62b4a7 213fi
ca2a4aa4 214
f355f256
JH
215LC_ALL=$LANG
216export LANG LC_ALL
217
119ae8ad 218branch=$(determine_branch)
936a95a0
JH
219
220case "$branch" in
bd45e1c3 221next | maint | $MASTER | seen | jch)
936a95a0
JH
222 prefix="$inst_prefix/git-$branch"
223 ;;
224snap)
119ae8ad 225 v=$(determine_version)
936a95a0
JH
226 prefix="$inst_prefix/git-snap-$v"
227 ;;
228*)
229 prefix="$inst_prefix/git-test" ;;
230esac
936a95a0 231
a55cb8ee 232clean="$clean; rm -f version"
119ae8ad 233determine_long_version >version
389f8450 234
49781092
JH
235set "prefix=$prefix" "$@"
236if test -n "$with_dash" && test -f /bin/dash
237then
238 set "SHELL_PATH=/bin/dash" "$@"
239fi
240
af5df88c
JH
241if grep >/dev/null DC_SHA1 Makefile
242then
243 SHA1IMPLEMENTATION=DC_SHA1=YesPlease
244elif grep >/dev/null BLK_SHA1 Makefile
245then
246 SHA1IMPLEMENTATION=BLK_SHA1=YesPlease
247else
248 SHA1IMPLEMENTATION=
249fi
250
e16743dc
JH
251if test -f sha256/nettle.h && test -f /usr/include/nettle/sha2.h
252then
253 SHA1IMPLEMENTATION="$SHA1IMPLEMENTATION NETTLE_SHA256=YesPlease"
254fi
255
49781092 256set MAN_BASE_URL='"http://www.kernel.org/pub/software/scm/git/docs/"' \
af1e5c2a 257 MAN_BOLD_LITERAL=YesPlease \
af5df88c 258 $SHA1IMPLEMENTATION \
49781092 259 GNU_ROFF=YesPlease \
3d153c53 260 USE_LIBPCRE=YesPlease \
49781092 261 "$@"
cce1400a 262
6f5eea98 263# Platform hack
f7ba48ed
JH
264if test -z "${make:+set}" && {
265 test -x /usr/local/bin/gmake ||
bf6bbec6 266 test -x /usr/pkg/bin/gmake ||
f7ba48ed
JH
267 test -x /usr/bin/gmake
268}
6f5eea98
JH
269then
270 make=gmake
271fi
3dc11f3b
JH
272if test -f /bin/ginstall
273then
274 set INSTALL=ginstall "$@"
275fi
6f5eea98 276
92fb5638
JH
277unset SSH_AGENT_PID SSH_CLIENT SSH_TTY SSH_AUTH_SOCK SSH_CONNECTION \
278 GPG_AGENT_INFO GNOME_KEYRING_CONTROL GNOME_KEYRING_PID \
279 XDG_SESSION_COOKIE XDG_SESSION_PATH XDG_SEAT_PATH XDG_DATA_DIRS \
280 PGPPATH AUTO_PROXY WINDOWID SESSION_MANAGER XDG_CONFIG_DIRS STY \
281 GDMSESSION KRB5CCNAME GNOME_DESKTOP_SESSION_ID \
282 DBUS_SESSION_BUS_ADDRESS LESSOPEN WINDOW DISPLAY GTK_IM_MODULE \
283 XDG_CURRENT_DESKTOP LESSCLOSE XAUTHORITY
284
3303f663
JH
285# O=-fsanitize=address Meta/Make
286
49781092
JH
287${make-make} \
288 $jobs \
167e415e 289 ETC_GITCONFIG=$prefix/etc/gitconfig \
3303f663 290 ${DEVELOPER:+"DEVELOPER=YesPlease"} \
eb5e54d8
JH
291 SPATCH_FLAGS="--all-includes --recursive-includes --patch ." \
292 SPATCH_BATCH_SIZE=16 \
293 CFLAGS="-g -Wall -Wunused -Wdeclaration-after-statement -std=gnu99${O:+ $O}" \
f355f256 294 ${tests:+"T=$tests"} \
1ad3ae4c 295 "$@"
efdc54a8 296status=$?
a55cb8ee 297eval "$clean"
efdc54a8 298exit $status