#!/bin/sh -e ##################################################### # this configure-script searches for the needed includes # and libraries. # # it is MUCH faster, smaller and does what I want. :-) # # If you have openssl or the Berkeley db installed in # an unusual directory like /home/me/install/ssl # just give it as argument to ./configure # it then searches for headers in /home/me/install/ssl/include # and librarys in /home/me/install/ssl/lib # # if you have a very unusual setup or you are cross-compiling # you can edit "Local.mak" to fit your needs and to reflect your setup # # The Makefiles should support parallel builds. # ####################################################### DIRS="" for dir in $@; do DIRS="$DIRS `cd $dir; pwd`" done DIRS="$QTDIR $DIRS /usr /usr/X11R6 /usr/local" CF="-I. -I.." LIBS=-lstdc++ LDIRS= MOC=moc UIC=uic LRELEASE=lrelease err() { echo echo ERROR: $1 echo err_occ=Y } #adds an includedir to $CF add_include() { for _dir in -I/usr/include ${CF}; do if test "-I$1" = "${_dir}"; then return 0 fi done CF="${CF} -I$1" } add_lib() { if test "$3" = "a"; then SLIBS="$SLIBS -l$2" else LIBS="$LIBS -l$2" fi for _libs in -L/usr/lib ${LDIRS}; do if test "-L$1" = "${_libs}"; then return 0 fi done LDIRS="${LDIRS} -L$1" } # check for includes search_includes() { for dir in ${DIRS}; do for dbn in "" ${subdirs}; do if test -r ${dir}/include${dbn}/$1; then add_include ${dir}/include${dbn} test -z "${dbn}" || add_include ${dir}/include echo Found: $1 at ${dir}/include${dbn} return 0 fi done done return 1 } # check for libs search_lib() { for dir in ${DIRS}; do for dbn in $@; do for suffix in so dylib obj a; do if test -r ${dir}/lib/lib${dbn}.${suffix}; then add_lib ${dir}/lib ${dbn} ${suffix}; echo Found: lib${dbn}.${suffix} at ${dir}/lib return 0 fi done done done return 1 } echo -e "\n\nConfiguring XCA `cat VERSION`\n----------------------------" ######################## DB subdirs="/db /db4.1 /db4 /db3" search_includes db_cxx.h || err "The Berkeley DB header files were not found" search_lib db_cxx db4_cxx db_cxx-4 db3_cxx db_cxx-3 || err "The Berkeley DB library was not found. Try installing db-dev" ## The fun of NPTL... (Thx Enrico Scholz) echo 'int main() {}' >conftest.c if g++ $LIBS $LDIRS $CF $CFLAGS conftest.c -o conftest &>conftest.log; then : else search_lib pthread || err "Lib pthread needed for db_cxx and not found" fi ######################### QT subdirs="/qt /Qt /qt4 /qt3 /qt2" search_includes qobject.h || err "The QT Library headerfiles were not found. Set QTDIR appropriately." search_lib QtGui qt qt-mt || err "The QT library was not found. Try installing qt-dev" search_lib c_r || true # look if it compiles... if g++ $LIBS $LDIRS $CF $CFLAGS conftest.c -o conftest &>conftest.log; then : else search_lib c_r || err "Libc_r needed for FreeBSD systems and was not found" fi ###################### OpenSSL subdirs="" search_includes openssl/opensslv.h || err "The OpenSSL library headerfiles were not found." search_lib crypto || err "The OpenSSL library was not found." export LD_LIBRARY_PATH ##### Try to compile them all together and show the versions. cat >conftest.c < #include #include main(){ printf("\nThe Versions of the used libraries are:\n\t%s\n\t%s\n\tQT: %s\n", OPENSSL_VERSION_TEXT, DB_VERSION_STRING, QT_VERSION_STR ); } EOF if g++ $LIBS $LDIRS $CF $CFLAGS conftest.c -o conftest &>conftest.log ; then ./conftest ||err "Unable to execute a freshly compiled application, maybe you have to adjust your LD_LIBRARY_PATH or /etc/ld.so.conf" #rm -f conftest.c conftest conftest.log else err "Unable to compile a minimal application look at 'conftest.log' for errors" fi if test -x $QTDIR/bin/moc; then MOC="$QTDIR/bin/moc" fi if test -x $QTDIR/bin/uic; then UIC="$QTDIR/bin/uic" fi if test -x $QTDIR/bin/lrelease; then LRELEASE="$QTDIR/bin/lrelease" fi echo echo "LDFLAGS :${LIBS}${LDIRS}" echo "PREFIX :${prefix:=/usr/local}" echo "CPPFLAGS :${CF}" echo "CFLAGS :${CFLAGS:=-Wall -g -ggdb}" echo cat >Local.mak </dev/null | grep GNU; then mak=${dirs}/${make} fi done done echo if test ! -z "${mak}"; then echo A usable "make" executable was found in ${mak} else echo No usable "make" executable found. fi echo if test "x${err_occ}" = "xY"; then echo echo An error occured. Please edit 'Local.mak' manually if compiling fails. fi