#!/usr/bin/perl -w # configure script for elsa use strict 'subs'; # default location of smbase relative to this package $SMBASE = "../smbase"; $req_smcv = 1.03; # required sm_config version number $thisPackage = "elsa"; # -------------- BEGIN common block --------------- # do an initial argument scan to find if smbase is somewhere else for (my $i=0; $i < @ARGV; $i++) { my ($d) = ($ARGV[$i] =~ m/-*smbase=(.*)/); if (defined($d)) { $SMBASE = $d; } } # try to load the sm_config module eval { push @INC, ($SMBASE); require sm_config; }; if ($@) { die("$@" . # ends with newline, usually "\n" . "I looked for smbase in \"$SMBASE\".\n" . "\n" . "You can explicitly specify the location of smbase with the -smbase=\n" . "command-line argument.\n"); } # check version number $smcv = get_sm_config_version(); if ($smcv < $req_smcv) { die("This package requires version $req_smcv of sm_config, but found\n" . "only version $smcv.\n"); } # -------------- END common block --------------- # defaults @LDFLAGS = ("-g -Wall"); $AST = "../ast"; $ELKHOUND = "../elkhound"; $USE_GNU = "1"; $USE_KANDR = "1"; $GCOV_MODS = ""; sub usage { standardUsage(); print(<<"EOF"); package options: -prof enable profiling -gcov= enable coverage testing for modules -devel add options useful while developing (-Werror) -gnu=[0/1] enable GNU extensions? [$USE_GNU] -kandr=[0/1] enable K&R extensions? [$USE_KANDR] -ast=: specify where the ast system is [$AST] -elkhound=: specify where the elkhound system is [$ELKHOUND] -useSerialNumbers: give serial numbers to some objects for debugging EOF } # -------------- BEGIN common block 2 ------------- # global variables holding information about the current command-line # option being processed $option = ""; $value = ""; # process command-line arguments foreach $optionAndValue (@ARGV) { # ignore leading '-' characters, and split at first '=' (if any) ($option, $value) = ($optionAndValue =~ m/^-*([^-][^=]*)=?(.*)$/); # option = value my $arg = $option; if (handleStandardOption()) { # handled by sm_config.pm } # -------------- END common block 2 ------------- elsif ($arg eq "prof") { push @CCFLAGS, "-pg"; push @LDFLAGS, "-pg"; } elsif ($arg eq "gcov") { $GCOV_MODS = getOptArg(); } elsif ($arg eq "devel") { push @CCFLAGS, "-Werror"; } elsif ($arg eq "ast") { $AST = getOptArg(); } elsif ($arg eq "elkhound") { $ELKHOUND = getOptArg(); } elsif ($arg eq "gnu") { $USE_GNU = getBoolArg(); } elsif ($arg eq "kandr") { $USE_KANDR = getBoolArg(); } elsif ($arg eq "useSerialNumbers") { push @CCFLAGS, "-DUSE_SERIAL_NUMBERS=1"; } else { die "unknown option: $arg\n"; } } finishedOptionProcessing(); # ------------------ check for needed components ---------------- test_smbase_presence(); test_CXX_compiler(); # ast if (! -f "$AST/asthelp.h") { die "I cannot find asthelp.h in `$AST'.\n" . "The ast system is required for elsa.\n" . "If it's in a different location, use the -ast= option.\n"; } # elkhound if (! -f "$ELKHOUND/glr.h") { die "I cannot find glr.h in `$ELKHOUND'.\n" . "The elkhound system is required for elsa.\n" . "If it's in a different location, use the -elkhound= option.\n"; } $PERL = get_PERL_variable(); # ------------------ config.summary ----------------- $summary = getStandardConfigSummary(); $summary .= <<"OUTER_EOF"; cat < "@LDFLAGS", "SMBASE" => "$SMBASE", "AST" => "$AST", "ELKHOUND" => "$ELKHOUND", "PERL" => "$PERL", "USE_GNU" => "$USE_GNU", "USE_KANDR" => "$USE_KANDR", "GCOV_MODS" => "$GCOV_MODS"); # ----------------- final actions ----------------- # run the output file generator run("./config.status"); print("\nYou can now run make, usually called 'make' or 'gmake'.\n"); exit(0); # silence warnings pretendUsed($thisPackage);