451 lines
10 KiB
Bash
Executable file
451 lines
10 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
|
|
test x"$CC" != "x" || CC=gcc
|
|
test x"$CFLAGS" != "x" || CFLAGS="-I/usr/X11R6/include"
|
|
test x"$LDFLAGS" != "x" || LDFLAGS="-L/usr/X11R6/lib"
|
|
|
|
echo "CC: $CC"
|
|
|
|
CHECK_XRENDER=0
|
|
CHECK_XCURSOR=0
|
|
CHECK_XPM=0
|
|
CHECK_IMLIB2=0
|
|
CHECK_PAM=0
|
|
CHECK_PASSWD=0
|
|
CHECK_HASH=1
|
|
|
|
prefix=/usr/local
|
|
|
|
##############################################################
|
|
|
|
msg_chkfor() {
|
|
echo -n "checking for "$1" ... "
|
|
}
|
|
|
|
check_docs() {
|
|
|
|
msg_chkfor "asciidoc"
|
|
if which asciidoc 1> /dev/null 2>&3
|
|
then
|
|
echo "ok."
|
|
echo "#_______________________" >&4
|
|
echo "WITH_DOCS=1" >&4
|
|
echo "" >&4
|
|
else
|
|
echo "no. you cant rebuild the docs."
|
|
fi
|
|
}
|
|
|
|
check_tools() {
|
|
|
|
msg_chkfor "compiler $CC"
|
|
if which "$CC" 1> /dev/null 2>&3
|
|
then
|
|
echo "ok."
|
|
echo "---------------------------------" 1>&3
|
|
"$CC" -v 1>&3 2>&3
|
|
echo "---------------------------------" 1>&3
|
|
else
|
|
echo "no."
|
|
echo "error, no compiler found"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
check_imlib2() {
|
|
|
|
msg_chkfor "imlib2-config"
|
|
if which imlib2-config 1> /dev/null 2>&3
|
|
then
|
|
echo "ok."
|
|
cat << EOF > tmp.c
|
|
#include <X11/Xlib.h>
|
|
#include <Imlib2.h>
|
|
int main() {
|
|
Imlib_Context ctx = NULL;
|
|
ctx = imlib_context_new();
|
|
return 0;
|
|
}
|
|
EOF
|
|
msg_chkfor "compile with imlib2"
|
|
if ${CC} -c tmp.c -o /dev/null `imlib2-config --cflags` 2>&3
|
|
then
|
|
echo "ok."
|
|
msg_chkfor "link with imlib2"
|
|
if ${CC} tmp.c -o /dev/null `imlib2-config --cflags` `imlib2-config --libs` 2>&3
|
|
then
|
|
echo "ok."
|
|
echo "#_______________________" >&4
|
|
echo "WITH_IMLIB2:=1" >&4
|
|
echo "CFLAGS_IMLIB2:=`imlib2-config --cflags`" >&4
|
|
echo "LIBS_IMLIB2:=`imlib2-config --libs`" >&4
|
|
echo "" >&4
|
|
else
|
|
echo "no."
|
|
echo "error, can't link against imlib2. check 'config.log' for possible"
|
|
echo "error messages. you can also call configure with specifying "
|
|
echo "special LDFLAGS."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "no."
|
|
echo "error, can't compile with imlib2 support. check 'config.log'"
|
|
echo "for further details."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "no."
|
|
fi
|
|
}
|
|
|
|
|
|
check_xrender() {
|
|
|
|
cat << EOF > tmp.c
|
|
#include <X11/Xlib.h>
|
|
#include <X11/extensions/Xrender.h>
|
|
int main() {
|
|
XRenderFindVisualFormat(NULL, NULL);
|
|
return 0;
|
|
}
|
|
EOF
|
|
msg_chkfor "Xrender.h"
|
|
if ${CC} ${CFLAGS} -c tmp.c -o /dev/null 2>&3
|
|
then
|
|
echo "ok."
|
|
msg_chkfor "libXrender"
|
|
if ${CC} ${CFLAGS} tmp.c -o /dev/null ${LDFLAGS} -lXrender 2>&3
|
|
then
|
|
echo "ok."
|
|
echo "#_______________________" >&4
|
|
echo "WITH_XRENDER:=1" >&4
|
|
echo "CFLAGS_XRENDER:=" >&4
|
|
echo "LDFLAGS_XRENDER:=-lXrender" >&4
|
|
echo "" >&4
|
|
return
|
|
fi
|
|
fi
|
|
echo "no."
|
|
echo "error, can't compile/link with xrender support."
|
|
echo "check 'config.log' for further details."
|
|
exit 1
|
|
}
|
|
|
|
check_xcursor() {
|
|
|
|
cat << EOF > tmp.c
|
|
#include <X11/Xlib.h>
|
|
#include <X11/Xcursor/Xcursor.h>
|
|
int main() {
|
|
XcursorFilenameLoadCursor(NULL, NULL);
|
|
return 0;
|
|
}
|
|
EOF
|
|
msg_chkfor "Xcursor.h"
|
|
if ${CC} ${CFLAGS} -c tmp.c -o /dev/null 2>&3
|
|
then
|
|
echo "ok."
|
|
msg_chkfor "libXcursor"
|
|
if ${CC} ${CFLAGS} tmp.c -o /dev/null ${LDFLAGS} -lXcursor 2>&3
|
|
then
|
|
echo "ok."
|
|
echo "#_______________________" >&4
|
|
echo "WITH_XCURSOR:=1" >&4
|
|
echo "CFLAGS_XCURSOR:=" >&4
|
|
echo "LDFLAGS_XCURSOR:=" >&4
|
|
echo "LIBS_XCURSOR:=-lXcursor" >&4
|
|
echo "" >&4
|
|
return
|
|
fi
|
|
fi
|
|
echo "no."
|
|
echo "error, can't compile/link with xcursor support."
|
|
echo "check 'config.log' for further details."
|
|
exit 1
|
|
}
|
|
|
|
check_xf86misc() {
|
|
|
|
cat << EOF > tmp.c
|
|
#include <X11/Xlib.h>
|
|
#include <X11/extensions/xf86misc.h>
|
|
int main() {
|
|
XF86MiscSetGrabKeysState(NULL, True);
|
|
return 0;
|
|
}
|
|
EOF
|
|
msg_chkfor "extensions/xf86misc.h"
|
|
if ${CC} ${CFLAGS} -c tmp.c -o /dev/null 2>&3
|
|
then
|
|
echo "ok."
|
|
msg_chkfor "xf86misc"
|
|
if ${CC} ${CFLAGS} tmp.c -o /dev/null ${LDFLAGS} -lX11 -lXxf86misc 2>&3
|
|
then
|
|
echo "ok."
|
|
echo "#_______________________" >&4
|
|
echo "WITH_XF86MISC:=1" >&4
|
|
echo "LIBS += -lXxf86misc" >&4
|
|
echo "" >&4
|
|
return
|
|
fi
|
|
fi
|
|
echo "no."
|
|
echo " "
|
|
echo "!!! WARNING !!!"
|
|
echo " if the xserver is configured to allow"
|
|
echo " 'AllowDeactivateGrabs' or 'AllowClosedownGrabs'"
|
|
echo " people can bypass alock !!! consider"
|
|
echo " to install the xf86misc extension!"
|
|
echo "!!! WARNING !!!"
|
|
echo " "
|
|
}
|
|
|
|
|
|
|
|
|
|
check_xlib() {
|
|
|
|
cat << EOF > tmp.c
|
|
#include <X11/Xlib.h>
|
|
int main() {
|
|
XOpenDisplay(NULL);
|
|
return 0;
|
|
}
|
|
EOF
|
|
msg_chkfor "Xlib.h"
|
|
if ${CC} ${CFLAGS} -c tmp.c -o /dev/null 2>&3
|
|
then
|
|
echo "ok."
|
|
msg_chkfor "Xlib"
|
|
if ${CC} ${CFLAGS} tmp.c -o /dev/null ${LDFLAGS} -lX11 2>&3
|
|
then
|
|
echo "ok."
|
|
echo "#_______________________" >&4
|
|
echo "LIBS += -lX11" >&4
|
|
echo "" >&4
|
|
else
|
|
echo "no."
|
|
echo "error: you need Xlibs to build alock."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "no."
|
|
echo "error: can't compile without Xlib.h header."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
check_xlogo16() {
|
|
cat << EOF > tmp.c
|
|
#include <X11/bitmaps/xlogo16>
|
|
int main() {
|
|
return 0;
|
|
}
|
|
EOF
|
|
msg_chkfor "X11/bitmaps/xlogo16"
|
|
if ${CC} ${CFLAGS} -c tmp.c -o /dev/null 2>&3
|
|
then
|
|
echo "ok."
|
|
echo "#_______________________" >&4
|
|
echo "WITH_THEME:=1" >&4
|
|
echo "" >&4
|
|
else
|
|
echo "no."
|
|
echo "maybe you should install a package called 'xbitmaps'."
|
|
fi
|
|
}
|
|
|
|
check_xpm() {
|
|
cat << EOF > tmp.c
|
|
#include <X11/xpm.h>
|
|
int main() {
|
|
XpmReadFileToImage(NULL, NULL, NULL, NULL, NULL);
|
|
return 0;
|
|
}
|
|
EOF
|
|
msg_chkfor "X11/xpm.h"
|
|
if ${CC} ${CFLAGS} -c tmp.c -o /dev/null 2>&3
|
|
then
|
|
echo "ok."
|
|
msg_chkfor "libXpm"
|
|
if ${CC} ${CFLAGS} tmp.c -o /dev/null ${LDFLAGS} -lXpm -lX11 2>&3
|
|
then
|
|
echo "ok."
|
|
echo "#_______________________" >&4
|
|
echo "WITH_XPM:=1" >&4
|
|
echo "LIBS_XPM:=-lXpm" >&4
|
|
echo "" >&4
|
|
else
|
|
echo "no."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "no."
|
|
echo "maybe you should install a package called 'xpm'."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
check_hash() {
|
|
echo "configure for hash."
|
|
echo "#_______________________" >&4
|
|
echo "WITH_HASH:=1" >&4
|
|
echo "" >&4
|
|
}
|
|
|
|
check_pam() {
|
|
echo "configure for pam."
|
|
echo "#_______________________" >&4
|
|
echo "WITH_PAM:=1" >&4
|
|
if [ "X`uname -s | sed 's/.*BSD/BSD/'`" = "XBSD" ]
|
|
then
|
|
echo "LIBS_PAM:= -lpam -lcrypt" >&4
|
|
else
|
|
echo "LIBS_PAM= -lpam -lpam_misc -lcrypt" >&4
|
|
fi
|
|
echo "" >&4
|
|
}
|
|
|
|
check_passwd() {
|
|
echo "configure for passwd."
|
|
echo "#_______________________" >&4
|
|
echo "WITH_PASSWD:=1" >&4
|
|
|
|
cat << EOF > tmp.c
|
|
#include <shadow.h>
|
|
int main() {
|
|
/* TODO: write the test */;
|
|
return 0;
|
|
}
|
|
EOF
|
|
msg_chkfor "shadow.h"
|
|
if ${CC} ${CFLAGS} -c tmp.c -o /dev/null 2>&3
|
|
then
|
|
echo "ok."
|
|
echo "CFLAGS_PASSWD:=-DHAVE_SHADOW" >&4
|
|
else
|
|
echo "no."
|
|
fi
|
|
|
|
echo "LIBS_PASSWD=-lcrypt" >&4
|
|
echo "" >&4
|
|
}
|
|
|
|
#############################################################################
|
|
|
|
|
|
while [ $# -gt 0 ]
|
|
do
|
|
case $1 in
|
|
|
|
--help)
|
|
cat <<EOF
|
|
|
|
Options for configure:
|
|
|
|
--prefix <prefix> where to install
|
|
--debug enable debug
|
|
|
|
--with(out)-xrender use Xrender
|
|
--with(out)-xcursor use Xcursor
|
|
--with(out)-imlib2 use imlib2
|
|
--with(out)-xpm use Xpm
|
|
|
|
--with(out)-pam use pam_login
|
|
--with(out)-passwd use /etc/passwd
|
|
--with(out)-hash use sha1,sha2 and md5 based passwords
|
|
|
|
--with-all use all with-options from above
|
|
|
|
--help shows usage of the configure script
|
|
|
|
EOF
|
|
exit 0
|
|
;;
|
|
|
|
--with-xrender|--enable-xrender) CHECK_XRENDER=1;;
|
|
--without-xrender|--disable-xrender) CHECK_XRENDER=0;;
|
|
|
|
--with-xcursor|--enable-xcursor) CHECK_XCURSOR=1;;
|
|
--without-xcursor|--disable-xcursor) CHECK_XCURSOR=0;;
|
|
|
|
--with-xpm|--enable-xpm) CHECK_XPM=1;;
|
|
--without-xpm|--disable-xpm) CHECK_XPM=0;;
|
|
|
|
--with-imlib2|--enable-imlib2)
|
|
CHECK_IMLIB2=1
|
|
CHECK_XRENDER=1
|
|
;;
|
|
--without-imlib2|--disable-imlib2) CHECK_IMLIB2=0;;
|
|
|
|
--with-pam|--enable-pam) CHECK_PAM=1;;
|
|
--without-pam|--disable-pam) CHECK_PAM=0;;
|
|
|
|
--with-passwd|--enable-passwd) CHECK_PASSWD=1;;
|
|
--without-passwd|--disable-passwd) CHECK_PASSWD=0;;
|
|
|
|
--with-all|--enable-all)
|
|
CHECK_PASSWD=1
|
|
CHECK_PAM=1
|
|
CHECK_IMLIB2=1
|
|
CHECK_XCURSOR=1
|
|
CHECK_XRENDER=1
|
|
CHECK_XPM=1
|
|
;;
|
|
|
|
--prefix)
|
|
shift
|
|
if [ $# -gt 0 ]
|
|
then
|
|
prefix=$1
|
|
else
|
|
echo "error, missing argument for -prefix."
|
|
exit 1
|
|
fi
|
|
;;
|
|
|
|
--debug)
|
|
CFLAGS="${CFLAGS} -g"
|
|
LDFLAGS="${LDFLAGS} -g"
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
|
|
##############################################################
|
|
|
|
exec 3> config.log
|
|
exec 4> config.mk
|
|
|
|
echo "# alock's config.mk" >&4
|
|
echo "#_______________________" >&4
|
|
echo "VERSION=\\\"1.0\\\"" >&4
|
|
echo "prefix=$prefix" >&4
|
|
echo "CC=${CC}" >&4
|
|
echo "CFLAGS=${CFLAGS}" >&4
|
|
echo "LDFLAGS=${LDFLAGS}" >&4
|
|
echo "LIBS=${LIBS}" >&4
|
|
echo "#_______________________" >&4
|
|
echo "" >&4
|
|
|
|
check_docs
|
|
check_tools
|
|
check_xlib
|
|
check_xf86misc
|
|
check_xlogo16
|
|
[ "$CHECK_XPM" -eq 1 ] && check_xpm
|
|
[ "$CHECK_XRENDER" -eq 1 ] && check_xrender
|
|
[ "$CHECK_XCURSOR" -eq 1 ] && check_xcursor
|
|
[ "$CHECK_IMLIB2" -eq 1 ] && check_imlib2
|
|
[ "$CHECK_PAM" -eq 1 ] && check_pam
|
|
[ "$CHECK_PASSWD" -eq 1 ] && check_passwd
|
|
[ "$CHECK_HASH" -eq 1 ] && check_hash
|
|
|
|
echo "#_______________________" >&4
|
|
echo "" >&4
|
|
|
|
rm -fr tmp.c
|
|
|
|
# vim:ft=sh
|