Configure revision 9f5443280fcfd625a06f63a1b457ed2335840278
cd348e325366620fe047edcc849e3c9424828599Peter Bray#!/usr/bin/perl
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco# Copyright (C) 2013-2016 Internet Systems Consortium, Inc. ("ISC")
cd348e325366620fe047edcc849e3c9424828599Peter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# Permission to use, copy, modify, and/or distribute this software for any
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# purpose with or without fee is hereby granted, provided that the above
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# copyright notice and this permission notice appear in all copies.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray# PERFORMANCE OF THIS SOFTWARE.
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# Configure
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# This script builds nmake and visual studio build files
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray#
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayrequire 5.000;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayuse strict;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayuse File::Spec;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayuse Cwd;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# files to configure
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $configfilein = "..\\config.h.win32";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $configfileout = ">..\\config.h";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $platformfile = "..\\lib\\isc\\win32\\include\\isc\\platform.h";
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray
3a5046f0538ba9fb3a9429199544a9f4b93d9a4dLubos Koscomy @filelist = ("..\\bin\\check\\win32\\checktool.dsp",
d6ee3934a24d8ccc0e4bb478405d8e5f6a35825dLubos Kosco "..\\bin\\check\\win32\\checkconf.dsp",
d6ee3934a24d8ccc0e4bb478405d8e5f6a35825dLubos Kosco "..\\bin\\check\\win32\\checkconf.mak",
d70dc22c6dce3f498251b0873638d1fea0e644a3Lubos Kosco "..\\bin\\check\\win32\\checkzone.dsp",
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco "..\\bin\\check\\win32\\checkzone.mak",
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco "..\\bin\\confgen\\win32\\confgentool.dsp",
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco "..\\bin\\confgen\\win32\\ddnsconfgen.dsp",
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco "..\\bin\\confgen\\win32\\ddnsconfgen.mak",
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray "..\\bin\\confgen\\win32\\rndcconfgen.dsp",
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray "..\\bin\\confgen\\win32\\rndcconfgen.mak",
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray "..\\bin\\delv\\win32\\delv.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\delv\\win32\\delv.mak",
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco "..\\bin\\dig\\win32\\dig.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\dig\\win32\\dig.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\dig\\win32\\dighost.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\dig\\win32\\host.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\dig\\win32\\host.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\dig\\win32\\nslookup.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\dig\\win32\\nslookup.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\dnssec\\win32\\dnssectool.dsp",
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco "..\\bin\\dnssec\\win32\\dsfromkey.dsp",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\dnssec\\win32\\dsfromkey.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\dnssec\\win32\\importkey.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\dnssec\\win32\\importkey.mak",
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco "..\\bin\\dnssec\\win32\\keyfromlabel.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\dnssec\\win32\\keyfromlabel.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\dnssec\\win32\\keygen.dsp",
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco "..\\bin\\dnssec\\win32\\keygen.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\dnssec\\win32\\revoke.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\dnssec\\win32\\revoke.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\dnssec\\win32\\settime.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\dnssec\\win32\\settime.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\dnssec\\win32\\signzone.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\dnssec\\win32\\signzone.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\dnssec\\win32\\verify.dsp",
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco "..\\bin\\dnssec\\win32\\verify.mak",
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco "..\\bin\\named\\win32\\named.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\named\\win32\\named.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\nsupdate\\win32\\nsupdate.dsp",
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco "..\\bin\\nsupdate\\win32\\nsupdate.mak",
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco "..\\bin\\pkcs11\\win32\\pk11destroy.dsp",
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco "..\\bin\\pkcs11\\win32\\pk11destroy.mak",
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco "..\\bin\\pkcs11\\win32\\pk11keygen.dsp",
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco "..\\bin\\pkcs11\\win32\\pk11keygen.mak",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\pkcs11\\win32\\pk11list.dsp",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\pkcs11\\win32\\pk11list.mak",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\pkcs11\\win32\\pk11tokens.dsp",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\pkcs11\\win32\\pk11tokens.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\python\\dnssec-checkds.py",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\python\\dnssec-coverage.py",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\python\\dnssec-keymgr.py",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\python\\isc\\utils.py",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\rndc\\win32\\rndc.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\rndc\\win32\\rndc.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\rndc\\win32\\rndcutil.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tools\\win32\\arpaname.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tools\\win32\\arpaname.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tools\\win32\\genrandom.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tools\\win32\\genrandom.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tools\\win32\\ischmacfixup.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tools\\win32\\ischmacfixup.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tools\\win32\\journalprint.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tools\\win32\\journalprint.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tools\\win32\\mdig.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tools\\win32\\mdig.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tools\\win32\\nsec3hash.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tools\\win32\\nsec3hash.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tools\\win32\\rrchecker.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tools\\win32\\rrchecker.mak",
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco "..\\bin\\tests\\atomic\\win32\\t_atomic.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\atomic\\win32\\t_atomic.mak",
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco "..\\bin\\tests\\db\\win32\\t_db.dsp",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tests\\db\\win32\\t_db.mak",
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco "..\\bin\\tests\\dst\\win32\\t_dst.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\dst\\win32\\t_dst.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\master\\win32\\t_master.dsp",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tests\\master\\win32\\t_master.mak",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tests\\mem\\win32\\t_mem.dsp",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tests\\mem\\win32\\t_mem.mak",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tests\\hashes\\win32\\t_hashes.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\hashes\\win32\\t_hashes.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\names\\win32\\t_names.dsp",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tests\\names\\win32\\t_names.mak",
b34561d2c3d92fac37dbced05ba6a8738e3d20e9Lubos Kosco "..\\bin\\tests\\rbt\\win32\\t_rbt.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\rbt\\win32\\t_rbt.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\resolver\\win32\\t_resolver.dsp",
5e6c91d7e77062129cd0b6ac8aaa546dff216419Lubos Kosco "..\\bin\\tests\\resolver\\win32\\t_resolver.mak",
5e6c91d7e77062129cd0b6ac8aaa546dff216419Lubos Kosco "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\tasks\\win32\\t_tasks.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\tasks\\win32\\t_tasks.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\timers\\win32\\t_timers.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\timers\\win32\\t_timers.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\backtrace_test.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\win32\\backtrace_test.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\win32\\inter_test.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\win32\\inter_test.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\win32\\rwlock_test.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\rwlock_test.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\win32\\shutdown_test.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\win32\\shutdown_test.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\win32\\sock_test.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\sock_test.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\win32\\task_test.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\task_test.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\win32\\timer_test.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\timer_test.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\win32\\inter_test.dsp",
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco "..\\bin\\tests\\win32\\inter_test.mak",
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco "..\\bin\\tests\\win32\\rwlock_test.dsp",
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco "..\\bin\\tests\\win32\\rwlock_test.mak",
d7c1415de39f4b07c85828f49cd1ee7a2a19eb9eLubos Kosco "..\\bin\\tests\\win32\\shutdown_test.dsp",
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco "..\\bin\\tests\\win32\\shutdown_test.mak",
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco "..\\bin\\tests\\win32\\sock_test.dsp",
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco "..\\bin\\tests\\win32\\sock_test.mak",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tests\\win32\\task_test.dsp",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tests\\win32\\task_test.mak",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tests\\win32\\timer_test.dsp",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tests\\win32\\timer_test.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\win32\\BINDInstall\\BINDInstall.dsp",
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco "..\\bin\\win32\\BINDInstall\\BINDInstall.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\bind9\\win32\\libbind9.dsp",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\bind9\\win32\\libbind9.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\dns\\win32\\gen.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\lib\\dns\\win32\\gen.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\dns\\win32\\libdns.def",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\lib\\dns\\win32\\libdns.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\lib\\dns\\win32\\libdns.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\irs\\win32\\libirs.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\lib\\irs\\win32\\libirs.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\lib\\isc\\win32\\libisc.def",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\isc\\win32\\libisc.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\lib\\isc\\win32\\libisc.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\lib\\isccc\\win32\\libisccc.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\lib\\isccc\\win32\\libisccc.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\isccfg\\win32\\libisccfg.dsp",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\lib\\isccfg\\win32\\libisccfg.mak",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "..\\lib\\lwres\\win32\\liblwres.dsp",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "..\\lib\\lwres\\win32\\liblwres.mak",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "..\\lib\\samples\\win32\\async.dsp",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\lib\\samples\\win32\\async.mak",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\lib\\samples\\win32\\gai.dsp",
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco "..\\lib\\samples\\win32\\gai.mak",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\lib\\samples\\win32\\nsprobe.dsp",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\lib\\samples\\win32\\nsprobe.mak",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\lib\\samples\\win32\\request.dsp",
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco "..\\lib\\samples\\win32\\request.mak",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\samples\\win32\\resolve.dsp",
d6ee3934a24d8ccc0e4bb478405d8e5f6a35825dLubos Kosco "..\\lib\\samples\\win32\\resolve.mak",
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco "..\\lib\\samples\\win32\\update.dsp",
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco "..\\lib\\samples\\win32\\update.mak",
d6ee3934a24d8ccc0e4bb478405d8e5f6a35825dLubos Kosco "..\\lib\\tests\\win32\\libtests.dsp",
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco "..\\lib\\tests\\win32\\libtests.mak",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\lib\\win32\\bindevt\\bindevt.dsp",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\lib\\win32\\bindevt\\bindevt.mak",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "legacy\\BINDBuild.dsw",
d6ee3934a24d8ccc0e4bb478405d8e5f6a35825dLubos Kosco "legacy\\BuildAll.bat",
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco "legacy\\BuildPost.bat",
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Kosco "legacy\\BuildSetup.bat");
d6ee3934a24d8ccc0e4bb478405d8e5f6a35825dLubos Kosco
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Koscomy @projectlist = ("..\\bin\\check\\win32\\checkconf.vcxproj",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\check\\win32\\checkconf.vcxproj.filters",
d70dc22c6dce3f498251b0873638d1fea0e644a3Lubos Kosco "..\\bin\\check\\win32\\checktool.vcxproj",
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco "..\\bin\\check\\win32\\checktool.vcxproj.filters",
d70dc22c6dce3f498251b0873638d1fea0e644a3Lubos Kosco "..\\bin\\check\\win32\\checkzone.vcxproj",
d70dc22c6dce3f498251b0873638d1fea0e644a3Lubos Kosco "..\\bin\\check\\win32\\checkzone.vcxproj.filters",
d70dc22c6dce3f498251b0873638d1fea0e644a3Lubos Kosco "..\\bin\\confgen\\win32\\confgentool.vcxproj",
d70dc22c6dce3f498251b0873638d1fea0e644a3Lubos Kosco "..\\bin\\confgen\\win32\\confgentool.vcxproj.filters",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\confgen\\win32\\ddnsconfgen.vcxproj",
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco "..\\bin\\confgen\\win32\\ddnsconfgen.vcxproj.filters",
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco "..\\bin\\confgen\\win32\\rndcconfgen.vcxproj",
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco "..\\bin\\confgen\\win32\\rndcconfgen.vcxproj.filters",
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco "..\\bin\\delv\\win32\\delv.vcxproj",
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco "..\\bin\\delv\\win32\\delv.vcxproj.filters",
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco "..\\bin\\dig\\win32\\dig.vcxproj",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\dig\\win32\\dig.vcxproj.filters",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\dig\\win32\\dighost.vcxproj",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\dig\\win32\\dighost.vcxproj.filters",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\dig\\win32\\host.vcxproj",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\dig\\win32\\host.vcxproj.filters",
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco "..\\bin\\dig\\win32\\nslookup.vcxproj",
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco "..\\bin\\dig\\win32\\nslookup.vcxproj.filters",
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco "..\\bin\\dnssec\\win32\\dnssectool.vcxproj",
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco "..\\bin\\dnssec\\win32\\dnssectool.vcxproj.filters",
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco "..\\bin\\dnssec\\win32\\dsfromkey.vcxproj",
e87f836e908f8279021f79c8f7bcef98e99d126eLubos Kosco "..\\bin\\dnssec\\win32\\dsfromkey.vcxproj.filters",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\dnssec\\win32\\importkey.vcxproj",
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco "..\\bin\\dnssec\\win32\\importkey.vcxproj.filters",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\dnssec\\win32\\keyfromlabel.vcxproj",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\dnssec\\win32\\keyfromlabel.vcxproj.filters",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\dnssec\\win32\\keygen.vcxproj",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\dnssec\\win32\\keygen.vcxproj.filters",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\dnssec\\win32\\revoke.vcxproj",
ba2e31d47682cf0d28fe7a33f5c0d226a21aee17Lubos Kosco "..\\bin\\dnssec\\win32\\revoke.vcxproj.filters",
ba2e31d47682cf0d28fe7a33f5c0d226a21aee17Lubos Kosco "..\\bin\\dnssec\\win32\\settime.vcxproj",
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco "..\\bin\\dnssec\\win32\\settime.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\dnssec\\win32\\signzone.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\dnssec\\win32\\signzone.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\dnssec\\win32\\verify.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\dnssec\\win32\\verify.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\named\\win32\\named.vcxproj",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "..\\bin\\named\\win32\\named.vcxproj.filters",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "..\\bin\\nsupdate\\win32\\nsupdate.vcxproj",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "..\\bin\\nsupdate\\win32\\nsupdate.vcxproj.filters",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "..\\bin\\pkcs11\\win32\\pk11destroy.vcxproj",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "..\\bin\\pkcs11\\win32\\pk11destroy.vcxproj.filters",
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco "..\\bin\\pkcs11\\win32\\pk11keygen.vcxproj",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\pkcs11\\win32\\pk11keygen.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\pkcs11\\win32\\pk11list.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\pkcs11\\win32\\pk11list.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\pkcs11\\win32\\pk11tokens.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\pkcs11\\win32\\pk11tokens.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\rndc\\win32\\rndc.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\rndc\\win32\\rndc.vcxproj.filters",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "..\\bin\\rndc\\win32\\rndcutil.vcxproj",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "..\\bin\\rndc\\win32\\rndcutil.vcxproj.filters",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "..\\bin\\tools\\win32\\arpaname.vcxproj",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "..\\bin\\tools\\win32\\arpaname.vcxproj.filters",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "..\\bin\\tools\\win32\\genrandom.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tools\\win32\\genrandom.vcxproj.filters",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tools\\win32\\ischmacfixup.vcxproj",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tools\\win32\\ischmacfixup.vcxproj.filters",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tools\\win32\\journalprint.vcxproj",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "..\\bin\\tools\\win32\\journalprint.vcxproj.filters",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tools\\win32\\mdig.vcxproj",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tools\\win32\\mdig.vcxproj.filters",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tools\\win32\\nsec3hash.vcxproj",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tools\\win32\\nsec3hash.vcxproj.filters",
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco "..\\bin\\tools\\win32\\rrchecker.vcxproj",
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco "..\\bin\\tools\\win32\\rrchecker.vcxproj.filters",
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco "..\\bin\\tests\\atomic\\win32\\t_atomic.vcxproj",
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco "..\\bin\\tests\\atomic\\win32\\t_atomic.vcxproj.filters",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\db\\win32\\t_db.vcxproj",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\db\\win32\\t_db.vcxproj.filters",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\dst\\win32\\t_dst.vcxproj",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\dst\\win32\\t_dst.vcxproj.filters",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\master\\win32\\t_master.vcxproj",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\master\\win32\\t_master.vcxproj.filters",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\mem\\win32\\t_mem.vcxproj",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\mem\\win32\\t_mem.vcxproj.filters",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\hashes\\win32\\t_hashes.vcxproj",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\hashes\\win32\\t_hashes.vcxproj.filters",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tests\\names\\win32\\t_names.vcxproj",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\names\\win32\\t_names.vcxproj.filters",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\rbt\\win32\\t_rbt.vcxproj",
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray "..\\bin\\tests\\rbt\\win32\\t_rbt.vcxproj.filters",
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray "..\\bin\\tests\\resolver\\win32\\t_resolver.vcxproj",
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco "..\\bin\\tests\\resolver\\win32\\t_resolver.vcxproj.filters",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.vcxproj",
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.vcxproj.filters",
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray "..\\bin\\tests\\tasks\\win32\\t_tasks.vcxproj",
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Kosco "..\\bin\\tests\\tasks\\win32\\t_tasks.vcxproj.filters",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "..\\bin\\tests\\timers\\win32\\t_timers.vcxproj",
3a5046f0538ba9fb3a9429199544a9f4b93d9a4dLubos Kosco "..\\bin\\tests\\timers\\win32\\t_timers.vcxproj.filters",
3a5046f0538ba9fb3a9429199544a9f4b93d9a4dLubos Kosco "..\\bin\\tests\\win32\\backtrace_test.vcxproj",
3a5046f0538ba9fb3a9429199544a9f4b93d9a4dLubos Kosco "..\\bin\\tests\\win32\\backtrace_test.vcxproj.filters",
3a5046f0538ba9fb3a9429199544a9f4b93d9a4dLubos Kosco "..\\bin\\tests\\win32\\inter_test.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\inter_test.vcxproj.filters",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\bin\\tests\\win32\\rwlock_test.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\rwlock_test.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\shutdown_test.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\shutdown_test.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\sock_test.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\sock_test.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\task_test.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\task_test.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\timer_test.vcxproj",
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco "..\\bin\\tests\\win32\\timer_test.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\inter_test.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\inter_test.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\rwlock_test.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\rwlock_test.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\shutdown_test.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\shutdown_test.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\sock_test.vcxproj",
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco "..\\bin\\tests\\win32\\sock_test.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\task_test.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\task_test.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\timer_test.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\tests\\win32\\timer_test.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\win32\\BINDInstall\\BINDInstall.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\bin\\win32\\BINDInstall\\BINDInstall.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\bind9\\win32\\libbind9.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\bind9\\win32\\libbind9.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\dns\\win32\\gen.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\dns\\win32\\gen.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\dns\\win32\\libdns.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\dns\\win32\\libdns.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\irs\\win32\\libirs.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\irs\\win32\\libirs.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\isc\\win32\\libisc.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\isc\\win32\\libisc.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\isccc\\win32\\libisccc.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\isccc\\win32\\libisccc.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\isccfg\\win32\\libisccfg.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\isccfg\\win32\\libisccfg.vcxproj.filters",
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco "..\\lib\\lwres\\win32\\liblwres.vcxproj",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\lib\\lwres\\win32\\liblwres.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\samples\\win32\\resolve.vcxproj",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\lib\\samples\\win32\\resolve.vcxproj.filters",
cd348e325366620fe047edcc849e3c9424828599Peter Bray "..\\lib\\samples\\win32\\async.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\samples\\win32\\async.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\samples\\win32\\gai.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\samples\\win32\\gai.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\samples\\win32\\update.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\samples\\win32\\update.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\samples\\win32\\request.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\samples\\win32\\request.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\samples\\win32\\nsprobe.vcxproj",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\samples\\win32\\nsprobe.vcxproj.filters",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "..\\lib\\tests\\win32\\libtests.vcxproj",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "..\\lib\\tests\\win32\\libtests.vcxproj.filters",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "..\\lib\\win32\\bindevt\\bindevt.vcxproj",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "..\\lib\\win32\\bindevt\\bindevt.vcxproj.filters",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "bind9.sln");
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye# for config.h
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbyemy %configdefh;
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbyemy @substdefh = ("AES_CC",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "ALLOW_FILTER_AAAA",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "CONFIGARGS",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "DNS_RDATASET_FIXED",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "ENABLE_RPZ_NSDNAME",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "ENABLE_RPZ_NSIP",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "HAVE_EVP_SHA256",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "HAVE_EVP_SHA384",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "HAVE_EVP_SHA512",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "HAVE_GEOIP",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "HAVE_GEOIP_CITY_V6",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "HAVE_GEOIP_V6",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "HAVE_LIBXML2",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "HAVE_OPENSSL_AES",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "HAVE_OPENSSL_DSA",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "HAVE_OPENSSL_ECDSA",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "HAVE_OPENSSL_EVP_AES",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "HAVE_OPENSSL_GOST",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "HAVE_PKCS11_ECDSA",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "HAVE_PKCS11_GOST",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "HAVE_READLINE",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "HAVE_ZLIB",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "HMAC_RETURN_INT",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "HMAC_SHA1_CC",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "HMAC_SHA256_CC",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "ISC_LIST_CHECKINIT",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "PREFER_GOSTASN1",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "TUNE_LARGE",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "WANT_QUERYTRACE",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "WITH_IDN");
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# for platform.h
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy %configdefp;
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbyemy @substdefp = ("ISC_PLATFORM_BUSYWAITNOP",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "ISC_PLATFORM_HAVEATOMICSTORE",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "ISC_PLATFORM_HAVEATOMICSTOREQ",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "ISC_PLATFORM_HAVECMPXCHG",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "ISC_PLATFORM_HAVEXADD",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "ISC_PLATFORM_HAVEXADDQ",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "ISC_PLATFORM_NEEDSTRCASESTR",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "ISC_PLATFORM_USEBACKTRACE",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "ISC_PLATFORM_WANTAES");
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye# includes
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbyemy %configinc;
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbyemy @substinc = ("GSSAPI_INC",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "GEOIP_INC",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "IDN_INC",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "LIBXML2_INC",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "OPENSSL_INC",
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye "READLINE_INC",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "ZLIB_INC");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# libraries
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy %configlib;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy @substlib = ("GSSAPI_LIB",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "GEOIP_LIB",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "IDN_LIB",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "KRB5_LIB",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "LIBXML2_LIB",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "OPENSSL_LIB",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "READLINE_LIB",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "READLINE_LIBD",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "ZLIB_LIB");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# DLLs
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy %configdll;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy @substdll = ("COMERR_DLL",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "GSSAPI_DLL",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "GEOIP_DLL",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "ICONV_DLL",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "IDN_DLL",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "KRB5_DLL",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "K5SPRT_DLL",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "LIBXML2_DLL",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "OPENSSL_DLL",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "WSHELP_DLL",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "ZLIB_DLL");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# variables
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy %configvar;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy @substvar = ("BIND9_VERSION",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "BUILD_MACHINE",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "BUILD_PLATFORM",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "COPTI",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "COPTML",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "COPTMLD",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "COPTX",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "COPTY",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "expanded_sysconfdir",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "INTRINSIC",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "MACHINE",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "OPENSSL_PATH",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "PLATFORM",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "PKCS11_TOOLS",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "prefix",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "PYTHON",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "VCREDIST_PATH"),
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# defines
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy %configdefd;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy @substdefd = ("CRYPTO",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "PK11_LIB_LOCATION",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "USE_GSSAPI",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "USE_PKCS11",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "USE_PYTHON",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "USE_ISC_SPNEGO");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# conditions
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy %configcond;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy @substcond = ("AES",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "ATOMIC",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "GSSAPI",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "GEOIP",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "IDNKIT",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "LIBXML2",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "OPENSSL",
d0767114e1a949e4a42358f5aeaa08590b87cd80Trond Norbye "PKCS11",
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco "PYTHON",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "SAMPLES",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "TESTS",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "XTESTS",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "ZLIB");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy @allcond = (@substcond, "NOTYET", "NOLONGER");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# arguments
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# enable-xxx/disable-xxx
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy @enablelist = ("developer",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "fixed-rrset",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "intrinsics",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "isc-spnego",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "native-pkcs11",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "openssl-hash",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "filter-aaaa",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "querytrace",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "rpz-nsdname",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "rpz-nsip");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# with-xxx/without-xxx
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy @withlist = ("aes",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "cross-compile",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "ecdsa",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "extra-tests",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "gssapi",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "geoip",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "gost",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "iconv",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "idn",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "openssl",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "libxml2",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "pkcs11",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "python",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "readline",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "samples",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "cc-alg",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "tests",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "tuning",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "vcredist",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray "zlib");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# general arguments
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy @optionlist = ("help", "verbose", "legacy", "win32", "x64", "clean");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# usage
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy @usage = ("Usage: perl Configure help\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray " perl Configure options* win32|x64\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray " perl Configure clean\n");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# help
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy @help = (
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray"'Configure' configures BIND9 build files.\n\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray@usage,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray"\nGeneral Options and Commands:\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" verbose (options) print messages\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" help (command) print this help\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" legacy (options) process only files for legacy build\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" win32 (command) configure for Win32 platform\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" x64 (command) configure for x64 platform\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" clean (command) clean up generated files\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" <none> (command) print a summary of the configuration\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray"\nOptional Features:\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" enable-intrinsics enable instrinsic/atomic functions [default=yes]\n",
cd348e325366620fe047edcc849e3c9424828599Peter Bray" enable-native-pkcs11 use native PKCS#11 for all crypto [default=no]\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" enable-openssl-hash use OpenSSL for hash functions [default=yes]\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" enable-isc-spnego use SPNEGO from lib/dns [default=yes]\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" enable-filter-aaaa enable filtering of AAAA records [default=no]\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" enable-fixed-rrset enable fixed rrset ordering [default=no]\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" enable-developer enable developer build settings [default=no]\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" enable-querytrace enable very verbose query trace [default=no]\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" enable-rpz-nsip enable rpz-nsip rules [default=yes]\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" enable-rpz-nsdname enable rpz-nsdname rules [default=yes]\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray"\nOptional Packages:\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-tests build with test suite\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-extra-tests build with extra test suite\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-samples build with sample programs\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-openssl[=PATH] build with OpenSSL yes|no|path\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-pkcs11[=PATH] build with PKCS#11 support yes|no|provider-path\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-ecdsa crypto ECDSA\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-gost[=ENC] crypto GOST yes|no|raw|ans1\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-aes crypto AES\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-cc-alg choose the algorithm for cookies aes|sha1|sha256\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-gssapi[=PATH] build with MIT KfW GSSAPI yes|no|path\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-libxml2[=PATH] build with libxml2 library yes|no|path\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-geoip[=PATH] build with GeoIP support yes|no|path\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-python[=COMMAND] specify python interpreter python|command\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-readline[=PATH] build with readline library support yes|no|path\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-idn[=PATH] build with IDN kit support yes|no|path\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-iconv[=PATH] path of the iconv DLL [default=same than idn]\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-zlib[=PATH] build with zlib library yes|no|path\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-vcredist[=PATH] visual C++ redistributable package yes|path\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-tuning=OPTION tune for plaform size (large|default)\n",
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray" with-cross-compile 32 / 64 bit build / host plaforms\n");
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# Parse arguments
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $verbose = 0;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $legacy_only = 0;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $want_help = "no";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $want_win32 = "no";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $want_x64 = "no";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $want_clean = "no";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $want_unknown = "no";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $unknown_value;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $enable_intrinsics = "yes";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $enable_native_pkcs11 = "no";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $enable_openssl_hash = "auto";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $enable_filter_aaaa = "no";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $enable_isc_spnego = "yes";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $enable_fixed_rrset = "no";
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Braymy $enable_developer = "no";
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Braymy $enable_querytrace = "no";
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Braymy $enable_rpz_nsip = "yes";
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Braymy $enable_rpz_nsdname = "yes";
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Braymy $use_tests = "no";
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Braymy $use_xtests = "no";
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Braymy $use_samples = "no";
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Koscomy $use_openssl = "auto";
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Koscomy $openssl_path = "..\\..\\";
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Koscomy $use_pkcs11 = "no";
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Koscomy $pkcs11_path = "unknown";
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Koscomy $use_ecdsa = "auto";
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Koscomy $use_gost = "auto";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $gost_encoding = "raw";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $use_aes = "auto";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $cookie_algorithm = "aes";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $use_gssapi = "no";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $gssapi_path = "C:\\Program\ Files\\MIT\\Kerberos\\";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $use_geoip = "no";
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Koscomy $geoip_path = "";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $use_libxml2 = "auto";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $libxml2_path = "..\\..\\";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braymy $use_python = "auto";
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Koscomy $python_command = "python";
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Koscomy $use_readline = "no";
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Koscomy $readline_path = "..\\..\\";
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Koscomy $use_idn = "no";
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Koscomy $idn_path = "..\\..\\";
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Koscomy $iconv_path = " --idn-- ";
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Koscomy $use_zlib = "no";
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Koscomy $zlib_path = "..\\..\\";
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Koscomy $use_vcredist = "yes";
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Koscomy $vcredist_path = " --infer-- ";
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Koscomy $cross_compile = "no";
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Koscomy $tuning = "default";
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco# no arguments -> usage
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Kosco
3aa0947feb67d3e8292d84776638be98dd97fdc3Lubos Koscoif ($#ARGV < 0) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray foreach (@usage) {
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco print $_;
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray }
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray exit 1;
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray}
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco# parse arguments
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray
70a0fa770eb06713d8ebf91093102044bc5799e0Lubos Koscoforeach (@ARGV) {
70a0fa770eb06713d8ebf91093102044bc5799e0Lubos Kosco if (/^verbose$/i) {
70a0fa770eb06713d8ebf91093102044bc5799e0Lubos Kosco $verbose = 1;
70a0fa770eb06713d8ebf91093102044bc5799e0Lubos Kosco } elsif (/^help$/i) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray $want_help = "yes";
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco } elsif (/^disable-(.*)$/i) {
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco appargs($_);
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco myenable($1, "no");
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco } elsif (/^enable-(.*)$/i) {
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco appargs($_);
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco myenable($1, "yes");
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco } elsif (/^without-(.*)$/i) {
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco appargs($_);
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco mywith($1, "no");
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco } elsif (/^with-(.*)=(.*)$/i) {
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco appargs($_);
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco mywith($1, $2);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray } elsif (/^with-(.*)$/i) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray appargs($_);
cd348e325366620fe047edcc849e3c9424828599Peter Bray mywith($1, "yes");
cd348e325366620fe047edcc849e3c9424828599Peter Bray } elsif (/^legacy$/i) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $legacy_only = 1;
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray } elsif (/^win32$/i) {
2b024356b830395446c55f50f9f724a63612e578Lubos Kosco $want_win32 = "yes";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray } elsif (/^x64$/i) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray appargs($_);
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray $want_x64 = "yes";
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray } elsif (/^clean$/i) {
d70dc22c6dce3f498251b0873638d1fea0e644a3Lubos Kosco $want_clean = "yes";
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco } else {
3a5046f0538ba9fb3a9429199544a9f4b93d9a4dLubos Kosco $want_unknown = "yes";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $unknown_value = $_;
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray }
c842732324ee4c74ede17887ad1f0dcdc4364a2cLubos Kosco}
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Kosco
8f8c3f4555e5aa3160f03f2e9c55ddbd3381357bLubos Kosco# legacy default to win32
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayif ($legacy_only && ($want_x64 ne "yes")) {
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco $want_win32 = "yes";
cd348e325366620fe047edcc849e3c9424828599Peter Bray}
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray# configure the platform
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Brayif (($want_win32 eq "yes") && ($want_x64 eq "yes")) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray die "can't ask for both Win32 and x64 platforms\n";
cd348e325366620fe047edcc849e3c9424828599Peter Bray} elsif ($want_win32 eq "yes") {
cd348e325366620fe047edcc849e3c9424828599Peter Bray $configvar{"PLATFORM"} = "Win32";
cd348e325366620fe047edcc849e3c9424828599Peter Bray $configvar{"BUILD_PLATFORM"} = "Win32";
cd348e325366620fe047edcc849e3c9424828599Peter Bray $configvar{"MACHINE"} = "/machine:X86";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $configvar{"BUILD_MACHINE"} = "/machine:X86";
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco $configdefp{"ISC_PLATFORM_BUSYWAITNOP"} = "__asm { rep nop }";
cd348e325366620fe047edcc849e3c9424828599Peter Bray} elsif ($want_x64 eq "yes") {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $configvar{"PLATFORM"} = "x64";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $configvar{"BUILD_PLATFORM"} = "x64";
cd348e325366620fe047edcc849e3c9424828599Peter Bray $configvar{"MACHINE"} = "/machine:X64";
cd348e325366620fe047edcc849e3c9424828599Peter Bray $configvar{"BUILD_MACHINE"} = "/machine:X64";
cd348e325366620fe047edcc849e3c9424828599Peter Bray $configdefp{"ISC_PLATFORM_BUSYWAITNOP"} = "_mm_pause()";
cd348e325366620fe047edcc849e3c9424828599Peter Bray}
cd348e325366620fe047edcc849e3c9424828599Peter Bray
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray# get the version information
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Braymy %Versions;
cd348e325366620fe047edcc849e3c9424828599Peter Bray
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Koscosub getversion {
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco my $data;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray my $name;
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco my $value;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray my $version;
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray open V, "..\\version" || die $!;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray while (<V>) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray chomp;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray ($data) = split(/\#/);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if ($data) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray ($name, $value) = split(/=/, $data);
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco ($name) = split(/\s+/, $name);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if ($name eq 'PRODUCT' || $name eq 'DESCRIPTION') {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray ($value) =~ s/^["\s]+//;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray ($value) =~ s/["\s]+$//;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray } else {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray ($value) = split(/\s+/, $value);
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $Versions{$name} = $value;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray close V;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $version = "$Versions{'MAJORVER'}.$Versions{'MINORVER'}";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if ($Versions{'PATCHVER'} ne "") {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $version = "$version.$Versions{'PATCHVER'}";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $version = "$version$Versions{'RELEASETYPE'}$Versions{'RELEASEVER'}";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $version = "$version$Versions{'EXTENSIONS'}";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $configvar{"BIND9_VERSION"} = "$version";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braygetversion();
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray# append seen args to CONFIGARGS define
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braysub appargs {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray my $arg = $_[0];
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray # escape backslashes, spaces and double quotes
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $arg =~ s/([\\ "])/\\$1/g;
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if (defined($configdefh{"CONFIGARGS"})) {
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco $configdefh{"CONFIGARGS"} .= " " . $arg;
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco } else {
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco $configdefh{"CONFIGARGS"} = $arg;
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco }
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco}
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbyeif (!$configdefh{"CONFIGARGS"}) {
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco # CONFIGARGS default is "default"
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco $configdefh{"CONFIGARGS"} = "\"default\"";
4e854c69a0484765dcd27b0e837898c8b6969beaTrond Norbye} else {
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco my $val = $configdefh{"CONFIGARGS"};
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco $configdefh{"CONFIGARGS"} = "\"'$val'\"";
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco}
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco# parse enable/disable
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Koscosub myenable {
cd348e325366620fe047edcc849e3c9424828599Peter Bray my $key = $_[0];
cd348e325366620fe047edcc849e3c9424828599Peter Bray my $val = $_[1];
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray if ($key =~ /^intrinsics$/i) {
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco if ($val =~ /^no$/i) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray $enable_intrinsics = "no";
cd348e325366620fe047edcc849e3c9424828599Peter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray } elsif ($key =~ /^native-pkcs11$/i) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray if ($val =~ /^yes$/i) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $enable_native_pkcs11 = "yes";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray } elsif ($key =~ /^openssl-hash$/i) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if ($val =~ /^yes$/i) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray $enable_openssl_hash = "yes";
cd348e325366620fe047edcc849e3c9424828599Peter Bray } elsif ($val =~ /^no$/i) {
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco $enable_openssl_hash = "no";
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco }
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco } elsif ($key =~ /^isc-spnego$/i) {
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco if ($val =~ /^no$/i) {
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco $enable_isc_spnego = "no";
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco }
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco } elsif ($key =~ /^filter-aaaa$/i) {
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco if ($val =~ /^yes$/i) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray $enable_filter_aaaa = "yes";
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco }
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco } elsif ($key =~ /^fixed-rrset$/i) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if ($val =~ /^yes$/i) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $enable_fixed_rrset = "yes";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray } elsif ($key =~ /^developer$/i) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray if ($val =~ /^yes$/i) {
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco $enable_developer = "yes";
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray } elsif ($key =~ /^querytrace$/i) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray if ($val =~ /^yes$/i) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $enable_querytrace = "yes";
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray } elsif ($key =~ /^rpz-nsip$/i) {
cd348e325366620fe047edcc849e3c9424828599Peter Bray if ($val =~ /^no$/i) {
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco $enable_rpz_nsip = "no";
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray }
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray } elsif ($key =~ /^rpz-nsdname$/i) {
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray if ($val =~ /^no$/i) {
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco $enable_rpz_nsdname = "no";
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco }
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco } else {
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco $want_unknown = "yes";
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco if ($val eq "no") {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray $unknown_value = "disable-" . $key;
cd348e325366620fe047edcc849e3c9424828599Peter Bray } else {
cd348e325366620fe047edcc849e3c9424828599Peter Bray $unknown_value = "enable-". $key;
cd348e325366620fe047edcc849e3c9424828599Peter Bray }
5762c9f28c2246777be0e9d49cb29d9c0f49146dLubos Kosco }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
cd348e325366620fe047edcc849e3c9424828599Peter Bray
cd348e325366620fe047edcc849e3c9424828599Peter Bray# enable-developer expansion now
cd348e325366620fe047edcc849e3c9424828599Peter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayif ($enable_developer eq "yes") {
cd348e325366620fe047edcc849e3c9424828599Peter Bray $configdefh{"ISC_LIST_CHECKINIT"} = 1;
cd348e325366620fe047edcc849e3c9424828599Peter Bray $enable_filter_aaaa = "yes";
cd348e325366620fe047edcc849e3c9424828599Peter Bray $enable_querytrace = "yes";
cd348e325366620fe047edcc849e3c9424828599Peter Bray # no atf on WIN32
cd348e325366620fe047edcc849e3c9424828599Peter Bray $enable_fixed_rrset = "yes";
cd348e325366620fe047edcc849e3c9424828599Peter Bray # TODO: dlz filesystem
477c09a2656e6a2c1075425ad81e61d594164fa9Lubos Kosco $use_tests = "yes";
$use_samples = "yes";
}
# parse with/without
sub mywith {
my $key = $_[0];
my $val = $_[1];
if ($key =~ /^tests$/i) {
if ($val =~ /^yes$/i) {
$use_tests = "yes";
}
} elsif ($key =~ /^extra-tests$/i) {
if ($val =~ /^yes$/i) {
$use_tests = "yes";
$use_xtests = "yes";
}
} elsif ($key =~ /^samples$/i) {
if ($val =~ /^yes$/i) {
$use_samples = "yes";
}
} elsif ($key =~ /^openssl$/i) {
if ($val =~ /^no$/i) {
$use_openssl = "no";
} elsif ($val !~ /^yes$/i) {
$use_openssl = "yes";
$openssl_path = $val;
}
} elsif ($key =~ /^pkcs11$/i) {
if ($val =~ /^yes$/i) {
$use_pkcs11 = "yes";
} elsif ($val !~ /^no$/i) {
$use_pkcs11= "yes";
$pkcs11_path = $val;
$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";
$gost_encoding = $val;
}
} elsif ($key =~ /^aes$/i) {
if ($val =~ /^no$/i) {
$use_aes = "no";
} elsif ($val =~ /^yes$/i) {
$use_aes = "yes";
}
} elsif ($key =~ /^cc-alg$/i) {
$cookie_algorithm = $val;
} 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 =~ /^zlib$/i) {
if ($val !~ /^no$/i) {
$use_zlib = "yes";
if ($val !~ /^yes$/i) {
$zlib_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";
}
} elsif ($key =~ /^tuning$/i) {
if ($val =~ /^large$/i) {
$tuning = "large";
}
} else {
$want_unknown = "yes";
if ($val eq "no") {
$unknown_value = "without-" . $key;
} else {
$unknown_value = "with-" . $key;
}
}
}
# resolve enable-openssl-hash
if ($enable_openssl_hash eq "auto") {
if ($use_openssl ne "no") {
if ($enable_native_pkcs11 eq "yes") {
$enable_openssl_hash="no";
} else {
$enable_openssl_hash="yes";
}
} else {
$enable_openssl_hash="no";
}
}
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_querytrace eq "yes") {
print "querytrace: enabled\n";
} else {
print "querytrace: 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";
}
print "cookie algorithm: $cookie_algorithm\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_samples eq "yes") {
print "sample programs: 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";
print "gost private key encoding: $gost_encoding\n";
}
if ($use_aes eq "no") {
print "aes: disabled\n";
} else {
print "aes: 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_zlib eq "no") {
print "zlib: disabled\n";
} else {
print "zlib-path: $zlib_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";
}
my @vcpaths = {};
push(@vcpaths, $ENV{"VCRedistPath"}) if ($ENV{"VCRedistPath"} ne "");
push(@vcpaths, File::Spec->catfile( cwd(), "..", ".." ));
if ($ENV{"FrameworkSDKDir"} ne "" && $want_win32 eq "yes") {
push(@vcpaths, File::Spec->catfile($ENV{"FrameworkSDKDir"},
"BootStrapper", "Packages",
"vcredist_x86"));
} elsif ($ENV{"FrameworkSDKDir"} ne "" && $want_x64 eq "yes") {
push(@vcpaths, File::Spec->catfile($ENV{"FrameworkSDKDir"},
"BootStrapper", "Packages",
"vcredist_x64"));
}
if ($ENV{"WindowsSDKDir"} ne "" && $want_win32 eq "yes") {
push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir"},
"BootStrapper", "Packages",
"vcredist_x86"));
} elsif ($ENV{"WindowsSDKDir"} ne "" && $want_x64 eq "yes") {
push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir"},
"BootStrapper", "Packages",
"vcredist_x64"));
}
if ($ENV{"WindowsSDKDir_old"} ne "" && $want_win32 eq "yes") {
push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir_old"},
"BootStrapper", "Packages",
"vcredist_x86"));
} elsif ($ENV{"WindowsSDKDir_old"} ne "" && $want_x64 eq "yes") {
push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir_old"},
"BootStrapper", "Packages",
"vcredist_x64"));
}
if ($ENV{"VCINSTALLDIR"}) {
push(@vcpaths, File::Spec->catfile($ENV{"VCINSTALLDIR"},
"redist", "1033"));
}
my $rfile;
if ($want_win32 eq "yes") {
$rfile = "vcredist_x86.exe";
} else {
$rfile = "vcredist_x64.exe";
}
foreach (@vcpaths) {
my $vp = File::Spec->catfile($_, $rfile);
if (-f $vp) {
$vcredist_path = $vp;
last;
}
}
if ($vcredist_path eq " --infer-- ") {
die "with-vcredist is REQUIRED\n";
}
if ($verbose) {
print "found vcredist at " . $vcredist_path . "\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_HAVEATOMICSTOREQ"} = 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;
}
if ($use_aes eq "no") {
if ($verbose) {
print "no AES support in native PKCS#11\n";
}
} else {
if ($verbose) {
print "enabled AES support in native PKCS#11\n";
}
$use_aes = "pkcs11";
}
}
# 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-querytrace
if ($enable_querytrace eq "yes") {
$configdefh{"WANT_QUERYTRACE"} = 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-samples
if ($use_samples eq "yes") {
$configcond{"SAMPLES"} = 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";
$enable_openssl_hash = "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";
$enable_openssl_hash = "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";
$enable_openssl_hash = "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";
$enable_openssl_hash = "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;
}
if ($gost_encoding eq "ans1") {
$configdefh{"PREFER_GOSTASN1"} = 1;
} elsif ($gost_encoding ne "raw") {
die "Unrecognized GOST private key encoding: $gost_encoding\n";
}
# with-aes
if ($use_openssl eq "no") {
if ($use_aes ne "pkcs11") {
$use_aes = "no";
}
}
if ($use_aes eq "auto") {
if ($verbose) {
print "checking for OpenSSL EVP AES support\n";
}
$use_aes = "evp";
open F, ">testevpaes.c" || die $!;
print F << 'EOF';
#include <openssl/evp.h>
int
main(void)
{
EVP_CIPHER *aes128, *aes192, *aes256;
aes128 = EVP_aes_128_ecb();
aes192 = EVP_aes_192_ecb();
aes256 = EVP_aes_256_ecb();
if (aes128 == NULL || aes192 == NULL || aes256 == NULL)
return (1);
return (0);
}
EOF
close F;
my $include = $configinc{"OPENSSL_INC"};
my $library = $configlib{"OPENSSL_LIB"};
$compret = `cl /nologo /MD /I "$include" testevpaes.c "$library"`;
if (grep { -f and -x } ".\\testevpaes.exe") {
`.\\testevpaes.exe`;
if ($? != 0) {
if ($verbose) {
print "EVP AES test failed: disabling EVP AES\n";
}
$use_aes = "auto";
}
} else {
if ($verbose) {
print "can't compile EVP AES test: $compret\n";
print "disabling EVP AES\n";
}
$use_aes = "auto";
}
}
if ($use_aes eq "auto") {
if ($verbose) {
print "checking for OpenSSL native AES support\n";
}
$use_aes = "native";
open F, ">testaes.c" || die $!;
print F << 'EOF';
#include <openssl/aes.h>
AES_KEY k;
const unsigned char bufin[16];
unsigned char bufout[16];
int
main(void)
{
AES_encrypt(bufin, bufout, &k);
return (0);
}
EOF
close F;
my $include = $configinc{"OPENSSL_INC"};
my $library = $configlib{"OPENSSL_LIB"};
$compret = `cl /nologo /MD /I "$include" testaes.c "$library"`;
if (grep { -f and -x } ".\\testaes.exe") {
`.\\testaes.exe`;
if ($? != 0) {
if ($verbose) {
print "native AES test failed: disabling AES\n";
}
$use_aes = "no";
}
} else {
if ($verbose) {
print "can't compile native AES test: $compret\n";
print "disabling AES\n";
}
$use_aes = "no";
}
}
if ($use_aes eq "yes") {
$configdefh{"HAVE_OPENSSL_EVP_AES"} = 1;
} elsif ($use_aes eq "evp") {
$configdefh{"HAVE_OPENSSL_EVP_AES"} = 1;
$use_aes = "yes";
} elsif ($use_aes eq "native") {
$configdefh{"HAVE_OPENSSL_AES"} = 1;
$use_aes = "yes";
} elsif ($use_aes eq "pkcs11") {
$use_aes = "yes";
}
if ($use_aes eq "yes") {
$configdefp{"ISC_PLATFORM_WANTAES"} = 1;
$configcond{"AES"} = 1;
}
# with-cc-alg
if ($cookie_algorithm eq "aes") {
if ($use_aes ne "yes") {
$cookie_algorithm = "sha256";
} else {
$configdefh{"AES_CC"} = 1;
}
}
if ($cookie_algorithm eq "sha1") {
$configdefh{"HMAC_SHA1_CC"} = 1;
} elsif ($cookie_algorithm eq "sha256") {
$configdefh{"HMAC_SHA256_CC"} = 1;
} elsif ($cookie_algorithm ne "aes") {
die "Unrecognized cookie algorithm: $cookie_algorithm\n";
}
# 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;
if ($verbose) {
print "checking HMAC_Init() return type\n";
}
open F, ">testhmac.c" || die $!;
print F << 'EOF';
#include <openssl/hmac.h>
int
main(void)
{
HMAC_CTX ctx;
int n = HMAC_Init(&ctx, NULL, 0, NULL);
n += HMAC_Update(&ctx, NULL, 0);
n += HMAC_Final(&ctx, NULL, NULL);
return(n);
}
EOF
close F;
my $include = $configinc{"OPENSSL_INC"};
my $library = $configlib{"OPENSSL_LIB"};
$compret = `cl /nologo /MD /I "$include" testhmac.c "$library"`;
if (grep { -f and -x } ".\\testhmac.exe") {
$configdefh{"HMAC_RETURN_INT"} = 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-zlib
if ($use_zlib eq "no") {
if ($verbose) {
print "zlib library is disabled\n";
}
} else {
$configcond{"ZLIB"} = 1;
$zlib_path = File::Spec->rel2abs($zlib_path);
if ($verbose) {
print "checking for zlib directory at \"$zlib_path\"\n";
}
if (!-f File::Spec->catfile($zlib_path, "zlib.h")) {
die "can't find zlib.h include\n";
}
if (!-f File::Spec->catfile($zlib_path, "zdll.lib")) {
die "can't find zdll.lib library\n";
}
if (!-f File::Spec->catfile($zlib_path, "zlib1.dll")) {
die "can't find zlib1.dll DLL\n";
}
$configdefh{"HAVE_ZLIB"} = 1;
$configinc{"ZLIB_INC"} = "$zlib_path";
my $zlib_lib = File::Spec->catfile($zlib_path, "zdll.lib");
$configlib{"ZLIB_LIB"} = "$zlib_lib";
my $zlib_dll = File::Spec->catfile($zlib_path, "zlib1.dll");
$configdll{"ZLIB_DLL"} = "$zlib_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) {
print STDERR "can't launch the python interpreter: $pythonret\n";
$use_python = "no";
}
}
if ($use_python ne "no") {
if ($use_python ne "auto") {
if ($verbose) {
print "checking for $python_command\n";
}
my $pythonret = `"$python_command" -c "quit()" 2>&1`;
if ($? != 0) {
die "can't launch $python_command: $pythonret\n";
}
}
if ($verbose) {
print "checking for python module 'argparse'\n";
}
my $pythonret = `"$python_command" -c "import argparse" 2>&1`;
if ($? != 0) {
if ($use_python ne "auto") {
die "can't find python module 'argparse': $pythonret\n";
} else {
print STDERR "can't find python module 'argparse': $pythonret\n";
$use_python = "no";
}
}
if ($use_python ne "no") {
if ($verbose) {
print "checking for python module 'ply'\n";
}
$pythonret = `"$python_command" -c "from ply import *" 2>&1`;
if ($? != 0) {
if ($use_python ne "auto") {
die "can't find python module 'ply': $pythonret\n";
} else {
print STDERR "can't find python module 'ply': $pythonret\n";
$use_python = "no";
}
}
}
if ($use_python ne "no") {
if ($verbose) {
print "checking for python module 'win32api'\n";
}
$pythonret = `"$python_command" -c "import win32api" 2>&1`;
if ($? != 0) {
if ($use_python ne "auto") {
die "can't find python module 'win32api': $pythonret\n";
} else {
print STDERR
"can't find python module 'win32api': $pythonret\n";
$use_python = "no";
}
}
}
if ($use_python ne "no") {
if ($verbose) {
print "checking for python module 'win32con'\n";
}
$pythonret = `"$python_command" -c "import win32con" 2>&1`;
if ($? != 0) {
if ($use_python ne "auto") {
die "can't find python module 'win32con': $pythonret\n";
} else {
print STDERR
"can't find python module 'win32con': $pythonret\n";
$use_python = "no";
}
}
}
if ($use_python ne "no") {
$configcond{"PYTHON"} = 1;
$configdefd{"USE_PYTHON"} = "USE_PYTHON";
$configvar{"PYTHON"} = "$python_command";
# Doesn't matter
$configvar{"prefix"} = "__prefix__";
$configvar{"expanded_sysconfdir"} = "__prefix__\\etc";
}
}
# 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";
}
# tuning
if ($tuning eq "large") {
$configdefh{"TUNE_LARGE"} = 1;
}
# 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);
}
if ($1 ~~ @allcond) {
$cond = $1;
if (defined($configcond{$cond})) {
# do nothing
} else {
$pass = 0;
}
} else {
die "unknown condition \@IF $1 in $filename\n";
}
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};
my $pre = "$`";
my $post = "$'";
$def =~ s/([\\ "])/\\$1/g;
$line = qq($pre/D "$def"$post);
} 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);
}
if ($1 ~~ @allcond) {
$cond = $1;
if (defined($configcond{$cond})) {
# do nothing
} else {
$pass = 0;
}
} else {
die "unknown condition \@IF $1 in $projectname\n";
}
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 = ("isc", "dns", "isccc", "isccfg", "lwres", "bind9", "irs");
my %LibMacros = (
"bind9" => "LIBBIND9_EXPORTS",
"dns" => "LIBDNS_EXPORTS",
"irs" => "LIBIRS_EXPORTS",
"isc" => "LIBISC_EXPORTS",
"isccc" => "LIBISCCC_EXPORTS",
"isccfg" => "LIBISCCFG_EXPORTS",
"lwres" => "LIBLWRES_EXPORTS");
my @VersionNames = ("LIBINTERFACE", "LIBREVISION", "LIBAGE");
my $Version;
my %ApiVersions;
my $Mapapi;
my $versionfile = "versions.h";
my $versionpath = "..\\$versionfile";
my $data;
my $name;
my $value;
# 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'} ne "") {
$Version = "$Version.$Versions{'PATCHVER'}";
}
$Version = "$Version$Versions{'RELEASETYPE'}$Versions{'RELEASEVER'}";
$Version = "$Version$Versions{'EXTENSIONS'}";
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;
}
# Build install files
sub makeinstallfile {
open FOUT, ">InstallFlags" || die "cannot open InstallFlags: $!\n";
print FOUT "# Flags for BINDInstall\n";
if ($msc_ver >= 1400) {
print FOUT "runvcredist\n";
}
if ($want_x64 eq "yes") {
print FOUT "forwin64\n";
}
close FOUT;
open LOUT, ">InstallFiles" || die "cannot open InstallFiles: $!\n";
print LOUT "# File list for BINDInstall\n";
if ($msc_ver < 1400) {
if ($msc_ver >= 1310) {
print LOUT "mfc71.dll-WCTT\n";
print LOUT "msvcr71.dll-WCTT\n";
} elsif (($msc_ver > 1200) && ($msc_ver < 1310)) {
print LOUT "mfc70.dll-WCTT\n";
print LOUT "msvcr70.dll-WCTT\n";
}
}
print LOUT "bindevt.dll-BNFT\n";
print LOUT "libbind9.dll-BCFT\n";
print LOUT "libisc.dll-BCFT\n";
print LOUT "libisccfg.dll-BCFT\n";
print LOUT "libisccc.dll-BCFT\n";
print LOUT "libdns.dll-BCFT\n";
print LOUT "liblwres.dll-BCFT\n";
print LOUT "libirs.dll-BCFT\n";
if ($use_openssl eq "yes") {
print LOUT "libeay32.dll-BCFT\n";
}
if ($use_libxml2 eq "yes") {
print LOUT "libxml2.dll-BCFT\n";
}
if ($use_gssapi eq "yes") {
if ($want_x64 eq "yes") {
print LOUT "gssapi64.dll-BCFT\n";
print LOUT "krb5_64.dll-BCFT\n";
} else {
print LOUT "gssapi32.dll-BCFT\n";
print LOUT "krb5_32.dll-BCFT\n";
}
}
if ($use_geoip eq "yes") {
print LOUT "libgeoip.dll-BCFT\n";
}
if ($use_idn eq "yes") {
print LOUT "idnkit.dll-BCFT\n";
print LOUT "iconv.dll-BCFT\n";
}
print LOUT "named.exe-BCFF\n";
print LOUT "nsupdate.exe-BNFT\n";
print LOUT "BINDInstall.exe-BNFT\n";
print LOUT "InstallFlags-BNFT\n";
print LOUT "InstallFiles-BNFT\n";
print LOUT "rndc.exe-BNFF\n";
print LOUT "dig.exe-BNFT\n";
print LOUT "host.exe-BNFT\n";
print LOUT "nslookup.exe-BNFT\n";
print LOUT "delv.exe-BNFT\n";
print LOUT "arpaname.exe-BNFT\n";
print LOUT "nsec3hash.exe-BNFF\n";
print LOUT "genrandom.exe-BNFF\n";
print LOUT "rndc-confgen.exe-BNFF\n";
print LOUT "ddns-confgen.exe-BNFF\n";
print LOUT "tsig-keygen.exe-BNFF\n";
print LOUT "dnssec-keygen.exe-BNFF\n";
print LOUT "dnssec-signzone.exe-BNFF\n";
print LOUT "dnssec-dsfromkey.exe-BNFF\n";
print LOUT "dnssec-importkey.exe-BNFF\n";
print LOUT "dnssec-keyfromlabel.exe-BNFF\n";
print LOUT "dnssec-revoke.exe-BNFF\n";
print LOUT "dnssec-settime.exe-BNFF\n";
print LOUT "dnssec-verify.exe-BNFF\n";
print LOUT "named-checkconf.exe-BNFF\n";
print LOUT "named-checkzone.exe-BNFF\n";
print LOUT "named-compilezone.exe-BNFF\n";
print LOUT "named-journalprint.exe-BNFF\n";
print LOUT "named-rrchecker.exe-BNFF\n";
print LOUT "isc-hmax-fixup.exe-BNFF\n";
if ($use_pkcs11 eq "yes") {
print LOUT "pkcs11-destroy.exe-BNFF\n";
print LOUT "pkcs11-keygen.exe-BNFF\n";
print LOUT "pkcs11-list.exe-BNFF\n";
print LOUT "pkcs11-tokens.exe-BNFF\n";
}
if ($use_python ne "no") {
print LOUT "dnssec-checkds.py-BNFF\n";
print LOUT "dnssec-coverage.py-BNFF\n";
print LOUT "dnssec-keymgr.py-BNFF\n";
}
print LOUT "readme1st.txt-BTFT\n";
close LOUT;
}
# 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();
makeinstallfile();
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-native-pkcs11 supported
# --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-ipv6 included without a way to disable it
# --enable-atomic supported (renamed to intrinsic)
# --enable-isc-spnego supported (part of GSSAPI)
# --enable-fixed-rrset supported
# --enable-querytrace supported
# --disable-rpz-nsip supported
# --disable-rpz-nsdname supported
# --enable-filter-aaaa supported
# --enable-full-report supported by verbose
# --enable-dnstap not supported (requires libfstrm support on WIN32)
# --enable-seccomp not supported (Linux specific)
# --enable-afl not supported (not yet considered on WIN32)
# --with-python supported
# --with-openssl supported
# --with-pkcs11 supported
# --with-ecdsa supported
# --with-gost supported
# --with-aes supported
# --with-cc-alg 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-zlib supported
# --with-purify not supported (package available on WIN32 but for free?)
# --with-gperftools-profiler not supported (package not available on WIN32)
# --with-libtool not supported on WIN32 (never)
# --with-locktype not supported on WIN32 (not yet available on WIN32)
# --with-readline supported
# --with-protobuf-c not supported (no reason to until libfstrm is ready)
# --with-libfrtrm not supported (not yet available on WIN32)
# --with-docbook-xsl not supported (?)
# --with-idn[lib] supported
# --with-[lib]iconv supported (part of IDN)
# --with-atf not supported on WIN32 (package not available on WIN32)
# --with-tuning supported
# --with-dlopen included without a way to disable it
# --with-dlz-* ?
#
# Notes: MSVC versions
# MSVC 14.0 _MSC_VER == 1900 (VS 2015)
# 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)