summaryrefslogtreecommitdiff
path: root/setedit/config.pl
diff options
context:
space:
mode:
Diffstat (limited to 'setedit/config.pl')
-rw-r--r--setedit/config.pl2009
1 files changed, 2009 insertions, 0 deletions
diff --git a/setedit/config.pl b/setedit/config.pl
new file mode 100644
index 0000000..fb03bd0
--- /dev/null
+++ b/setedit/config.pl
@@ -0,0 +1,2009 @@
+#!/usr/bin/perl
+# Copyright (C) 1999-2005 by Salvador E. Tropea (SET),
+# see copyrigh file for details
+#
+
+require "miscperl.pl";
+require "conflib.pl";
+
+$conf{'infview'}='yes';
+#$conf{'HAVE_BZIP2'}='yes';
+$conf{'parser'}='parserbr.c';
+$conf{'mp3lib'}='mpegsnd';
+$conf{'mp3'}='yes';
+$conf{'HAVE_MIXER'}='yes';
+$conf{'HAVE_CALCULATOR'}='yes';
+$conf{'HAVE_CALENDAR'}='yes';
+$conf{'intlShipped'}='no';
+$conf{'ToolsInstaller'}='no';
+$conf{'ToolsDistrib'}='no';
+$conf{'compressExe'}='undef';
+$TVCommandLine=0;
+
+# If the script is newer discard the cache.
+#GetCache() unless (-M 'config.pl' < -M 'configure.cache');
+GetVersion('');
+
+$TVVersionNeeded='2.0.4';
+$ZLibVersionNeeded='1.1.2';
+$BZ2LibVersionNeeded='0.9.5d';
+$DJGPPVersionNeeded='2.0.2';
+$LibMIVersionNeeded='0.8.6';
+# Allegro 3.1==3.0.1 3.11==3.0.11 3.12==3.0.12
+$AllegroVersionNeeded='3.0.1';
+# 5.0 will change the API, or maybe 6.0 but an API change is discussed
+$AllegroNotNeeded='5.0.0';
+# I never tested with an older version, you can try reducing it.
+$GPMVersionNeeded='1.10';
+# Workarounded 4.4+ missfeatures, so now I put here a fantasy value
+$BrokenMakeinfo='99.99';
+unlink $ErrorLog;
+
+SeeCommandLine();
+
+if ($JustSpec)
+ {
+ UpdateSpec();
+ exit 0;
+ }
+
+print "Configuring SETEdit v$Version\n\n";
+# Determine the OS
+$OS=DetectOS();
+
+if (($OS ne 'DOS') && (@conf{'mp3'} eq 'yes') && (@conf{'mp3lib'} ne 'mpegsnd'))
+ {
+ die "Only libmpegsnd is available for UNIX\n"
+ }
+# MP3 code works only for DOS, Linux and Solaris
+if (($OS ne 'DOS') && ($OSf ne 'Linux') && ($OSf ne 'Solaris'))
+ {
+ $conf{'mp3'}='no';
+ $conf{'HAVE_MIXER'}='no';
+ $conf{'mp3lib'}='';
+ }
+if (($OS ne 'UNIX') && ($conf{'HAVE_AA'} eq 'yes'))
+ {
+ print "Currently AA-lib is usable only for UNIX version, please tell me if you think it should be changed.\n";
+ $conf{'HAVE_AA'}='no';
+ }
+
+LookForBasicTools();
+$supportDir='makes/'.$supportDir;
+
+# TV goes first to find the configuration program.
+# But we can't check TV functionality yet.
+# Where is the TV library?
+# $TVInclude and $TVLib
+LookForTV();
+LookForTVConfig();
+
+# Determine C flags
+$CFLAGS=FindCFLAGS();
+FindXCFLAGS();
+# Determine C++ flags
+$CXXFLAGS=FindCXXFLAGS();
+FindXCXXFLAGS();
+# Extra lib directories
+$LDExtraDirs=FindLDExtraDirs();
+# Test for a working gcc
+$GCC=CheckGCC();
+# Which architecture are we using?
+DetectCPU();
+# Some platforms aren't easy to detect until we can compile.
+DetectOS2();
+# The prefix can be better determined if we know all the rest
+# about the environment
+LookForPrefix();
+# Only gnu make have the command line and commands we use.
+LookForGNUMake();
+# Same for ar, it could be `gar'
+$GAR=LookForGNUar();
+# Similar for install tool.
+LookForGNUinstall();
+# Check if gcc can compile C++
+$GXX=CheckGXX();
+
+# Is the right djgpp?
+if ($OS eq 'DOS')
+ {
+ LookForDJGPP($DJGPPVersionNeeded);
+ LookForAllegro($AllegroVersionNeeded,$AllegroNotNeeded);
+ }
+
+# Is TV the right version?
+TestTVVersion($TVVersionNeeded);
+# Find the major version
+if ($conf{'tv'}=~/(\d+)\.(\d+)\.(\d+)/)
+ {
+ $tvMajor=$1;
+ $tvMiddle=$2;
+ $tvMinor=$3;
+ }
+
+# Have libc international support? what about libintl or libiconv?
+LookForIntlSupport();
+# Is PCRE available?
+LookForPCRE();
+# Is ZLib available?
+LookForZLib($ZLibVersionNeeded);
+# Is BZip2 library available?
+LookForBZ2Lib($BZ2LibVersionNeeded);
+# Look for xgettext
+LookForGettextTools();
+LookForMakeinfo();
+# Is a usable gpm there?
+#LookForGPM($GPMVersionNeeded) if ($OS eq 'UNIX');
+# Should we try X?
+#LookForXlib() if (($OS eq 'UNIX') && ($tvMajor>=2));
+# Needed by X libraries in some systems
+LookForDL() if ($OS eq 'UNIX');
+# An option to display screen savers ;-)
+LookForAA() if ($OS eq 'UNIX');
+# GDB/MI interface
+LookForMI($LibMIVersionNeeded) if (($OS eq 'UNIX') || ($Compf eq 'Cygwin'));
+# Check if we can offer the distrib targets.
+LookForToolsDistrib();
+# The installer needs tons of things, put it in makefile only if the user
+# have some chance to succeed.
+LookForToolsInstaller() if ($OS eq 'DOS');
+LookForMaintainerTools() if $conf{'MAINTAINER_MODE'} eq 'yes';
+
+print "\n";
+#
+# Create a list of RHIDE variables to configure the projects
+#
+$TVLib='../'.$TVLib if (substr($TVLib,0,2) eq '..');
+$TVInclude='../'.$TVInclude if (substr($TVInclude,0,2) eq '..');
+if ($OS eq 'DOS')
+ {
+ $MakeDefsRHIDE[0]='RHIDE_STDINC=$(DJDIR)/include $(DJDIR)/lang/cxx $(DJDIR)/lib/gcc-lib';
+ # DJGPP's gcc includes djgpp.ver from the same directory where specs
+ $a=`redir -eo $GCC -v`;
+ if ($a=~/(\w:)(.*)\/specs/i)
+ {
+ $here=RunRedirect('pwd',$ErrorLog);
+ $here=~s/[\r\n]//g;
+ chdir("$1$2");
+ $a=RunRedirect('pwd',$ErrorLog);
+ $a=~s/[\r\n]//g;
+ chdir($here);
+ $MakeDefsRHIDE[0].=" $a"
+ }
+ $MakeDefsRHIDE[1]='RHIDE_OS_LIBS=-lrhtv ';
+ $MakeDefsRHIDE[1].='-l'.substr($stdcxx,2).' ';
+ $MakeDefsRHIDE[1].='-lintl ' unless (@conf{'intl'} eq 'no');
+ $MakeDefsRHIDE[1].='-liconv ' if (@conf{'iconv'} eq 'yes');
+ if ((@conf{'mp3'} eq 'yes') && (@conf{'HAVE_ALLEGRO'} eq 'yes'))
+ {
+ $MakeDefsRHIDE[1].='-l'.@conf{'mp3lib'}.' -lalleg ';
+ }
+ $MakeDefsRHIDE[1].='-lbz2 ' if (@conf{'HAVE_BZIP2'} eq 'yes');
+ }
+elsif ($OS eq 'UNIX')
+ {
+ $MakeDefsRHIDE[0]='RHIDE_STDINC=/usr/include /usr/local/include /usr/include/g++ /usr/local/include/g++ /usr/lib/gcc-lib /usr/local/lib/gcc-lib';
+ if (@conf{'static'} eq 'yes')
+ { $libs=TVConfigOption('slibs'); }
+ else
+ { $libs=TVConfigOption('dlibs'); }
+ $libs=~s/[\r\n]//g;
+ $MakeDefsRHIDE[1]='RHIDE_OS_LIBS='.$libs.' ';
+ #
+ # The following are TV dependencies
+ #
+ ## RHIDE doesn't know about anything different than DJGPP and Linux so -lstdc++ must
+ ## be added for things like FreeBSD or SunOS.
+ #$MakeDefsRHIDE[1].=substr($stdcxx,2).' '; # unless ($OSf eq 'Linux');
+ #$MakeDefsRHIDE[1].='ncurses m ';
+ ## No for UNIX!! $MakeDefsRHIDE[1].='intl ' unless (@conf{'intl'} eq 'no');
+ #$MakeDefsRHIDE[1].='gpm ' if @conf{'HAVE_GPM'} eq 'yes';
+ #$MakeDefsRHIDE[1].=$conf{'X11Lib'}.' ' if ($conf{'HAVE_X11'} eq 'yes');
+ if ($conf{'dl'} eq 'yes')
+ {
+ $MakeDefsRHIDE[1].=($OSf eq 'QNXRtP') ? '' : '-ldl ';
+ }
+ $MakeDefsRHIDE[1].='-lbz2 ' if @conf{'HAVE_BZIP2'} eq 'yes';
+ $MakeDefsRHIDE[1].='-l'.@conf{'mp3lib'}.' ' if (@conf{'mp3'} eq 'yes');
+ $MakeDefsRHIDE[1].='-lintl ' if ((($OSf eq 'FreeBSD') || ($OSf eq 'QNXRtP')) && ($conf{'intl'} eq 'yes'));
+ $MakeDefsRHIDE[1].='-laa ' if ($conf{'HAVE_AA'} eq 'yes');
+ }
+else # Win32
+ {
+ $MakeDefsRHIDE[0]='RHIDE_STDINC=';
+ $libs=TVConfigOption('slibs');
+ $libs=~s/[\r\n]//g;
+ $MakeDefsRHIDE[1]='RHIDE_OS_LIBS= '.$libs.' ';
+ #$MakeDefsRHIDE[1]='RHIDE_OS_LIBS=rhtv stdc++ gdi32 ';
+ #$MakeDefsRHIDE[1].='intl ' unless (@conf{'intl'} eq 'no');
+ $MakeDefsRHIDE[1].='-lbz2 ' if (@conf{'HAVE_BZIP2'} eq 'yes');
+ $MakeDefsRHIDE[1].='-l'.@conf{'mp3lib'}.' ' if (@conf{'mp3'} eq 'yes');
+ }
+$MakeDefsRHIDE[1].='-lz ';
+$MakeDefsRHIDE[1].='-lpcre ' if @conf{'HAVE_PCRE_LIB'} eq 'yes';
+$MakeDefsRHIDE[1].='-lmigdb ' if @conf{'HAVE_GDB_MI'} eq 'yes';
+$MakeDefsRHIDE[1].='-lmss ' if @conf{'mss'} eq 'yes';
+$MakeDefsRHIDE[1].='-lefence ' if @conf{'efence'} eq 'yes';
+$MakeDefsRHIDE[1].='-ltvfintl ' if @conf{'tvfintl'} eq 'yes';
+
+$MakeDefsRHIDE[2]="RHIDE_OS_LIBS_PATH=";
+# Before the system one
+$MakeDefsRHIDE[2].=' -L../gettext ' if (@conf{'intlShipped'} eq 'yes');
+# QNX Workaround
+$MakeDefsRHIDE[2].='-L/lib ' if ($OSf eq 'QNXRtP');
+# Libraries for TV
+$libs=TVConfigOption('dir-libs');
+$libs=~s/[\r\n]//g;
+$MakeDefsRHIDE[2].=$libs;
+# Extra libraries path
+$libs=$LDExtraDirs;
+$libs=~s/(\S+)/-L$1/g;
+$MakeDefsRHIDE[2].=' '.$libs;
+# Shipped replacements
+$MakeDefsRHIDE[2].=' -L../libz' if (@conf{'zlibShipped'} eq 'yes');
+$MakeDefsRHIDE[2].=' -L../libbzip2' if (@conf{'bz2libShipped'} eq 'yes');
+$MakeDefsRHIDE[2].=' -L../libpcre' if (@conf{'PCREShipped'} eq 'yes');
+$MakeDefsRHIDE[2].=' -L../libmigdb/src' if (@conf{'migdbShipped'} eq 'yes');
+# Subprojects generates libraries in the makes directory
+$MakeDefsRHIDE[2].=' -L.';
+
+$MakeDefsRHIDE[3]="TVISION_INC=$TVInclude";
+
+$test='';
+$test.=' ../libz' if (@conf{'zlibShipped'} eq 'yes');
+$test.=' ../libbzip2' if (@conf{'bz2libShipped'} eq 'yes');
+$test.=' ../libpcre' if (@conf{'PCREShipped'} eq 'yes');
+$test.=' ../gettext' if (@conf{'intlShipped'} eq 'yes');
+$test.=' '.$conf{'X11IncludePath'} if (@conf{'HAVE_X11'} eq 'yes');
+$test.=' ../libmigdb/src' if (@conf{'migdbShipped'} eq 'yes');
+$test.=$conf{'EXTRA_INCLUDE_DIRS'};
+$MakeDefsRHIDE[4]='SUPPORT_INC='.$test;
+
+# The support libraries shouldn't generate dependencies
+$MakeDefsRHIDE[0].=$test;
+# Nor compatlayer headers
+$MakeDefsRHIDE[0].=' $(TVISION_INC)/cl';
+if (@conf{'static'} eq 'yes')
+ {
+ $MakeDefsRHIDE[5]='RHIDE_COMPILE_LINK=$(RHIDE_LD) $(RHIDE_LIBDIRS) $(LDFLAGS) -static $(RHIDE_LDFLAGS) $(C_EXTRA_FLAGS) -o $(OUTFILE) $(OBJFILES) $(LIBRARIES) $(RHIDE_LIBS)';
+ }
+else
+ {
+ $MakeDefsRHIDE[5]='RHIDE_COMPILE_LINK=$(RHIDE_LD) $(RHIDE_LIBDIRS) $(LDFLAGS) $(RHIDE_LDFLAGS) $(C_EXTRA_FLAGS) -o $(OUTFILE) $(OBJFILES) $(LIBRARIES) $(RHIDE_LIBS)';
+ }
+#$MakeDefsRHIDE[5].=' -lrhtv '.@conf{'prefix'}.'/lib/libmss.a' if (@conf{'mss'} eq 'yes');
+#if (@conf{'mss'} eq 'yes')
+# {
+# $test=@conf{'prefix'}.'/lib/libmss.a $(LIBRARIES)';
+# $MakeDefsRHIDE[5]=~s/\$\(LIBRARIES\)/$test/;
+# }
+# Take out the CFLAGS and CPPFLAGS variables
+$MakeDefsRHIDE[6]='RHIDE_COMPILE_C=$(RHIDE_GCC) $(RHIDE_INCLUDES) $(C_DEBUG_FLAGS) $(C_OPT_FLAGS) $(C_WARN_FLAGS) $(C_C_LANG_FLAGS) $(C_EXTRA_FLAGS) $(LOCAL_OPT) $(RHIDE_OS_CFLAGS) -c $(SOURCE_NAME) -o $(OUTFILE)';
+$MakeDefsRHIDE[7]='RHIDE_COMPILE_CC=$(RHIDE_GXX) $(RHIDE_INCLUDES) $(C_DEBUG_FLAGS) $(C_OPT_FLAGS) $(C_WARN_FLAGS) $(C_C_LANG_FLAGS) $(C_CXX_LANG_FLAGS) $(C_EXTRA_FLAGS) $(RHIDE_OS_CXXFLAGS) $(LOCAL_OPT) -c $(SOURCE_NAME) -o $(OUTFILE)';
+$MakeDefsRHIDE[8]='STDCPP_LIB='.$stdcxx;
+$MakeDefsRHIDE[9]='RHIDE_LIBS=$(LIBS) $(RHIDE_OS_LIBS)';
+$MakeDefsRHIDE[10]='RHIDE_LIBDIRS=$(LIB_DIRS)';
+if ($Compf eq 'MinGW')
+ {
+ $MakeDefsRHIDE[11]='SPECIAL_LDFLAGS=-mconsole';
+ }
+CreateRHIDEenvs('makes/rhide.env','+mp3/libamp/rhide.env',
+ '+mp3/mpegsound/rhide.env');
+#
+# Translate some options into variables suitable for defines and also
+# compute some interdependencies.
+#
+if ($OS eq 'DOS')
+ {
+ $conf{'WITH_MP3'}=((@conf{'mp3'} eq 'yes') &&
+ (@conf{'HAVE_ALLEGRO'} eq 'yes')) ? 'yes' : 'no';
+ }
+else
+ {
+ $conf{'WITH_MP3'}=((@conf{'mp3'} eq 'yes') &&
+ (@conf{'mp3lib'} eq 'mpegsnd')) ? 'yes' : 'no';
+ }
+$conf{'HAVE_AMP'}=((@conf{'WITH_MP3'} eq 'yes') && (@conf{'mp3lib'} eq 'amp'))
+ ? 'yes' : 'no';
+$conf{'HAVE_MPEGSOUND'}=((@conf{'WITH_MP3'} eq 'yes') && (@conf{'mp3lib'} eq 'mpegsnd'))
+ ? 'yes' : 'no';
+CreateConfigH();
+GenerateMakefile();
+UpdateSpec();
+$ReplaceTags{'TVInclude'}=$TVInclude;
+$ReplaceTags{'datadir'}=$conf{'prefix'}.'/share';
+$ReplaceTags{'libdir'}=$conf{'prefix'}.'/lib';
+$ReplaceTags{'CC'}=$GCC;
+$ReplaceTags{'CXX'}=$GXX;
+$ReplaceTags{'AR'}=$conf{'GNU_AR'};
+$ReplaceTags{'CFLAGS'}=$conf{'CFLAGS'};
+$ReplaceTags{'XCFLAGS'}=$conf{'XCFLAGS'};
+$ReplaceTags{'CXXFLAGS'}=$conf{'CXXFLAGS'};
+$ReplaceTags{'dyndir'}=$conf{'prefix'}.'/lib/setedit';
+$ReplaceTags{'PREFIX'}=$conf{'prefix'};
+$ReplaceTags{'MakeInfoNumbers'}=CompareVersion(@conf{'makeinfo'},'4.7') ? '-N' : '';
+# Makefiles
+ReplaceText('gettext/Makefile.in','gettext/Makefile');
+ReplaceText('holidays/Makefile.in','holidays/Makefile');
+ReplaceText('doc/gnumake.in','doc/Makefile');
+ReplaceText('internac/gnumake.in','internac/Makefile');
+ReplaceText('libbzip2/gnumake.in','libbzip2/Makefile');
+ReplaceText('libpcre/gnumake.in','libpcre/Makefile');
+ReplaceText('libz/gnumake.in','libz/Makefile');
+`cp gettext/djgpp.h gettext/config.h`; # Currently only DOS config is available if $OS eq 'DOS';
+
+#
+# Generate BC++ and MSVC makefiles
+#
+`perl confignt.pl` if @conf{'MAINTAINER_MODE'} eq 'yes';
+
+#
+# Select the desired parser for the calculator
+#
+system('cp -p calcu/'.@conf{'parser'}.' calcu/parser.c');
+
+print "\nSuccessful configuration!\n\n";
+
+GiveAdvice();
+# Avoid caching it
+$conf{'force-intlShipped'}='no';
+CreateCache();
+unlink $ErrorLog;
+
+sub UpdateSpec
+{
+ $ReplaceTags{'version'}=$Version;
+ ReplaceText('redhat/setedit.spec.in','redhat/setedit-'.$Version.'.spec');
+}
+
+sub SeeCommandLine
+{
+ my $i;
+
+ $conf{'HAVE_AA_from_user'}='no';
+ foreach $i (@ARGV)
+ {
+ if ($i eq '--help')
+ {
+ ShowHelp();
+ die "\n";
+ }
+ elsif ($i=~'--prefix=(.*)')
+ {
+ $conf{'prefix'}=$1;
+ }
+ elsif ($i eq '--no-prefix-h')
+ {
+ $conf{'no-prefix-h'}=1;
+ }
+ elsif ($i eq '--no-intl')
+ {
+ $conf{'no-intl'}='yes';
+ $conf{'xgettext'}='no';
+ }
+ elsif ($i eq '--static')
+ {
+ $conf{'static'}='yes';
+ }
+ elsif ($i eq '--dynamic')
+ {
+ $conf{'static'}='no';
+ }
+ elsif ($i eq '--fhs')
+ {
+ $conf{'fhs'}='yes';
+ }
+ elsif ($i eq '--no-fhs')
+ {
+ $conf{'fhs'}='no';
+ }
+ elsif ($i eq '--libset')
+ {
+ $conf{'libset'}='yes';
+ }
+ elsif ($i eq '--no-libset')
+ {
+ $conf{'libset'}='no';
+ }
+ elsif ($i eq '--infview')
+ {
+ $conf{'infview'}='yes';
+ }
+ elsif ($i eq '--no-infview')
+ {
+ $conf{'infview'}='no';
+ }
+ elsif ($i eq '--no-bzip2')
+ {
+ $conf{'HAVE_BZIP2'}='no';
+ $conf{'bz2libShipped'}='no';
+ $conf{'bz2lib'}='no';
+ }
+ elsif ($i eq '--bzip2')
+ {
+ $conf{'HAVE_BZIP2'}='yes';
+ }
+ elsif ($i eq '--parser-adv')
+ {
+ $conf{'parser'}='parserbr.c';
+ }
+ elsif ($i eq '--parser-brs')
+ {
+ $conf{'parser'}='small.c';
+ }
+ elsif ($i eq '--parser-ml')
+ {
+ $conf{'parser'}='parserml.c';
+ }
+ elsif ($i eq '--with-amp')
+ {
+ $conf{'mp3lib'}='amp';
+ $conf{'mp3'}='yes';
+ }
+ elsif ($i eq '--with-mpegsnd')
+ {
+ $conf{'mp3lib'}='mpegsnd';
+ $conf{'mp3'}='yes';
+ }
+ elsif ($i eq '--without-mp3')
+ {
+ $conf{'mp3'}='no';
+ }
+ elsif ($i=~'--Xcflags=(.*)')
+ {
+ $conf{'XCFLAGS'}=$1;
+ }
+ elsif ($i=~'--Xcppflags=(.*)')
+ {
+ $conf{'XCXXFLAGS'}=$1;
+ }
+ elsif ($i=~'--cflags=(.*)')
+ {
+ $conf{'CFLAGS'}=$1;
+ }
+ elsif ($i=~'--cxxflags=(.*)' ||
+ $i=~'--cppflags=(.*)')
+ {
+ $conf{'CXXFLAGS'}=$1;
+ }
+ elsif ($i eq '--debug')
+ {
+ $conf{'XCFLAGS'}=
+ $conf{'XCXXFLAGS'}='-O3 -fomit-frame-pointer -ffast-math -gstabs+3';
+ $conf{'CFLAGS'}=
+ $conf{'CXXFLAGS'}='-O2 -Wall -Werror -gstabs+3';
+ }
+ elsif ($i eq '--with-mixer')
+ {
+ $conf{'HAVE_MIXER'}='yes';
+ }
+ elsif ($i eq '--without-mixer')
+ {
+ $conf{'HAVE_MIXER'}='no';
+ }
+ elsif ($i eq '--shipped-intl')
+ {
+ $conf{'force-intlShipped'}='yes';
+ }
+ elsif ($i=~'--tv-include=(.*)')
+ {
+ $conf{'TV_INCLUDE'}=$1;
+ $TVCommandLine=1;
+ }
+ elsif ($i=~'--tv-lib=(.*)')
+ {
+ $conf{'TV_LIB'}=$1;
+ $TVCommandLine=1;
+ }
+ elsif ($i eq '--comp-exe')
+ {
+ $conf{'compressExe'}='yes';
+ }
+ elsif ($i eq '--no-comp-exe')
+ {
+ $conf{'compressExe'}='no';
+ }
+ elsif ($i eq '--with-mss')
+ {
+ $conf{'mss'}='yes';
+ }
+ elsif ($i eq '--without-mss')
+ {
+ $conf{'mss'}='no';
+ }
+ elsif ($i eq '--with-efence')
+ {
+ $conf{'efence'}='yes';
+ }
+ elsif ($i eq '--without-efence')
+ {
+ $conf{'efence'}='no';
+ }
+ elsif ($i=~'--x-include=(.*)')
+ {
+ $conf{'X11IncludePath'}=$1;
+ }
+ elsif ($i=~'--x-lib=(.*)')
+ {
+ $conf{'X11LibPath'}=$1;
+ }
+ elsif ($i eq '--with-aa')
+ {
+ $conf{'HAVE_AA'}='yes';
+ }
+ elsif ($i eq '--without-aa')
+ {
+ $conf{'HAVE_AA'}='no';
+ $conf{'HAVE_AA_from_user'}='yes';
+ }
+ elsif ($i eq '--enable-maintainer-mode')
+ {
+ $conf{'MAINTAINER_MODE'}='yes';
+ }
+ elsif ($i eq '--source-bzip2')
+ {
+ $conf{'source-bzip2'}='yes';
+ }
+ elsif ($i eq '--just-spec')
+ {
+ $JustSpec=1;
+ }
+ elsif ($i eq '--with-calc')
+ {
+ $conf{'HAVE_CALCULATOR'}='yes';
+ }
+ elsif ($i eq '--without-calc')
+ {
+ $conf{'HAVE_CALCULATOR'}='no';
+ }
+ elsif ($i eq '--with-calend')
+ {
+ $conf{'HAVE_CALENDAR'}='yes';
+ }
+ elsif ($i eq '--without-calend')
+ {
+ $conf{'HAVE_CALENDAR'}='no';
+ }
+ elsif ($i eq '--without-migdb')
+ {
+ $conf{'HAVE_GDB_MI'}='no_cline';
+ }
+ elsif ($i eq '--with-migdb')
+ {
+ #$conf{'HAVE_GDB_MI'}='';
+ }
+ elsif ($i=~'--include=(.*)')
+ {
+ $conf{'EXTRA_INCLUDE_DIRS'}.=" $1";
+ }
+ else
+ {
+ ShowHelp();
+ die "Unknown option: $i\n";
+ }
+ }
+}
+
+sub ShowHelp
+{
+ print "Available options:\n";
+ # Targets
+ print "\nOptional targets:\n";
+ print "--infview : also compile InfView [default].\n";
+ print "--no-infview : don't compile InfView, just the editor.\n";
+ print "--libset : create libset, needed to compile RHIDE.\n";
+ print "--no-libset : don't create libset [default].\n";
+ # Paths
+ print "\nPaths:\n";
+ print "--prefix=path : defines the base directory for installation.\n";
+ print "--no-prefix-h : don't define the prefix in the configuration header\n";
+ print "--fhs : force the FHS layout under UNIX.\n";
+ print "--no-fhs : force to not use the FHS layout under UNIX.\n";
+ print "--tv-include=pat: path for Turbo Vision includes\n";
+ print " Note: if you use --tv-include you should also use --tv-lib\n";
+ print "--tv-lib=path : path for Turbo Vision libraries\n";
+ print "--include=path : Add this path for includes. Repeat for each dir.\n";
+ # Libs
+ print "\nLibraries and optional support:\n";
+ print "--no-intl : don't use international support.\n";
+ print "--shipped-intl : force to use the shipped gettext library [DOS only]\n";
+ print "--bzip2 : include support for bzip2.\n";
+ print "--no-bzip2 : don't include support for bzip2 files.\n";
+ print "--with-aa : support for AA-lib [used for UNIX].\n";
+ print "--without-aa : without AA-lib support.\n";
+ print "--parser-adv : use the advanced parser for calc. [default]\n";
+ print "--parser-brs : use the small Burton's parser for calculator\n";
+ print "--parser-ml : use the small ML's parser for calculator\n";
+ print "--without-mp3 : disable MP3 support\n";
+ print "--with-amp : use libamp for MP3 support [DOS only]\n";
+ print "--with-mpegsnd : use libmpegsnd for MP3 support [default]\n";
+ print "--with-mixer : include code to control the mixer [default]\n";
+ print "--without-mixer : don't include code to control the mixer\n";
+ print "--with-mss : compiles with MSS memory debugger.\n";
+ print "--without-mss : compiles without MSS [default].\n";
+ print "--with-efence : compiles with Electric Fence memory debugger.\n";
+ print "--without-efence: compiles without Electric Fence [default].\n";
+ print "--with-calc : compiles the internal calculator [default].\n";
+ print "--without-calc : no internal calculator.\n";
+ print "--with-calend : compiles the internal calendar [default].\n";
+ print "--without-calend: no internal calendar.\n";
+ print "--with-migdb : include debug support [default].\n";
+ print "--without-migdb : no debug support.\n";
+ # Compilation
+ print "\nCompilation options:\n";
+ print "--enable-maintainer-mode:\n";
+ print " : enables header dependencies and other stuff needed\n";
+ print " for developement, not just use the editor.\n";
+ print "--static : force to create an statically linked executable.\n";
+ print " Currently it only affect TV lib.\n";
+ print "--dynamic : generated a dynamically linked executable [default].\n";
+ print "--cflags=val : normal C flags [default is env. CFLAGS]\n";
+ print "--cppflags=val : normal C++ flags [default is env. CXXFLAGS]\n";
+ print "--Xcflags=val : special C flags used for MP3 libraries\n";
+ print "--Xcppflags=val : special C++ flags used for MP3 libraries\n";
+ print "--debug : selects C/C++ switches for debugging\n";
+ print "--comp-exe : compress all executables with UPX\n";
+ print "--no-comp-exe : don't compress any executables with UPX\n";
+ # Others
+ print "\nOthers:\n";
+ print "--source-bzip2 : use bzip2 for tarballs\n";
+ print "--just-spec : update RPMs spec file and exit.\n";
+
+ print "\n";
+ print "--help : displays this text.\n";
+
+ #print "--x-include=path: X11 include path [/usr/X11R6/lib].\n";
+ #print "--x-lib=path : X11 library path [/usr/X11R6/include].\n";
+}
+
+sub GiveAdvice
+{
+ if (@conf{'HAVE_PCRE_LIB'} eq 'no')
+ {
+ print "\n";
+ print "* The Perl Compatible Regular Expressions support was disabled install PCRE\n";
+ print " library v2.0 or newer and reconfigure to get support.\n";
+ }
+ if (($OS eq 'DOS') && (@conf{'HAVE_ALLEGRO'} eq 'no') &&
+ (@conf{'mp3'} eq 'yes'))
+ {
+ print "* The MPEG-3 files support was disabled, install Allegro library v$AllegroVersionNeeded\n";
+ print " or newer (not a WIP!) and reconfigure to get support.\n";
+ }
+ if (@conf{'xgettext'} eq 'no')
+ {
+ print "* The 'xgettext' tools aren't installed internat. files can't be created.\n";
+ }
+ if (@conf{'makeinfo'} eq 'no')
+ {
+ print "* The 'makeinfo' tool isn't installed documentation can't be created.\n";
+ }
+ if (@conf{'makeinfo'} eq 'broken')
+ {
+ print "* The 'makeinfo' tool is an unsupported version (broken?).\n";
+ print " Do you want to help solving it? contact me.\n";
+ }
+ if (@conf{'GNU_Make'} ne 'make')
+ {
+ print "* Please use $conf{'GNU_Make'} instead of make command.\n";
+ }
+ if (($OS eq 'DOS') && (@conf{'ToolsInstaller'} eq 'no'))
+ {
+ print "* Some tools to create the installer aren't installed or are installed in a\n";
+ print " directory that I couldn't find. The installer target was disabled.\n";
+ }
+ if (@conf{'ToolsDistrib'} eq 'no')
+ {
+ print "* Some tools to create the distribution aren't installed. The distrib target\n";
+ print " was disabled.\n";
+ }
+ if ((@conf{'PCREShipped'} eq 'yes') && ($OS eq 'UNIX'))
+ {
+ print "* Using shipped PCRE lib, to avoid wasting system resources you should install\n";
+ print " the library and also the development package (i.e. libpcre3 and libpcre3-dev)\n";
+ }
+ if ((@conf{'zlibShipped'} eq 'yes') && ($OS eq 'UNIX'))
+ {
+ print "* Using shipped zlib, to avoid wasting system resources you should install\n";
+ print " the library and also the development package (i.e. libz-dev)\n";
+ }
+ if ((@conf{'bz2libShipped'} eq 'yes') && ($OS eq 'UNIX'))
+ {
+ print "* Using shipped bzip2 lib, to avoid wasting system resources you should install\n";
+ print " the library and also the development package (i.e. libbz2 and libbz2-dev)\n";
+ }
+ if ((@conf{'HAVE_AA'} eq 'no') && ($OS eq 'UNIX'))
+ {
+ print "* AA lib is not installed (or isn't functional) so you won't get a nice console\n";
+ print " screen saver (package example: aalib1-dev)\n";
+ }
+ if ((@conf{'HAVE_GDB_MI'} eq 'no') && ($OS eq 'UNIX'))
+ {
+ print "* NO DEBUG SUPPORT! The migdb library isn't available, debug features disabled.\n";
+ print " You can download it from: http://sourceforge.net/projects/libmigdb\n";
+ }
+}
+
+sub LookForGettextTools
+{
+ my $test;
+
+ print 'Looking for xgettext: ';
+ if (@conf{'xgettext'})
+ {
+ print @conf{'xgettext'}." (cached)\n";
+ return;
+ }
+ $test=RunRedirect('xgettext --version',$ErrorLog);
+ if ($test=~/(\d+\.\d+(\.\d+)?)/)
+ {
+ print "$1\n";
+ $conf{'xgettext'}=$1;
+ }
+ else
+ {
+ print "no\n";
+ $conf{'xgettext'}='no';
+ }
+}
+
+sub LookForMakeinfo
+{
+ my ($test,$ver);
+
+ print 'Looking for makeinfo: ';
+ if (@conf{'makeinfo'} && (@conf{'makeinfo'} ne 'no') && (@conf{'makeinfo'} ne 'broken'))
+ {
+ print @conf{'makeinfo'}." (cached)\n";
+ return;
+ }
+ $test=RunRedirect('makeinfo --version',$ErrorLog);
+ if ($test=~/(\d+\.\d+(\.\d+)?)(.*)(\d+\.\d+(\.\d+)?)/)
+ {
+ $ver=$4;
+ }
+ elsif ($test=~/(\d+\.\d+(\.\d+)?)/)
+ {
+ $ver=$1;
+ }
+ else
+ {
+ print "no\n";
+ $conf{'makeinfo'}='no';
+ return;
+ }
+ print "$ver";
+ if (CompareVersion($ver,$BrokenMakeinfo))
+ {
+ $conf{'makeinfo'}='broken';
+ print " Broken!\n";
+ }
+ else
+ {
+ $conf{'makeinfo'}=$ver;
+ print " OK\n";
+ }
+}
+
+sub LookForTV
+{
+ my @dirsI,@dirsL,$parent;
+
+ print 'Looking for installed Turbo Vision: ';
+ if (@conf{'TV_INCLUDE'} && @conf{'TV_LIB'} && !$TVCommandLine)
+ {
+ $TVInclude=@conf{'TV_INCLUDE'};
+ $TVLib=@conf{'TV_LIB'};
+ print "\n\tInclude dir: $TVInclude (cached)\n";
+ print "\tLibrary dir: $TVLib (cached)\n";
+ return;
+ }
+ #$parent=ParentDir();
+ $parent='..';
+ if ($OS eq 'DOS')
+ {
+ @dirsI=("$parent/tvision/include",$ENV{'DJDIR'}.'/include/tvision');
+ @dirsL=("$parent/tvision/makes",$ENV{'DJDIR'}.'/lib');
+ }
+ elsif ($OS eq 'UNIX')
+ {
+ @dirsI=("$parent/tvision/include",'/usr/include/rhtvision','/usr/local/include/rhtvision');
+ @dirsL=("$parent/tvision/makes",'/usr/lib','/usr/local/lib');
+ }
+ elsif ($OS eq 'Win32')
+ {
+ @dirsI=("$parent/tvision/include",@conf{'prefix'}.'/include/tvision');
+ @dirsL=("$parent/tvision/makes",@conf{'prefix'}.'/lib');
+ }
+ @dirsI=($conf{'TV_INCLUDE'},@dirsI) if $conf{'TV_INCLUDE'};
+ $TVInclude=LookForFile('tv.h',@dirsI);
+ if (!length($TVInclude))
+ {
+ print "\n\nError: Can't find an installed version, please install Turbo Vision first.\n";
+ print "The headers should be installed in one of the following directories:\n@dirsI\n";
+ CreateCache();
+ die "Missing library\n";
+ }
+ print "\n\tInclude dir: $TVInclude\n";
+ @dirsL=($conf{'TV_LIB'},@dirsL) if $conf{'TV_LIB'};
+ $TVLib=LookForFile('librhtv.[as]*',@dirsL);
+ $TVLib=LookForFile('librhtv*dylib',@dirsL) if (!length($TVLib));
+ if (!length($TVLib))
+ {
+ print "\nError: Can't find a compiled version, please compile Turbo Vision first.\n";
+ print "The library should be installed in one of the following directories:\n@dirsL\n";
+ CreateCache();
+ die "Missing library\n";
+ }
+ print "\tLibrary dir: $TVLib\n";
+ $conf{'TV_INCLUDE'}=$TVInclude;
+ $conf{'TV_LIB'}=$TVLib;
+}
+
+sub LookForTVConfig
+{
+ my $test;
+
+ print 'Looking for Turbo Vision config program: ';
+ $test=RunRedirect('rhtv-config --version',$ErrorLog);
+ if ($test=~/Turbo Vision/)
+ {
+ print "installed, OK\n";
+ $tvConfig='rhtv-config';
+ }
+ else
+ {
+ $tvConfig=$TVInclude.'/../rhtv-config';
+ $test=RunRedirect($tvConfig.' --version',$ErrorLog);
+ if ($test=~/Turbo Vision/)
+ {
+ print "$tvConfig, OK\n";
+ }
+ else
+ {
+ print "\nError: Can't find the Turbo Vision configuration program.\n";
+ print "Please try updating TV, then reconfigure TV and compile.\n";
+ CreateCache();
+ die "Missing tool\n";
+ }
+ }
+}
+
+sub TVConfigOption
+{
+ return `$tvConfig --$_[0]`;
+}
+
+sub LookForPCRE
+{
+ my ($test205,$test206,$t2,$test,$dir,$subpcre);
+
+ print 'Looking for PCRE library: ';
+ $test=@conf{'HAVE_PCRE_LIB'};
+ if ($test)
+ {
+ print "$test (cached)\n";
+ return;
+ }
+ $test205='
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef SUBPCRE
+ #include <pcre/pcre.h>
+#else
+ #include <pcre.h>
+#endif
+int main(void)
+{
+ pcre *compiled;
+ int flags=PCRE_MULTILINE | PCRE_CASELESS;
+ const char *error;
+ int errorOffset,hits,max,*matchs;
+ compiled=pcre_compile("test",flags,&error,&errorOffset,0);
+ if (!compiled) return 1;
+ max=(pcre_info(compiled,0,0)+1)*3;
+ matchs=(int *)malloc(max*sizeof(int));
+ hits=pcre_exec(compiled,0,"This is just a test 123",23,';
+ $t2='0,matchs,max);
+ if (hits!=1) return 1;
+ printf("OK\n");
+ return 0;
+}
+';
+ $test206=$test205.'0,'.$t2;
+ $test205.=$t2;
+
+ # See if 2.0.6+ is installed
+ $subpcre=0;
+ $test=RunGCCTest($GCC,'c',$test206,"-lpcre");
+ $test=~s/\W//g;
+ if ($test ne "OK")
+ {
+ $test=RunGCCTest($GCC,'c',$test206,"-lpcre -DSUBPCRE");
+ $subpcre=1;
+ }
+ if ($test eq "OK")
+ {
+ print "v2.0.6 or better OK\n";
+ $conf{'HAVE_PCRE_LIB'}='yes';
+ $conf{'HAVE_PCRE206'}='yes';
+ $conf{'PCREShipped'}='no';
+ $conf{'PCRE_HEADER'}=$subpcre ? '<pcre/pcre.h>' : '<pcre.h>';
+ return;
+ }
+ print 'no 2.0.6+, ';
+ # See if 2.0+ is installed
+ $subpcre=0;
+ $test=RunGCCTest($GCC,'c',$test205,"-lpcre");
+ $test=~s/\W//g;
+ if ($test ne "OK")
+ {
+ $test=RunGCCTest($GCC,'c',$test205,"-lpcre -DSUBPCRE");
+ $subpcre=1;
+ }
+ if ($test eq "OK")
+ {
+ print "v2.0 or better OK\n";
+ $conf{'HAVE_PCRE_LIB'}='yes';
+ $conf{'HAVE_PCRE206'}='no';
+ $conf{'PCREShipped'}='no';
+ $conf{'PCRE_HEADER'}=$subpcre ? '<pcre/pcre.h>' : '<pcre.h>';
+ return;
+ }
+ print 'no 2.0+, ';
+ # See if the one shipped works here
+ #$test=RunGCCTest($GCC,'c',$test206,"-L$supportDir -lpcre -Isupport");
+ #$test=~s/\W//g;
+ #if ($test ne "OK")
+ # {
+ # print "no shipped, disabling PCRE\n";
+ # $conf{'HAVE_PCRE_LIB'}='no';
+ # $conf{'HAVE_PCRE206'}='no';
+ # $conf{'PCREShipped'}='no';
+ # return;
+ # }
+
+ $conf{'HAVE_PCRE_LIB'}='yes';
+ $conf{'HAVE_PCRE206'}='yes';
+ $conf{'PCREShipped'}='yes';
+ $conf{'PCRE_HEADER'}='<pcre.h>';
+ print "using shipped one.\n";
+}
+
+sub TestTVVersion
+{
+ my $vNeed=$_[0];
+ my $test;
+
+ print 'Checking TV version: ';
+ $test=@conf{'tv'};
+ if ($test)
+ {
+ print "$test (cached) OK\n";
+ return;
+ }
+ $test='
+#include <stdio.h>
+#include <tv.h>
+int main(void)
+{
+ printf("%d.%d.%d",TV_MAJOR_VERSION,TV_MIDDLE_VERSION,TV_MINOR_VERSION);
+ return 0;
+}
+';
+ $test=RunGCCTest($GXX,'cc',$test,"$stdcxx -I$TVInclude");
+ if (!CompareVersion($test,$vNeed))
+ {
+ print "\nWrong TV version, please use $vNeed or newer\n";
+ print "Look in $ErrorLog for potential compile errors of the test\n";
+ CreateCache();
+ die "Wrong version\n";
+ }
+ print "$test OK\n";
+ $conf{'tv'}=$test;
+}
+
+
+sub LookForAllegro
+{
+ my $vNeed=$_[0],$vMaxV=$_[1];
+ my $test;
+
+ print 'Looking for Allegro library: ';
+
+ $test=@conf{'HAVE_ALLEGRO'};
+ if ($test)
+ {
+ print "$test (cached)\n";
+ return;
+ }
+ $test='
+#include <stdio.h>
+#include <allegro.h>
+int main(void)
+{
+ allegro_init();
+ // Defined by 3.9.x
+ #ifdef ALLEGRO_WIP_VERSION
+ printf("%d.%d.%d",ALLEGRO_VERSION,ALLEGRO_SUB_VERSION,ALLEGRO_WIP_VERSION);
+ #else
+ printf("%d.0.%d",ALLEGRO_VERSION,ALLEGRO_SUB_VERSION);
+ #endif
+ return 0;
+}
+';
+ $MP3Support=0;
+ $test=RunGCCTest($GCC,'c',$test,"-lalleg");
+ if (!length($test))
+ {
+ print "not installed, disabling MP3 support.\n";
+ $conf{'HAVE_ALLEGRO'}='no';
+ return;
+ }
+ if (!CompareVersion($test,$vNeed))
+ {
+ print "$test -> No, disabling MP3 support.\n";
+ print "\nWrong Allegro version, please use $vNeed or newer, but not greater or equal\n";
+ print "to $vMaxV.\n\n";
+ $conf{'HAVE_ALLEGRO'}='no';
+ return;
+ }
+ if (CompareVersion($test,$vMaxV))
+ {
+ print "$test -> No, disabling MP3 support.\n";
+ print "\nSorry, not compatible with this Allegro version\n\n";
+ $conf{'HAVE_ALLEGRO'}='no';
+ return;
+ }
+ $MP3Support=1;
+ $conf{'HAVE_ALLEGRO'}='yes';
+ print "$test OK\n";
+}
+
+
+sub LookForZLib
+{
+ my $vNeed=$_[0];
+ my ($test,$ver);
+
+ print 'Looking for zlib: ';
+ $test=@conf{'zlib'};
+ if ($test)
+ {
+ print "$test (cached) OK\n";
+ return;
+ }
+ $test='
+#include <stdio.h>
+#include <zlib.h>
+int main(void)
+{
+ gzFile f;
+ f=gzopen("","rb");
+ printf("%s",ZLIB_VERSION);
+ return 0;
+}
+';
+ $ver=RunGCCTest($GCC,'c',$test,'-lz');
+ if (length($ver))
+ {
+ if (CompareVersion($ver,$vNeed))
+ {
+ print "$ver OK\n";
+ $conf{'zlibShipped'}='no';
+ $conf{'zlib'}=$ver;
+ return;
+ }
+ print "no $vNeed+, ";
+ }
+ else
+ {
+ print 'not installed, ';
+ }
+ #$test=RunGCCTest($GCC,'c',$test,"-lz -Isupport -L$supportDir");
+ #if (!CompareVersion($test,$vNeed))
+ # {
+ # print "no shipped\n";
+ # print "\n\nError: Can't find an installed version, please install zlib 1.1.2 or better first.\n";
+ # CreateCache();
+ # die "Missing library\n";
+ # }
+ print "using shipped one\n";
+ $conf{'zlibShipped'}='yes';
+ $conf{'zlib'}='shipped'; #$test
+}
+
+sub LookForBZ2Lib
+{
+ my $vNeed=$_[0];
+ my $test,$ver;
+
+ print 'Looking for BZip2 library: ';
+ $test=@conf{'bz2lib'};
+ if ($test)
+ {
+ print "$test (cached) OK\n";
+ return;
+ }
+ $test='
+#include <stdio.h>
+#include <bzlib.h>
+int main(void)
+{
+ printf("%s",bzlibVersion());
+ return 0;
+}';
+ # I saw version 1.0.1 on Solaris with a header having BZ2_* but accepting the
+ # old names!? C++ won't let it happend.
+ $ver=RunGCCTest($GXX,'cc',$test,'-lbz2');
+ if (length($ver))
+ {
+ if (CompareVersion($ver,$vNeed))
+ {
+ print "$ver OK\n";
+ $conf{'bz2libShipped'}='no';
+ $conf{'bz2lib'}=$ver;
+ $conf{'bz2libPre1'}='yes';
+ $conf{'HAVE_BZIP2'}='yes';
+ $conf{'HAVE_BZIP2PRE1'}='yes';
+ return;
+ }
+ }
+ else
+ {
+ $test='
+#include <stdio.h>
+#include <bzlib.h>
+int main(void)
+{
+ printf("%s",BZ2_bzlibVersion());
+ return 0;
+}';
+ $ver=RunGCCTest($GXX,'cc',$test,'-lbz2');
+ if (length($ver))
+ {
+ if (CompareVersion($ver,$vNeed))
+ {
+ print "$ver OK\n";
+ $conf{'bz2libShipped'}='no';
+ $conf{'bz2lib'}=$ver;
+ $conf{'bz2libPre1'}='no';
+ $conf{'HAVE_BZIP2'}='yes';
+ return;
+ }
+ print "no $vNeed+, ";
+ }
+ else
+ {
+ print 'not installed, ';
+ }
+ }
+ #$test=RunGCCTest($GCC,'c',$test,"-lz -Isupport -L$supportDir");
+ #if (!CompareVersion($test,$vNeed))
+ # {
+ # print "no shipped\n";
+ # print "\n\nError: Can't find an installed version, please install zlib 1.1.2 or better first.\n";
+ # CreateCache();
+ # die "Missing library\n";
+ # }
+ print "using shipped one\n";
+ $conf{'bz2libShipped'}='yes';
+ $conf{'bz2lib'}='shipped'; #$test
+ $conf{'bz2libPre1'}='no';
+ $conf{'HAVE_BZIP2'}='yes';
+}
+
+sub LookForDL
+{
+ my ($test,$ver,$header,$lib);
+
+ print 'Looking for dl library: ';
+ $test=@conf{'dl'};
+ if ($test)
+ {
+ print "$test (cached) OK\n";
+ return;
+ }
+ if ($OSf eq 'QNXRtP')
+ {
+ $lib='ltdl';
+ $header='dlfcn';
+ }
+ else
+ {
+ $lib='dl';
+ $header='link';
+ }
+ $test='
+ #include <stdio.h>
+ #include <'.$header.'.h>
+ void test()
+ {
+ dlopen("test.o",0);
+ }
+
+ int main(void)
+ {
+ printf("OK");
+ return 0;
+ }';
+ $ver=RunGCCTest($GCC,'c',$test,'-l'.$lib);
+
+ if ($ver eq 'OK')
+ {
+ $conf{'dl'}='yes';
+ $conf{'dl_header'}=$header;
+ }
+ else
+ {
+ $conf{'dl'}='no';
+ }
+ print "$conf{'dl'}\n";
+}
+
+
+sub LookForIntlSupport
+{
+ my $vNeed=$_[0];
+ my ($test,$a,$djdir,$intllib,$intltest,$libdir);
+
+ print 'Checking for international support: ';
+ $conf{'intlShipped'}='no';
+ $conf{'tvfintl'}='no';
+ if ((@conf{'force-intlShipped'} eq 'yes') && ($OS eq 'DOS'))
+ {
+ print "using shipped one by user request.\n";
+ $conf{'intl'}='yes';
+ $conf{'iconv'}='no';
+ $conf{'intlShipped'}='yes';
+ return;
+ }
+ if (@conf{'no-intl'} eq 'yes')
+ {
+ print "disabled by user request.\n";
+ $conf{'intl'}='no';
+ $conf{'iconv'}='no';
+ #`cp include/tv/nointl.h include/tv/intl.h`;
+ return;
+ }
+ if (@conf{'intl'} eq 'yes')
+ {
+ print "yes (cached)\n";
+ return;
+ }
+ if (@conf{'intl'} eq 'no')
+ {
+ print "no (cached)\n";
+ return;
+ }
+ if ($OS eq 'DOS')
+ { # gettext 0.10.32 port have a bug in the headers, correct it
+ $djdir=@ENV{'DJDIR'};
+ $a=cat("$djdir/include/libintl.h");
+ if (length($a) && $a=~/\@INCLUDE_LOCALE_H@/)
+ {
+ $a=~s/\@INCLUDE_LOCALE_H\@//;
+ replace("$djdir/include/libintl.h",$a);
+ }
+ }
+ $intltest='
+#include <stdio.h>
+#define FORCE_INTL_SUPPORT
+#include <tv/intl.h>
+int main(void)
+{
+ printf("%s\n",_("OK"));
+ return 0;
+}
+';
+ $intllib=(($OS eq 'DOS') || ($OS eq 'Win32') || ($OSf eq 'FreeBSD') || ($OSf eq 'QNXRtP')) ? '-lintl' : '';
+ $libdir=$LDExtraDirs;
+ $libdir=~s/(\S+)/-L$1/g;
+ $test=RunGCCTest($GCC,'c',$intltest,"-I$TVInclude ".$libdir.' '.$intllib);
+ $test=~s/\W//g;
+ if ($test ne "OK")
+ {
+ print "no, additional check required.\n";
+ print "Checking for extra libs for international support: ";
+ $test=RunGCCTest($GCC,'c',$intltest,"-I$TVInclude ".$intllib.' -liconv');
+ $test=~s/\W//g;
+ if ($test ne "OK")
+ {
+ if ($OS eq 'DOS')
+ {
+ print "none found, using shipped one\n";
+ $conf{'intl'}='yes';
+ $conf{'iconv'}='no';
+ $conf{'intlShipped'}='yes';
+ }
+ else
+ {
+ $test=RunGCCTest($GCC,'c',$intltest,"-I$TVInclude -L$TVLib -ltvfintl");
+ $test=~s/\W//g;
+ if ($test ne "OK")
+ {
+ print "not found\n";
+ $conf{'intl'}='no';
+ $conf{'iconv'}='no';
+ }
+ else
+ {
+ print "not found, using fake dummy version\n";
+ $conf{'intl'}='no';
+ $conf{'iconv'}='no';
+ $conf{'tvfintl'}='yes';
+ }
+ }
+ }
+ else
+ {
+ print "-liconv, OK\n";
+ $conf{'intl'}='yes';
+ $conf{'iconv'}='yes';
+ }
+ }
+ else
+ {
+ print "yes OK\n";
+ $conf{'intl'}='yes';
+ $conf{'iconv'}='no';
+ }
+}
+
+sub CreateConfigH
+{
+ my ($a,$old);
+ my $text="/* Generated automatically by the configure script */";
+
+ print "Generating configuration header: ";
+
+ $conf{'FORCE_INTL_SUPPORT'}=$conf{'intlShipped'};
+ $conf{'HAVE_DL_LIB'}=$conf{'dl'};
+ $text.=ConfigIncDefYes('HAVE_ALLEGRO','Allegro library is available');
+ $text.=ConfigIncDefYes('WITH_MP3','Enable MP3 support');
+ $text.=ConfigIncDefYes('HAVE_AMP','MP3 support from libamp');
+ $text.=ConfigIncDefYes('HAVE_MPEGSOUND','MP3 support from libmpegsound');
+ $text.=ConfigIncDefYes('HAVE_PCRE_LIB','Perl Compatible Regular Expressions support');
+ $text.=ConfigIncDefYes('HAVE_PCRE206','PCRE version 2.0.6 or newer');
+ $text.=ConfigIncDefYes('HAVE_BZIP2','bzip2 compression support');
+ $text.=ConfigIncDefYes('HAVE_BZIP2PRE1','old bzip2 version before 1.0') if(@conf{'HAVE_BZIP2'} eq 'yes');
+ $text.=ConfigIncDefYes('HAVE_MIXER','Sound mixer support');
+ $text.=ConfigIncDefYes('FORCE_INTL_SUPPORT','Gettext included with editor');
+ #$text.=ConfigIncDefYes('HAVE_X11','X11 library and headers');
+ $text.=ConfigIncDefYes('HAVE_AA','AA lib');
+ $text.=ConfigIncDefYes('HAVE_GDB_MI','GDB/MI interface');
+ $text.=ConfigIncDefYes('HAVE_CALCULATOR','Calculator');
+ $text.=ConfigIncDefYes('HAVE_CALENDAR','Calendar');
+ $text.=ConfigIncDefYes('HAVE_DL_LIB','Support for runtime dynamic libs');
+ $text.="\n#define DL_HEADER_NAME <".$conf{'dl_header'}.".h>\n";
+ $text.="#define PCRE_HEADER_NAME ".$conf{'PCRE_HEADER'}."\n";
+
+ $text.="\n\n#define CONFIG_PREFIX \"";
+ $a=$conf{'prefix'};
+ $a=~s/\\/\\\\/g;
+ $text.=$a unless $conf{'no-prefix-h'};
+ $text.="\"\n";
+
+ $text.="\n\n";
+ $text.="#define SEOS_$OS\n";
+ $text.="#define SEOS_STR \"$OS\"\n";
+ $text.="#define SEOSf_$OSf\n";
+ $text.="#define SEOSf_STR \"$OSf\"\n" if $OSf;
+ $text.="#define SECPU_$CPU\n";
+ $text.="#define SECPU_STR \"$CPU\"\n";
+ $text.="#define SEComp_$Comp\n";
+ $text.="#define SEComp_STR \"$Comp\"\n";
+ $text.="#define SECompf_$Compf\n";
+ $text.="#define SECompf_STR \"$Compf\"\n" if $Compf;
+ $text.="\n#define MSS\n#include <mss.h>\n" if @conf{'mss'} eq 'yes';
+
+ $old=cat('include/configed.h');
+ if ($text eq $old)
+ {
+ print "no changes\n";
+ }
+ else
+ {
+ print "created new header\n";
+ replace('include/configed.h',$text);
+ }
+}
+
+sub GenerateMakefile
+{
+ my $text="# Generated automatically by the configure script";
+ my ($libamp,$libset,$infview,$libbzip2,$libmpegsnd,$libz,$libpcre,$libintl);
+ my ($installer,$distrib,$compExeEditor,$compExeInfview,$holidays,$mantmode);
+ my ($aux,$extraIns,$extraInsVar,$libmigdb);
+
+ print "Generating Makefile\n";
+
+ # Give more priority to "prefix" than hardcoded value
+ $mantmode=@conf{'MAINTAINER_MODE'} eq 'yes';
+ $text.="\n\nifneq (\$(strip \$(prefix)),)\n";
+ $text.=" MPREFIX=\$(prefix)\n";
+ $text.="else\n";
+ $text.=" MPREFIX=$conf{'prefix'}\n";
+ $text.="endif\n";
+ $text.="ifeq (\$(INSTALL),)\n";
+ $text.=" INSTALL=@conf{'GNU_INSTALL'}\n";
+ $text.="endif";
+ $text.="\nlibdir=\$(MPREFIX)/lib";
+ $text.="\nCFLAGS=$conf{'CFLAGS'}";
+ $text.="\nCXXFLAGS=$conf{'CXXFLAGS'}";
+ $text.="\nSET_USE_FHS=$conf{'fhs'}" if ($OS eq 'UNIX');
+ $text.="\nMAINTAINER_MODE=1" if $mantmode;
+ $text.="\nexport";
+
+ #### Targets ####
+ $libset=@conf{'libset'} eq 'yes';
+ $libamp=@conf{'HAVE_AMP'} eq 'yes';
+ $libmpegsnd=@conf{'HAVE_MPEGSOUND'} eq 'yes';
+ $infview=@conf{'infview'} eq 'yes';
+ $libbzip2=@conf{'bz2libShipped'} eq 'yes';
+ $libz=@conf{'zlibShipped'} eq 'yes';
+ $libpcre=@conf{'PCREShipped'} eq 'yes';
+ $libintl=@conf{'intlShipped'} eq 'yes';
+ $plasmas=$OS eq 'DOS';
+ $installer=@conf{'ToolsInstaller'} eq 'yes';
+ $distrib=@conf{'ToolsDistrib'} eq 'yes';
+ $internac=@conf{'xgettext'} ne 'no';
+ $docbasic=(@conf{'makeinfo'} ne 'no') && (@conf{'makeinfo'} ne 'broken');
+ # TODO: I need to replace -soname by -h conditionaly like in TV.
+ $holidays=(@conf{'dl'} eq 'yes') && ($OSf ne 'Solaris');
+ $libmigdb=@conf{'migdbShipped'} eq 'yes';
+
+ if (@conf{'compressExe'} eq 'undef')
+ {# Default is to compress InfView and the editor only for non-UNIX targets
+ $compExeEditor=$OS ne 'UNIX';
+ $compExeInfview=1;
+ }
+ else
+ {# The user specified an option
+ $compExeEditor=@conf{'compressExe'} eq 'yes';
+ $compExeInfview=@conf{'compressExe'} eq 'yes';
+ }
+
+ $text.="\n\n.PHONY: needed";
+ $text.=" infview" if ($infview);
+ $text.=" plasmas" if ($plasmas);
+ $text.=" libbzip2" if ($libbzip2);
+ $text.=" libz" if ($libz);
+ $text.=" libmpegsnd" if ($libmpegsnd);
+ $text.=" libpcre" if ($libpcre);
+ $text.=" libamp" if ($libamp);
+ $text.=" libintl" if ($libintl);
+ $text.=" installer" if ($installer);
+ $text.=" internac" if ($internac);
+ $text.=" doc-basic" if ($docbasic);
+ $text.=" holidays" if ($holidays);
+ $text.=" libmigdb" if ($libmigdb);
+ # all targets
+ $text.="\n\nall: Makefile editor";
+ $text.=" libset" if ($libset);
+ $text.=" infview" if ($infview);
+ $text.=" plasmas" if ($plasmas);
+ $text.=" installer" if ($installer);
+ $text.="\n";
+
+ $text.="\n\nMakefile: config.pl conflib.pl\n";
+ $text.="\t\$(error Please reconfigure the package! Alternative: \"touch Makefile\")";
+
+ # libamp
+ if ($libamp)
+ {
+ $text.="\n\nlibamp:\n";
+ $text.="\t\$(MAKE) -C mp3/libamp -f libamp.mkf";
+ }
+ # libmpegsnd
+ if ($libmpegsnd)
+ {
+ $text.="\n\nlibmpegsnd:\n";
+ $text.="\t\$(MAKE) -C mp3/mpegsound -f mpegsnd.mkf";
+ }
+ # libbzip2
+ if ($libbzip2)
+ {
+ $text.="\n\nlibbzip2:\n";
+ $text.="\t\$(MAKE) -C libbzip2 libbz2.a";
+ }
+ # libz
+ if ($libz)
+ {
+ $text.="\n\nlibz:\n";
+ $text.="\t\$(MAKE) -C libz libz.a";
+ }
+ # libpcre
+ if ($libpcre)
+ {
+ $text.="\n\nlibpcre:\n";
+ $text.="\t\$(MAKE) -C libpcre libpcre.a";
+ }
+ # libintl
+ if ($libintl)
+ {
+ $text.="\n\nlibintl:\n";
+ $text.="\t\$(MAKE) -C gettext";
+ }
+ # libmigdb
+ if ($libmigdb)
+ {
+ $text.="\n\nlibmigdb:\n";
+ $text.="\t\$(MAKE) -C libmigdb";
+ }
+ # i8n
+ if ($internac)
+ {
+ $text.="\n\ninternac:\n";
+ $text.="\t\$(MAKE) -C internac";
+ }
+ if ($docbasic)
+ {
+ $text.="\n\ndoc-basic:\n";
+ $text.="\t\$(MAKE) -C doc txt info";
+ }
+ # needed (by editor)
+ $text.="\n\n# Libraries not created by RHIDE projects\nneeded:";
+ $text.=" libamp" if ($libamp);
+ $text.=" libmpegsnd" if ($libmpegsnd);
+ $text.=" libbzip2" if ($libbzip2);
+ $text.=" libz" if ($libz);
+ $text.=" libpcre" if ($libpcre);
+ $text.=" libintl" if ($libintl);
+ $text.=" holidays" if ($holidays);
+ $text.=" libmigdb" if ($libmigdb);
+ $text.=" include/vername.h" if ($mantmode);
+ #
+ # MinGW tools I tested are broken and can't generate these targets
+ #
+ $text.=" internac" if ($internac) && ($Compf ne 'MinGW');
+ $text.=" doc-basic" if ($docbasic) && ($Compf ne 'MinGW');
+ # editor
+ $text.="\n\neditor: needed";
+ $text.="\n\t\$(MAKE) -C makes";
+ # libset
+ if ($libset)
+ {
+ $text.="\n\nlibset:\n";
+ $text.="\t\$(MAKE) -C makes libset";
+ }
+ # infview
+ if ($infview)
+ {
+ $text.="\n\ninfview:\n";
+ $text.="\t\$(MAKE) -C makes infview";
+ }
+ # plasmas
+ if ($plasmas)
+ {
+ $text.="\n\nplasmas:\n";
+ $text.="\tcd scrnsave; \$(MAKE); cd ..";
+ }
+ # installer
+ if ($installer)
+ {
+ $text.="\n\ninstaller: editor\n";
+ $text.="\t\$(MAKE) -C makes installer";
+ }
+ # holidays plug-ins
+ if ($holidays)
+ {
+ $text.="\n\nholidays:\n";
+ $text.="\t\$(MAKE) -C holidays";
+ }
+ # version name and revision header
+ if ($mantmode)
+ {
+ $text.="\n\ninclude/vername.h: change.log\n";
+ $text.="\tperl updaterev.pl";
+ }
+
+ $extraIns='';
+ # Don't compress executables
+ $extraIns.='--no-compress ' unless ($compExeEditor);
+ # Sources tarball compressed with bzip2
+ $extraIns.='--use-bzip2 ' if $conf{'source-bzip2'} eq 'yes';
+ # .exe extension:
+ # DOS uses a special script where the extension remains.
+ # POSIX systems don't, but Cygwin uses the POSIX script.
+ $extraIns.='--keep-extension ' if ($OS eq 'Win32');
+ $extraInsVar='';
+ $extraInsVar=" \"EXTRA_INS_OPS=$extraIns\"" if $extraIns;
+ #### Installations ####
+ # editor
+ $text.="\n\ninstall-editor: editor\n";
+ $text.="\t\$(MAKE) -C makes install";
+ $text.=$extraInsVar;
+ # libset
+ if ($libset)
+ {
+ $text.="\n\ninstall-libset: libset\n";
+ $text.="\t".GenInstallDir('0755','$(libdir)');
+ $text.="\t".GenInstallFiles('0644','makes/libset.a','$(libdir)');
+ }
+ # infview
+ if ($infview)
+ {
+ $text.="\n\ninstall-infview: infview\n";
+ $text.="\t\$(MAKE) -C makes install-infview";
+ $text.=$extraInsVar;
+ }
+ # all targets
+ $text.="\n\ninstall: install-editor";
+ $text.=" install-libset" if ($libset);
+ $text.=" install-infview" if ($infview);
+ $text.="\n";
+
+ if ($distrib)
+ {
+ #### Distribution ####
+ # editor
+ $text.="\n\ndistrib-editor: needed\n";
+ $text.="\t\$(MAKE) -C makes distrib $extraInsVar";
+ # just sources
+ $text.="\n\ndistrib-source:\n";
+ $text.="\t\$(MAKE) -C makes distrib-source $extraInsVar";
+ # infview
+ if ($infview)
+ {
+ $text.="\n\ndistrib-infview: needed\n";
+ $text.="\t\$(MAKE) -C makes distrib-infview $extraInsVar";
+ }
+ # all targets
+ $text.="\n\ndistrib: distrib-editor";
+ $text.=" distrib-infview" if ($infview);
+ $text.="\n";
+ }
+
+ $text.="\nclean:\n";
+ $text.="\tcd makes; \$(MAKE) clean-o; \$(MAKE) clean-docs; cd ..\n";
+ $text.="\trm -f configure.cache\n";
+ $text.="\trm -f Makefile\n";
+ $text.="\trm -f errormsg.txt\n";
+ $text.="\trm -f doc/sdh.exe\n";
+ $text.="\trm -f include/configed.h\n";
+ $text.="\trm -rf makes/linux/result makes/linux/resultInf makes/linux/setedit-* makes/linux/infview-*\n" if ($OS eq 'UNIX');
+ $text.="\trm -rf makes/djgpp/distinf makes/djgpp/distrib makes/djgpp/result makes/djgpp/resulinf\n" if ($OS eq 'DOS');
+ $text.="\trm -f makes/*.a makes/*.exe makes/*.gdt\n";
+ $text.="\trm -f mp3/libamp/*.a mp3/libamp/obj/*.o\n";
+ $text.="\trm -f mp3/mpegsound/*.a mp3/mpegsound/obj/*.o\n";
+ $text.="\tcd scrnsave; \$(MAKE) clean-o; cd ..\n" if ($plasmas);
+ $text.="\t\$(MAKE) -C libbzip2 clean\n" if ($libbzip2);
+ $text.="\t\$(MAKE) -C libz clean\n" if ($libz);
+ $text.="\t\$(MAKE) -C libpcre clean\n" if ($libpcre);
+ $text.="\t\$(MAKE) -C holidays clean\n" if ($holidays);
+ $text.="\t\$(MAKE) -C libmigdb clean\n" if ($libmigdb);
+
+ replace('Makefile',$text);
+}
+
+sub LookForGPM
+{
+ my $vNeed=$_[0],$test;
+
+ print 'Looking for gpm library: ';
+ if (@conf{'gpm'})
+ {
+ print "@conf{'gpm'} (cached) OK\n";
+ return;
+ }
+ $test='
+#include <stdio.h>
+#include <gpm.h>
+int main(void)
+{
+ int version;
+ printf("%s",Gpm_GetLibVersion(&version));
+ return 0;
+}
+';
+ $test=RunGCCTest($GCC,'c',$test,'-lgpm');
+ if (!length($test))
+ {
+ #print "\nError: gpm library not found, please install gpm $vNeed or newer\n";
+ #print "Look in $ErrorLog for potential compile errors of the test\n";
+ #CreateCache();
+ #die "Missing library\n";
+ $conf{'HAVE_GPM'}='no';
+ print " no, disabling mouse support\n";
+ return;
+ }
+ if (!CompareVersion($test,$vNeed))
+ {
+ #print "$test, too old\n";
+ #print "Please upgrade your gpm library to version $vNeed or newer.\n";
+ #print "You can try with $test forcing the configure scripts.\n";
+ #CreateCache();
+ #die "Old library\n";
+ $conf{'HAVE_GPM'}='no';
+ print " too old, disabling mouse support\n";
+ return;
+ }
+ $conf{'gpm'}=$test;
+ $conf{'HAVE_GPM'}='yes';
+ print "$test OK\n";
+}
+
+sub LookForToolsInstaller
+{
+ my ($list,$i,$test);
+
+ print 'Tools for Installer:';
+ if ($conf{'ToolsInstaller'} eq 'yes')
+ {
+ print " yes (cached)\n";
+ return;
+ }
+ # Allegro, already tested
+ if ($conf{'HAVE_ALLEGRO'} ne 'yes')
+ {
+ print " no Allegro library\n";
+ return;
+ }
+ # PCRE, already tested
+ if ($conf{'HAVE_PCRE_LIB'} ne 'yes')
+ {
+ print " no PCRE library\n";
+ return;
+ }
+ # Various programs
+ @list=('cwsdpmi.exe','cwsdpmi.doc','emu387.dxe',
+ 'pmodstub.exe','exedat.exe','dat.exe','groff.exe');
+ foreach $i (@list)
+ {
+ print " $i";
+ if (!(-e $ENV{'DJDIR'}.'/bin/'.$i))
+ {
+ print " no\n";
+ return;
+ }
+ }
+ # zip
+ print ' zip';
+ $test=RunRedirect('zip -h');
+ if (!($test=~/zip/))
+ {
+ print " no\n";
+ return;
+ }
+ # upx
+ print ' upx';
+ $test=RunRedirect('upx -V');
+ if (!($test=~/upx/))
+ {
+ print " no\n";
+ return;
+ }
+ # Libwin
+ print ' libwin';
+ $test='
+#include <stdio.h>
+#include <libwin.h>
+void dummy(void) {
+long hKey;
+w95_reg_openkey(HKEY_LOCAL_MACHINE,"SOFTWARE",&hKey); }
+int main(void)
+{
+ printf("Ok\n");
+ return 0;
+}
+';
+ $test=RunGCCTest($GCC,'c',$test,'-lwin');
+ $test=~s/[\r\n]//g;
+ if ($test ne 'Ok')
+ {
+ print " no\n";
+ return;
+ }
+ print " OK!\n";
+ $conf{'ToolsInstaller'}='yes';
+}
+
+sub LookForToolsDistrib
+{
+ my ($test);
+
+ print 'Tools for Distrib:';
+ if ($conf{'ToolsDistrib'} eq 'yes')
+ {
+ print " yes (cached)\n";
+ return;
+ }
+ if ($OS eq 'UNIX')
+ {# Should I test with other switches?
+ # And the compressor? check for gzip?
+ # tar
+ print ' tar';
+ `tar --help > test.txt 2>&1`;
+ $test=cat('test.txt');
+ unlink 'test.txt';
+ if (!($test=~/tar/))
+ {
+ print " no\n";
+ return;
+ }
+ print ' gzip';
+ `gzip --help > test.txt 2>&1`;
+ $test=cat('test.txt');
+ unlink 'test.txt';
+ if (!($test=~/gzip/))
+ {
+ print " no\n";
+ return;
+ }
+ }
+ else
+ {
+ # zip
+ print ' zip';
+ $test=RunRedirect('zip -h');
+ if (!($test=~/zip/))
+ {
+ print " no\n";
+ return;
+ }
+ }
+ print " OK\n";
+ $conf{'ToolsDistrib'}='yes';
+}
+
+sub LookForBasicTools
+{
+ my $test;
+ if (($OS eq 'DOS') || ($OS eq 'Win32'))
+ {
+ #$test=RunRedirect('rm --version');
+ $test=RunRedirect('cp --version');
+ if (!($test=~/fileutils/))
+ {
+ print "Please install the fileutils package. The name is usually something like it:\n";
+ print "filXXXb.zip where XXX is the version.\n";
+ die "\n";
+ }
+ }
+}
+
+sub LookForXlib()
+{
+ my ($test,$o,$libs);
+
+ print 'Looking for X11 libs: ';
+ if (@conf{'HAVE_X11'})
+ {
+ print "@conf{'HAVE_X11'} (cached)\n";
+ return;
+ }
+ $test='
+#include <stdio.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/keysym.h>
+Display *Test()
+{ return XOpenDisplay(""); }
+int main(void)
+{
+ printf("OK, %d.%d\n",X_PROTOCOL,X_PROTOCOL_REVISION);
+ return 0;
+}
+';
+ $conf{'X11LibPath'}='/usr/X11R6/lib' unless $conf{'X11LibPath'};
+ $conf{'X11Lib'}='X11 Xmu' unless $conf{'X11Lib'};
+ $libs=$conf{'X11Lib'};
+ $libs=~s/(\S+)/-l$1/g;
+ $o='';
+ $o.='-I'.$conf{'X11IncludePath'} if $conf{'X11IncludePath'};
+ $o.=" -L$conf{'X11LibPath'} $libs";
+ $test=RunGCCTest($GCC,'c',$test,$o);
+ if ($test=~/OK, (\d+)\.(\d+)/)
+ {
+ $conf{'HAVE_X11'}='yes';
+ print "yes OK (X$1 rev $2)\n";
+ }
+ else
+ {
+ if (!$conf{'X11IncludePath'})
+ {
+ $conf{'X11IncludePath'}='/usr/X11R6/include';
+ $o.="-I$conf{'X11IncludePath'} -L$conf{'X11LibPath'} $libs";
+ if ($test=~/OK, (\d+)\.(\d+)/)
+ {
+ $conf{'HAVE_X11'}='yes';
+ print "yes OK (X$1 rev $2)\n";
+ return;
+ }
+ }
+ $conf{'HAVE_X11'}='no';
+ print "no, disabling X11 version\n";
+ }
+}
+
+sub LookForAA
+{
+ my ($test);
+
+ print 'Looking for AA library: ';
+ $test=$conf{'HAVE_AA'};
+ if (($test eq 'yes') || ($conf{'HAVE_AA_from_user'} eq 'yes'))
+ {
+ print "$test ";
+ print (($conf{'HAVE_AA_from_user'} eq 'yes') ? "(user)" : "(cached)");
+ print " OK\n";
+ return;
+ }
+ $test='
+ #include <stdio.h>
+ #include <aalib.h>
+ int main(void)
+ {
+ if (aa_autoinit(&aa_defparams))
+ printf("OK\n");
+ return 0;
+ }';
+ # AA lib v1.2 SuSE SLES 8 doesn't work for C++ (wrong typedef for struct)
+ $test=RunGCCTest($GXX,'cc',$test,'-laa');
+ $conf{'HAVE_AA'}=($test=~/OK$/) ? 'yes' : 'no';
+
+ print "$conf{'HAVE_AA'}\n";
+}
+
+sub LookForMI()
+{
+ my $vNeed=$_[0];
+ my ($ver,$test);
+
+ print 'Looking for GDB/MI library: ';
+ $ver=$conf{'HAVE_GDB_MI'};
+ if ($ver)
+ {
+ print "$ver (cached) OK\n";
+ return;
+ }
+ $conf{'migdbShipped'}='no';
+ $test='
+ #include <stdio.h>
+ #include <mi_gdb.h>
+ int main(void)
+ {
+ mi_set_gdb_exe("none");
+ printf("%s\n",MI_VERSION_STR);
+ return 0;
+ }';
+ $ver=RunGCCTest($GCC,'c',$test,'-lmigdb');
+ $ver=~s/[\r\n]//g;
+ if (length($ver))
+ {
+ if (CompareVersion($ver,$vNeed))
+ {
+ print "$ver OK\n";
+ $conf{'HAVE_GDB_MI'}='yes';
+ return;
+ }
+ print "no $vNeed+";
+ }
+ else
+ {
+ print "not installed";
+ }
+ if (-d 'libmigdb')
+ {
+ print ", using shipped one\n";
+ $conf{'migdbShipped'}='yes';
+ $conf{'HAVE_GDB_MI'}='yes';
+ return;
+ }
+ print "\n";
+ $conf{'HAVE_GDB_MI'}='no';
+}
+
+sub LookForMaintainerTools
+{
+ my $file;
+
+ $file=LookForFileInPath('gpr2mak*');
+ if (!length($file))
+ {
+ die "\nRHIDE tools aren't installed. They are needed only for maintainer mode.\n".
+ "Install RHIDE or disable the maintaner mode.\n\n";
+ }
+}
+