File: configure

package info (click to toggle)
dracut 051-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 3,952 kB
  • sloc: sh: 23,881; ansic: 4,006; makefile: 367; perl: 241; python: 166; lisp: 2
file content (129 lines) | stat: -rwxr-xr-x 3,781 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/bash

# We don't support srcdir != builddir
echo \#buildapi-variable-no-builddir >/dev/null

prefix=/usr

enable_documentation=yes

CC="${CC:-cc}"
PKG_CONFIG="${PKG_CONFIG:-pkg-config}"

# Little helper function for reading args from the commandline.
# it automatically handles -a b and -a=b variants, and returns 1 if
# we need to shift $3.
read_arg() {
    # $1 = arg name
    # $2 = arg value
    # $3 = arg parameter
    local rematch='^[^=]*=(.*)$'
    if [[ $2 =~ $rematch ]]; then
        read "$1" <<< "${BASH_REMATCH[1]}"
    else
        read "$1" <<< "$3"
        # There is no way to shift our callers args, so
        # return 1 to indicate they should do it instead.
        return 1
    fi
    return 0
}

while (($# > 0)); do
    case "${1%%=*}" in
        --prefix) read_arg prefix "$@" || shift;;
        --libdir) read_arg libdir "$@" || shift;;
        --datadir) read_arg datadir "$@" || shift;;
        --sysconfdir) read_arg sysconfdir "$@" || shift;;
        --sbindir) read_arg sbindir "$@" || shift;;
        --mandir) read_arg mandir "$@" || shift;;
        --disable-documentation) enable_documentation=no;;
        --program-prefix) read_arg programprefix "$@" || shift;;
        --exec-prefix) read_arg execprefix "$@" || shift;;
        --bindir) read_arg bindir "$@" || shift;;
        --includedir) read_arg includedir "$@" || shift;;
        --libexecdir) read_arg libexecdir "$@" || shift;;
        --localstatedir) read_arg localstatedir "$@" || shift;;
        --sharedstatedir) read_arg sharedstatedir "$@" || shift;;
        --infodir) read_arg infodir "$@" || shift;;
        --systemdsystemunitdir) read_arg systemdsystemunitdir "$@" || shift;;
        --bashcompletiondir) read_arg bashcompletiondir "$@" || shift;;
        *) echo "Ignoring unknown option '$1'";;
    esac
    shift
done

if ! ${PKG_CONFIG} --exists --print-errors " libkmod >= 23 "; then
    echo "dracut needs pkg-config and libkmod >= 23." >&2
    exit 1
fi

cat <<EOF >conftest.c
#include <fts.h>
int main() {
	return 0;
}
EOF

${CC} $CFLAGS $LDFLAGS conftest.c >/dev/null 2>&1
ret=$?
rm -f conftest.c a.out

# musl doesn't have fts.h included
if test $ret -ne 0; then
	echo "dracut needs fts development files." >&2
	exit 1
fi

cat <<EOF >conftest.c
#include <fts.h>
int main(void) {
	fts_open(0, 0, 0);
	return 0;
}
EOF

found=no
for lib in "-lc" "-lfts"; do
	${CC} $CFLAGS $LDFLAGS conftest.c -Wl,$lib >/dev/null 2>&1
	ret=$?
	if test $ret -eq 0; then
		FTS_LIBS="$lib"
		found=yes
		break;
	fi
done
rm -f conftest.c a.out

if test $found = no; then
	echo "dracut couldn't find usable fts library" >&2
	exit 1
fi

cat > Makefile.inc.$$ <<EOF
prefix ?= ${prefix}
libdir ?= ${libdir:-${prefix}/lib}
datadir ?= ${datadir:-${prefix}/share}
sysconfdir ?= ${sysconfdir:-${prefix}/etc}
sbindir ?= ${sbindir:-${prefix}/sbin}
mandir ?= ${mandir:-${prefix}/share/man}
enable_documentation ?= ${enable_documentation:-yes}
bindir ?= ${bindir:-${prefix}/bin}
KMOD_CFLAGS ?= $(${PKG_CONFIG} --cflags " libkmod >= 23 ")
KMOD_LIBS ?= $(${PKG_CONFIG} --libs " libkmod >= 23 ")
FTS_LIBS ?= ${FTS_LIBS}
EOF

{
    [[ $programprefix ]] && echo "programprefix ?= ${programprefix}"
    [[ $execprefix ]] && echo "execprefix ?= ${execprefix}"
    [[ $includedir ]] && echo "includedir ?= ${includedir}"
    [[ $libexecdir ]] && echo "libexecdir ?= ${libexecdir}"
    [[ $localstatedir ]] && echo "localstatedir ?= ${localstatedir}"
    [[ $sharedstatedir ]] && echo "sharedstatedir ?= ${sharedstatedir}"
    [[ $infodir ]] && echo "infodir ?= ${infodir}"
    [[ $systemdsystemunitdir ]] && echo "systemdsystemunitdir ?= ${systemdsystemunitdir}"
    [[ $bashcompletiondir ]] && echo "bashcompletiondir ?= ${bashcompletiondir}"
} >> Makefile.inc.$$

mv Makefile.inc.$$ Makefile.inc