Configure revision 2672fb3a13343154adea7fca628160fd9f0a74f6
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering# Copyright (C) 2013, 2014 Internet Systems Consortium, Inc. ("ISC")
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering# Permission to use, copy, modify, and/or distribute this software for any
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering# purpose with or without fee is hereby granted, provided that the above
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering# copyright notice and this permission notice appear in all copies.
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering# PERFORMANCE OF THIS SOFTWARE.
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering# This script builds nmake and visual studio build files
556089dc57b10a12a03edd3d3e90ca17398ad206Lennart Poettering# files to configure
718db96199eb307751264e4163555662c9a389faLennart Poetteringmy $platformfile = "..\\lib\\isc\\win32\\include\\isc\\platform.h";
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poetteringmy @filelist = ("..\\bin\\check\\win32\\checktool.dsp",
718db96199eb307751264e4163555662c9a389faLennart Poettering "..\\bin\\confgen\\win32\\confgentool.dsp",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\confgen\\win32\\ddnsconfgen.dsp",
718db96199eb307751264e4163555662c9a389faLennart Poettering "..\\bin\\confgen\\win32\\ddnsconfgen.mak",
718db96199eb307751264e4163555662c9a389faLennart Poettering "..\\bin\\confgen\\win32\\rndcconfgen.dsp",
718db96199eb307751264e4163555662c9a389faLennart Poettering "..\\bin\\confgen\\win32\\rndcconfgen.mak",
405e0255d5e6950180d9563f1a26294b5360db03Lennart Poettering "..\\bin\\dnssec\\win32\\dnssectool.dsp",
405e0255d5e6950180d9563f1a26294b5360db03Lennart Poettering "..\\bin\\dnssec\\win32\\keyfromlabel.dsp",
405e0255d5e6950180d9563f1a26294b5360db03Lennart Poettering "..\\bin\\dnssec\\win32\\keyfromlabel.mak",
c7040b5d1c2c148f12b6a5eef3dfce1661805131Lennart Poettering "..\\bin\\nsupdate\\win32\\nsupdate.dsp",
c7040b5d1c2c148f12b6a5eef3dfce1661805131Lennart Poettering "..\\bin\\nsupdate\\win32\\nsupdate.mak",
c7040b5d1c2c148f12b6a5eef3dfce1661805131Lennart Poettering "..\\bin\\pkcs11\\win32\\pk11destroy.dsp",
c7040b5d1c2c148f12b6a5eef3dfce1661805131Lennart Poettering "..\\bin\\pkcs11\\win32\\pk11destroy.mak",
c7040b5d1c2c148f12b6a5eef3dfce1661805131Lennart Poettering "..\\bin\\pkcs11\\win32\\pk11keygen.dsp",
c7040b5d1c2c148f12b6a5eef3dfce1661805131Lennart Poettering "..\\bin\\pkcs11\\win32\\pk11keygen.mak",
c7040b5d1c2c148f12b6a5eef3dfce1661805131Lennart Poettering "..\\bin\\pkcs11\\win32\\pk11tokens.dsp",
c7040b5d1c2c148f12b6a5eef3dfce1661805131Lennart Poettering "..\\bin\\pkcs11\\win32\\pk11tokens.mak",
718db96199eb307751264e4163555662c9a389faLennart Poettering "..\\bin\\tools\\win32\\ischmacfixup.dsp",
718db96199eb307751264e4163555662c9a389faLennart Poettering "..\\bin\\tools\\win32\\ischmacfixup.mak",
718db96199eb307751264e4163555662c9a389faLennart Poettering "..\\bin\\tools\\win32\\journalprint.dsp",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tools\\win32\\journalprint.mak",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tests\\atomic\\win32\\t_atomic.dsp",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tests\\atomic\\win32\\t_atomic.mak",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tests\\master\\win32\\t_master.dsp",
718db96199eb307751264e4163555662c9a389faLennart Poettering "..\\bin\\tests\\master\\win32\\t_master.mak",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tests\\hashes\\win32\\t_hashes.dsp",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tests\\hashes\\win32\\t_hashes.mak",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tests\\names\\win32\\t_names.dsp",
c3df8d3dde5a032b382b3f59c016c1d0b7741ae8Lennart Poettering "..\\bin\\tests\\names\\win32\\t_names.mak",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tests\\resolver\\win32\\t_resolver.dsp",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tests\\resolver\\win32\\t_resolver.mak",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.dsp",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.mak",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tests\\tasks\\win32\\t_tasks.dsp",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tests\\tasks\\win32\\t_tasks.mak",
a6c0353b9268d5b780fb7ff05a10cb5031446e5dLennart Poettering "..\\bin\\tests\\timers\\win32\\t_timers.dsp",
# for config.h
my %configdefh;
# for platform.h
my %configdefp;
my %configinc;
my %configlib;
my %configdll;
my %configvar;
my %configdefd;
my %configcond;
@usage,
my $unknown_value;
$verbose = 1;
$legacy_only = 1;
$unknown_value = $_;
my $arg = $_[0];
my $key = $_[0];
my $val = $_[1];
if ($key =~ /^intrinsics$/i) {
if ($val =~ /^no$/i) {
} elsif ($key =~ /^native-pkcs11$/i) {
if ($val =~ /^yes$/i) {
} elsif ($key =~ /^openssl-hash$/i) {
if ($val =~ /^yes$/i) {
} elsif ($val =~ /^no$/i) {
} elsif ($key =~ /^isc-spnego$/i) {
if ($val =~ /^no$/i) {
} elsif ($key =~ /^filter-aaaa$/i) {
if ($val =~ /^yes$/i) {
} elsif ($key =~ /^fixed-rrset$/i) {
if ($val =~ /^yes$/i) {
} elsif ($key =~ /^developer$/i) {
if ($val =~ /^yes$/i) {
} elsif ($key =~ /^rpz-nsip$/i) {
if ($val =~ /^no$/i) {
} elsif ($key =~ /^rpz-nsdname$/i) {
if ($val =~ /^no$/i) {
} elsif ($key =~ /^sit$/i) {
if ($val =~ /^no$/i) {
my $key = $_[0];
my $val = $_[1];
if ($key =~ /^tests$/i) {
if ($val =~ /^yes$/i) {
} elsif ($key =~ /^extra-tests$/i) {
if ($val =~ /^yes$/i) {
} elsif ($key =~ /^samples$/i) {
if ($val =~ /^yes$/i) {
} elsif ($key =~ /^openssl$/i) {
if ($val =~ /^no$/i) {
} elsif ($val !~ /^yes$/i) {
} elsif ($key =~ /^pkcs11$/i) {
if ($val =~ /^yes$/i) {
} elsif ($val !~ /^no$/i) {
$pkcs11_path = $val;
$pkcs11_path =~ s/\.dll$//i;
} elsif ($key =~ /^ecdsa$/i) {
if ($val =~ /^no$/i) {
} elsif ($val =~ /^yes$/i) {
} elsif ($key =~ /^gost$/i) {
if ($val =~ /^no$/i) {
} elsif ($val =~ /^yes$/i) {
} elsif ($key =~ /^aes$/i) {
if ($val =~ /^no$/i) {
} elsif ($val =~ /^yes$/i) {
} elsif ($key =~ /^sit-alg$/i) {
} elsif ($key =~ /^gssapi$/i) {
if ($val !~ /^no$/i) {
if ($val !~ /^yes$/i) {
$gssapi_path = $val;
} elsif ($key =~ /^libxml2$/i) {
if ($val =~ /^no$/i) {
} elsif ($val !~ /^yes$/i) {
} elsif ($key =~ /^geoip$/i) {
if ($val !~ /^no$/i) {
if ($val !~ /^yes$/i) {
$geoip_path = $val;
} elsif ($key =~ /^readline$/i) {
if ($val !~ /^no$/i) {
if ($val !~ /^yes$/i) {
} elsif ($key =~ /^idn$/i) {
if ($val !~ /^no$/i) {
if ($val !~ /^yes$/i) {
} elsif ($key =~ /^iconv$/i) {
if ($val =~ /^no$/i) {
if ($verbose) {
if ($verbose) {
my $rfile;
if (-f $vp) {
if ($verbose) {
my $msc_ver = 0;
#include <windows.h>
#include <stdio.h>
print STDERR "only the legacy (cf legacy\\win32-build.txt) will work\n";
open F, ">cross.c" || die $!;
#include <windows.h>
#include <stdio.h>
my $compret = `cl /nologo /MD cross.c`;
if (grep { -f and -x } ".\\cross.exe") {
my $cross = `.\\cross.exe`;
#include <windows.h>
#include <stdio.h>
if ($cross) {
print STDERR $cross;
my $file;
last;
close F;
#include <stdio.h>
#include <openssl/opensslv.h>
OPENSSL_VERSION_NUMBER >= 0x0090804fL)
close F;
close F;
close F;
close F;
close F;
ENGINE *e;
close F;
EVP_CIPHER *aes128, *aes192, *aes256;
close F;
AES_KEY k;
const unsigned char bufin[16];
unsigned char bufout[16];
close F;
my $gssapi_lib;
my $krb5_lib;
return GeoIP_open != 0;
close F;
#include <GeoIP.h>
int flag = 1;
close F;
#include <GeoIP.h>
#include <GeoIPCity.h>
int i = GEOIP_CITY_EDITION_REV0_V6;
int flag = 1;
close F;
my $file;
last;
print STDERR
# setup config.h with %configdefh
my $line;
my @Lines;
open F, $configfilein || die $!;
@Lines = <F>;
close F;
open F, $configfileout || die $!;
close F;
# setup platform.h with %configdefp
my $line;
my @Lines;
@Lines = <F>;
close F;
close F;
my $line;
my @Linesin;
my @Linesout;
my $filename = $_[0];
my $cond;
my @conds;
my $pass = 1;
my @passes;
my $val;
@Linesin = <F>;
close F;
$cond = $1;
$pass = 0;
$pass = 0;
$pass = 1;
$pass = 1;
if (defined($configdefd{$1})) {
my $def = $configdefd{$1};
push @Linesout, $line;
if ($verbose) {
foreach $line (@Linesout) {
my $line;
my $projectname = $_[0];
my $cond;
my $pass = 1;
my $val;
foreach $line (@Linesin) {
chomp $line;
if ($line =~ /^\@IF (.*)$/) {
if (defined($cond)) {
unshift(@conds, $cond);
unshift(@passes, $pass);
$cond = $1;
if (defined($configcond{$cond})) {
$pass = 0;
} elsif ($line =~ /^\@ELSE (.*)$/) {
if ($cond ne $1) {
if (defined($configcond{$cond})) {
$pass = 0;
$pass = 1;
} elsif ($line =~ /^\@END (.*)$/) {
if ($cond ne $1) {
$cond = shift(@conds);
$pass = shift(@passes);
$pass = 1;
if ($pass == 0) {
while ($line =~ /@([^@ ]*)@/) {
if (defined($configvar{$1})) {
$val = kw($configvar{$1});
if (defined($configlib{$1})) {
$val = kw($configlib{$1});
close F;
# make versions.h
my %Versions;
my $Version;
my %ApiVersions;
my $Mapapi;
my $data;
my $name;
my $value;
close V;
close M;
my $dir;
my $apifile;
$name =~ s/\s+//;
$value =~ s/\s+//;
$ApiVersions{$name} = $value;
close A;
close O;
# make srcid.h
my $data;
my $name;
my $value;
my $name;
my $file;
# Notes: Unix configure.in options