This repository has been archived on 2025-02-01. You can view files and clone it, but cannot push or open issues or pull requests.
alock/configure
2011-09-20 22:06:33 +02:00

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