Configure revision ba751492fcc4f161a18b983d4f018a1a52938cb9
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User#!/usr/bin/perl
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User#
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# Copyright (C) 2013, 2014 Internet Systems Consortium, Inc. ("ISC")
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User#
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# Permission to use, copy, modify, and/or distribute this software for any
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# purpose with or without fee is hereby granted, provided that the above
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# copyright notice and this permission notice appear in all copies.
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User#
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# PERFORMANCE OF THIS SOFTWARE.
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# $Id$
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# Configure
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User#
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User# This script builds nmake and visual studio build files
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User#
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userrequire 5.000;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntuse strict;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntuse File::Spec;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# files to configure
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $configfilein = "..\\config.h.win32";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $configfileout = ">..\\config.h";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $platformfile = "..\\lib\\isc\\win32\\include\\isc\\platform.h";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy @filelist = ("..\\bin\\check\\win32\\checktool.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\check\\win32\\checkconf.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\check\\win32\\checkconf.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\check\\win32\\checkzone.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\check\\win32\\checkzone.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\confgen\\win32\\confgentool.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\confgen\\win32\\ddnsconfgen.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\confgen\\win32\\ddnsconfgen.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\confgen\\win32\\rndcconfgen.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\confgen\\win32\\rndcconfgen.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dig\\win32\\dig.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dig\\win32\\dig.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dig\\win32\\dighost.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dig\\win32\\host.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dig\\win32\\host.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dig\\win32\\nslookup.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dig\\win32\\nslookup.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dnssec\\win32\\dnssectool.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\dsfromkey.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dnssec\\win32\\dsfromkey.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\importkey.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\importkey.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\keyfromlabel.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dnssec\\win32\\keyfromlabel.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\keygen.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\keygen.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\revoke.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dnssec\\win32\\revoke.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\settime.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dnssec\\win32\\settime.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\signzone.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\signzone.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\verify.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dnssec\\win32\\verify.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\named\\win32\\named.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\named\\win32\\named.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\nsupdate\\win32\\nsupdate.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\nsupdate\\win32\\nsupdate.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\pkcs11\\win32\\pk11destroy.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\pkcs11\\win32\\pk11destroy.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\pkcs11\\win32\\pk11keygen.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\pkcs11\\win32\\pk11keygen.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\pkcs11\\win32\\pk11list.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\pkcs11\\win32\\pk11list.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\pkcs11\\win32\\pk11tokens.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\pkcs11\\win32\\pk11tokens.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\python\\dnssec-checkds.py",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\python\\dnssec-coverage.py",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\rndc\\win32\\rndc.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\rndc\\win32\\rndc.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\rndc\\win32\\rndcutil.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\arpaname.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\arpaname.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\genrandom.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\genrandom.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\ischmacfixup.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\ischmacfixup.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\journalprint.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\journalprint.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\nsec3hash.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\nsec3hash.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\rrchecker.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\rrchecker.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\atomic\\win32\\t_atomic.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\atomic\\win32\\t_atomic.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\db\\win32\\t_db.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\db\\win32\\t_db.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\dst\\win32\\t_dst.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\dst\\win32\\t_dst.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\master\\win32\\t_master.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\master\\win32\\t_master.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\mem\\win32\\t_mem.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\mem\\win32\\t_mem.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\hashes\\win32\\t_hashes.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\hashes\\win32\\t_hashes.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\names\\win32\\t_names.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\names\\win32\\t_names.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\rbt\\win32\\t_rbt.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\rbt\\win32\\t_rbt.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\resolver\\win32\\t_resolver.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\resolver\\win32\\t_resolver.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\tasks\\win32\\t_tasks.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\tasks\\win32\\t_tasks.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\timers\\win32\\t_timers.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\timers\\win32\\t_timers.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\backtrace_test.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\backtrace_test.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\inter_test.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\inter_test.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\rwlock_test.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\rwlock_test.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\shutdown_test.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\shutdown_test.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\sock_test.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\sock_test.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\task_test.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\task_test.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\timer_test.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\timer_test.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\inter_test.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\inter_test.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\rwlock_test.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\rwlock_test.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\shutdown_test.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\shutdown_test.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\sock_test.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\sock_test.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\task_test.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\task_test.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\timer_test.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\timer_test.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\win32\\BINDInstall\\BINDInstall.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\win32\\BINDInstall\\BINDInstall.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\bind9\\win32\\libbind9.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\bind9\\win32\\libbind9.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\dns\\win32\\gen.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\dns\\win32\\gen.mak",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\lib\\dns\\win32\\libdns.def",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\dns\\win32\\libdns.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\dns\\win32\\libdns.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\isc\\win32\\libisc.def",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\isc\\win32\\libisc.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\isc\\win32\\libisc.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\isc\\win32\\mklib.bat",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\isccc\\win32\\libisccc.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\lib\\isccc\\win32\\libisccc.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\isccfg\\win32\\libisccfg.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\isccfg\\win32\\libisccfg.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\iscpk11\\win32\\libiscpk11.def",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\iscpk11\\win32\\libiscpk11.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\iscpk11\\win32\\libiscpk11.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\lwres\\win32\\liblwres.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\lib\\lwres\\win32\\liblwres.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\tests\\win32\\libtests.dsp",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\lib\\tests\\win32\\libtests.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\win32\\bindevt\\bindevt.dsp",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\win32\\bindevt\\bindevt.mak",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "legacy\\BINDBuild.dsw",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "legacy\\BuildAll.bat",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "legacy\\BuildPost.bat",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "legacy\\BuildSetup.bat");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy @projectlist = ("..\\bin\\check\\win32\\checkconf.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\check\\win32\\checkconf.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\check\\win32\\checktool.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\check\\win32\\checktool.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\check\\win32\\checkzone.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\check\\win32\\checkzone.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\confgen\\win32\\confgentool.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\confgen\\win32\\confgentool.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\confgen\\win32\\ddnsconfgen.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\confgen\\win32\\ddnsconfgen.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\confgen\\win32\\rndcconfgen.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\confgen\\win32\\rndcconfgen.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dig\\win32\\dig.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dig\\win32\\dig.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dig\\win32\\dighost.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dig\\win32\\dighost.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dig\\win32\\host.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dig\\win32\\host.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dig\\win32\\nslookup.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dig\\win32\\nslookup.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\dnssectool.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\dnssectool.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dnssec\\win32\\dsfromkey.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\dsfromkey.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dnssec\\win32\\importkey.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\importkey.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\keyfromlabel.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\keyfromlabel.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\keygen.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\keygen.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dnssec\\win32\\revoke.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\revoke.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\settime.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\settime.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\signzone.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\signzone.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\dnssec\\win32\\verify.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\dnssec\\win32\\verify.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\named\\win32\\named.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\named\\win32\\named.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\nsupdate\\win32\\nsupdate.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\nsupdate\\win32\\nsupdate.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\pkcs11\\win32\\pk11destroy.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\pkcs11\\win32\\pk11destroy.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\pkcs11\\win32\\pk11keygen.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\pkcs11\\win32\\pk11keygen.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\pkcs11\\win32\\pk11list.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\pkcs11\\win32\\pk11list.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\pkcs11\\win32\\pk11tokens.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\pkcs11\\win32\\pk11tokens.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\rndc\\win32\\rndc.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\rndc\\win32\\rndc.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\rndc\\win32\\rndcutil.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\rndc\\win32\\rndcutil.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tools\\win32\\arpaname.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\arpaname.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tools\\win32\\genrandom.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tools\\win32\\genrandom.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tools\\win32\\ischmacfixup.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\ischmacfixup.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\journalprint.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\journalprint.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\nsec3hash.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\nsec3hash.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\rrchecker.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tools\\win32\\rrchecker.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\atomic\\win32\\t_atomic.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\atomic\\win32\\t_atomic.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\db\\win32\\t_db.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\db\\win32\\t_db.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\dst\\win32\\t_dst.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\dst\\win32\\t_dst.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\master\\win32\\t_master.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\master\\win32\\t_master.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\mem\\win32\\t_mem.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\mem\\win32\\t_mem.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\hashes\\win32\\t_hashes.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\hashes\\win32\\t_hashes.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\names\\win32\\t_names.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\names\\win32\\t_names.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\rbt\\win32\\t_rbt.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\rbt\\win32\\t_rbt.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\resolver\\win32\\t_resolver.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\resolver\\win32\\t_resolver.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\tasks\\win32\\t_tasks.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\tasks\\win32\\t_tasks.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\timers\\win32\\t_timers.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\timers\\win32\\t_timers.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\backtrace_test.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\backtrace_test.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\inter_test.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\inter_test.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\rwlock_test.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\rwlock_test.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\shutdown_test.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\shutdown_test.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\sock_test.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\sock_test.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\task_test.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\task_test.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\timer_test.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\timer_test.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\inter_test.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\inter_test.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\rwlock_test.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\rwlock_test.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\shutdown_test.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\shutdown_test.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\sock_test.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\sock_test.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\task_test.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\task_test.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\tests\\win32\\timer_test.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\tests\\win32\\timer_test.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\bin\\win32\\BINDInstall\\BINDInstall.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\bin\\win32\\BINDInstall\\BINDInstall.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\lib\\bind9\\win32\\libbind9.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\bind9\\win32\\libbind9.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\dns\\win32\\gen.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\lib\\dns\\win32\\gen.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\lib\\dns\\win32\\libdns.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\dns\\win32\\libdns.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\isc\\win32\\libisc.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\lib\\isc\\win32\\libisc.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\lib\\isccc\\win32\\libisccc.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\isccc\\win32\\libisccc.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\isccfg\\win32\\libisccfg.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\isccfg\\win32\\libisccfg.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\lib\\iscpk11\\win32\\libiscpk11.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\lib\\iscpk11\\win32\\libiscpk11.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\lwres\\win32\\liblwres.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\lwres\\win32\\liblwres.vcxproj.filters",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\lib\\tests\\win32\\libtests.vcxproj",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "..\\lib\\tests\\win32\\libtests.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\win32\\bindevt\\bindevt.vcxproj",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "..\\lib\\win32\\bindevt\\bindevt.vcxproj.filters",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "bind9.sln");
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# for config.h
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy %configdefh;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy @substdefh = ("ALLOW_FILTER_AAAA",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "CONFIGARGS",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "DNS_RDATASET_FIXED",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "ENABLE_RPZ_NSDNAME",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "ENABLE_RPZ_NSIP",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "HAVE_EVP_SHA256",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "HAVE_EVP_SHA384",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "HAVE_EVP_SHA512",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "HAVE_GEOIP",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "HAVE_GEOIP_V6",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "HAVE_GEOIP_CITY_V6",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "HAVE_LIBXML2",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "HAVE_OPENSSL_DSA",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "HAVE_OPENSSL_ECDSA",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "HAVE_OPENSSL_GOST",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "HAVE_PKCS11_ECDSA",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "HAVE_PKCS11_GOST",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "HAVE_READLINE",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "ISC_LIST_CHECKINIT",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "WITH_IDN");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# for platform.h
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy %configdefp;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy @substdefp = ("ISC_PLATFORM_HAVEATOMICSTORE",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "ISC_PLATFORM_HAVECMPXCHG",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "ISC_PLATFORM_HAVEXADD",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "ISC_PLATFORM_HAVEXADDQ",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "ISC_PLATFORM_NEEDSTRCASESTR",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "ISC_PLATFORM_OPENSSLHASH",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "ISC_PLATFORM_USEBACKTRACE");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# includes
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy %configinc;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy @substinc = ("GSSAPI_INC",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "GEOIP_INC",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "IDN_INC",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "LIBXML2_INC",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "OPENSSL_INC",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "READLINE_INC");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# libraries
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy %configlib;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy @substlib = ("GSSAPI_LIB",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "GEOIP_LIB",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "IDN_LIB",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "KRB5_LIB",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "LIBXML2_LIB",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "OPENSSL_LIB",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "READLINE_LIB",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "READLINE_LIBD");
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# DLLs
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy %configdll;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy @substdll = ("COMERR_DLL",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "GSSAPI_DLL",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "GEOIP_DLL",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "ICONV_DLL",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "IDN_DLL",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "KRB5_DLL",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "K5SPRT_DLL",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "LIBXML2_DLL",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "OPENSSL_DLL",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "WSHELP_DLL");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# variables
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy %configvar;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy @substvar = ("BUILD_MACHINE",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "BUILD_PLATFORM",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "COPTI",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "COPTML",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "COPTMLD",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "COPTX",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "COPTY",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "INTRINSIC",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "MACHINE",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "OPENSSL_PATH",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "PLATFORM",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "PKCS11_TOOLS",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "prefix",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "PYTHON",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "VCREDIST_PATH"),
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# defines
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy %configdefd;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy @substdefd = ("CRYPTO",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "PK11_LIB_LOCATION",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "USE_GSSAPI",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "USE_PKCS11",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "USE_PYTHON",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "USE_ISC_SPNEGO");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# conditions
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy %configcond;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy @substcond = ("ATOMIC",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "GSSAPI",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "GEOIP",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "IDNKIT",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "LIBXML2",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "OPENSSL",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "PKCS11",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "PYTHON",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "TESTS",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "XTESTS");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# arguments
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# enable-xxx/disable-xxx
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy @enablelist = ("developer",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "fixed-rrset",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "intrinsics",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "isc-spnego",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "native-pkcs11",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "openssl-hash",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "filter-aaaa",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "rpz-nsdname",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "rpz-nsip");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# with-xxx/without-xxx
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy @withlist = ("cross-compile",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "ecdsa",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "extra-tests",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "gssapi",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "geoip",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "gost",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "iconv",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "idn",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "openssl",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "libxml2",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "pkcs11",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "python",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "readline",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "tests",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "vcredist");
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# general arguments
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy @optionlist = ("help", "verbose", "legacy", "win32", "x64", "clean");
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# usage
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy @usage = ("Usage: perl Configure help\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt " perl Configure options* win32|x64\n",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User " perl Configure clean\n");
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# help
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy @help = (
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt"'Configure' configures BIND9 build files.\n\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt@usage,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt"\nGeneral Options and Commands:\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" verbose (options) print messages\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" help (command) print this help\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" legacy (options) process only files for legacy build\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" win32 (command) configure for Win32 platform\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" x64 (command) configure for x64 platform\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" clean (command) clean up generated files\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" <none> (command) print a summary of the configuration\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt"\nOptional Features:\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" enable-intrinsics enable instrinsic/atomic functions [default=yes]\n",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User" enable-native-pkcs11 use native PKCS#11 for all crypto [default=no]\n",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User" enable-openssl-hash use OpenSSL for hash functions [default=no]\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" enable-isc-spnego use SPNEGO from lib/dns [default=yes]\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" enable-filter-aaaa enable filtering of AAAA records [default=no]\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" enable-fixed-rrset enable fixed rrset ordering [default=no]\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" enable-developer enable developer build settings [default=no]\n",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User" enable-rpz-nsip enable rpz-nsip rules [default=yes]\n",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User" enable-rpz-nsdname enable rpz-nsdname rules [default=yes]\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt"\nOptional Packages:\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" with-tests build with test suite\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" with-extra-tests build with extra test suite\n",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User" with-openssl[=PATH] build with OpenSSL yes|no|path\n",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User" with-pkcs11[=PATH] build with PKCS#11 support yes|no|provider-path\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" with-ecdsa crypto ECDSA\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" with-gost crypto GOST\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" with-gssapi[=PATH] build with MIT KfW GSSAPI yes|no|path\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" with-libxml2[=PATH] build with libxml2 library yes|no|path\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" with-geoip[=PATH] build with GeoIP support yes|no|path\n",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User" with-python[=COMMAND] specify python interpreter python|command\n",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User" with-readline[=PATH] build with readline library support yes|no|path\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" with-idn[=PATH] build with IDN kit support yes|no|path\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" with-iconv[=PATH] path of the iconv DLL [default=same than idn]\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" with-vcredist[=PATH] visual C++ redistributable package yes|path\n",
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt" with-cross-compile 32 / 64 bit build / host plaforms\n");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# Parse arguments
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $verbose = 0;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $legacy_only = 0;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $want_help = "no";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $want_win32 = "no";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $want_x64 = "no";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $want_clean = "no";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $want_unknown = "no";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $unknown_value;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $enable_intrinsics = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $enable_native_pkcs11 = "no";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $enable_openssl_hash = "no";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $enable_filter_aaaa = "no";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $enable_isc_spnego = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $enable_fixed_rrset = "no";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $enable_developer = "no";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $enable_rpz_nsip = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $enable_rpz_nsdname = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $use_tests = "no";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $use_xtests = "no";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $use_openssl = "auto";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $openssl_path = "..\\..\\";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $use_pkcs11 = "no";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $pkcs11_path = "unknown";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $use_ecdsa = "auto";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $use_gost = "auto";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $use_gssapi = "no";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $gssapi_path = "C:\\Program\ Files\\MIT\\Kerberos\\";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $use_geoip = "no";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $geoip_path = "";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $use_libxml2 = "auto";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $libxml2_path = "..\\..\\";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $use_python = "auto";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $python_command = "python";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $use_readline = "no";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $readline_path = "..\\..\\";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $use_idn = "no";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $idn_path = "..\\..\\";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $iconv_path = " --idn-- ";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $use_vcredist = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmy $vcredist_path = " --infer-- ";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usermy $cross_compile = "no";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# no arguments -> usage
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userif ($#ARGV < 0) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User foreach (@usage) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt print $_;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt exit 1;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# parse arguments
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntforeach (@ARGV) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (/^verbose$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $verbose = 1;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif (/^help$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $want_help = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif (/^disable-(.*)$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt appargs($_);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt myenable($1, "no");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif (/^enable-(.*)$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt appargs($_);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt myenable($1, "yes");
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User } elsif (/^without-(.*)$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User appargs($_);
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User mywith($1, "no");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif (/^with-(.*)=(.*)$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt appargs($_);
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User mywith($1, $2);
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User } elsif (/^with-(.*)$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt appargs($_);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt mywith($1, "yes");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif (/^legacy$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $legacy_only = 1;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif (/^win32$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $want_win32 = "yes";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User } elsif (/^x64$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt appargs($_);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $want_x64 = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif (/^clean$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $want_clean = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } else {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $want_unknown = "yes";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $unknown_value = $_;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# legacy default to win32
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userif ($legacy_only && ($want_x64 ne "yes")) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $want_win32 = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# configure the platform
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntif (($want_win32 eq "yes") && ($want_x64 eq "yes")) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User die "can't ask for both Win32 and x64 platforms\n";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User} elsif ($want_win32 eq "yes") {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $configvar{"PLATFORM"} = "Win32";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $configvar{"BUILD_PLATFORM"} = "Win32";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $configvar{"MACHINE"} = "/machine:X86";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $configvar{"BUILD_MACHINE"} = "/machine:X86";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt} elsif ($want_x64 eq "yes") {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $configvar{"PLATFORM"} = "x64";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $configvar{"BUILD_PLATFORM"} = "x64";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $configvar{"MACHINE"} = "/machine:X64";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $configvar{"BUILD_MACHINE"} = "/machine:X64";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# append seen args to CONFIGARGS define
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usersub appargs {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt my $arg = $_[0];
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt # escape backslashes, spaces and double quotes
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $arg =~ s/([\\ "])/\\$1/g;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User if (defined($configdefh{"CONFIGARGS"})) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $configdefh{"CONFIGARGS"} .= " " . $arg;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } else {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $configdefh{"CONFIGARGS"} = $arg;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userif (!$configdefh{"CONFIGARGS"}) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User # CONFIGARGS default is "default"
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $configdefh{"CONFIGARGS"} = "\"default\"";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt} else {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User my $val = $configdefh{"CONFIGARGS"};
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $configdefh{"CONFIGARGS"} = "\"'$val'\"";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# parse enable/disable
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usersub myenable {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt my $key = $_[0];
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt my $val = $_[1];
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User if ($key =~ /^intrinsics$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ($val =~ /^no$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $enable_intrinsics = "no";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User }
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User } elsif ($key =~ /^native-pkcs11$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ($val =~ /^yes$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $enable_native_pkcs11 = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User } elsif ($key =~ /^openssl-hash$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User if ($val =~ /^yes$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $enable_openssl_hash = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif ($key =~ /^isc-spnego$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User if ($val =~ /^no$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $enable_isc_spnego = "no";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif ($key =~ /^filter-aaaa$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User if ($val =~ /^yes$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $enable_filter_aaaa = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif ($key =~ /^fixed-rrset$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User if ($val =~ /^yes$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $enable_fixed_rrset = "yes";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif ($key =~ /^developer$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ($val =~ /^yes$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $enable_developer = "yes";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif ($key =~ /^rpz-nsip$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ($val =~ /^no$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $enable_rpz_nsip = "no";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif ($key =~ /^rpz-nsdname$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ($val =~ /^no$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $enable_rpz_nsdname = "no";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } else {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $want_unknown = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ($val eq "no") {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $unknown_value = "disable-" . $key;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User } else {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $unknown_value = "enable-". $key;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# enable-developer expansion now
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntif ($enable_developer eq "yes") {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $configdefh{"ISC_LIST_CHECKINIT"} = 1;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $enable_filter_aaaa = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt # no atf on WIN32
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $enable_fixed_rrset = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt # TODO: dlz filesystem
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $use_tests = "yes";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User}
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# parse with/without
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntsub mywith {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User my $key = $_[0];
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt my $val = $_[1];
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ($key =~ /^tests$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User if ($val =~ /^yes$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $use_tests = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif ($key =~ /^extra-tests$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User if ($val =~ /^yes$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $use_tests = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $use_xtests = "yes";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif ($key =~ /^openssl$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User if ($val =~ /^no$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $use_openssl = "no";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif ($val !~ /^yes$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $use_openssl = "yes";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $openssl_path = $val;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif ($key =~ /^pkcs11$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ($val =~ /^yes$/i) {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $use_pkcs11 = "yes";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt } elsif ($val !~ /^no$/i) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt $use_pkcs11= "yes";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $pkcs11_path = $val;
1c57c3f79db0bf0358bbe6d7b5ad650c0c852f4bTinderbox User $pkcs11_path =~ s/\.dll$//i;
}
} elsif ($key =~ /^ecdsa$/i) {
if ($val =~ /^no$/i) {
$use_ecdsa = "no";
} elsif ($val =~ /^yes$/i) {
$use_ecdsa = "yes";
}
} elsif ($key =~ /^gost$/i) {
if ($val =~ /^no$/i) {
$use_gost = "no";
} elsif ($val =~ /^yes$/i) {
$use_gost = "yes";
}
} elsif ($key =~ /^gssapi$/i) {
if ($val !~ /^no$/i) {
$use_gssapi = "yes";
if ($val !~ /^yes$/i) {
$gssapi_path = $val;
}
}
} elsif ($key =~ /^libxml2$/i) {
if ($val =~ /^no$/i) {
$use_libxml2 = "no";
} elsif ($val !~ /^yes$/i) {
$use_libxml2 = "yes";
$libxml2_path = $val;
}
} elsif ($key =~ /^geoip$/i) {
if ($val !~ /^no$/i) {
$use_geoip = "yes";
if ($val !~ /^yes$/i) {
$geoip_path = $val;
}
}
} elsif ($key =~ /^readline$/i) {
if ($val !~ /^no$/i) {
$use_readline = "yes";
if ($val !~ /^yes$/i) {
$readline_path = $val;
}
}
} elsif ($key =~ /^idn$/i) {
if ($val !~ /^no$/i) {
$use_idn = "yes";
if ($val !~ /^yes$/i) {
$idn_path = $val;
}
}
} elsif ($key =~ /^iconv$/i) {
if ($val =~ /^no$/i) {
$want_unknown = "yes";
$unknown_value = "without-iconv doesn't make sense)";
} elsif ($val !~ /^yes$/i) {
$iconv_path = $val;
}
} elsif ($key =~ /^python$/i) {
if ($val =~ /^no$/i) {
$use_python = "no";
} else {
$use_python = "yes";
if ($val !~ /^yes$/i) {
$python_command = $val;
}
}
} elsif ($key =~ /^vcredist$/i) {
if ($val =~ /^no$/i) {
$want_unknown = "yes";
$unknown_value = "without-vcredist (vcredist is required)";
} elsif ($val !~ /^yes$/i) {
$vcredist_path = $val;
}
} elsif ($key =~ /^cross-compile$/i) {
if ($val =~ /^yes$/i) {
$cross_compile = "yes";
}
} else {
$want_unknown = "yes";
if ($val eq "no") {
$unknown_value = "without-" . $key;
} else {
$unknown_value = "with-" . $key;
}
}
}
if ($want_help ne "no") {
foreach (@help) {
print $_;
}
exit 1;
}
# clean up and exit if requested
if ($want_clean eq "yes") {
my $file;
foreach $file (@filelist) {
unlink($file);
}
foreach $file (@projectlist) {
unlink($file);
}
exit 0;
}
if ($want_unknown ne "no") {
print STDERR "can't parse $unknown_value\n";
exit 1;
}
if ($verbose) {
if ($want_win32 eq "yes") {
print "configure for win32\n";
}
if ($want_x64 eq "yes") {
print "configure for x64\n";
}
if ($cross_compile eq "yes") {
print "cross compiling";
if ($want_x64 eq "yes") {
print ": build on win32 for x64 host\n";
} elsif ($want_win32 eq "yes") {
print ": build on x64 for win32 host\n";
} else {
print "\n";
}
}
if ($enable_intrinsics eq "yes") {
print "intrinsics: enabled\n";
} else {
print "intrinsics: disabled\n";
}
if ($enable_native_pkcs11 eq "yes") {
print "native-pkcs11: enabled\n";
} else {
print "native-pkcs11: disabled\n";
}
if ($enable_openssl_hash eq "yes") {
print "openssl-hash: enabled\n";
} else {
print "openssl-hash: disabled\n";
}
if ($enable_isc_spnego eq "yes") {
print "isc-spnego: enabled\n";
} else {
print "isc-spnego: disabled\n";
}
if ($enable_filter_aaaa eq "yes") {
print "filter-aaaa: enabled\n";
} else {
print "filter-aaaa: disabled\n";
}
if ($enable_fixed_rrset eq "yes") {
print "fixed-rrset: enabled\n";
} else {
print "fixed-rrset: disabled\n";
}
if ($enable_developer eq "yes") {
print "developer: enabled\n";
} else {
print "developer: disabled\n";
}
if ($enable_rpz_nsip eq "yes") {
print "rpz-nsip: enabled\n";
} else {
print "rpz-nsip: disabled\n";
}
if ($enable_rpz_nsdname eq "yes") {
print "rpz-nsdname: enabled\n";
} else {
print "rpz-nsdname: disabled\n";
}
if ($use_openssl eq "no") {
print "openssl: disabled\n";
} else {
print "openssl-path: $openssl_path\n";
}
if ($use_tests eq "yes") {
print "tests: enabled\n";
}
if ($use_xtests eq "yes") {
print "extra tests: enabled\n";
}
if ($use_pkcs11 eq "no") {
print "pkcs11: disabled\n";
} else {
print "pkcs11-provider-path: $pkcs11_path\n";
}
if ($use_ecdsa eq "no") {
print "ecdsa: disabled\n";
} else {
print "ecdsa: enabled\n";
}
if ($use_gost eq "no") {
print "gost: disabled\n";
} else {
print "gost: enabled\n";
}
if ($use_gssapi eq "no") {
print "gssapi: disabled\n";
} else {
print "gssapi-path: $gssapi_path\n";
}
if ($use_libxml2 eq "no") {
print "libxml2: disabled\n";
} else {
print "libxml2-path: $libxml2_path\n";
}
if ($use_geoip eq "no") {
print "geoip: disabled\n";
} else {
print "geoip-path: $geoip_path\n";
}
if ($use_readline eq "no") {
print "readline: disabled\n";
} else {
print "readline-path: $readline_path\n";
}
if ($use_idn eq "no") {
print "idn: disabled\n";
} else {
print "idn-path: $idn_path\n";
if ($iconv_path ne " --idn-- ") {
print "iconv-path: $iconv_path\n";
}
}
if ($use_python eq "no") {
print "python: disabled\n";
} else {
print "python-command: $python_command\n";
}
print "vcredist-path: $vcredist_path\n";
}
# Check environment
# infer vcredist when not given
if ($vcredist_path eq " --infer-- ") {
if ($verbose) {
print "trying to infer vcredist path from build environment\n";
}
if ($ENV{"VCRedistPath"} ne "") {
$vcredist_path = $ENV{"VCRedistPath"};
} elsif ($ENV{"FrameworkSDKDir"} ne "") {
if (($want_win32 eq "yes") &&
(-f File::Spec->catfile($ENV{"FrameworkSDKDir"},
"BootStrapper", "Packages",
"vcredist_x86", "vcredist_x86.exe"))) {
$vcredist_path = File::Spec->catfile($ENV{"FrameworkSDKDir"},
"BootStrapper",
"Packages",
"vcredist_x86",
"vcredist_x86.exe");
} elsif (($want_x64 eq "yes") &&
(-f File::Spec->catfile($ENV{"FrameworkSDKDir"},
"BootStrapper", "Packages",
"vcredist_x64",
"vcredist_x64.exe"))) {
$vcredist_path = File::Spec->catfile($ENV{"FrameworkSDKDir"},
"BootStrapper",
"Packages",
"vcredist_x64",
"vcredist_x64.exe");
}
} elsif ($ENV{"VCINSTALLDIR"} ne "") {
if (($want_win32 eq "yes") &&
(-f File::Spec->catfile($ENV{"VCINSTALLDIR"}, "redist",
"1033", "vcredist_x86.exe"))) {
$vcredist_path = File::Spec->catfile($ENV{"VCINSTALLDIR"},
"redist", "1033",
"vcredist_x86.exe");
} elsif (($want_x64 eq "yes") &&
(-f File::Spec->catfile($ENV{"VCINSTALLDIR"}, "redist",
"1033", "vcredist_x64.exe"))) {
$vcredist_path = File::Spec->catfile($ENV{"VCINSTALLDIR"},
"redist", "1033",
"vcredist_x64.exe");
}
} else {
die "with-vcredist is REQUIRED\n";
}
}
my $msc_ver = 0;
open F, ">mscver.c" || die $!;
print F << 'EOF';
#include <windows.h>
#include <stdio.h>
int
main(void)
{
printf("%d\n", _MSC_VER);
return(0);
}
EOF
close F;
my $compret = `cl /nologo /MD mscver.c`;
if (grep { -f and -x } ".\\mscver.exe") {
$msc_ver = `.\\mscver.exe`;
} else {
die "can't get _MSC_VER value: $compret\n";
}
if ($verbose) {
print "_MSV_VER == $msc_ver\n";
}
if ($msc_ver < 1600) {
print STDERR "warning: old version of C++ compiler/Visual Studio\n";
print STDERR "only the legacy (cf legacy\\win32-build.txt) will work\n";
}
# gen single threaded for < VS 2005
if ($msc_ver < 1400) {
$configvar{"COPTML"} = "/ML";
$configvar{"COPTMLD"} = "/MLD";
}
# /GX deprecated in VS 2005
if ($msc_ver < 1400) {
$configvar{"COPTX"} = "/GX";
} else {
$configvar{"COPTX"} = "/EHsc";
}
# /YX for < VS 2005
if ($msc_ver < 1400) {
$configvar{"COPTY"} = "/YX";
}
# backtrace for >= VS 2012
if ($msc_ver >= 1700) {
$configdefp{"ISC_PLATFORM_USEBACKTRACE"} = 1;
}
# no version of MSVS supports strcasestr() yet
$configdefp{"ISC_PLATFORM_NEEDSTRCASESTR"} = 1;
# warn when cross compiling
if ($cross_compile eq "yes") {
if ($want_x64 eq "yes") {
$configvar{"BUILD_PLATFORM"} = "Win32";
$configvar{"BUILD_MACHINE"} = "/machine:X86";
}
if ($want_win32 eq "yes") {
$configvar{"BUILD_PLATFORM"} = "x64";
$configvar{"BUILD_MACHINE"} = "/machine:X64";
}
} elsif ($want_win32 eq "yes") {
open F, ">cross.c" || die $!;
print F << 'EOF';
#include <windows.h>
#include <stdio.h>
int
main(void)
{
#ifdef _WIN64
fprintf(stderr, "compiling for x64 when win32 was asked?!\n");
#endif
return(0);
}
EOF
close F;
my $compret = `cl /nologo /MD cross.c`;
if (grep { -f and -x } ".\\cross.exe") {
my $cross = `.\\cross.exe`;
if ($cross) {
print STDERR $cross;
}
} else {
print STDERR "can't check cross compile: $compret\n";
}
} else {
open F, ">cross.c" || die $!;
print F << 'EOF';
#include <windows.h>
#include <stdio.h>
int
main(void)
{
#ifndef _WIN64
fprintf(stderr, "compiling in 32 bits when x64 was asked?!\n");
#endif
return(0);
}
EOF
close F;
my $compret = `cl /nologo /MD cross.c`;
if (grep { -f and -x } ".\\cross.exe") {
my $cross = `.\\cross.exe`;
if ($cross) {
print STDERR $cross;
}
} else {
print STDERR "can't check cross compile: $compret\n";
}
}
# Process arguments
# enable-intrinsics
if ($enable_intrinsics eq "yes") {
$configcond{"ATOMIC"} = 1;
$configvar{"INTRINSIC"} = "true";
$configvar{"COPTI"} = "/Oi";
$configdefp{"ISC_PLATFORM_HAVEXADD"} = 1;
if ($want_x64 eq "yes") {
$configdefp{"ISC_PLATFORM_HAVEXADDQ"} = 1;
}
$configdefp{"ISC_PLATFORM_HAVEATOMICSTORE"} = 1;
$configdefp{"ISC_PLATFORM_HAVECMPXCHG"} = 1;
} else {
$configvar{"INTRINSIC"} = "false";
}
# enable-native-pkcs11
if ($enable_native_pkcs11 eq "yes") {
if ($use_openssl eq "auto") {
$use_openssl = "no";
}
if ($use_openssl ne "no") {
die "can't have both OpenSSL and native PKCS#11\n";
}
if ($use_pkcs11 ne "yes") {
if ($verbose) {
print "native PKCS#11 support: force with-pkcs11\n";
}
$use_pkcs11 = "yes";
}
if ($pkcs11_path eq "unknown") {
if ($verbose) {
print "native PKCS#11 support: no PKCS#11 provider defined?\n";
}
}
$configdefd{"CRYPTO"} = "PKCS11CRYPTO";
if ($use_ecdsa eq "no") {
if ($verbose) {
print "no ECDSA support in native PKCS#11\n";
}
} else {
if ($verbose) {
print "enabled ECDSA support in native PKCS#11\n";
}
$configdefh{"HAVE_PKCS11_ECDSA"} = 1;
}
if ($use_gost eq "no") {
if ($verbose) {
print "no GOST support in native PKCS#11\n";
}
} else {
if ($verbose) {
print "enabled GOST support in native PKCS#11\n";
}
$configdefh{"HAVE_PKCS11_GOST"} = 1;
}
}
# enable-filter-aaaa
if ($enable_filter_aaaa eq "yes") {
$configdefh{"ALLOW_FILTER_AAAA"} = 1;
}
# enable-fixed-rrset
if ($enable_fixed_rrset eq "yes") {
$configdefh{"DNS_RDATASET_FIXED"} = 1;
}
# enable-rpz-nsip
if ($enable_rpz_nsip ne "no") {
$configdefh{"ENABLE_RPZ_NSIP"} = 1;
}
# enable-rpz-nsdname
if ($enable_rpz_nsdname ne "no") {
$configdefh{"ENABLE_RPZ_NSDNAME"} = 1;
}
# with-tests
if ($use_tests eq "yes") {
$configcond{"TESTS"} = 1;
}
# with-extra-tests
if ($use_xtests eq "yes") {
$configcond{"XTESTS"} = 1;
}
# with-openssl
if ($use_openssl eq "no") {
if ($verbose) {
print "OpenSSL library is disabled\n";
}
} elsif ($use_openssl eq "auto") {
if ($verbose) {
print "checking for an OpenSSL built directory at sibling root\n";
}
opendir DIR, $openssl_path || die "No Directory: $!\n";
my @dirlist = grep (/^openssl-[0-9]+\.[0-9]+\.[0-9]+[a-z]{0,1}$/i,
readdir(DIR));
closedir(DIR);
# Make sure we have something
if (scalar(@dirlist) == 0) {
die "can't find an OpenSSL at sibling root\n";
}
# Now see if we have a directory or just a file.
# Make sure we are case insensitive
my $file;
foreach $file (sort {uc($b) cmp uc($a)} @dirlist) {
if (-f File::Spec->catfile($openssl_path,
$file,
"inc32\\openssl",
"opensslv.h")) {
$openssl_path = File::Spec->catdir($openssl_path, $file);
$use_openssl = "yes";
last;
}
}
# If we have one use it otherwise report the error
if ($use_openssl eq "auto") {
die "can't find an OpenSSL built directory at sibling root\n";
}
}
# falls into (so no else)
if ($use_openssl eq "yes") {
$openssl_path = File::Spec->rel2abs($openssl_path);
if ($verbose) {
print "checking for OpenSSL built directory at \"$openssl_path\"\n";
}
if (!-f File::Spec->catfile($openssl_path,
"inc32\\openssl",
"opensslv.h")) {
die "can't find OpenSSL opensslv.h include\n";
}
if (!-f File::Spec->catfile($openssl_path, "out32dll", "libeay32.lib")) {
die "can't find OpenSSL libeay32.lib library\n";
}
if (!-f File::Spec->catfile($openssl_path, "out32dll", "libeay32.dll")) {
die "can't find OpenSSL libeay32.dll DLL\n";
}
my $openssl_inc = File::Spec->catdir($openssl_path, "inc32");
my $openssl_libdir = File::Spec->catdir($openssl_path, "out32dll");
my $openssl_lib = File::Spec->catfile($openssl_libdir, "libeay32.lib");
my $openssl_dll = File::Spec->catfile($openssl_libdir, "libeay32.dll");
$configcond{"OPENSSL"} = 1;
$configdefd{"CRYPTO"} = "OPENSSL";
$configvar{"OPENSSL_PATH"} = "$openssl_path";
$configinc{"OPENSSL_INC"} = "$openssl_inc";
$configlib{"OPENSSL_LIB"} = "$openssl_lib";
$configdll{"OPENSSL_DLL"} = "$openssl_dll";
if (-f File::Spec->catfile($openssl_inc, "openssl", "dsa.h")) {
$configdefh{"HAVE_OPENSSL_DSA"} = 1;
} elsif ($verbose) {
print "OpenSSL DSA support is disabled\n";
}
}
# check OpenSSL
if ($use_openssl eq "yes") {
if ($verbose) {
print "checking whether linking with OpenSSL works\n";
}
my $dll = $configdll{"OPENSSL_DLL"};
my $ret = `copy "$dll" .`;
if ($? != 0) {
die "Can't copy OpenSSL DLL to working directory: $ret\n";
}
open F, ">testossl.c" || die $!;
print F << 'EOF';
#include <openssl/err.h>
int
main(void)
{
ERR_clear_error();
return(0);
}
EOF
close F;
my $include = $configinc{"OPENSSL_INC"};
my $library = $configlib{"OPENSSL_LIB"};
$compret = `cl /nologo /MD /I "$include" testossl.c "$library"`;
if (grep { -f and -x } ".\\testossl.exe") {
`.\\testossl.exe`;
if ($? != 0) {
die "OpenSSL test failed\n";
}
} else {
die "can't compile OpenSSL test: $compret\n";
}
}
# check OpenSSL version
if ($use_openssl eq "yes") {
if ($verbose) {
printf "checking OpenSSL library version\n";
}
open F, ">testosslv.c" || die $!;
print F << 'EOF';
#include <stdio.h>
#include <openssl/opensslv.h>
int main() {
if ((OPENSSL_VERSION_NUMBER >= 0x009070cfL &&
OPENSSL_VERSION_NUMBER < 0x00908000L) ||
OPENSSL_VERSION_NUMBER >= 0x0090804fL)
return (0);
printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n",
OPENSSL_VERSION_NUMBER);
printf("Require OPENSSL_VERSION_NUMBER 0x009070cf or greater (0.9.7l)\n"
"Require OPENSSL_VERSION_NUMBER 0x0090804f or greater (0.9.8d)\n\n");
return (1);
}
EOF
close F;
my $include = $configinc{"OPENSSL_INC"};
my $library = $configlib{"OPENSSL_LIB"};
$compret = `cl /nologo /MD /I "$include" testosslv.c "$library"`;
if (grep { -f and -x } ".\\testosslv.exe") {
`.\\testosslv.exe`;
if ($? != 0) {
die "OpenSSL version test failed\n";
}
} else {
die "can't compile OpenSSL version test: $compret\n";
}
}
# check EVP_sha256 / EVP_sha384 / EVP_sha512
if ($use_openssl eq "yes") {
if ($verbose) {
printf "checking for EVP_sha256\n";
}
open F, ">testsha256.c" || die $!;
print F << 'EOF';
extern void *EVP_sha256();
int main() {
return EVP_sha256() != 0;
}
EOF
close F;
my $library = $configlib{"OPENSSL_LIB"};
$compret = `cl /nologo /MD testsha256.c "$library"`;
if (grep { -f and -x } ".\\testsha256.exe") {
`.\\testsha256.exe`;
if ($? == 0) {
if ($verbose) {
print "EVP_sha256 test failed: disabling EVP_sha256\n";
}
$use_ecdsa = "no";
} else {
$configdefh{"HAVE_EVP_SHA256"} = 1;
}
} else {
if ($verbose) {
print "can't compile EVP_sha256 test: $compret\n";
print "disabling EVP_sha256\n";
}
$use_ecdsa = "no";
}
if ($verbose) {
printf "checking for EVP_sha384\n";
}
open F, ">testsha384.c" || die $!;
print F << 'EOF';
extern void *EVP_sha384();
int main() {
return EVP_sha384() != 0;
}
EOF
close F;
$compret = `cl /nologo /MD testsha384.c "$library"`;
if (grep { -f and -x } ".\\testsha384.exe") {
`.\\testsha384.exe`;
if ($? == 0) {
if ($verbose) {
print "EVP_sha384 test failed: disabling EVP_sha384\n";
}
$use_ecdsa = "no";
} else {
$configdefh{"HAVE_EVP_SHA384"} = 1;
}
} else {
if ($verbose) {
print "can't compile EVP_sha384 test: $compret\n";
print "disabling EVP_sha384\n";
}
$use_ecdsa = "no";
}
if ($verbose) {
printf "checking for EVP_sha512\n";
}
open F, ">testsha512.c" || die $!;
print F << 'EOF';
extern void *EVP_sha512();
int main() {
return EVP_sha512() != 0;
}
EOF
close F;
$compret = `cl /nologo /MD testsha512.c "$library"`;
if (grep { -f and -x } ".\\testsha512.exe") {
`.\\testsha512.exe`;
if ($? == 0) {
if ($verbose) {
print "EVP_sha512 test failed: disabling EVP_sha512\n";
}
} else {
$configdefh{"HAVE_EVP_SHA512"} = 1;
}
} else {
if ($verbose) {
print "can't compile EVP_sha512 test: $compret\n";
print "disabling EVP_sha512\n";
}
}
}
# with-ecdsa
if ($use_openssl eq "no") {
$use_ecdsa = "no";
}
if ($use_ecdsa eq "auto") {
if ($verbose) {
print "checking for OpenSSL ECDSA support\n";
}
open F, ">testecdsa.c" || die $!;
print F << 'EOF';
#include <openssl/ecdsa.h>
#include <openssl/objects.h>
int
main(void)
{
EC_KEY *ec256, *ec384;
ec256 = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
ec384 = EC_KEY_new_by_curve_name(NID_secp384r1);
if (ec256 == NULL || ec384 == NULL)
return (2);
return (0);
}
EOF
close F;
my $include = $configinc{"OPENSSL_INC"};
my $library = $configlib{"OPENSSL_LIB"};
$compret = `cl /nologo /MD /I "$include" testecdsa.c "$library"`;
if (grep { -f and -x } ".\\testecdsa.exe") {
`.\\testecdsa.exe`;
if ($? != 0) {
if ($verbose) {
print "ECDSA test failed: disabling ECDSA\n";
}
$use_ecdsa = "no";
}
} else {
if ($verbose) {
print "can't compile ECDSA test: $compret\n";
print "disabling ECDSA\n";
}
$use_ecdsa = "no";
}
}
if ($use_ecdsa ne "no") {
$use_ecdsa = "yes";
$configdefh{"HAVE_OPENSSL_ECDSA"} = 1;
}
# with-gost
if ($use_openssl eq "no") {
$use_gost = "no";
}
if ($use_gost eq "auto") {
if ($verbose) {
print "checking for OpenSSL GOST support\n";
}
open F, ">testgost.c" || die $!;
print F << 'EOF';
#include <openssl/conf.h>
#include <openssl/engine.h>
int
main(void)
{
#if (OPENSSL_VERSION_NUMBER >= 0x10000000L)
ENGINE *e;
EC_KEY *ek;
ek = NULL;
OPENSSL_config(NULL);
e = ENGINE_by_id("gost");
if (e == NULL)
return (1);
if (ENGINE_init(e) <= 0)
return (1);
return (0);
#else
return (1);
#endif
}
EOF
close F;
my $include = $configinc{"OPENSSL_INC"};
my $library = $configlib{"OPENSSL_LIB"};
$compret = `cl /nologo /MD /I "$include" testgost.c "$library"`;
if (grep { -f and -x } ".\\testgost.exe") {
`.\\testgost.exe`;
if ($? != 0) {
if ($verbose) {
print "GOST test failed: disabling GOST\n";
}
$use_gost = "no";
}
} else {
if ($verbose) {
print "can't compile GOST test: $compret\n";
print "disabling GOST\n";
}
$use_gost = "no";
}
}
if ($use_gost ne "no") {
$use_gost = "yes";
$configdefh{"HAVE_OPENSSL_GOST"} = 1;
}
# enable-openssl-hash
if ($enable_openssl_hash eq "yes") {
if ($use_openssl eq "no") {
die "No OpenSSL for hash functions\n";
}
$configdefp{"ISC_PLATFORM_OPENSSLHASH"} = 1;
}
# with-pkcs11
if ($use_pkcs11 ne "no") {
$configcond{"PKCS11"} = 1;
$configdefd{"USE_PKCS11"} = "USE_PKCS11";
$configvar{"PKCS11_TOOLS"} = "pkcs11";
$configdefd{"PK11_LIB_LOCATION"} = "PK11_LIB_LOCATION=\"$pkcs11_path\"";
}
# with-gssapi
if ($use_gssapi eq "no") {
if ($verbose) {
print "gssapi library is disabled\n";
}
} else {
$gssapi_path = File::Spec->rel2abs($gssapi_path);
if ($verbose) {
print "checking for gssapi directory at \"$gssapi_path\"\n";
}
$configcond{"GSSAPI"} = 1;
$configdefd{"USE_GSSAPI"} = "GSSAPI";
if (!-f File::Spec->catfile($gssapi_path, "include",
"gssapi", "gssapi.h")) {
die "can't find gssapi.h include\n";
}
if (!-f File::Spec->catfile($gssapi_path, "include",
"gssapi", "gssapi_krb5.h")) {
die "can't find gssapi_krb5.h include\n";
}
if (!-f File::Spec->catfile($gssapi_path, "include",
"krb5", "krb5.h")) {
die "can't find krb5.h include\n";
}
$configinc{"GSSAPI_INC"} = File::Spec->catdir($gssapi_path, "include");
my $bits = "32";
my $gssapi_lib;
my $krb5_lib;
if ($want_win32 eq "yes") {
$bits = "32";
if (!-f File::Spec->catfile($gssapi_path, "lib", "i386",
"gssapi${bits}.lib")) {
die "can't find gssapi${bits}.lib library\n";
}
$gssapi_lib = File::Spec->catfile($gssapi_path, "lib", "i386",
"gssapi${bits}.lib");
if (!-f File::Spec->catfile($gssapi_path, "lib", "i386",
"krb5_${bits}.lib")) {
die "can't find krb5_${bits}.lib library\n";
}
$krb5_lib = File::Spec->catfile($gssapi_path, "lib", "i386",
"krb5_${bits}.lib");
} elsif ($want_x64 eq "yes") {
$bits = "64";
if (!-f File::Spec->catfile($gssapi_path, "lib", "amd64",
"gssapi${bits}.lib")) {
die "can't find gssapi${bits}.lib library\n";
}
$gssapi_lib = File::Spec->catfile($gssapi_path, "lib", "amd64",
"gssapi${bits}.lib");
if (!-f File::Spec->catfile($gssapi_path, "lib", "amd64",
"krb5_${bits}.lib")) {
die "can't find krb5_${bits}.lib library\n";
}
$krb5_lib = File::Spec->catfile($gssapi_path, "lib", "amd64",
"krb5_${bits}.lib");
} else {
die "can't happen: no choice between Win32 and x64\n";
}
if (!-f File::Spec->catfile($gssapi_path, "bin", "gssapi${bits}.dll")) {
die "can't find gssapi${bits}.dll DLL\n";
}
if (!-f File::Spec->catfile($gssapi_path, "bin", "krb5_${bits}.dll")) {
die "can't find krb5_${bits}.dll DLL\n";
}
if (!-f File::Spec->catfile($gssapi_path, "bin", "comerr${bits}.dll")) {
die "can't find comerr${bits}.dll DLL\n";
}
if (!-f File::Spec->catfile($gssapi_path, "bin", "k5sprt${bits}.dll")) {
die "can't find k5sprt${bits}.dll DLL\n";
}
if (!-f File::Spec->catfile($gssapi_path, "bin", "wshelp${bits}.dll")) {
die "can't find wshelp${bits}.dll DLL\n";
}
$configlib{"GSSAPI_LIB"} = "$gssapi_lib";
$configlib{"KRB5_LIB"} = "$krb5_lib";
my $gssapi_dll = File::Spec->catfile($gssapi_path, "bin",
"gssapi${bits}.dll");
$configdll{"GSSAPI_DLL"} = "$gssapi_dll";
my $krb5_dll = File::Spec->catfile($gssapi_path, "bin",
"krb5_${bits}.dll");
$configdll{"KRB5_DLL"} = "$krb5_dll";
my $comerr_dll = File::Spec->catfile($gssapi_path, "bin",
"comerr${bits}.dll");
$configdll{"COMERR_DLL"} = "$comerr_dll";
my $k5sprt_dll = File::Spec->catfile($gssapi_path, "bin",
"k5sprt${bits}.dll");
$configdll{"K5SPRT_DLL"} = "$k5sprt_dll";
my $wshelp_dll = File::Spec->catfile($gssapi_path, "bin",
"wshelp${bits}.dll");
$configdll{"WSHELP_DLL"} = "$wshelp_dll";
}
# enable-isc-spnego
if ($use_gssapi ne "yes") {
$enable_isc_spnego = "no";
} elsif ($enable_isc_spnego eq "yes") {
if ($use_gssapi eq "no") {
die "No GSSAPI for SPNEGO\n";
}
$configdefd{"USE_ISC_SPNEGO"} = "USE_ISC_SPNEGO";
}
# with-geoip
if ($use_geoip eq "no") {
if ($verbose) {
print "geoip library is disabled\n";
}
} else {
$configcond{"GEOIP"} = 1;
$geoip_path = File::Spec->rel2abs($geoip_path);
if ($verbose) {
print "checking for geoip directory at \"$geoip_path\"\n";
}
if (!-f File::Spec->catfile($geoip_path, "GeoIP.h")) {
die "can't find GeoIP.h include\n";
}
if (!-f File::Spec->catfile($geoip_path, "GeoIP.lib")) {
die "can't find Geoip.lib library\n";
}
if (!-f File::Spec->catfile($geoip_path, "GeoIP.dll")) {
die "can't find Geoip.dll DLL\n";
}
$configinc{"GEOIP_INC"} = "$geoip_path";
my $geoip_lib = File::Spec->catfile($geoip_path, "GeoIP.lib");
$configlib{"GEOIP_LIB"} = "$geoip_lib";
my $geoip_dll = File::Spec->catfile($geoip_path, "GeoIP.dll");
$configdll{"GEOIP_DLL"} = "$geoip_dll";
if ($verbose) {
print "checking for GeoIP support\n";
}
my $ret = `copy "$geoip_dll" .`;
if ($? != 0) {
die "Can't copy GeoIP DLL to working directory: $ret\n";
}
open F, ">testgeoip.c" || die $!;
print F << 'EOF';
extern void *GeoIP_open();
int main() {
return GeoIP_open != 0;
}
EOF
close F;
$compret = `cl /nologo /MD testgeoip.c "$geoip_lib"`;
if (grep { -f and -x } ".\\testgeoip.exe") {
`.\\testgeoip.exe`;
if ($? == 0) {
die "GeoIP test failed\n";
}
} else {
die "can't compile GeoIP test: $compret\n";
}
$configdefh{"HAVE_GEOIP"} = 1;
if ($verbose) {
print "checking for GeoIP Country IPv6 support\n";
}
my $geoip_inc = qq(/I "$geoip_path");
my $geoip_libs = qq("$geoip_lib" ws2_32.lib);
open F, ">testgeoip1.c" || die $!;
print F << 'EOF';
#include <GeoIP.h>
struct in6_addr in6;
int flag = 1;
int main() {
if (flag)
return 1;
return GeoIP_country_name_by_ipnum_v6(NULL, in6) != NULL;
}
EOF
close F;
$compret = `cl /nologo $geoip_inc /MD testgeoip1.c $geoip_libs`;
if (grep { -f and -x } ".\\testgeoip1.exe") {
`.\\testgeoip1.exe`;
if ($? == 0) {
die "GeoIP Country IPv6 test failed\n";
}
} else {
die "can't compile GeoIP Country IPv6 test: $compret\n";
}
$configdefh{"HAVE_GEOIP_V6"} = 1;
if ($verbose) {
print "checking for GeoIP City IPv6 support\n";
}
open F, ">testgeoip2.c" || die $!;
print F << 'EOF';
#include <GeoIP.h>
#include <GeoIPCity.h>
struct in6_addr in6;
int i = GEOIP_CITY_EDITION_REV0_V6;
int flag = 1;
int main() {
if (flag)
return 1;
return GeoIP_record_by_ipnum_v6(NULL, in6) != NULL;
}
EOF
close F;
$compret = `cl /nologo $geoip_inc /MD testgeoip2.c $geoip_libs`;
if (grep { -f and -x } ".\\testgeoip2.exe") {
`.\\testgeoip2.exe`;
if ($? == 0) {
die "GeoIP City IPv6 test failed\n";
}
} else {
die "can't compile GeoIP City IPv6 test: $compret\n";
}
$configdefh{"HAVE_GEOIP_CITY_V6"} = 1;
}
# with-readline
if ($use_readline eq "no") {
if ($verbose) {
print "readline library is disabled\n";
}
} else {
$readline_path = File::Spec->rel2abs($readline_path);
if ($verbose) {
print "checking for readline directory at \"$readline_path\"\n";
}
if (!-f File::Spec->catfile($readline_path, "readline", "readline.h")) {
die "can't find readline.h include\n";
}
if (!-f File::Spec->catfile($readline_path, "readline", "readline.lib")) {
die "can't find readline.lib library\n";
}
$configdefh{"HAVE_READLINE"} = 1;
$configinc{"READLINE_INC"} = "$readline_path";
my $readline_lib = File::Spec->catfile($readline_path,
"readline", "readline.lib");
$configlib{"READLINE_LIB"} = "$readline_lib";
if (-f File::Spec->catfile($readline_path, "readline", "readlineD.lib")) {
my $readline_libd = File::Spec->catfile($readline_path,
"readline", "readlineD.lib");
$configlib{"READLINE_LIBD"} = "$readline_libd";
} else {
$configlib{"READLINE_LIBD"} = "$readline_lib";
}
}
# with-idn (including with-iconv)
if ($use_idn eq "no") {
if ($verbose) {
print "IDN kit is disabled\n";
}
} else {
$idn_path = File::Spec->rel2abs($idn_path);
if ($verbose) {
print "checking for IDN kit directory at \"$idn_path\"\n";
}
if (!-f File::Spec->catfile($idn_path, "idn", "api.h")) {
die "can't find idn\\api.h include\n";
}
if (!-f File::Spec->catfile($idn_path, "idn", "idnkit.lib")) {
die "can't find idnkit.lib library\n";
}
if (!-f File::Spec->catfile($idn_path, "idn", "idnkit.dll")) {
die "can't find idnkit.dll DLL\n";
}
$configcond{"IDNKIT"} = 1;
$configdefh{"WITH_IDN"} = 1;
$configinc{"IDN_INC"} = "$idn_path";
my $idn_lib = File::Spec->catfile($idn_path, "idn", "idnkit.lib");
$configlib{"IDN_LIB"} = "$idn_lib";
my $idn_dll = File::Spec->catfile($idn_path, "idn", "idnkit.dll");
$configdll{"IDN_DLL"} = "$idn_dll";
if ($iconv_path eq " --idn-- ") {
my $iconv_dll = File::Spec->catfile($idn_path, "idn", "iconv.dll");
$configdll{"ICONV_DLL"} = "$iconv_dll";
} else {
my $iconv_dll =File::Spec->catfile($iconv_path, "iconv.dll");
$configdll{"ICONV_DLL"} = "$iconv_dll";
}
}
# with-libxml2
if ($use_libxml2 eq "no") {
if ($verbose) {
print "libxml2 library is disabled\n";
}
} elsif ($use_libxml2 eq "auto") {
if ($verbose) {
print "checking for a libxml2 built directory at sibling root\n";
}
opendir DIR, $libxml2_path || die "No Directory: $!\n";
my @dirlist = grep (/^libxml2-[0-9]+\.[0-9]+\.[0-9]+[a-z]*/i,
readdir(DIR));
closedir(DIR);
# Make sure we have something
if (scalar(@dirlist) == 0) {
die "can't find a libxml2 at sibling root\n";
}
# Now see if we have a directory or just a file.
# Make sure we are case insensitive
my $file;
foreach $file (sort {uc($b) cmp uc($a)} @dirlist) {
if (-f File::Spec->catfile($libxml2_path,
$file,
"include\\libxml",
"xmlversion.h")) {
$libxml2_path = File::Spec->catdir($libxml2_path, $file);
$use_libxml2 = "yes";
last;
}
}
# If we have one use it otherwise report the error
if ($use_libxml2 eq "auto") {
die "can't find a libxml2 built directory at sibling root\n";
}
}
# falls into (so no else)
if ($use_libxml2 eq "yes") {
$libxml2_path = File::Spec->rel2abs($libxml2_path);
if ($verbose) {
print "checking for libxml2 built directory at \"$libxml2_path\"\n";
}
if (!-f File::Spec->catfile($libxml2_path,
"include\\libxml",
"xmlversion.h")) {
die "can't find libxml2 xmlversion.h include\n";
}
if (!-f File::Spec->catfile($libxml2_path,
"win32\\bin.msvc",
"libxml2.lib")) {
die "can't find Libxml2 libxml2.lib library\n";
}
if (!-f File::Spec->catfile($libxml2_path,
"win32\\bin.msvc",
"libxml2.dll")) {
die "can't find Libxml2 DLL\n";
}
$configcond{"LIBXML2"} = 1;
$configdefh{"HAVE_LIBXML2"} = 1;
my $libxml2_inc = File::Spec->catdir($libxml2_path, "include");
$configinc{"LIBXML2_INC"} = "$libxml2_inc";
my $libxml2_libdir = File::Spec->catdir($libxml2_path, "win32\\bin.msvc");
my $libxml2_lib = File::Spec->catfile($libxml2_libdir, "libxml2.lib");
$configlib{"LIBXML2_LIB"} = "$libxml2_lib";
my $libxml2_dll = File::Spec->catfile($libxml2_libdir, "libxml2.dll");
$configdll{"LIBXML2_DLL"} = "$libxml2_dll";
}
# with-python
if ($use_python eq "no") {
if ($verbose) {
print "python is disabled\n";
}
} elsif ($use_python eq "auto") {
if ($verbose) {
print "checking for python in path\n";
}
my $pythonret = `python -c "quit()" 2>&1`;
if ($? != 0) {
die "can't launch the python interpreter: $pythonret\n";
}
$use_python = "yes";
}
if ($use_python ne "no") {
if ($verbose) {
my $pythonret = `"$python_command" -c "quit()" 2>&1`;
if ($? != 0) {
print STDERR
"can't lanch the local python interpreter: $pythonret\n";
}
}
$configcond{"PYTHON"} = 1;
$configdefd{"USE_PYTHON"} = "USE_PYTHON";
$configvar{"PYTHON"} = "$python_command";
$configvar{"prefix"} = "C:\\Windows\\system32\\dns";
}
# with-vcredist
$vcredist_path = File::Spec->rel2abs($vcredist_path);
if (!grep { -f and -x } $vcredist_path) {
die "$vcredist_path is not correct\n";
} else {
$configvar{"VCREDIST_PATH"} = "$vcredist_path";
}
# setup config.h with %configdefh
sub setupconfigh {
my $line;
my @Lines;
open F, $configfilein || die $!;
@Lines = <F>;
close F;
foreach $line (@Lines) {
chomp $line;
if ($line =~ /^@([^@]+)\@$/) {
if (defined($configdefh{$1})) {
$line = "#define $1 $configdefh{$1}";
} else {
$line = "/* #undef $1 */";
}
}
}
open F, $configfileout || die $!;
if ($verbose) {
print "Setting up config.h\n";
}
foreach $line (@Lines) {
print F $line . "\n";
}
close F;
}
# setup platform.h with %configdefp
sub setupplatformh {
my $line;
my @Lines;
open F, $platformfile . ".in" || die $!;
@Lines = <F>;
close F;
foreach $line (@Lines) {
chomp $line;
if ($line =~ /^@([^@]+)\@$/) {
if (defined($configdefp{$1})) {
$line = "#define $1 $configdefp{$1}";
} else {
$line = "/* #undef $1 */";
}
}
}
open F, ">" . $platformfile || die $!;
if ($verbose) {
print "Setting up platform.h\n";
}
foreach $line (@Lines) {
print F $line . "\n";
}
close F;
}
# escape spaces
sub kw {
if ($_[0] =~ / /) {
return "\"$_[0]\"";
} else {
return "$_[0]";
}
}
# setup a file with %configcond stack and %config{var,defd,inc,lib,dll}
sub setupfile {
my $line;
my @Linesin;
my @Linesout;
my $filename = $_[0];
my $cond;
my @conds;
my $pass = 1;
my @passes;
my $val;
open F, $filename . ".in" || die $!;
@Linesin = <F>;
close F;
foreach $line (@Linesin) {
chomp $line;
if ($line =~ /^\@IF (.*)$/) {
if (defined($cond)) {
unshift(@conds, $cond);
unshift(@passes, $pass);
}
$cond = $1;
if (defined($configcond{$cond})) {
# do nothing
} else {
$pass = 0;
}
next;
} elsif ($line =~ /^\@ELSE (.*)$/) {
if ($cond ne $1) {
die "\@ELSE $1 mismatch in $filename\n";
}
if (defined($configcond{$cond})) {
$pass = 0;
} else {
if (scalar(@conds) > 0) {
$pass = $passes[0];
} else {
$pass = 1;
}
}
next;
} elsif ($line =~ /^\@END (.*)$/) {
if ($cond ne $1) {
die "\@END $1 mismatch in $filename\n";
}
$cond = shift(@conds);
if (scalar(@passes) > 0) {
$pass = shift(@passes);
} else {
$pass = 1;
}
next;
}
if ($pass == 0) {
next;
}
while ($line =~ /@([^@ ]*)@/) {
if ($1 ~~ @substvar) {
if (defined($configvar{$1})) {
$val = kw($configvar{$1});
$line = "$`$val$'";
} else {
$line = "$`$'";
}
} elsif ($1 ~~ @substdefd) {
if (defined($configdefd{$1})) {
my $def = $configdefd{$1};
$def =~ s/([\\ "])/\\$1/g;
$line = qq($`/D "$def"$');
} else {
$line = "$`$'";
}
} elsif ($1 ~~ @substinc) {
if (defined($configinc{$1})) {
$line = qq($`/I "$configinc{$1}"$');
} else {
$line = "$`$'";
}
} elsif ($1 ~~ @substlib) {
if (defined($configlib{$1})) {
$val = kw($configlib{$1});
$line = "$`$val$'";
} else {
$line = "$`$'";
}
} elsif ($1 ~~ @substdll) {
if (defined($configdll{$1})) {
$val = kw($configdll{$1});
$line = "$`$val$'";
} else {
$line = "$`$'";
}
} else {
die "unknown control $& in $filename\n";
}
}
push @Linesout, $line;
}
open F, ">" . $filename || die $!;
if ($verbose) {
print "Setting up $filename\n";
}
foreach $line (@Linesout) {
print F $line . "\n";
}
close F;
}
# setup a project with %configcond stack and %config{var,defd,inc,lib,dll}
sub setupproject {
my $line;
my @Linesin;
my @Linesout;
my $projectname = $_[0];
my $cond;
my @conds;
my $pass = 1;
my @passes;
my $val;
open F, $projectname . ".in" || die $!;
@Linesin = <F>;
close F;
foreach $line (@Linesin) {
chomp $line;
if ($line =~ /^\@IF (.*)$/) {
if (defined($cond)) {
unshift(@conds, $cond);
unshift(@passes, $pass);
}
$cond = $1;
if (defined($configcond{$cond})) {
# do nothing
} else {
$pass = 0;
}
next;
} elsif ($line =~ /^\@ELSE (.*)$/) {
if ($cond ne $1) {
die "\@ELSE $1 mismatch in $projectname\n";
}
if (defined($configcond{$cond})) {
$pass = 0;
} else {
if (scalar(@conds) > 0) {
$pass = $passes[0];
} else {
$pass = 1;
}
}
next;
} elsif ($line =~ /^\@END (.*)$/) {
if ($cond ne $1) {
die "\@END $1 mismatch in $projectname\n";
}
$cond = shift(@conds);
if (scalar(@passes) > 0) {
$pass = shift(@passes);
} else {
$pass = 1;
}
next;
}
if ($pass == 0) {
next;
}
while ($line =~ /@([^@ ]*)@/) {
if ($1 ~~ @substvar) {
if (defined($configvar{$1})) {
$val = kw($configvar{$1});
$line = "$`$val$'";
} else {
$line = "$`$'";
}
} elsif ($1 ~~ @substdefd) {
if (defined($configdefd{$1})) {
$val = kw($configdefd{$1});
$line = "$`$val;$'";
} else {
$line = "$`$'";
}
} elsif ($1 ~~ @substinc) {
if (defined($configinc{$1})) {
$val = kw($configinc{$1});
$line = "$`$val;$'";
} else {
$line = "$`$'";
}
} elsif ($1 ~~ @substlib) {
if (defined($configlib{$1})) {
$val = kw($configlib{$1});
$line = "$`$val;$'";
} else {
$line = "$`$'";
}
} elsif ($1 ~~ @substdll) {
if (defined($configdll{$1})) {
$val = kw($configdll{$1});
$line = "$`$val$'";
} else {
$line = "$`$'";
}
} else {
die "unknown control $& in $projectname\n";
}
}
push @Linesout, $line;
}
open F, ">" . $projectname || die $!;
if ($verbose) {
print "Setting up $projectname\n";
}
foreach $line (@Linesout) {
print F $line . "\n";
}
close F;
}
# make versions.h
sub makeversion {
# List of directories with version files
my @dirlist = ("iscpk11", "isc", "dns", "isccc",
"isccfg", "lwres", "bind9");
my %LibMacros = (
"bind9" => "LIBBIND9_EXPORTS",
"dns" => "LIBDNS_EXPORTS",
"isc" => "LIBISC_EXPORTS",
"isccc" => "LIBISCCC_EXPORTS",
"isccfg" => "LIBISCCFG_EXPORTS",
"iscpk11" => "LIBISCPK11_EXPORTS",
"lwres" => "LIBLWRES_EXPORTS");
my @VersionNames = ("LIBINTERFACE", "LIBREVISION", "LIBAGE");
my %Versions;
my $Version;
my %ApiVersions;
my $Mapapi;
my $versionfile = "versions.h";
my $versionpath = "..\\$versionfile";
my $data;
my $name;
my $value;
# First get the version information
open V, "..\\version" || die $!;
while (<V>) {
chomp;
($data) = split(/\#/);
if ($data) {
($name, $value) = split(/=/, $data);
($name) = split(/\s+/, $name);
if ($name eq 'PRODUCT' || $name eq 'DESCRIPTION') {
($value) =~ s/^["\s]+//;
($value) =~ s/["\s]+$//;
} else {
($value) = split(/\s+/, $value);
}
$Versions{$name} = $value;
}
}
close V;
# And the mapapi one
open M, "..\\lib\\dns\\mapapi" || die $!;
while (<M>) {
chomp;
($data) = split(/\#/);
if ($data) {
($name, $value) = split(/=/, $data);
($name) = split(/\s+/, $name);
if ($name eq 'MAPAPI') {
($value) =~ s/^["\s]+//;
($value) =~ s/["\s]+$//;
} else {
($value) = split(/\s+/, $value);
}
$Mapapi = $value;
}
}
close M;
# Now set up the output version file
my $ThisDate = scalar localtime();
open O, ">$versionpath" ||
die "Can't open output file $versionpath: $!\n";
# Standard Header
print O '/*
* Copyright (C) 2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
';
print O "/*\n";
print O " * $versionfile.";
print O " Generated automatically by Configure.pl.\n";
print O " * Date generated: $ThisDate\n";
print O " */\n\n";
print O '
#ifndef VERSIONS_H
#define VERSIONS_H 1
';
$Version = "$Versions{'MAJORVER'}.$Versions{'MINORVER'}";
if ($Versions{'PATCHVER'} != "") {
$Version = "$Version.$Versions{'PATCHVER'}";
}
$Version = "$Version$Versions{'RELEASETYPE'}$Versions{'RELEASEVER'}";
if ($verbose) {
print "BIND Version: $Version\n";
}
print O "#define VERSION \"$Version\"\n";
print O "#define PRODUCT \"$Versions{'PRODUCT'}\"\n\n";
print O "#define DESCRIPTION \"$Versions{'DESCRIPTION'}\"\n\n";
print O
"#define MAJOR \"$Versions{'MAJORVER'}.$Versions{'MINORVER'}\"\n\n";
print O "#define MAPAPI \"$Mapapi\"\n\n";
my $dir;
my $apifile;
foreach $dir (@dirlist) {
$apifile = "..\\lib\\$dir\\api";
open A, $apifile || die $!;
while (<A>) {
chomp;
($data) = split(/\#/);
if ($data) {
($name, $value) = split(/=/, $data);
$name =~ s/\s+//;
$value =~ s/\s+//;
$ApiVersions{$name} = $value;
}
}
close A;
print O "\n#ifdef $LibMacros{$dir}\n";
foreach $name (@VersionNames) {
print O "#define $name\t$ApiVersions{$name}\n";
}
print O "#endif\n\n";
}
print O "#endif /* VERSIONS_H */\n";
close O;
}
# make srcid.h
sub makesrcid {
my $data;
my $name;
my $value;
my $srcid = "unset";
open SOUT, ">..\\srcid.h" || die "cannot open srcid.h: $!\n";
if (open (SIN, "..\\srcid")) {
LOOP: while (<SIN>) {
chomp;
($data) = split(/\#/);
if ($data) {
($name, $value) = split(/=/, $data);
($name) = split(/\s+/, $name);
($value) = split(/\s+/, $value);
next LOOP if ($name != "SRCID");
$srcid = $value;
}
}
close SIN;
}
# Now set up the output version file
my $ThisDate = scalar localtime();
# Standard Header
print SOUT '/*
* Copyright (C) 2012 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
';
print SOUT "/*\n";
print SOUT " * srcid.h";
print SOUT " * Generated automatically by Configure.pl.\n";
print SOUT " * Date generated: $ThisDate\n";
print SOUT " */\n\n";
print SOUT '
#ifndef SRCID_H
#define SRCID_H 1
';
if ($verbose) {
print "BIND SRCID: $srcid\n";
}
print SOUT "#define SRCID\t\"$srcid\"\n";
print SOUT "#endif /* SRCID_H */\n";
close SOUT;
}
# Status
if ($verbose) {
my $name;
print "Configuration Status\n";
print "\tconfig.h:\n";
foreach $name (@substdefh) {
if (defined($configdefh{$name})) {
print qq(\t\t$name defined to "$configdefh{$name}"\n);
} else {
printf qq(\t\t$name undefined\n);
}
}
print "\tplatform.h:\n";
foreach $name (@substdefp) {
if (defined($configdefp{$name})) {
print qq(\t\t$name defined to "$configdefp{$name}"\n);
} else {
printf qq(\t\t$name undefined\n);
}
}
print "\tconditions:\n";
foreach $name (@substcond) {
if (defined($configcond{$name})) {
print "\t\t$name is true\n";
} else {
print "\t\t$name is false\n";
}
}
print "\tsubstitutions:\n";
foreach $name (@substvar) {
if (defined($configvar{$name})) {
print qq(\t\t$name -> "$configvar{$name}"\n);
}
}
print "\tdefines:\n";
foreach $name (@substdefd) {
if (defined($configdefd{$name})) {
print qq(\t\t/D "$configdefd{$name}"\n);
}
}
print "\tincludes:\n";
foreach $name (@substinc) {
if (defined($configinc{$name})) {
print qq(\t\t/I "$configinc{$name}"\n);
}
}
print "\tlibraries:\n";
foreach $name (@substlib) {
if (defined($configlib{$name})) {
print "\t\t$configlib{$name}\n";
}
}
print "\tDLLs:\n";
foreach $name (@substdll) {
if (defined($configdll{$name})) {
print "\t\t$configdll{$name}\n";
}
}
print "\n";
}
# Setup
if (($want_win32 eq "yes") || ($want_x64 eq "yes")) {
setupconfigh();
setupplatformh();
my $file;
foreach $file (@filelist) {
setupfile($file);
}
if (!$legacy_only) {
foreach $file (@projectlist) {
setupproject($file);
}
}
makeversion();
makesrcid();
print "Configured.\n";
} else {
print "add win32 or x64 to commit configuration to build files\n";
}
exit 0;
# Notes: Unix configure.in options
# --enable-developer partially supported
# --enable-newstats (9.9/9.9sub only)
# --enable-openssl-version-check included without a way to disable it
# --enable-openssl-hash supported
# --enable-threads included without a way to disable it
# --enable-backtrace backtrace included without a way to disable it
# --enable-symtable incompatible with DLLs (or libtool)
# --enable-exportlib TODO (obsolete)
# --enable-ipv6 included without a way to disable it
# --enable-atomic supported (renamed intrinsic)
# --enable-spnego support (part of GSSAPI)
# --enable-fixed-rrset supported
# --disable-rpz-nsip supported
# --disable-rpz-nsdname supported
# --enable-filter-aaaa supported
# --with-python supported
# --with-openssl supported
# --with-ecdsa supported
# --with-gost supported
# --with-pkcs11 supported
# --with-geoip supported
# --with-gssapi supported with MIT (K)erberos (f)or (W)indows
# --with-libxml2 supported
# --with-libjson not supported on WIN32 (package not available on WIN32)
# --with-purify ? (package available on WIN32 but for free?)
# --with-libtool not supported on WIN32 (never)
# --with-readline supported
# --with-idn support
# --with-[lib]iconv (part of IDN)
# --with-atf not supported on WIN32 (package not available on WIN32)
# --with-dlopen included without a way to disable it
# --with-dlz-* ?
#
# Notes: MSVC versions
# MSVC 12.0 _MSC_VER == 1800 (VS 2013)
# MSVC 11.0 _MSC_VER == 1700 (VS 2012)
# MSVC 10.0 _MSC_VER == 1600 (VS 2010)
# MSVC 9.0 _MSC_VER == 1500 (VS 2008)
# MSVC 8.0 _MSC_VER == 1400 (VS 2005)
# MSVC 7.1 _MSC_VER == 1310 (VS .NET 2003)
# MSVC 7.0 _MSC_VER == 1300 (VS .NET (2002))
# MSVC 6.0 _MSC_VER == 1200 (VS 6.0 (1998))
# MSVC 5.0 _MSC_VER == 1100 (VS 97)