]> git.ipfire.org Git - thirdparty/dracut.git/blob - configure
fix(btrfs): add missing cmdline function
[thirdparty/dracut.git] / configure
1 #!/bin/bash
2
3 # We don't support srcdir != builddir
4 echo \#buildapi-variable-no-builddir > /dev/null
5
6 prefix=/usr
7
8 enable_documentation=yes
9 enable_dracut_cpio=no
10
11 CC="${CC:-cc}"
12 PKG_CONFIG="${PKG_CONFIG:-pkg-config}"
13
14 # Little helper function for reading args from the commandline.
15 # it automatically handles -a b and -a=b variants, and returns 1 if
16 # we need to shift $3.
17 read_arg() {
18 # $1 = arg name
19 # $2 = arg value
20 # $3 = arg parameter
21 local rematch='^[^=]*=(.*)$'
22 if [[ $2 =~ $rematch ]]; then
23 read -r "$1" <<< "${BASH_REMATCH[1]}"
24 else
25 read -r "$1" <<< "$3"
26 # There is no way to shift our callers args, so
27 # return 1 to indicate they should do it instead.
28 return 1
29 fi
30 return 0
31 }
32
33 while (($# > 0)); do
34 case "${1%%=*}" in
35 --prefix) read_arg prefix "$@" || shift ;;
36 --libdir) read_arg libdir "$@" || shift ;;
37 --datadir) read_arg datadir "$@" || shift ;;
38 --sysconfdir) read_arg sysconfdir "$@" || shift ;;
39 --sbindir) read_arg sbindir "$@" || shift ;;
40 --mandir) read_arg mandir "$@" || shift ;;
41 --disable-documentation) enable_documentation=no ;;
42 --program-prefix) read_arg programprefix "$@" || shift ;;
43 --exec-prefix) read_arg execprefix "$@" || shift ;;
44 --bindir) read_arg bindir "$@" || shift ;;
45 --includedir) read_arg includedir "$@" || shift ;;
46 --libexecdir) read_arg libexecdir "$@" || shift ;;
47 --localstatedir) read_arg localstatedir "$@" || shift ;;
48 --sharedstatedir) read_arg sharedstatedir "$@" || shift ;;
49 --infodir) read_arg infodir "$@" || shift ;;
50 --systemdsystemunitdir) read_arg systemdsystemunitdir "$@" || shift ;;
51 --bashcompletiondir) read_arg bashcompletiondir "$@" || shift ;;
52 --enable-dracut-cpio) enable_dracut_cpio=yes ;;
53 *) echo "Ignoring unknown option '$1'" ;;
54 esac
55 shift
56 done
57
58 if ! ${PKG_CONFIG} --exists --print-errors " libkmod >= 23 "; then
59 echo "dracut needs pkg-config and libkmod >= 23." >&2
60 exit 1
61 fi
62
63 cat << EOF > conftest.c
64 #include <fts.h>
65 int main() {
66 return 0;
67 }
68 EOF
69
70 # shellcheck disable=SC2086
71 ${CC} $CFLAGS $LDFLAGS conftest.c > /dev/null 2>&1
72 ret=$?
73 rm -f conftest.c a.out
74
75 # musl doesn't have fts.h included
76 if test $ret -ne 0; then
77 echo "dracut needs fts development files." >&2
78 exit 1
79 fi
80
81 cat << EOF > conftest.c
82 #include <fts.h>
83 int main(void) {
84 fts_open(0, 0, 0);
85 return 0;
86 }
87 EOF
88
89 found=no
90 for lib in "-lc" "-lfts"; do
91 # shellcheck disable=SC2086
92 ${CC} $CFLAGS $LDFLAGS conftest.c -Wl,$lib > /dev/null 2>&1
93 ret=$?
94 if test $ret -eq 0; then
95 FTS_LIBS="$lib"
96 found=yes
97 break
98 fi
99 done
100 rm -f conftest.c a.out
101
102 if test $found = no; then
103 echo "dracut couldn't find usable fts library" >&2
104 exit 1
105 fi
106
107 cat << EOF > conftest.c
108 #include <stdio.h>
109 #include <unistd.h>
110 #include <sys/syscall.h>
111
112 #ifndef SYS_gettid
113 #error "SYS_gettid unavailable on this system"
114 #endif
115
116 #define gettid() ((pid_t) syscall(SYS_gettid))
117
118 int main(void) {
119 return getpid() == gettid() ? 0 : -1;
120 }
121 EOF
122
123 # shellcheck disable=SC2086
124 ${CC} $CFLAGS $LDFLAGS conftest.c > /dev/null 2>&1
125 ret=$?
126 rm -f conftest.c a.out
127
128 if test $ret -ne 0; then
129 echo "dracut needs SYS_gettid support." >&2
130 exit 1
131 fi
132
133 if test "$enable_dracut_cpio" = "yes"; then
134 cargo --version > /dev/null
135 ret=$?
136 if test $ret -ne 0; then
137 echo "dracut couldn't find cargo for dracut-cpio build"
138 exit 1
139 fi
140 fi
141
142 cat > Makefile.inc.$$ << EOF
143 prefix ?= ${prefix}
144 libdir ?= ${libdir:-${prefix}/lib}
145 datadir ?= ${datadir:-${prefix}/share}
146 sysconfdir ?= ${sysconfdir:-${prefix}/etc}
147 sbindir ?= ${sbindir:-${prefix}/sbin}
148 mandir ?= ${mandir:-${prefix}/share/man}
149 enable_documentation ?= ${enable_documentation:-yes}
150 enable_dracut_cpio ?= ${enable_dracut_cpio}
151 bindir ?= ${bindir:-${prefix}/bin}
152 KMOD_CFLAGS ?= $(${PKG_CONFIG} --cflags " libkmod >= 23 ")
153 KMOD_LIBS ?= $(${PKG_CONFIG} --libs " libkmod >= 23 ")
154 FTS_LIBS ?= ${FTS_LIBS}
155 EOF
156
157 {
158 [[ $programprefix ]] && echo "programprefix ?= ${programprefix}"
159 [[ $execprefix ]] && echo "execprefix ?= ${execprefix}"
160 [[ $includedir ]] && echo "includedir ?= ${includedir}"
161 [[ $libexecdir ]] && echo "libexecdir ?= ${libexecdir}"
162 [[ $localstatedir ]] && echo "localstatedir ?= ${localstatedir}"
163 [[ $sharedstatedir ]] && echo "sharedstatedir ?= ${sharedstatedir}"
164 [[ $infodir ]] && echo "infodir ?= ${infodir}"
165 [[ $systemdsystemunitdir ]] && echo "systemdsystemunitdir ?= ${systemdsystemunitdir}"
166 [[ $bashcompletiondir ]] && echo "bashcompletiondir ?= ${bashcompletiondir}"
167 } >> Makefile.inc.$$
168
169 mv Makefile.inc.$$ Makefile.inc