1# shellcheck shell=bash disable=SC2206
2
3mesonConfigurePhase() {
4 runHook preConfigure
5
6 : ${mesonBuildDir:=build}
7
8 local flagsArray=()
9
10 if [ -z "${dontAddPrefix-}" ]; then
11 flagsArray+=("--prefix=$prefix")
12 fi
13
14 # See multiple-outputs.sh and meson’s coredata.py
15 flagsArray+=(
16 "--libdir=${!outputLib}/lib"
17 "--libexecdir=${!outputLib}/libexec"
18 "--bindir=${!outputBin}/bin"
19 "--sbindir=${!outputBin}/sbin"
20 "--includedir=${!outputInclude}/include"
21 "--mandir=${!outputMan}/share/man"
22 "--infodir=${!outputInfo}/share/info"
23 "--localedir=${!outputLib}/share/locale"
24 "-Dauto_features=${mesonAutoFeatures:-enabled}"
25 "-Dwrap_mode=${mesonWrapMode:-nodownload}"
26 "--buildtype=${mesonBuildType:-plain}"
27 )
28
29 # --no-undefined is universally a bad idea on freebsd because environ is in the csu
30 if [[ "@hostPlatform@" == *-freebsd ]]; then
31 flagsArray+=("-Db_lundef=false")
32 fi
33
34 concatTo flagsArray mesonFlags mesonFlagsArray
35
36 echoCmd 'mesonConfigurePhase flags' "${flagsArray[@]}"
37
38 meson setup "$mesonBuildDir" "${flagsArray[@]}"
39 cd "$mesonBuildDir" || { echoCmd 'mesonConfigurePhase' "could not cd to $mesonBuildDir"; exit 1; }
40
41 if ! [[ -v enableParallelBuilding ]]; then
42 enableParallelBuilding=1
43 echoCmd 'mesonConfigurePhase' "enabled parallel building"
44 fi
45
46 if [[ ${checkPhase-ninjaCheckPhase} = ninjaCheckPhase && -z $dontUseMesonCheck ]]; then
47 checkPhase=mesonCheckPhase
48 fi
49 if [[ ${installPhase-ninjaInstallPhase} = ninjaInstallPhase && -z $dontUseMesonInstall ]]; then
50 installPhase=mesonInstallPhase
51 fi
52
53 runHook postConfigure
54}
55
56mesonCheckPhase() {
57 runHook preCheck
58
59 local flagsArray=()
60 concatTo flagsArray mesonCheckFlags mesonCheckFlagsArray
61
62 if [ -z "${dontAddTimeoutMultiplier:-}" ]; then
63 flagsArray+=("--timeout-multiplier=0")
64 fi
65
66 # Parallel checking is enabled by default.
67 local buildCores=1
68 if [ "${enableParallelChecking-1}" ]; then
69 buildCores="$NIX_BUILD_CORES"
70 fi
71
72 TERM=dumb ninja -j"$buildCores" $ninjaFlags "${ninjaFlagsArray[@]}" meson-test-prereq
73
74 echoCmd 'mesonCheckPhase flags' "${flagsArray[@]}"
75 meson test --no-rebuild --print-errorlogs "${flagsArray[@]}"
76
77 runHook postCheck
78}
79
80mesonInstallPhase() {
81 runHook preInstall
82
83 local flagsArray=()
84
85 if [[ -n "$mesonInstallTags" ]]; then
86 flagsArray+=("--tags" "$(concatStringsSep "," mesonInstallTags)")
87 fi
88 concatTo flagsArray mesonInstallFlags mesonInstallFlagsArray
89
90 echoCmd 'mesonInstallPhase flags' "${flagsArray[@]}"
91 meson install --no-rebuild "${flagsArray[@]}"
92
93 runHook postInstall
94}
95
96if [ -z "${dontUseMesonConfigure-}" ] && [ -z "${configurePhase-}" ]; then
97 # shellcheck disable=SC2034
98 setOutputFlags=
99 configurePhase=mesonConfigurePhase
100fi