#!/bin/sh [ -z $CC ] && CC=gcc [ -z $CFLAGS ] && CFLAGS="-I/usr/X11R6/include" [ -z $LDFLAGS ] && LDFLAGS="-L/usr/X11R6/lib" 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 "gcc" 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 #include void main() { Imlib_Context ctx = NULL; ctx = imlib_context_new(); } 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 detailts." exit 1 fi else echo "no." fi } check_xrender() { cat << EOF > tmp.c #include #include void main() { XRenderFindVisualFormat(NULL, NULL); } 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 else echo "no." exit 1 fi else echo "no." exit 1 fi } check_xcursor() { cat << EOF > tmp.c #include #include void main() { XcursorFilenameLoadCursor(NULL, NULL); } 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 else echo "no." exit 1 fi else echo "no." exit 1 fi } check_xlib() { cat << EOF > tmp.c #include void main() { XOpenDisplay(NULL); } 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 void 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 void main() { XpmReadFileToImage(NULL, NULL, NULL, NULL, NULL); } 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 void main() { /* TODO: write the test */; } 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 < 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_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