mirror of
https://github.com/chris2511/xca.git
synced 2026-09-13 18:46:25 +05:00
259 lines
5.8 KiB
Bash
Executable File
259 lines
5.8 KiB
Bash
Executable File
#!/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 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"
|
|
STDINC="-I/usr/include"
|
|
STDLIB="-L/usr/lib"
|
|
prefix=${prefix:=/usr/local}
|
|
CFLAGS=${CFLAGS:=-Wall -ggdb -O2}
|
|
CC=${CC:=gcc}
|
|
CF="-I. -I.. -I\$(TOPDIR)/ui"
|
|
LDIRS=
|
|
MOC=moc
|
|
UIC=uic
|
|
LRELEASE=lrelease
|
|
|
|
if test -x /sbin/ldconfig; then
|
|
EXTRALIB=$(
|
|
/sbin/ldconfig -p | sed 's,.* => \(/.*/\)[^/]*\.so.*,\1,' | grep "^/" | sort -u | \
|
|
while read lib; do
|
|
echo -n "-L${lib} "
|
|
done
|
|
echo "$DIR"
|
|
)
|
|
STDLIB="$STDLIB $EXTRALIB"
|
|
fi
|
|
|
|
err() {
|
|
echo
|
|
echo ERROR: $1
|
|
echo
|
|
err_occ=Y
|
|
}
|
|
|
|
#adds an includedir to $CF
|
|
add_include() {
|
|
for _dir in $STDINC ${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 ${STDLIB} ${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
|
|
for include in outinc include; 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
|
|
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
|
|
for lib in lib out; 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
|
|
done
|
|
return 1
|
|
}
|
|
|
|
echo -e "\n\nConfiguring XCA `cat VERSION`\n----------------------------"
|
|
|
|
######################### QT
|
|
subdirs="/qt /qt4"
|
|
search_includes Qt/qobject.h || err "The QT Library headerfiles were not found. Set QTDIR appropriately."
|
|
subdirs="/qt/Qt /qt4/Qt /Qt"
|
|
search_includes qobject.h || err "The QT Library headerfiles were not found. Set QTDIR appropriately."
|
|
search_lib QtGui4 QtGui || err "The QT library was not found."
|
|
search_lib ltdl || err "Libtool ltdl not found."
|
|
search_lib c_r || true
|
|
|
|
###################### 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."
|
|
|
|
###################### OpenSC
|
|
#subdirs=""
|
|
#search_includes opensc/opensc.h || err "The OpenSC library headerfiles were not found."
|
|
#search_lib opensc || err "The OpenSC library was not found."
|
|
|
|
export LD_LIBRARY_PATH
|
|
##### Try to compile them all together and show the versions.
|
|
cat >conftest.c <<EOF
|
|
#include <stdio.h>
|
|
#include <openssl/opensslv.h>
|
|
//#include <opensc/opensc.h>
|
|
#include <Qt/qglobal.h>
|
|
|
|
int main(){
|
|
printf("\nThe Versions of the used libraries are:\n\t%s 0x%lxL\n\tQT: %s\n",
|
|
// "\tOpenSC: %s\n",
|
|
OPENSSL_VERSION_TEXT, OPENSSL_VERSION_NUMBER, QT_VERSION_STR
|
|
// , sc_get_version()
|
|
);
|
|
|
|
if (QT_VERSION < 0x040001) {
|
|
printf("You need Qt 4 or higher\n");
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
EOF
|
|
|
|
echo "${CC} $LIBS $LDIRS $CF $CFLAGS conftest.c -o conftest${SUFFIX}" >conftest.log
|
|
if ${CC} $LIBS $LDIRS $CF $CFLAGS conftest.c -o conftest${SUFFIX} >> conftest.log 2>&1; then
|
|
./conftest${SUFFIX} || 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${SUFFIX} conftest.log
|
|
else
|
|
err "Unable to compile a minimal application look at 'conftest.log' for errors"
|
|
fi
|
|
|
|
|
|
if which linuxdoc 2>&1; then
|
|
LINUXDOC="linuxdoc"
|
|
else
|
|
echo "Application 'linuxdoc' not found. No documentation will be generated"
|
|
LINUXDOC=":"
|
|
fi
|
|
|
|
findapp() {
|
|
for app in `which $@ 2>/dev/null`; do
|
|
if test -x "$app"; then
|
|
echo "$app"
|
|
break
|
|
fi
|
|
done
|
|
}
|
|
|
|
MOC=`findapp $QTDIR/bin/moc moc4 moc-qt4 moc`
|
|
UIC=`findapp $QTDIR/bin/uic uic4 uic-qt4 uic`
|
|
RCC=`findapp $QTDIR/bin/rcc rcc4 rcc-qt4 rcc`
|
|
LRELEASE=`findapp $QTDIR/bin/lrelease lrelease4 lrelease-qt4 lrelease`
|
|
|
|
test -z "$docdir" && docdir="${prefix}/share/xca"
|
|
|
|
cat >Local.mak <<EOF
|
|
CPPFLAGS=$CF
|
|
CFLAGS=${CFLAGS}
|
|
|
|
LDFLAGS=$LDFLAGS $LDIRS
|
|
|
|
# List of all libs to be compiled statically
|
|
SLIBS=$SLIBS
|
|
|
|
# list of dynamic libraries
|
|
LIBS=$LIBS
|
|
|
|
MOC=$MOC
|
|
UIC=$UIC
|
|
RCC=$RCC
|
|
LRELEASE=$LRELEASE
|
|
|
|
CC=${CC}
|
|
LD=${LD:=ld}
|
|
STRIP=${STRIP:=strip}
|
|
WINDRES=${WINDRES:=windres}
|
|
MAKENSIS=${MAKENSIS:=makensis.exe}
|
|
LINUXDOC=${LINUXDOC:=linuxdoc}
|
|
|
|
SUFFIX=${SUFFIX}
|
|
HOST=linux
|
|
prefix=${prefix}
|
|
docdir=${docdir}
|
|
|
|
EOF
|
|
test -z "$etc" && etc=/etc/xca
|
|
|
|
cat >local.h <<EOF
|
|
#define PREFIX "$prefix"
|
|
#define ETC "$etc"
|
|
#define VER "`cat VERSION`"
|
|
#define DOCDIR "$docdir"
|
|
EOF
|
|
|
|
find_make() {
|
|
for dirs in /usr/local/bin /sw/bin /bin /usr/bin; do
|
|
for make in make gmake; do
|
|
if "${dirs}/${make}" -v 2>/dev/null | grep GNU; then
|
|
mak="${dirs}/${make}"
|
|
return
|
|
fi
|
|
done
|
|
done
|
|
}
|
|
|
|
find_make
|
|
|
|
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
|
|
|