@@ -117,12 +117,12 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx
117
117
# but 'long long' type.
118
118
119
119
my $gcc_devteam_warn = " -DDEBUG_UNUSED"
120
- . " -Wswitch"
121
120
. " -DPEDANTIC -pedantic -Wno-long-long"
122
121
. " -Wall"
123
122
. " -Wextra"
124
123
. " -Wno-unused-parameter"
125
124
. " -Wno-missing-field-initializers"
125
+ . " -Wswitch"
126
126
. " -Wsign-compare"
127
127
. " -Wmissing-prototypes"
128
128
. " -Wshadow"
@@ -1257,29 +1257,29 @@ unless ($disabled{asm}) {
1257
1257
}
1258
1258
}
1259
1259
1260
- my $ecc = $target {cc };
1261
- if ($^O ne " VMS" && !$disabled {makedepend }) {
1262
- # Is the compiler gcc or clang? $ecc is used below to see if
1263
- # error-checking can be turned on.
1264
- my $ccpcc = " $config {cross_compile_prefix}$target {cc}" ;
1265
- open (PIPE, " $ccpcc --version 2>&1 |" );
1266
- my $lines = 2;
1267
- while ( <PIPE> ) {
1268
- # Find the version number and save the major.
1269
- m | (?:.*)\b (\d +)\.\d +\.\d +\b (?:.*)| ;
1270
- my $compiler_major = $1 ;
1271
- # We know that GNU C version 3 and up as well as all clang
1272
- # versions support dependency generation
1273
- $config {makedepprog } = $ccpcc
1274
- if (/ clang/ || (/ gcc/ && $compiler_major >= 3));
1275
- $ecc = " clang" if / clang/ ;
1276
- $ecc = " gcc" if / gcc/ ;
1277
- last if ($config {makedepprog } || !$lines --);
1260
+ my %predefined ;
1261
+
1262
+ if ($^O ne " VMS" ) {
1263
+ my $cc = " $config {cross_compile_prefix}$target {cc}" ;
1264
+
1265
+ # collect compiler pre-defines from gcc or gcc-alike...
1266
+ open (PIPE, " $cc -dM -E -x c /dev/null 2>&1 |" );
1267
+ while (<PIPE>) {
1268
+ m / ^#define\s +(\w +(?:\(\w +\) )?)(?:\s +(.+))?/ or last ;
1269
+ $predefined {$1 } = $2 // " " ;
1278
1270
}
1279
1271
close (PIPE);
1280
1272
1281
- $config {makedepprog } = which(' makedepend' ) unless $config {makedepprog };
1282
- $disabled {makedepend } = " unavailable" unless $config {makedepprog };
1273
+ if (!$disabled {makedepend }) {
1274
+ # We know that GNU C version 3 and up as well as all clang
1275
+ # versions support dependency generation
1276
+ if ($predefined {__GNUC__ } >= 3) {
1277
+ $config {makedepprog } = $cc ;
1278
+ } else {
1279
+ $config {makedepprog } = which(' makedepend' );
1280
+ $disabled {makedepend } = " unavailable" unless $config {makedepprog };
1281
+ }
1282
+ }
1283
1283
}
1284
1284
1285
1285
@@ -1324,13 +1324,13 @@ if (defined($config{api})) {
1324
1324
if ($strict_warnings )
1325
1325
{
1326
1326
my $wopt ;
1327
- die " ERROR --strict-warnings requires gcc or clang "
1328
- unless $ecc eq ' gcc ' || $ecc eq ' clang ' ;
1327
+ die " ERROR --strict-warnings requires gcc or gcc-alike "
1328
+ unless defined ( $predefined { __GNUC__ }) ;
1329
1329
foreach $wopt (split /\s +/, $gcc_devteam_warn )
1330
1330
{
1331
1331
$config {cflags } .= " $wopt " unless ($config {cflags } =~ / (?:^|\s )$wopt (?:\s |$) / )
1332
1332
}
1333
- if ($ecc eq " clang " )
1333
+ if (defined ( $predefined { __clang__ }) )
1334
1334
{
1335
1335
foreach $wopt (split /\s +/, $clang_devteam_warn )
1336
1336
{
0 commit comments