6 echo >&2 "$0: error: $@"
15 ( eval [ "\"\${$1+set}\"" = "set" ] )
20 Usage: $0 [OPTION]... [VAR=VALUE]...
22 This script creates necessary configuration files to build/install.
24 To assign environment variables (e.g., CC, CFLAGS...), specify them as
25 VAR=VALUE. See below for descriptions of some of the useful variables.
27 Defaults for the options are specified in brackets.
30 -h, --help display this help and exit
31 --prefix=[path] base path [/usr/local]
32 --bindir=DIR user executables [PREFIX/bin]
33 --sbindir=DIR system admin executables [PREFIX/sbin]
34 --libdir=DIR object code libraries [PREFIX/lib]
35 --scriptdir=DIR script type plugins [LIBDIR/vlock/scripts]
36 --moduledir=DIR module type plugins [LIBDIR/vlock/modules]
37 --mandir=DIR man documentation [PREFIX/share/man]
40 --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
41 --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
42 --enable-plugins enable plugin support [enabled]
43 --enable-pam enable PAM authentication [enabled]
44 --enable-shadow enable shadow authentication [disabled]
45 --enable-root-password enable unlogging with root password [enabled]
46 --enable-debug enable debugging
48 Additional configuration:
49 --with-scripts=SCRIPTS enable the named scripts []
50 --with-modules=MODULES enable the named modules [<architecture depedent>]
52 Some influential environment variables:
54 CFLAGS C compiler flags
55 EXTRA_CFLAGS additional C compiler flags (extends default)
56 LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
57 nonstandard directory <lib dir>
58 EXTRA_LDFLAGS additional linker flags (extends default)
59 VLOCK_GROUP group for restricted modules (default: vlock)
60 VLOCK_MODE mode for restricted modules (default: 0750)
62 Use these variables to override the choices made by \`configure' or to help
63 it to find libraries and programs with nonstandard names/locations.
65 Report bugs to <frank-vlock@benkstein.net>.
79 ENABLE_ROOT_PASSWORD
="$2"
82 if [ "$2" = "yes" ] ; then
83 if [ -n "$auth_method" ] && [ "$auth_method" != "$1" ] ; then
84 fatal_error
"pam and shadow authentication are mutually exclusive"
88 fatal_error
"cannot disable authentication"
92 if [ "$2" = "yes" ] ; then
93 CFLAGS
="${DEBUG_CFLAGS}"
95 CFLAGS
="${DEFAULT_CFLAGS}"
99 fatal_error
"invalid feature name: $1"
105 local feature opt optarg
107 while [ $# -gt 0 ] ; do
108 if ! opt
=`expr "x$1" : 'x\([^=]*\)=.*'` ; then
112 if ! optarg
=`expr "x$1" : 'x[^=]*=\(.*\)'` ; then
118 feature
=`expr "x$1" : 'x--disable-\(.*\)'`
119 enable_feature
"$feature" no
123 feature
=`expr "x$1" : 'x--enable-\(.*\)=no'`
124 enable_feature
"$feature" no
128 feature
=`expr "x$1" : 'x--enable-\(.*\)=yes'`
129 enable_feature
"$feature" yes
133 feature
=`expr "x$1" : 'x--enable-\(.*\)'`
134 enable_feature
"$feature" yes
140 set -- "$opt" "$optarg" "$@"
144 shift 2 || fatal_error
"$1 argument missing"
148 shift 2 || fatal_error
"$1 argument missing"
152 shift 2 || fatal_error
"$1 argument missing"
156 shift 2 || fatal_error
"$1 argument missing"
160 shift 2 || fatal_error
"$1 argument missing"
164 shift 2 || fatal_error
"$1 argument missing"
168 shift 2 || fatal_error
"$1 argument missing"
172 shift 2 || fatal_error
"$1 argument missing"
176 shift 2 || fatal_error
"$1 argument missing"
179 CFLAGS
="${CFLAGS} $2"
180 shift 2 || fatal_error
"$1 value missing"
183 LDFLAGS
="${LDFLAGS} $2"
184 shift 2 || fatal_error
"$1 value missing"
187 set_variable
"$1" "$2"
188 shift 2 || fatal_error
"$1 value missing"
199 error
"unrecognized option: $1"
200 echo >&2 "Try \`$0 --help' for more information."
204 error
"invalid argument: $1"
205 echo >&2 "Try \`$0 --help' for more information."
213 # architecture independent defaults
215 BINDIR
="\$(PREFIX)/bin"
216 SBINDIR
="\$(PREFIX)/sbin"
217 LIBDIR
="\$(PREFIX)/lib"
218 MANDIR
="\$(PREFIX)/share/man"
219 SCRIPTDIR
="\$(LIBDIR)/vlock/scripts"
220 MODULEDIR
="\$(LIBDIR)/vlock/modules"
223 DEFAULT_CFLAGS
="-O2 -Wall -W -pedantic -std=gnu99"
224 DEBUG_CFLAGS
="-O0 -g -Wall -W -pedantic -std=gnu99"
225 CFLAGS
="${DEFAULT_CFLAGS}"
229 ENABLE_ROOT_PASSWORD
="yes"
234 VLOCK_MODULE_MODE
="0750"
236 BOURNE_SHELL
="/bin/sh"
238 # architecture dependent defaults
241 for make in make gmake
; do
242 if $make -f /dev
/null
-q -v 2>/dev
/null |
head -n 1 |
grep -q "GNU Make" ; then
248 ROOT_GROUP
=`getent group | awk -F: '$3 == 0 { print $1 ; exit }'`
252 PAM_LIBS
='-ldl -lpam'
255 MODULES
="all.so new.so nosysrq.so"
258 PAM_LIBS
='-ldl -lpam'
261 MODULES
="all.so new.so"
267 MODULES
="all.so new.so"
275 if [ -z "$MAKE" ] ; then
276 error
"GNU make not found"
277 echo >&2 "Set MAKE environment variable to specify alternative."
281 tmpdir
=`mktemp -d -t vlock-configure.XXXXXX`
283 $MAKE -rR -f config.mk
-p -q .
2>/dev
/null |
awk > "$tmpdir/config.mk" '
284 /^# makefile/ { p=1; next }
286 p==1 && $1 != "MAKEFILE_LIST" && /^[A-Za-z_]+ :?= .*/ { print }
291 variable_name
=`expr "x${line}" : 'x\([[[:alpha:]_]\{1,\}\) :\{0,1\}='`
292 if variable_value
=`expr "x${line}" : 'x[[:alpha:]_]\{1,\} :\{0,1\}= \(.*\)'` ; then
293 set_variable
"$variable_name" "$variable_value"
295 set_variable
"$variable_name" ""
297 done < "$tmpdir/config.mk"
312 scriptdir: $SCRIPTDIR
313 moduledir: $MODULEDIR
316 enable plugins: $ENABLE_PLUGINS
317 root-password: $ENABLE_ROOT_PASSWORD
318 auth-method: $AUTH_METHOD
324 operating system: $OS
327 compiler flags: $CFLAGS
328 linker flags $LDFLAGS
331 crypt lib: $CRYPT_LIB
333 installation configuration:
334 root group: $ROOT_GROUP
335 vlock group: $VLOCK_GROUP
340 cat > config.mk
<<EOF
341 # automatically generated by $0 on $(date)
343 ### configuration options ###
345 # authentification method (pam or shadow)
346 AUTH_METHOD = ${AUTH_METHOD}
347 # also prompt for the root password in adition to the user's
348 ENABLE_ROOT_PASSWORD = ${ENABLE_ROOT_PASSWORD}
349 # enable plugins for vlock-main
350 ENABLE_PLUGINS = ${ENABLE_PLUGINS}
351 # which plugins should be build
353 # which scripts should be installed
357 ROOT_GROUP = ${ROOT_GROUP}
359 # group for privileged plugins
360 VLOCK_GROUP = ${VLOCK_GROUP}
361 # mode for privileged plugins
362 VLOCK_MODULE_MODE = ${VLOCK_MODULE_MODE}
366 # installation prefix
374 # path where modules will be located
375 MODULEDIR = ${MODULEDIR}
376 # path where scripts will be located
377 SCRIPTDIR = ${SCRIPTDIR}
381 # shell to run vlock.sh with (only bash is known to work)
382 BOURNE_SHELL = ${BOURNE_SHELL}
392 ### compiler and linker settings ###
398 # linker flags needed for dlopen and friends
400 # linker flags needed for crypt
401 CRYPT_LIB = ${CRYPT_LIB}
402 # linker flags needed for pam
403 PAM_LIBS = ${PAM_LIBS}
414 if [ "$verbose" -ge 1 ] ; then