#!/usr/bin/perl # $Id: auto.pl,v 1.21 2001/03/26 22:05:29 garbanzo Exp $ use strict; use warnings; my $retval; #Add this to our search path, it saves us a lot of trouble use lib 'admin/pc_objects'; use lib 'admin'; use ConfigCore; use BasicTests; use AutoconfDerived; use OtherTests; use X11; use Qt; use KDE; # Do this stuff here, before ConfigInit (these are specific to kdelibs) AddWithOption('ssl', 'with', 'SSL bits', 'no'); AddWithOption('dmalloc', 'without', 'use dmalloc, as in http://www.dmalloc.com/dmalloc.tar.gz', 'no'); AddWithOption('ssl-dir', 'without', 'where the root of OpenSSL is installed', 'DIR'); AddToggleOption('mysql', 'disable', 'build MySQL-plugin'); AddToggleOption('nls', 'enable', 'build without Native Language Support'); # package name, version, @ARGV (package name is used to sub @PACKAGE@ $retval = ConfigInit('kdelibs', '0.3', @ARGV); if ($retval eq 2) { # 2 == printed help exit 0; } $prefix = '/usr/local/kde' unless $prefix; # These can be done up here if desired KDE::SetClosure(); KDE::SetFinal(); FindInstall(); FindMake(); FindCompiler('C'); CheckANSICHeaders(); FindCompiler('CPLUSPLUS'); SetLang('CPLUSPLUS'); CheckBasicType('bool'); CheckExceptions(); CheckRTTI(); FindPreProcessor(); FindLinker(); ConfigThreading(); SetLang('C'); # FindProgram returns a list, of the full path to every program that was # found, so if you have /usr/local/bin:/usr/bin as your path # and /usr/bin/awk and /usr/local/bin/nawk, and no gawk # FindProgram("awk gawk nawk") would return {"/usr/bin/awk", "/usr/local/bin/nawk"} # Since it traverses the path second. Also, if you give it a description # it will print out a status line "Checking for xxxx..." If more than one # result is found, it'll print out the first one followed by "(maybe)" # if only one is found, that's printed, and if none are found, it informs # the user of that. You need to cache the results here manually for the # reason that multiple results may be found, and the configure script # author needs to choose which to use. If a cached value is found, it's # used. # FindProgram takes these parameters: # - a list of program names # - optionally - the name of an envrionment variable to check first # (MUST begin with $ otherwise it'll be treated as a description) # - optionally - a description for the program #my $cc_exec = (FindProgram("cc gcc", '$CCF', "cc"))[0]; # Similar to FindProgram, except it will only return the first one found # and it will cache stuff, takes ("list of programs", # "oneworddescription", and optionaly a substution value) # Generally one should use FindCacheProgram and not FindProgram unless you # plan to do more advanced checking FindCacheProgram('as', 'as', 'AS'); # This seems to be for the benefit of libtool, but has no other purpose FindCacheProgram('objdump false', 'objdump', 'OBJDUMP'); FindCacheProgram('strip false', 'strip', 'STRIP'); FindCacheProgram('ranlib false', 'ranlib', 'RANLIB'); FindCacheProgram('ar false', 'ar', 'AR'); # For libltdl if ($AM_PREPARE != 1) { CheckFunction('index rindex strchr strcmp'); CheckInline(); CheckConst(); CheckDynamicOpen(); mkdir $pc_subst_vars{top_srcdir}."/$obj_dir/libltdl"; chdir $pc_subst_vars{top_srcdir}."/$obj_dir/libltdl"; system ("$pc_subst_vars{top_srcdir}/libltdl/configure --enable-ltdl-convenience"); chdir $pc_subst_vars{top_srcdir}; } ConfigLibtool(); # - Macro: AC_HEADER_DIRENT # Look for printf in libc CheckFunction('printf'); # Look for sys/types.h and stdio.h CheckHeader('sys/types.h stdio.h'); CheckHeader('pwd.h nonexistant.h'); # Look for libm, and put it in the variable LIBM CheckLibrary('m', 'LIBM'); # Look for libjpeg6b, libjpeg and the first one that's found # is put into LIBJPEG CheckLibrary('jpeg6b jpeg jpg', 'LIBJPEG'); CheckFunctionInLibrary('socket', 'connect', 'LIBSOCKET'); if ($pc_subst_vars{LIBSOCKET} and ($pc_subst_vars{LIBSOCKET} ne '') ) { $pc_subst_vars{X_EXTRA_LIBS} .= $pc_subst_vars{LIBSOCKET} . ' '; } CheckFunctionInLibrary('crypt', 'crypt', 'LIBCRYPT'); CheckFunctionInLibrary('bz bz2', 'BZ2_bzflush', 'LIBBZ2'); CheckFunctionInLibrary('z', 'zlibVersion', 'LIBZ'); CheckFunctionInLibrary('res_init', 'resolv', 'LIBRESOLV'); # Attempt to copy kdelibs's configure CheckHeader('sys/mman.h sys/time.h sys/cdefs.h fnmatch.h sysent.h strings.h sys/stat.h sys/select.h sys/socket.h linux/socket.h socketbits.h sigaction.h paths.h malloc.h monetary.h limits.h sys/soundcard.h'); CheckLibrary('compat', 'LIBCOMPAT'); CheckLibrary('util', 'LIBUTIL'); CheckHeader('float.h sys/param.h argz.h string.h alloca.h unistd.h'); #AC_HEADER_TIME CheckFunction('socket vsnprintf seteuid setegid random strfmon stpcpy mkstemp gettimeofday setenv unsetenv'); CheckEndian(); #AC_FUNC_VFORK #AC_CHECK_USLEEP #AC_CHECK_GETDOMAINNAME #AC_CHECK_GETHOSTNAME #AC_CHECK_RANDOM #AC_CHECK_S_ISSOCK #AC_MSG_CHECKING([for mount tab file]) #AC_CACHE_VAL(kde_cv_mtab_file, #AC_DEFINE_UNQUOTED(MTAB_FILE # one of /etc/mtab /etc/mnttab CheckBasicType('int'); SetLang('C'); SetupNLS(); CheckSTL(); CheckX11(); CheckHeader('X11/ICE/ICElib.h'); CheckLibTiff(); Qt::LocateQt(); KDE::DoKDELIBS(); KDE::CheckKSizeType(); #AddTemplateFile('output', 'input'); #AddTemplateFiles('list of output files'); #AddTemplateFileList('output to file'); #AddTemplateSubstutionsFromFileList('input from file'); $pc_subst_vars{GCJ}=''; $pc_subst_vars{GCJFLAGS}=''; # These can really go anywhere in the script. # Hell you can manipulate the hashes by hand if you really wanted to. AddTemplateFiles('Makefile'); AddTemplateFiles('arts/Makefile'); AddTemplateFiles('arts/artsc/Makefile'); AddTemplateFiles('arts/examples/Makefile'); AddTemplateFiles('arts/flow/Makefile'); AddTemplateFiles('arts/flow/mcopclass/Makefile'); AddTemplateFiles('arts/gmcop/Makefile'); AddTemplateFiles('arts/knotify/Makefile'); AddTemplateFiles('arts/mcop/Makefile'); AddTemplateFiles('arts/mcop_mt/Makefile'); AddTemplateFiles('arts/mcopidl/Makefile'); AddTemplateFiles('arts/media/Makefile'); AddTemplateFiles('arts/qtmcop/Makefile'); AddTemplateFiles('arts/soundserver/Makefile'); AddTemplateFiles('arts/tests/Makefile'); AddTemplateFiles('arts/x11/Makefile'); AddTemplateFiles('dcop/Makefile'); #AddTemplateFiles('dcop/ICE/Makefile'); AddTemplateFiles('dcop/KDE-ICE/Makefile'); AddTemplateFiles('dcop/client/Makefile'); AddTemplateFiles('dcop/dcopidl/Makefile'); AddTemplateFiles('dcop/dcopidl2cpp/Makefile'); AddTemplateFiles('doc/Makefile'); AddTemplateFiles('doc/common/Makefile'); AddTemplateFiles('doc/kspell/Makefile'); AddTemplateFiles('interfaces/Makefile'); AddTemplateFiles('kab/Makefile'); AddTemplateFiles('kdecore/Makefile'); AddTemplateFiles('kdecore/kde-config.cpp'); AddTemplateFiles('kdecore/tests/Makefile'); AddTemplateFiles('kdedb/Makefile'); AddTemplateFiles('kdedb/kdb/Makefile'); AddTemplateFiles('kdedb/kdbcore/Makefile'); AddTemplateFiles('kdedb/kdbui/Makefile'); AddTemplateFiles('kdedb/plugins/Makefile'); AddTemplateFiles('kdedb/plugins/informix/Makefile'); AddTemplateFiles('kdedb/plugins/mysql/Makefile'); AddTemplateFiles('kdedb/plugins/postgres/Makefile'); AddTemplateFiles('kdesu/Makefile'); AddTemplateFiles('kdeui/Makefile'); AddTemplateFiles('kdeui/tests/Makefile'); AddTemplateFiles('kfile/Makefile'); AddTemplateFiles('khtml/Makefile'); AddTemplateFiles('khtml/css/Makefile'); AddTemplateFiles('khtml/dom/Makefile'); AddTemplateFiles('khtml/ecma/Makefile'); AddTemplateFiles('khtml/html/Makefile'); AddTemplateFiles('khtml/java/Makefile'); AddTemplateFiles('html/java/tests/Makefile'); AddTemplateFiles('khtml/misc/Makefile'); AddTemplateFiles('khtml/pics/Makefile'); AddTemplateFiles('khtml/rendering/Makefile'); AddTemplateFiles('khtml/xml/Makefile'); AddTemplateFiles('khtml/java/kjava.policy'); AddTemplateFiles('kimgio/Makefile'); AddTemplateFiles('kinit/Makefile'); AddTemplateFiles('kio/Makefile'); AddTemplateFiles('kio/bzip2/Makefile'); AddTemplateFiles('kio/cvs/Makefile'); AddTemplateFiles('kio/file/Makefile'); AddTemplateFiles('kio/ftp/Makefile'); AddTemplateFiles('kio/gzip/Makefile'); AddTemplateFiles('kio/http/Makefile'); AddTemplateFiles('kio/http/kcookiejar/Makefile'); AddTemplateFiles('kio/http/kcookiejar/tests/Makefile'); AddTemplateFiles('kio/kded/Makefile'); AddTemplateFiles('kio/klauncher/Makefile'); AddTemplateFiles('kio/klauncher/tests/Makefile'); AddTemplateFiles('kio/kpac/Makefile'); AddTemplateFiles('kio/ksasl/Makefile'); AddTemplateFiles('kio/ksasl/auth_CRAM-MD5/Makefile'); AddTemplateFiles('kio/ksasl/auth_DIGEST-MD5/Makefile'); AddTemplateFiles('kio/ksasl/auth_PLAIN/Makefile'); AddTemplateFiles('kio/ksendbugmail/Makefile'); AddTemplateFiles('kio/pics/Makefile'); AddTemplateFiles('kio/tests/Makefile'); AddTemplateFiles('kjs/Makefile'); AddTemplateFiles('kparts/Makefile'); AddTemplateFiles('kparts/tests/Makefile'); AddTemplateFiles('ksgmltools/Makefile'); AddTemplateFiles('ksgmltools/customization/Makefile'); AddTemplateFiles('ksgmltools/customization/ca/Makefile'); AddTemplateFiles('ksgmltools/customization/ca/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/cs/Makefile'); AddTemplateFiles('ksgmltools/customization/cs/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/da/Makefile'); AddTemplateFiles('ksgmltools/customization/da/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/de/Makefile'); AddTemplateFiles('ksgmltools/customization/de/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/dtd/Makefile'); AddTemplateFiles('ksgmltools/customization/el/Makefile'); AddTemplateFiles('ksgmltools/customization/el/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/en/Makefile'); AddTemplateFiles('ksgmltools/customization/en/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/es/Makefile'); AddTemplateFiles('ksgmltools/customization/es/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/et/Makefile'); AddTemplateFiles('ksgmltools/customization/et/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/fi/Makefile'); AddTemplateFiles('ksgmltools/customization/fi/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/fr/Makefile'); AddTemplateFiles('ksgmltools/customization/fr/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/hu/Makefile'); AddTemplateFiles('ksgmltools/customization/hu/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/it/Makefile'); AddTemplateFiles('ksgmltools/customization/it/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/ja/Makefile'); AddTemplateFiles('ksgmltools/customization/ja/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/ko/Makefile'); AddTemplateFiles('ksgmltools/customization/ko/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/nl/Makefile'); AddTemplateFiles('ksgmltools/customization/nl/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/no/Makefile'); AddTemplateFiles('ksgmltools/customization/no/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/pl/Makefile'); AddTemplateFiles('ksgmltools/customization/pl/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/pt/Makefile'); AddTemplateFiles('ksgmltools/customization/pt-BR/Makefile'); AddTemplateFiles('ksgmltools/customization/pt-BR/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/pt/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/ro/Makefile'); AddTemplateFiles('ksgmltools/customization/ro/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/ru/Makefile'); AddTemplateFiles('ksgmltools/customization/ru/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/sk/Makefile'); AddTemplateFiles('ksgmltools/customization/sk/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/sl/Makefile'); AddTemplateFiles('ksgmltools/customization/sl/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/sr/Makefile'); AddTemplateFiles('ksgmltools/customization/sr/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/stylesheets/Makefile'); AddTemplateFiles('ksgmltools/customization/sv/Makefile'); AddTemplateFiles('ksgmltools/customization/sv/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/zh-CN/Makefile'); AddTemplateFiles('ksgmltools/customization/zh-CN/entities/Makefile'); AddTemplateFiles('ksgmltools/customization/zh-TW/Makefile'); AddTemplateFiles('ksgmltools/customization/zh-TW/entities/Makefile'); AddTemplateFiles('ksgmltools/lang-conv/Makefile'); AddTemplateFiles('ksgmltools/lang-conv/fixed/Makefile'); AddTemplateFiles('ksgmltools/lang-conv/modular/Makefile'); AddTemplateFiles('ksgmltools/plain/Makefile'); AddTemplateFiles('ksgmltools/kdb2html'); AddTemplateFiles('kspell/Makefile'); AddTemplateFiles('kssl/Makefile'); AddTemplateFiles('kssl/kssl/Makefile'); AddTemplateFiles('kssl/kssl/caroot/Makefile'); AddTemplateFiles('kssl/kssl/caroot/expired/Makefile'); AddTemplateFiles('kstyles/Makefile'); AddTemplateFiles('kstyles/b3plugin/Makefile'); AddTemplateFiles('kstyles/basicplugin/Makefile'); AddTemplateFiles('kstyles/highcolor/Makefile'); AddTemplateFiles('kstyles/klegacy/Makefile'); AddTemplateFiles('kstyles/ksgistyle/Makefile'); AddTemplateFiles('kstyles/kstep-highcolor/Makefile'); AddTemplateFiles('kstyles/pics/Makefile'); AddTemplateFiles('kstyles/pillbox/Makefile'); AddTemplateFiles('kstyles/pillbox-highcolor/Makefile'); AddTemplateFiles('kstyles/stepplugin/Makefile'); AddTemplateFiles('kstyles/themes/Makefile'); AddTemplateFiles('kstyles/utils/Makefile'); AddTemplateFiles('kstyles/utils/settheme/Makefile'); AddTemplateFiles('libkmid/Makefile'); AddTemplateFiles('libkmid/tests/Makefile'); AddTemplateFiles('licenses/Makefile'); AddTemplateFiles('mimetypes/Makefile'); AddTemplateFiles('mimetypes/application/Makefile'); AddTemplateFiles('mimetypes/audio/Makefile'); AddTemplateFiles('mimetypes/image/Makefile'); AddTemplateFiles('mimetypes/inode/Makefile'); AddTemplateFiles('mimetypes/message/Makefile'); AddTemplateFiles('mimetypes/text/Makefile'); AddTemplateFiles('mimetypes/video/Makefile'); AddTemplateFiles('pics/Makefile'); AddTemplateFiles('pics/hicolor/Makefile'); AddTemplateFiles('pics/hicolor/kde/Makefile'); AddTemplateFiles('pics/locolor/Makefile'); AddTemplateFiles('pics/locolor/kde/Makefile'); # Similar thing here AddTemplateHeaders('config.h'); RunLocals(); # These ones are for tests that haven't been written yet. Oops. PC_SUBST('BZIP2DIR');