#!/bin/sh # # $Id: configure,v 1.229 2005/11/09 21:17:03 dimitri Exp $ # # Copyright (C) 1997-2012 by Dimitri van Heesch. # # Permission to use, copy, modify, and distribute this software and its # documentation under the terms of the GNU General Public License is hereby # granted. No representations are made about the suitability of this software # for any purpose. It is provided "as is" without express or implied warranty. # See the GNU General Public License for more details. # # Documents produced by Doxygen are derivative works derived from the # input used in their production; they are not affected by this license. # # shell script to configure doxygen doxygen_version_major=1 doxygen_version_minor=8 doxygen_version_revision=2 #NOTE: Setting version_mmn to "NO" will omit mmn info from the package. doxygen_version_mmn=NO bin_dirs=`echo $PATH | sed -e "s/:/ /g"` f_debug=NO f_shared=YES f_make=NO f_dot=NO f_perl=NO f_plf_auto=NO f_prefix=/usr/local f_insttool=NO f_english=NO f_wizard=NO f_app=NO f_thread=NO f_flex=NO f_bison=NO f_langs=nl,sv,cz,fr,id,it,de,jp,je,es,fi,ru,hr,pl,pt,hu,kr,ke,ro,si,cn,no,mk,br,dk,sk,ua,gr,tw,sr,ca,lt,za,ar,fa,sc,vi,tr,eo,am while test -n "$1"; do case $1 in --prefix | -prefix) shift; f_prefix=$1 ;; --docdir | -docdir) shift; f_docdir=$1 ;; --shared | -shared) f_shared=YES ;; --static | -static) f_shared=NO ;; --release | -release) f_debug=NO ;; --debug | -debug) f_debug=YES ;; --english-only | -english-only) f_english=YES ;; --enable-langs | -enable-langs) shift; f_langs=$1 ;; --platform | -platform) shift; f_platform=$1 ;; --make | -make) shift; f_make=$1 ;; --dot | -dot) shift; f_dot=$1 ;; --perl | -perl) shift; f_perl=$1 ;; --flex | -flex) shift; f_flex=$1 ;; --bison | -bison) shift; f_bison=$1 ;; --install | -install) shift; f_insttool=$1 ;; --with-doxywizard | -with-doxywizard) f_wizard=YES ;; --with-doxyapp | -with-doxyapp) f_app=YES ;; -h | -help | --help) f_help=y ;; *) echo $1: unknown argument f_help=y f_error=y ;; esac shift done if test "$f_help" = y; then cat </dev/null` || u_release=unknown u_system=`(uname -s) 2>/dev/null` || u_system=unknown if test -z "$f_platform"; then f_platforms="`cat PLATFORMS`" case "$u_system:$u_release" in AIX*) f_platform=aix-xlc ;; BeOS*) f_platform=beos-g++ ;; dgux:*) f_platform=dgux-g++ ;; Darwin:*) f_platform=macosx-c++ if test "$f_insttool" = NO; then f_insttool=/usr/bin/install fi ;; FreeBSD:*) f_platform=freebsd-g++ if test "$f_insttool" = NO; then f_insttool=/usr/bin/install fi ;; NetBSD:*) f_platform=netbsd-g++ if test "$f_insttool" = NO; then f_insttool=/usr/bin/install fi ;; HP-UX:*) f_platform=hpux-g++ if test "$f_insttool" = NO; then f_insttool=/usr/bin/install fi ;; IRIX64:*) f_platform=irix-64 ;; IRIX:*) f_platform=irix-n32 ;; Linux:*|GNU:*|GNU/*:*) f_platform=linux-g++ ;; NetBSD:*) f_platform=netbsd-g++ ;; OpenBSD:*) f_platform=openbsd-g++ ;; OSF1:*) f_platform=osf1-g++ ;; QNX:*) f_platform=qnx-g++ ;; *:3.2) f_platform=sco-g++ ;; SunOS:4*) f_platform=sunos-g++ ;; SunOS:5*) f_platform=solaris-g++ if test "$f_insttool" = NO; then f_insttool=/usr/bin/install fi ;; ULTRIX:*) f_platform=ultrix-g++ ;; UNIX_SV:4.2*) f_platform=unixware-g++ ;; Cygwin:*|CYGWIN*) f_platform=win32-g++ ;; *MiNT:*) f_platform=m68k-atari-mint-g++ ;; *) echo echo "Your platform was not recognised by this configure script" echo "Please use the -platform option to specify one of platforms" echo "in this list:" echo for p in $f_platforms do echo " $0 $* -platform $p" done echo exit 2 esac echo " Autodetected platform $f_platform... " f_plf_auto=YES fi if test -z "$f_docdir"; then f_docdir='$(INSTALL)/share/doc/packages/doxygen' fi if test "$f_plf_auto" = NO; then echo -n " Checking for platform $f_platform... " if test '!' -d tmake/lib/$f_platform; then echo "not supported!" echo exit 2 fi echo "supported" fi #- check for qt -------------------------------------------------------------- if test "$f_wizard" = YES; then if test -z "$QTDIR"; then echo " QTDIR environment variable not set!" echo -n " Checking for Qt..." for d in /usr/{lib,share,qt}/{qt-4,qt4,qt,qt*,4} /usr; do if test -x "$d/bin/qmake"; then QTDIR=$d fi done else echo " Detected Qt via the QTDIR environment variable..." echo -n " " fi if test -z "$QTDIR"; then echo "QTDIR not set and Qt not found at standard locations!" echo echo "Set the QTDIR environment variable such that \$QTDIR/bin/qmake exists." echo "check the Qt installation instructions!" exit 2 fi fi # - check for make ------------------------------------------------------------ echo -n " Checking for GNU make tool... " if test "$f_make" = NO; then make_names="gmake make" make_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin" make_prog=NO for i in $make_names; do for j in $make_dirs; do if test -x "$j/$i"; then if test -n "`$j/$i --version 2>/dev/null | grep GNU`"; then make_prog="$j/$i" break 2 fi fi done done f_make="$make_prog" fi if test "$f_make" = NO; then echo "not found!"; echo exit 2 fi echo "using $f_make" # - check for install ------------------------------------------------------------ echo -n " Checking for GNU install tool... " if test "$f_insttool" = NO; then install_names="ginstall install" install_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin /usr/ucb" install_prog=NO install_found=NO for i in $install_names; do for j in $install_dirs; do if test -x "$j/$i"; then if test -n "`$j/$i --version 2>/dev/null | grep utils`"; then install_found=YES install_prog="$j/$i" break 2 fi fi done done f_insttool="$install_prog" fi if test "$f_insttool" = NO; then if test "$install_found" = YES; then echo; else echo "not found!"; echo fi echo "GNU version of install is required: this is part of the fileutils/coreutils package: " echo "see http://www.gnu.org/software/fileutils/fileutils.html" echo exit 2 fi echo "using $f_insttool"; # - check for dot ------------------------------------------------------------ echo -n " Checking for dot (part of GraphViz)... " if test "$f_dot" = NO; then dot_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin" dot_prog=NO for j in $dot_dirs; do if test -x "$j/dot"; then dot_prog="$j/dot" break 2 fi done f_dot="$dot_prog" fi if test "$f_dot" = NO; then echo "not found!"; else echo "using $f_dot" fi # - check for perl ------------------------------------------------------------ echo -n " Checking for perl... " if test "$f_perl" = NO; then perl_names="perl perl5" perl_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin" perl_prog=NO perl_found=NO for i in $perl_names; do for j in $perl_dirs; do if test -x "$j/$i"; then perl_found=YES if $j/$i -e 'require 5.000;' 2>/dev/null ; then perl_prog="$j/$i" break 2 fi fi done done f_perl="$perl_prog" fi if test "$f_perl" = NO; then if test "$perl_found" = YES; then echo "version is too old (5.000 or higher is required)." else echo "not found!"; fi echo exit 2 fi echo "using $f_perl"; # - check for flex ------------------------------------------------------------ echo -n " Checking for flex... " if test "$f_flex" = NO; then flex_dirs="$bin_dirs /usr/bin /usr/local/bin /bin" flex_prog=NO flex_found=NO for j in $flex_dirs; do if test -x "$j/flex"; then flex_found=YES flex_prog="$j/flex" break fi done f_flex="$flex_prog" fi if test "$f_flex" = NO; then echo "not found!"; exit 2 else echo "using $f_flex" fi # - check for bison ------------------------------------------------------------ echo -n " Checking for bison... " if test "$f_bison" = NO; then bison_dirs="$bin_dirs /usr/bin /usr/local/bin /bin" bison_prog=NO bison_found=NO for j in $bison_dirs; do if test -x "$j/bison"; then bison_found=YES bison_prog="$j/bison" break fi done f_bison="$bison_prog" fi if test "$f_bison" = NO; then echo "not found!"; exit 2 else echo "using $f_bison" fi # ----------------------------------------------------------------------------- # # Make VERSION file # echo " Creating VERSION file." # Output should be something like 1.4.5-20051010 if test "x$doxygen_version_mmn" = "xNO"; then echo "$doxygen_version_major.$doxygen_version_minor.$doxygen_version_revision" > VERSION else echo "$doxygen_version_major.$doxygen_version_minor.$doxygen_version_revision-$doxygen_version_mmn" > VERSION fi test -f .makeconfig && rm .makeconfig test -f .tmakeconfig && rm .tmakeconfig configPWD=`pwd` cat > .makeconfig <> .makeconfig <> .makeconfig <> .makeconfig <> .makeconfig < spec.tmp if test "$doxygen_version_mmn" = NO; then echo "%define revision 1" >> spec.tmp echo "%define mmn 1" >> spec.tmp else echo "%define revision $doxygen_version_mmn" >> spec.tmp echo "%define mmn $doxygen_version_mmn" >> spec.tmp fi mkdir -p packages mkdir -p packages/rpm cat spec.tmp ./packages/rpm/doxygen.spec.in > ./packages/rpm/doxygen.spec rm -f spec.tmp # make .tmakeconfig # touch .tmakeconfig if test "$f_shared" = NO; then if test "$f_platform" = "osf1-cxx" -o "$f_platform" = "irix-n32"; then cat >> .tmakeconfig <> .tmakeconfig <> .tmakeconfig <> .tmakeconfig <> .tmakeconfig </dev/null`"; then mac_sdk=MacOSX10.4u.sdk fi if test -n "`ls /Developer/SDKs/MacOSX10.5*.sdk 2>/dev/null`"; then mac_sdk=MacOSX10.5.sdk fi if test -n $mac_sdk; then cat >> .tmakeconfig <> .tmakeconfig <> .tmakeconfig < $DST <> $DST if test $i = Makefile.in; then echo "" >> $DST echo "all: src/version.cpp " >> $DST echo " \$(MAKE) -C qtools" >> $DST echo " \$(MAKE) -C libmd5" >> $DST echo " \$(MAKE) -C src" >> $DST if test $f_wizard = YES; then echo " \$(MAKE) MAN1DIR=\$(MAN1DIR) -C addon/doxywizard" >> $DST fi if test $f_app = YES; then echo " \$(MAKE) -C addon/doxyapp" >> $DST fi echo "" >> $DST echo "doxywizard_install:" >> $DST if test $f_wizard = YES; then echo " \$(MAKE) MAN1DIR=\$(MAN1DIR) -C addon/doxywizard install" >> $DST fi echo "" >> $DST fi if test $f_wizard = YES; then sed -e "s/%%WITHDOXYWIZARD%% /--with doxywizard /g" $SRC >> $DST else sed -e "s/%%WITHDOXYWIZARD%% //g" $SRC >> $DST fi echo " Created $DST from $SRC..." done cat src/libdoxycfg.t.in | sed -e "s|%%FLEX%%|$f_flex|g" -e "s|%%BISON%%|$f_bison|g" > src/libdoxycfg.t cat src/libdoxygen.t.in | sed -e "s|%%FLEX%%|$f_flex|g" -e "s|%%BISON%%|$f_bison|g" > src/libdoxygen.t f_inprofiles="qtools/qtools.pro.in src/libdoxygen.pro.in src/libdoxycfg.pro.in src/doxygen.pro.in addon/doxywizard/doxywizard.pro.in addon/doxmlparser/src/doxmlparser.pro.in addon/doxmlparser/test/xmlparse.pro.in addon/doxmlparser/examples/metrics/metrics.pro.in libmd5/libmd5.pro.in addon/doxyapp/doxyapp.pro.in" for i in $f_inprofiles ; do SRC=$i DST=`echo $i|sed 's%\(.*\).in$%\1%'` TIME=`date` cat > $DST <> $DST echo " Created $DST from $SRC..." done # - generating src/lang_cfg.h if test -f "src/lang_cfg.h"; then chmod u+w src/lang_cfg.h # make sure file can be overwritten fi echo -n " Generating src/lang_cfg.h..." echo $f_langs | $f_perl -e '@l=split(/,/,); chomp @l; @allowed=(split(/,/,"NL,SV,CZ,FR,ID,IT,DE,JP,JE,ES,FI,RU,HR,PL,PT,HU,KR,KE,RO,SI,CN,NO,MK,BR,DK,SK,UA,GR,TW,SR,CA,LT,ZA,AR,FA,SC,VI,TR,EO,AM")); foreach my $elem (@l){ $elem =~ tr/a-z/A-Z/; $r=0; foreach my $tst (@allowed){ if ($tst eq $elem) { $r=1; last; } } if ($r!=1) { die "ERROR: Invalid language $elem was selected!\n"; } print "#define LANG_$elem\n"; };' > ./src/lang_cfg.h echo