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]
47 Some influential environment variables:
49 CFLAGS C compiler flags
50 LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
51 nonstandard directory <lib dir>
53 Use these variables to override the choices made by \`configure' or to help
54 it to find libraries and programs with nonstandard names/locations.
56 Report bugs to <frank-vlock@benkstein.net>.
70 enable_root_password
="$2"
73 if [ "$2" = "yes" ] ; then
74 if [ -n "$auth_method" ] && [ "$auth_method" != "$1" ] ; then
75 fatal_error
"pam and shadow authentication are mutually exclusive"
79 fatal_error
"cannot disable authentication"
83 fatal_error
"invalid feature name: $1"
89 local feature opt optarg
91 while [ $# -gt 0 ] ; do
92 if ! opt
=`expr "x$1" : 'x\([^=]*\)=.*'` ; then
96 if ! optarg
=`expr "x$1" : 'x[^=]*=\(.*\)'` ; then
102 feature
=`expr "$1" : '--disable-\(.*\)'`
103 enable_feature
"$feature" no
107 feature
=`expr "$1" : '--enable-\(.*\)=no'`
108 enable_feature
"$feature" no
112 feature
=`expr "$1" : '--enable-\(.*\)=yes'`
113 enable_feature
"$feature" yes
117 feature
=`expr "$1" : '--enable-\(.*\)'`
118 enable_feature
"$feature" yes
124 set -- "$opt" "$optarg" "$@"
128 shift 2 || fatal_error
"$1 argument missing"
132 shift 2 || fatal_error
"$1 argument missing"
136 shift 2 || fatal_error
"$1 argument missing"
140 shift 2 || fatal_error
"$1 argument missing"
144 shift 2 || fatal_error
"$1 argument missing"
148 shift 2 || fatal_error
"$1 argument missing"
152 shift 2 || fatal_error
"$1 argument missing"
155 set_variable
"$1" "$2"
156 shift 2 || fatal_error
"$1 value missing"
163 error
"unrecognized option: $1"
164 echo >&2 "Try \`$0 --help' for more information."
168 error
"invalid argument: $1"
169 echo >&2 "Try \`$0 --help' for more information."
176 parse_environment
() {
179 for make in make gmake
; do
180 if $make -f /dev
/null
-q -v 2>/dev
/null |
head -n 1 |
grep -q "GNU Make" ; then
186 if [ -z "$MAKE" ] ; then
187 error
"GNU make not found"
188 echo >&2 "Set MAKE variable to specify alternative."
192 ROOT_GROUP
=`getent group | awk -F: '$3 == 0 { print $1 ; exit }'`
196 PAM_LIBS
='-ldl -lpam'
199 DEFAULT_MODULES
="all.so new.so nosysrq.so"
202 PAM_LIBS
='-ldl -lpam'
205 DEFAULT_MODULES
="all.so new.so"
211 DEFAULT_MODULES
="all.so new.so"
221 $MAKE -rR -f config.mk
-p -q .
2>/dev
/null |
awk > "$tmpdir/config.mk" '\
222 /^# makefile .from .config\.mk., line/ { p=1; next }
224 p==1 && $1 != "MAKEFILE_LIST" && /^[[:alpha:]_]+ :?= .*/ { print }
229 variable_name
=`expr "${line}" : '\([[:alpha:]_]\+\) :\?='`
230 if variable_value
=`expr "${line}" : '[[:alpha:]_]\+ :\?= \(.*\)'` ; then
231 set_variable
"$variable_name" "$variable_value"
233 set_variable
"$variable_name" ""
235 done < "$tmpdir/config.mk"
241 is_set PREFIX || PREFIX
="/usr/local"
242 is_set BINDIR || BINDIR
="${PREFIX}/bin"
243 is_set SBINDIR || SBINDIR
="${PREFIX}/sbin"
244 is_set LIBDIR || LIBDIR
="${PREFIX}/lib"
245 is_set SCRIPTDIR || SCRIPTDIR
="${LIBDIR}/vlock/scripts"
246 is_set MODULEDIR || MODULEDIR
="${LIBDIR}/vlock/modules"
249 is_set CFLAGS || CFLAGS
="-O2 -Wall -W -pedantic -std=gnu99"
251 is_set LDFLAGS || LDFLAGS
=""
252 is_set AUTH_METHOD || AUTH_METHOD
="pam"
253 is_set PLUGINS || PLUGINS
="$DEFAULT_MODULES"
254 is_set ENABLE_ROOT_PASSWORD || ENABLE_ROOT_PASSWORD
="yes"
255 is_set ENABLE_PLUGINS || ENABLE_PLUGINS
="yes"
257 is_set VLOCK_GROUP || VLOCK_GROUP
="vlock"
258 is_set VLOCK_MODULE_MODE || VLOCK_MODULE_MODE
="0750"
260 is_set BOURNE_SHELL || BOURNE_SHELL
="/bin/sh"
272 scriptdir: $SCRIPTDIR
273 moduledir: $MODULEDIR
276 enable plugins: $ENABLE_PLUGINS
277 root-password: $ENABLE_ROOT_PASSWORD
278 auth-method: $AUTH_METHOD
283 operating system: $OS
286 compiler flags: $CFLAGS
289 crypt lib: $CRYPT_LIB
291 installation configuration:
292 root group: $ROOT_GROUP
293 vlock group: $VLOCK_GROUP
298 cat > config.mk
<<EOF
299 # automatically generated by $0 on $(date)
301 ### configuration options ###
303 # authentification method (pam or shadow)
304 AUTH_METHOD = ${AUTH_METHOD}
305 # also prompt for the root password in adition to the user's
306 ENABLE_ROOT_PASSWORD = ${ENABLE_ROOT_PASSWORD}
307 # enable plugins for vlock-main
308 ENABLE_PLUGINS = ${ENABLE_PLUGINS}
309 # which plugins should be build
310 MODULES = \$(filter %.so, ${PLUGINS})
311 # which scripts should be installed
312 SCRIPTS = \$(filter %.sh, ${PLUGINS})
315 ROOT_GROUP = ${ROOT_GROUP}
317 # group to install vlock-main with
318 VLOCK_GROUP = ${VLOCK_GROUP}
319 # mode to install privileged plugins with
320 VLOCK_MODULE_MODE = ${VLOCK_MODULE_MODE}
324 # installation prefix
330 # path where modules will be located
331 VLOCK_MODULE_DIR = ${VLOCK_MODULE_DIR}
332 # path where scripts will be located
333 VLOCK_SCRIPT_DIR = ${VLOCK_SCRIPT_DIR}
337 # shell to run vlock.sh with (only bash is known to work)
338 BOURNE_SHELL = ${BOURNE_SHELL}
348 ### compiler and linker settings ###
354 # linker flags needed for dlopen and friends, default is system dependend
356 # linker flags needed for crypt
357 CRYPT_LIB = ${CRYPT_LIB}
358 # linker flags needed for pam
359 PAM_LIBS = ${PAM_LIBS}