I have source that uses perl and a simple configure script like so: #! /bin/sh # thunk
exec perl -wS ./configure.pl ${1+"$@"}
The configure phase fails since it doesn’t know what to do with the prefix. I
can override this, but what about env variables?
#!/usr/bin/perl -w
# configure script for smbase
use strict 'subs';
require sm_config;
$SMBASE = ".";
get_sm_config_version();
$thisPackage = "smbase";
sub usage {
standardUsage();
print(<<"EOF");
package options:
-prof enable profiling
-devel add options useful while developing smbase
-debugheap turn on heap usage debugging
-traceheap print messages on each malloc and free
EOF
# this option is obscure, so I won't print it in the usage string
# -icc turn on options for Intel's compiler
}
# defaults (also see sm_config.pm)
$DEBUG_HEAP = 0;
$TRACE_HEAP = 0;
# 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
}
elsif ($arg eq "prof") {
push @CCFLAGS, "-pg";
}
elsif ($arg eq "devel") {
push @CCFLAGS, "-Werror";
}
elsif ($arg eq "debugheap") {
$DEBUG_HEAP = 1;
}
elsif ($arg eq "traceheap") {
$TRACE_HEAP = 1;
}
# 9/19/04: I spent some time getting smbase to build under
# the Intel C++ 8.1 compiler; these are the options I used.
elsif ($arg eq "icc") {
# compiler executables
$CC = "icc";
$CXX = "icpc";
# diagnostic suppression:
# 444: Wants virtual destructors
# 1418: external definition with no prior declaration
# 810: Conversion might lose sig.digs (can't suppress with cast!)
# 271: trailing comma is nonstandard
# 981: operands are evaluated in unspecified order
# 279: controlling expression is constant
# 383: value copied to temporary, reference to temporary used
# 327: NULL reference is not allowed
# 1419: external declaration in primary source file
push @CCFLAGS, "-wd444,1418,810,271,981,279,383,327,1419";
}
else {
print STDERR ("unknown option: $arg\n");
exit(2);
}
}
finishedOptionProcessing();
# -------------- external tools tests ---------------------
test_CXX_compiler();
# ------------------ config.summary -----------------
$summary = getStandardConfigSummary();
if ($DEBUG_HEAP) {
$summary .= "echo \" DEBUG_HEAP: $DEBUG_HEAP\"\n";
}
if ($TRACE_HEAP) {
$summary .= "echo \" TRACE_HEAP: $TRACE_HEAP\"\n";
}
writeConfigSummary($summary);
# ------------------- config.status ------------------
writeConfigStatus("DEBUG_HEAP" => "$DEBUG_HEAP",
"TRACE_HEAP" => "$TRACE_HEAP");
# ----------------- 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);
pretendUsed($CC);
pretendUsed($CXX);
# the code below is never executed as part of smbase/configure.pl;
# it is here so it can be easily found to copy into the client
# configuration scripts
# -------------- 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=<dir>\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 ---------------
# -------------- 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 -------------
}
# EOF
main.log
Description: Binary data
Mark
_______________________________________________ macports-dev mailing list [email protected] https://lists.macosforge.org/mailman/listinfo/macports-dev
