Configure revision 0c27b3fe77ac1d5094ba3521e8142d9e7973133f
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#!/usr/bin/perl
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#
a908d41cb4b0658c958383375c5a8f0bcaaf843dFrancis Dupont# Copyright (C) 2013-2016 Internet Systems Consortium, Inc. ("ISC")
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# file, You can obtain one at http://mozilla.org/MPL/2.0/.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Configure
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# This script builds nmake and visual studio build files
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsrequire 5.000;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsuse strict;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsuse File::Spec;
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Huntuse Cwd;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# files to configure
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $configfilein = "..\\config.h.win32";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $configfileout = ">..\\config.h";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $platformfile = "..\\lib\\isc\\win32\\include\\isc\\platform.h";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @filelist = ("..\\bin\\check\\win32\\checktool.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\check\\win32\\checkconf.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\check\\win32\\checkconf.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\check\\win32\\checkzone.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\check\\win32\\checkzone.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\confgen\\win32\\confgentool.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\confgen\\win32\\ddnsconfgen.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\confgen\\win32\\ddnsconfgen.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\confgen\\win32\\rndcconfgen.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\confgen\\win32\\rndcconfgen.mak",
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt "..\\bin\\delv\\win32\\delv.dsp",
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt "..\\bin\\delv\\win32\\delv.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\dig.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\dig.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\dighost.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\host.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\host.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\nslookup.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\nslookup.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\dnssectool.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\dsfromkey.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\dsfromkey.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\importkey.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\importkey.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\keyfromlabel.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\keyfromlabel.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\keygen.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\keygen.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\revoke.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\revoke.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\settime.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\settime.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\signzone.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\signzone.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\verify.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\verify.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\named\\win32\\named.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\named\\win32\\named.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\nsupdate\\win32\\nsupdate.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\nsupdate\\win32\\nsupdate.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11destroy.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11destroy.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11keygen.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11keygen.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11list.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11list.mak",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "..\\bin\\pkcs11\\win32\\pk11tokens.dsp",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "..\\bin\\pkcs11\\win32\\pk11tokens.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\python\\dnssec-checkds.py",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\python\\dnssec-coverage.py",
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews "..\\bin\\python\\dnssec-keymgr.py",
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews "..\\bin\\python\\isc\\utils.py",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\rndc\\win32\\rndc.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\rndc\\win32\\rndc.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\rndc\\win32\\rndcutil.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\arpaname.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\arpaname.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\genrandom.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\genrandom.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\ischmacfixup.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\ischmacfixup.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\journalprint.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\journalprint.mak",
1059bc2e42e8214f8b73d3b4cd181d8394a94a6aFrancis Dupont "..\\bin\\tools\\win32\\mdig.dsp",
1059bc2e42e8214f8b73d3b4cd181d8394a94a6aFrancis Dupont "..\\bin\\tools\\win32\\mdig.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\nsec3hash.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\nsec3hash.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\rrchecker.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\rrchecker.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\atomic\\win32\\t_atomic.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\atomic\\win32\\t_atomic.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\db\\win32\\t_db.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\db\\win32\\t_db.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\dst\\win32\\t_dst.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\dst\\win32\\t_dst.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\master\\win32\\t_master.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\master\\win32\\t_master.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\mem\\win32\\t_mem.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\mem\\win32\\t_mem.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\hashes\\win32\\t_hashes.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\hashes\\win32\\t_hashes.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\names\\win32\\t_names.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\names\\win32\\t_names.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\rbt\\win32\\t_rbt.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\rbt\\win32\\t_rbt.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\resolver\\win32\\t_resolver.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\resolver\\win32\\t_resolver.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\tasks\\win32\\t_tasks.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\tasks\\win32\\t_tasks.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\timers\\win32\\t_timers.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\timers\\win32\\t_timers.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\backtrace_test.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\backtrace_test.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\inter_test.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\inter_test.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\rwlock_test.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\rwlock_test.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\shutdown_test.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\shutdown_test.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\sock_test.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\sock_test.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\task_test.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\task_test.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\timer_test.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\timer_test.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\inter_test.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\inter_test.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\rwlock_test.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\rwlock_test.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\shutdown_test.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\shutdown_test.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\sock_test.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\sock_test.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\task_test.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\task_test.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\timer_test.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\timer_test.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\win32\\BINDInstall\\BINDInstall.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\win32\\BINDInstall\\BINDInstall.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\bind9\\win32\\libbind9.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\bind9\\win32\\libbind9.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\dns\\win32\\gen.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\dns\\win32\\gen.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\dns\\win32\\libdns.def",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\dns\\win32\\libdns.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\dns\\win32\\libdns.mak",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\irs\\win32\\libirs.dsp",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\irs\\win32\\libirs.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isc\\win32\\libisc.def",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isc\\win32\\libisc.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isc\\win32\\libisc.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isccc\\win32\\libisccc.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isccc\\win32\\libisccc.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isccfg\\win32\\libisccfg.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isccfg\\win32\\libisccfg.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\lwres\\win32\\liblwres.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\lwres\\win32\\liblwres.mak",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\async.dsp",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\async.mak",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\gai.dsp",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\gai.mak",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\nsprobe.dsp",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\nsprobe.mak",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\request.dsp",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\request.mak",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\resolve.dsp",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\resolve.mak",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\update.dsp",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\update.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\tests\\win32\\libtests.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\tests\\win32\\libtests.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\win32\\bindevt\\bindevt.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\win32\\bindevt\\bindevt.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "legacy\\BINDBuild.dsw",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "legacy\\BuildAll.bat",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "legacy\\BuildPost.bat",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "legacy\\BuildSetup.bat");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @projectlist = ("..\\bin\\check\\win32\\checkconf.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\check\\win32\\checkconf.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\check\\win32\\checktool.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\check\\win32\\checktool.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\check\\win32\\checkzone.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\check\\win32\\checkzone.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\confgen\\win32\\confgentool.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\confgen\\win32\\confgentool.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\confgen\\win32\\ddnsconfgen.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\confgen\\win32\\ddnsconfgen.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\confgen\\win32\\rndcconfgen.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\confgen\\win32\\rndcconfgen.vcxproj.filters",
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt "..\\bin\\delv\\win32\\delv.vcxproj",
2ae159b376dac23870d8005563c585acf85a4b5aEvan Hunt "..\\bin\\delv\\win32\\delv.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\dig.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\dig.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\dighost.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\dighost.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\host.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\host.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\nslookup.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\nslookup.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\dnssectool.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\dnssectool.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\dsfromkey.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\dsfromkey.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\importkey.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\importkey.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\keyfromlabel.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\keyfromlabel.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\keygen.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\keygen.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\revoke.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\revoke.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\settime.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\settime.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\signzone.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\signzone.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\verify.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\verify.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\named\\win32\\named.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\named\\win32\\named.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\nsupdate\\win32\\nsupdate.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\nsupdate\\win32\\nsupdate.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11destroy.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11destroy.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11keygen.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11keygen.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11list.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11list.vcxproj.filters",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "..\\bin\\pkcs11\\win32\\pk11tokens.vcxproj",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "..\\bin\\pkcs11\\win32\\pk11tokens.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\rndc\\win32\\rndc.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\rndc\\win32\\rndc.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\rndc\\win32\\rndcutil.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\rndc\\win32\\rndcutil.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\arpaname.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\arpaname.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\genrandom.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\genrandom.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\ischmacfixup.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\ischmacfixup.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\journalprint.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\journalprint.vcxproj.filters",
1059bc2e42e8214f8b73d3b4cd181d8394a94a6aFrancis Dupont "..\\bin\\tools\\win32\\mdig.vcxproj",
1059bc2e42e8214f8b73d3b4cd181d8394a94a6aFrancis Dupont "..\\bin\\tools\\win32\\mdig.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\nsec3hash.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\nsec3hash.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\rrchecker.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\rrchecker.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\atomic\\win32\\t_atomic.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\atomic\\win32\\t_atomic.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\db\\win32\\t_db.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\db\\win32\\t_db.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\dst\\win32\\t_dst.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\dst\\win32\\t_dst.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\master\\win32\\t_master.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\master\\win32\\t_master.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\mem\\win32\\t_mem.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\mem\\win32\\t_mem.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\hashes\\win32\\t_hashes.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\hashes\\win32\\t_hashes.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\names\\win32\\t_names.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\names\\win32\\t_names.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\rbt\\win32\\t_rbt.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\rbt\\win32\\t_rbt.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\resolver\\win32\\t_resolver.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\resolver\\win32\\t_resolver.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\sockaddr\\win32\\t_sockaddr.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\tasks\\win32\\t_tasks.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\tasks\\win32\\t_tasks.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\timers\\win32\\t_timers.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\timers\\win32\\t_timers.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\backtrace_test.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\backtrace_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\inter_test.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\inter_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\rwlock_test.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\rwlock_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\shutdown_test.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\shutdown_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\sock_test.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\sock_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\task_test.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\task_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\timer_test.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\timer_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\inter_test.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\inter_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\rwlock_test.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\rwlock_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\shutdown_test.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\shutdown_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\sock_test.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\sock_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\task_test.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\task_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\timer_test.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\timer_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\win32\\BINDInstall\\BINDInstall.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\win32\\BINDInstall\\BINDInstall.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\bind9\\win32\\libbind9.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\bind9\\win32\\libbind9.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\dns\\win32\\gen.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\dns\\win32\\gen.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\dns\\win32\\libdns.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\dns\\win32\\libdns.vcxproj.filters",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\irs\\win32\\libirs.vcxproj",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\irs\\win32\\libirs.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isc\\win32\\libisc.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isc\\win32\\libisc.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isccc\\win32\\libisccc.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isccc\\win32\\libisccc.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isccfg\\win32\\libisccfg.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isccfg\\win32\\libisccfg.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\lwres\\win32\\liblwres.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\lwres\\win32\\liblwres.vcxproj.filters",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\resolve.vcxproj",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\resolve.vcxproj.filters",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\async.vcxproj",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\async.vcxproj.filters",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\gai.vcxproj",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\gai.vcxproj.filters",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\update.vcxproj",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\update.vcxproj.filters",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\request.vcxproj",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\request.vcxproj.filters",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\nsprobe.vcxproj",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\nsprobe.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\tests\\win32\\libtests.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\tests\\win32\\libtests.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\win32\\bindevt\\bindevt.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\win32\\bindevt\\bindevt.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "bind9.sln");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# for config.h
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy %configdefh;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupontmy @substdefh = ("AES_CC",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "ALLOW_FILTER_AAAA",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "CONFIGARGS",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "DNS_RDATASET_FIXED",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ENABLE_RPZ_NSDNAME",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ENABLE_RPZ_NSIP",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_EVP_SHA256",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_EVP_SHA384",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_EVP_SHA512",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_GEOIP",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_GEOIP_CITY_V6",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "HAVE_GEOIP_V6",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_LIBXML2",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "HAVE_OPENSSL_AES",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_OPENSSL_DSA",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_OPENSSL_ECDSA",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "HAVE_OPENSSL_EVP_AES",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_OPENSSL_GOST",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "HAVE_PKCS11_ECDSA",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "HAVE_PKCS11_GOST",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_READLINE",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "HAVE_ZLIB",
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont "HMAC_RETURN_INT",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "HMAC_SHA1_CC",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "HMAC_SHA256_CC",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ISC_LIST_CHECKINIT",
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt "PREFER_GOSTASN1",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "TUNE_LARGE",
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman "WANT_QUERYTRACE",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "WITH_IDN");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# for platform.h
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy %configdefp;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
cf24cbd837617c5cb89f04ba97b262be21a925bfEvan Huntmy @substdefp = ("ISC_PLATFORM_BUSYWAITNOP",
cf24cbd837617c5cb89f04ba97b262be21a925bfEvan Hunt "ISC_PLATFORM_HAVEATOMICSTORE",
821ff5e8fa1df2e09fea157ee3e298eef6cf4ec9Evan Hunt "ISC_PLATFORM_HAVEATOMICSTOREQ",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ISC_PLATFORM_HAVECMPXCHG",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ISC_PLATFORM_HAVEXADD",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ISC_PLATFORM_HAVEXADDQ",
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt "ISC_PLATFORM_NEEDSTRCASESTR",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "ISC_PLATFORM_USEBACKTRACE",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "ISC_PLATFORM_WANTAES");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# includes
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy %configinc;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @substinc = ("GSSAPI_INC",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "GEOIP_INC",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "IDN_INC",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "LIBXML2_INC",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "OPENSSL_INC",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "READLINE_INC",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "ZLIB_INC");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# libraries
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy %configlib;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @substlib = ("GSSAPI_LIB",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "GEOIP_LIB",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "IDN_LIB",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "KRB5_LIB",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "LIBXML2_LIB",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "OPENSSL_LIB",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "READLINE_LIB",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "READLINE_LIBD",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "ZLIB_LIB");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# DLLs
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy %configdll;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @substdll = ("COMERR_DLL",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "GSSAPI_DLL",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "GEOIP_DLL",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ICONV_DLL",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "IDN_DLL",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "KRB5_DLL",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "K5SPRT_DLL",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "LIBXML2_DLL",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "OPENSSL_DLL",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "WSHELP_DLL",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "ZLIB_DLL");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# variables
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy %configvar;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupontmy @substvar = ("BIND9_VERSION",
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont "BUILD_MACHINE",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "BUILD_PLATFORM",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "COPTI",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "COPTML",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "COPTMLD",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "COPTX",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "COPTY",
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews "expanded_sysconfdir",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "INTRINSIC",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "MACHINE",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "OPENSSL_PATH",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "PLATFORM",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "PKCS11_TOOLS",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "prefix",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "PYTHON",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "VCREDIST_PATH"),
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# defines
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy %configdefd;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Huntmy @substdefd = ("CRYPTO",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "PK11_LIB_LOCATION",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "USE_GSSAPI",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "USE_PKCS11",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "USE_PYTHON",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "USE_ISC_SPNEGO");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# conditions
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy %configcond;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntmy @substcond = ("AES",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "ATOMIC",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "GSSAPI",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "GEOIP",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "IDNKIT",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "LIBXML2",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "OPENSSL",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "PKCS11",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "PYTHON",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "SAMPLES",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "TESTS",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "XTESTS",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "ZLIB");
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupontmy @allcond = (@substcond, "NOTYET", "NOLONGER");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# arguments
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-xxx/disable-xxx
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @enablelist = ("developer",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "fixed-rrset",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "intrinsics",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "isc-spnego",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "native-pkcs11",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "openssl-hash",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "filter-aaaa",
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman "querytrace",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "rpz-nsdname",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "rpz-nsip");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-xxx/without-xxx
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntmy @withlist = ("aes",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "cross-compile",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ecdsa",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "extra-tests",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "gssapi",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "geoip",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "gost",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "iconv",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "idn",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "openssl",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "libxml2",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "pkcs11",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "python",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "readline",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "samples",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "cc-alg",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "tests",
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt "tuning",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "vcredist",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont "zlib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# general arguments
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @optionlist = ("help", "verbose", "legacy", "win32", "x64", "clean");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# usage
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @usage = ("Usage: perl Configure help\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews " perl Configure options* win32|x64\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews " perl Configure clean\n");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# help
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @help = (
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews"'Configure' configures BIND9 build files.\n\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews@usage,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews"\nGeneral Options and Commands:\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" verbose (options) print messages\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" help (command) print this help\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" legacy (options) process only files for legacy build\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" win32 (command) configure for Win32 platform\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" x64 (command) configure for x64 platform\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" clean (command) clean up generated files\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" <none> (command) print a summary of the configuration\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews"\nOptional Features:\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-intrinsics enable instrinsic/atomic functions [default=yes]\n",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt" enable-native-pkcs11 use native PKCS#11 for all crypto [default=no]\n",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt" enable-openssl-hash use OpenSSL for hash functions [default=yes]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-isc-spnego use SPNEGO from lib/dns [default=yes]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-filter-aaaa enable filtering of AAAA records [default=no]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-fixed-rrset enable fixed rrset ordering [default=no]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-developer enable developer build settings [default=no]\n",
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman" enable-querytrace enable very verbose query trace [default=no]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-rpz-nsip enable rpz-nsip rules [default=yes]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-rpz-nsdname enable rpz-nsdname rules [default=yes]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews"\nOptional Packages:\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-tests build with test suite\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-extra-tests build with extra test suite\n",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt" with-samples build with sample programs\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-openssl[=PATH] build with OpenSSL yes|no|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-pkcs11[=PATH] build with PKCS#11 support yes|no|provider-path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-ecdsa crypto ECDSA\n",
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt" with-gost[=ENC] crypto GOST yes|no|raw|ans1\n",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt" with-aes crypto AES\n",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont" with-cc-alg choose the algorithm for cookies aes|sha1|sha256\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-gssapi[=PATH] build with MIT KfW GSSAPI yes|no|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-libxml2[=PATH] build with libxml2 library yes|no|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-geoip[=PATH] build with GeoIP support yes|no|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-python[=COMMAND] specify python interpreter python|command\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-readline[=PATH] build with readline library support yes|no|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-idn[=PATH] build with IDN kit support yes|no|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-iconv[=PATH] path of the iconv DLL [default=same than idn]\n",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont" with-zlib[=PATH] build with zlib library yes|no|path\n",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt" with-vcredist[=PATH] visual C++ redistributable package yes|path\n",
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt" with-tuning=OPTION tune for plaform size (large|default)\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-cross-compile 32 / 64 bit build / host plaforms\n");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Parse arguments
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $verbose = 0;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $legacy_only = 0;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $want_help = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $want_win32 = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $want_x64 = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $want_clean = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $want_unknown = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $unknown_value;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $enable_intrinsics = "yes";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Huntmy $enable_native_pkcs11 = "no";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntmy $enable_openssl_hash = "auto";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $enable_filter_aaaa = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $enable_isc_spnego = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $enable_fixed_rrset = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $enable_developer = "no";
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaramanmy $enable_querytrace = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $enable_rpz_nsip = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $enable_rpz_nsdname = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_tests = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_xtests = "no";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntmy $use_samples = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_openssl = "auto";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $openssl_path = "..\\..\\";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_pkcs11 = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $pkcs11_path = "unknown";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_ecdsa = "auto";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_gost = "auto";
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Huntmy $gost_encoding = "raw";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntmy $use_aes = "auto";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupontmy $cookie_algorithm = "aes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_gssapi = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $gssapi_path = "C:\\Program\ Files\\MIT\\Kerberos\\";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_geoip = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $geoip_path = "";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_libxml2 = "auto";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $libxml2_path = "..\\..\\";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_python = "auto";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $python_command = "python";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_readline = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $readline_path = "..\\..\\";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_idn = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $idn_path = "..\\..\\";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $iconv_path = " --idn-- ";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupontmy $use_zlib = "no";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupontmy $zlib_path = "..\\..\\";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_vcredist = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $vcredist_path = " --infer-- ";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $cross_compile = "no";
98091cb21da79b0c7fd329fd64497dcb03402467Evan Huntmy $tuning = "default";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# no arguments -> usage
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($#ARGV < 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach (@usage) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print $_;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews exit 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# parse arguments
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsforeach (@ARGV) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (/^verbose$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $verbose = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif (/^help$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $want_help = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif (/^disable-(.*)$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews appargs($_);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews myenable($1, "no");
f03747965c663e5d21af52dd111460efea9e8dd7Francis Dupont } elsif (/^enable-(.*)$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews appargs($_);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews myenable($1, "yes");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif (/^without-(.*)$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews appargs($_);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews mywith($1, "no");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif (/^with-(.*)=(.*)$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews appargs($_);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews mywith($1, $2);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif (/^with-(.*)$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews appargs($_);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews mywith($1, "yes");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif (/^legacy$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $legacy_only = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif (/^win32$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $want_win32 = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif (/^x64$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews appargs($_);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $want_x64 = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif (/^clean$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $want_clean = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $want_unknown = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $unknown_value = $_;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# legacy default to win32
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($legacy_only && ($want_x64 ne "yes")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $want_win32 = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# configure the platform
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif (($want_win32 eq "yes") && ($want_x64 eq "yes")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't ask for both Win32 and x64 platforms\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($want_win32 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"PLATFORM"} = "Win32";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"BUILD_PLATFORM"} = "Win32";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"MACHINE"} = "/machine:X86";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"BUILD_MACHINE"} = "/machine:X86";
cf24cbd837617c5cb89f04ba97b262be21a925bfEvan Hunt $configdefp{"ISC_PLATFORM_BUSYWAITNOP"} = "__asm { rep nop }";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($want_x64 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"PLATFORM"} = "x64";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"BUILD_PLATFORM"} = "x64";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"MACHINE"} = "/machine:X64";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"BUILD_MACHINE"} = "/machine:X64";
bca79675ee0d9017d78768fbf5e69bca621f7e47Evan Hunt $configdefp{"ISC_PLATFORM_BUSYWAITNOP"} = "_mm_pause()";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont# get the version information
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupontmy %Versions;
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupontsub getversion {
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont my $data;
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont my $name;
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont my $value;
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont my $version;
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont open V, "..\\version" || die $!;
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont while (<V>) {
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont chomp;
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont ($data) = split(/\#/);
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont if ($data) {
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont ($name, $value) = split(/=/, $data);
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont ($name) = split(/\s+/, $name);
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont if ($name eq 'PRODUCT' || $name eq 'DESCRIPTION') {
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont ($value) =~ s/^["\s]+//;
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont ($value) =~ s/["\s]+$//;
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont } else {
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont ($value) = split(/\s+/, $value);
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont }
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont $Versions{$name} = $value;
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont }
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont }
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont close V;
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont $version = "$Versions{'MAJORVER'}.$Versions{'MINORVER'}";
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont if ($Versions{'PATCHVER'} ne "") {
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont $version = "$version.$Versions{'PATCHVER'}";
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont }
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont $version = "$version$Versions{'RELEASETYPE'}$Versions{'RELEASEVER'}";
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont $version = "$version$Versions{'EXTENSIONS'}";
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont $configvar{"BIND9_VERSION"} = "$version";
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont}
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupontgetversion();
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# append seen args to CONFIGARGS define
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub appargs {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $arg = $_[0];
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # escape backslashes, spaces and double quotes
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $arg =~ s/([\\ "])/\\$1/g;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdefh{"CONFIGARGS"})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"CONFIGARGS"} .= " " . $arg;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"CONFIGARGS"} = $arg;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif (!$configdefh{"CONFIGARGS"}) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # CONFIGARGS default is "default"
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"CONFIGARGS"} = "\"default\"";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $val = $configdefh{"CONFIGARGS"};
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"CONFIGARGS"} = "\"'$val'\"";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# parse enable/disable
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub myenable {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $key = $_[0];
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $val = $_[1];
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($key =~ /^intrinsics$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_intrinsics = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt } elsif ($key =~ /^native-pkcs11$/i) {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($val =~ /^yes$/i) {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt $enable_native_pkcs11 = "yes";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^openssl-hash$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_openssl_hash = "yes";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } elsif ($val =~ /^no$/i) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $enable_openssl_hash = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^isc-spnego$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_isc_spnego = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^filter-aaaa$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_filter_aaaa = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^fixed-rrset$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_fixed_rrset = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^developer$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_developer = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman } elsif ($key =~ /^querytrace$/i) {
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman if ($val =~ /^yes$/i) {
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman $enable_querytrace = "yes";
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^rpz-nsip$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_rpz_nsip = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^rpz-nsdname$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_rpz_nsdname = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $want_unknown = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $unknown_value = "disable-" . $key;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $unknown_value = "enable-". $key;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-developer expansion now
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($enable_developer eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"ISC_LIST_CHECKINIT"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_filter_aaaa = "yes";
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman $enable_querytrace = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # no atf on WIN32
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_fixed_rrset = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # TODO: dlz filesystem
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_tests = "yes";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_samples = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# parse with/without
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub mywith {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $key = $_[0];
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $val = $_[1];
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($key =~ /^tests$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_tests = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^extra-tests$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_tests = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_xtests = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } elsif ($key =~ /^samples$/i) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($val =~ /^yes$/i) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_samples = "yes";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^openssl$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_openssl = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_openssl = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $openssl_path = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^pkcs11$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_pkcs11 = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val !~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_pkcs11= "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pkcs11_path = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pkcs11_path =~ s/\.dll$//i;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^ecdsa$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_ecdsa = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_ecdsa = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^gost$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_gost = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_gost = "yes";
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt $gost_encoding = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } elsif ($key =~ /^aes$/i) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($val =~ /^no$/i) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_aes = "no";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } elsif ($val =~ /^yes$/i) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_aes = "yes";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont } elsif ($key =~ /^cc-alg$/i) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $cookie_algorithm = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^gssapi$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_gssapi = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $gssapi_path = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^libxml2$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_libxml2 = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_libxml2 = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $libxml2_path = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^geoip$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_geoip = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $geoip_path = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^readline$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_readline = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $readline_path = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^idn$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_idn = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $idn_path = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^iconv$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $want_unknown = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $unknown_value = "without-iconv doesn't make sense)";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $iconv_path = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont } elsif ($key =~ /^zlib$/i) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if ($val !~ /^no$/i) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $use_zlib = "yes";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if ($val !~ /^yes$/i) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $zlib_path = $val;
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont }
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^python$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_python = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_python = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $python_command = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^vcredist$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $want_unknown = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $unknown_value = "without-vcredist (vcredist is required)";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $vcredist_path = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^cross-compile$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $cross_compile = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt } elsif ($key =~ /^tuning$/i) {
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt if ($val =~ /^large$/i) {
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt $tuning = "large";
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $want_unknown = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $unknown_value = "without-" . $key;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $unknown_value = "with-" . $key;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt# resolve enable-openssl-hash
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntif ($enable_openssl_hash eq "auto") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($use_openssl ne "no") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($enable_native_pkcs11 eq "yes") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $enable_openssl_hash="no";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } else {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $enable_openssl_hash="yes";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } else {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $enable_openssl_hash="no";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt}
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($want_help ne "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach (@help) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print $_;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews exit 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# clean up and exit if requested
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($want_clean eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $file;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $file (@filelist) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews unlink($file);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $file (@projectlist) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews unlink($file);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews exit 0;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($want_unknown ne "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print STDERR "can't parse $unknown_value\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews exit 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($want_win32 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "configure for win32\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($want_x64 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "configure for x64\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($cross_compile eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "cross compiling";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($want_x64 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print ": build on win32 for x64 host\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($want_win32 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print ": build on x64 for win32 host\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($enable_intrinsics eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "intrinsics: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "intrinsics: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($enable_native_pkcs11 eq "yes") {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt print "native-pkcs11: enabled\n";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt } else {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt print "native-pkcs11: disabled\n";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($enable_openssl_hash eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "openssl-hash: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "openssl-hash: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($enable_isc_spnego eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "isc-spnego: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "isc-spnego: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($enable_filter_aaaa eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "filter-aaaa: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "filter-aaaa: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($enable_fixed_rrset eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "fixed-rrset: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "fixed-rrset: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($enable_developer eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "developer: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "developer: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman if ($enable_querytrace eq "yes") {
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman print "querytrace: enabled\n";
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman } else {
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman print "querytrace: disabled\n";
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($enable_rpz_nsip eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "rpz-nsip: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "rpz-nsip: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($enable_rpz_nsdname eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "rpz-nsdname: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "rpz-nsdname: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont print "cookie algorithm: $cookie_algorithm\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_openssl eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "openssl: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "openssl-path: $openssl_path\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_tests eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "tests: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_xtests eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "extra tests: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($use_samples eq "yes") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "sample programs: enabled\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_pkcs11 eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "pkcs11: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "pkcs11-provider-path: $pkcs11_path\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_ecdsa eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "ecdsa: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "ecdsa: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_gost eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "gost: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "gost: enabled\n";
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt print "gost private key encoding: $gost_encoding\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($use_aes eq "no") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "aes: disabled\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } else {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "aes: enabled\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_gssapi eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "gssapi: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "gssapi-path: $gssapi_path\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_libxml2 eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "libxml2: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "libxml2-path: $libxml2_path\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_geoip eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "geoip: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "geoip-path: $geoip_path\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_readline eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "readline: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "readline-path: $readline_path\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_idn eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "idn: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "idn-path: $idn_path\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($iconv_path ne " --idn-- ") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "iconv-path: $iconv_path\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if ($use_zlib eq "no") {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont print "zlib: disabled\n";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont } else {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont print "zlib-path: $zlib_path\n";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_python eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "python: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "python-command: $python_command\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "vcredist-path: $vcredist_path\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Check environment
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# infer vcredist when not given
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($vcredist_path eq " --infer-- ") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "trying to infer vcredist path from build environment\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt my @vcpaths = {};
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, $ENV{"VCRedistPath"}) if ($ENV{"VCRedistPath"} ne "");
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile( cwd(), "..", ".." ));
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($ENV{"FrameworkSDKDir"} ne "" && $want_win32 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"FrameworkSDKDir"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "BootStrapper", "Packages",
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "vcredist_x86"));
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt } elsif ($ENV{"FrameworkSDKDir"} ne "" && $want_x64 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"FrameworkSDKDir"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "BootStrapper", "Packages",
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "vcredist_x64"));
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($ENV{"WindowsSDKDir"} ne "" && $want_win32 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "BootStrapper", "Packages",
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "vcredist_x86"));
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt } elsif ($ENV{"WindowsSDKDir"} ne "" && $want_x64 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "BootStrapper", "Packages",
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "vcredist_x64"));
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($ENV{"WindowsSDKDir_old"} ne "" && $want_win32 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir_old"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "BootStrapper", "Packages",
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "vcredist_x86"));
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt } elsif ($ENV{"WindowsSDKDir_old"} ne "" && $want_x64 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir_old"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "BootStrapper", "Packages",
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "vcredist_x64"));
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($ENV{"VCINSTALLDIR"}) {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"VCINSTALLDIR"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt "redist", "1033"));
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt my $rfile;
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($want_win32 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt $rfile = "vcredist_x86.exe";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt $rfile = "vcredist_x64.exe";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt foreach (@vcpaths) {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt my $vp = File::Spec->catfile($_, $rfile);
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if (-f $vp) {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt $vcredist_path = $vp;
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt last;
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($vcredist_path eq " --infer-- ") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "with-vcredist is REQUIRED\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($verbose) {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "found vcredist at " . $vcredist_path . "\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $msc_ver = 0;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsopen F, ">mscver.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsprint F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <windows.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <stdio.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmain(void)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews{
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews printf("%d\n", _MSC_VER);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return(0);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEOF
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsclose F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $compret = `cl /nologo /MD mscver.c`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif (grep { -f and -x } ".\\mscver.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $msc_ver = `.\\mscver.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't get _MSC_VER value: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "_MSV_VER == $msc_ver\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($msc_ver < 1600) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print STDERR "warning: old version of C++ compiler/Visual Studio\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print STDERR "only the legacy (cf legacy\\win32-build.txt) will work\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# gen single threaded for < VS 2005
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($msc_ver < 1400) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"COPTML"} = "/ML";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"COPTMLD"} = "/MLD";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# /GX deprecated in VS 2005
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($msc_ver < 1400) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"COPTX"} = "/GX";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"COPTX"} = "/EHsc";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# /YX for < VS 2005
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($msc_ver < 1400) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"COPTY"} = "/YX";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# backtrace for >= VS 2012
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($msc_ver >= 1700) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefp{"ISC_PLATFORM_USEBACKTRACE"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt# no version of MSVS supports strcasestr() yet
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt$configdefp{"ISC_PLATFORM_NEEDSTRCASESTR"} = 1;
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# warn when cross compiling
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($cross_compile eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($want_x64 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"BUILD_PLATFORM"} = "Win32";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"BUILD_MACHINE"} = "/machine:X86";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($want_win32 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"BUILD_PLATFORM"} = "x64";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"BUILD_MACHINE"} = "/machine:X64";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($want_win32 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">cross.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <windows.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <stdio.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmain(void)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews{
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#ifdef _WIN64
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews fprintf(stderr, "compiling for x64 when win32 was asked?!\n");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#endif
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return(0);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEOF
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $compret = `cl /nologo /MD cross.c`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\cross.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $cross = `.\\cross.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($cross) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print STDERR $cross;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print STDERR "can't check cross compile: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">cross.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <windows.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <stdio.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmain(void)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews{
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#ifndef _WIN64
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews fprintf(stderr, "compiling in 32 bits when x64 was asked?!\n");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#endif
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return(0);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEOF
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $compret = `cl /nologo /MD cross.c`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\cross.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $cross = `.\\cross.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($cross) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print STDERR $cross;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print STDERR "can't check cross compile: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Process arguments
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-intrinsics
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($enable_intrinsics eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configcond{"ATOMIC"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"INTRINSIC"} = "true";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"COPTI"} = "/Oi";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefp{"ISC_PLATFORM_HAVEXADD"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($want_x64 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefp{"ISC_PLATFORM_HAVEXADDQ"} = 1;
821ff5e8fa1df2e09fea157ee3e298eef6cf4ec9Evan Hunt $configdefp{"ISC_PLATFORM_HAVEATOMICSTOREQ"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefp{"ISC_PLATFORM_HAVEATOMICSTORE"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefp{"ISC_PLATFORM_HAVECMPXCHG"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"INTRINSIC"} = "false";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt# enable-native-pkcs11
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Huntif ($enable_native_pkcs11 eq "yes") {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($use_openssl eq "auto") {
651878e16668d1809562813020c298cf9eed7184Francis Dupont $use_openssl = "no";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($use_openssl ne "no") {
651878e16668d1809562813020c298cf9eed7184Francis Dupont die "can't have both OpenSSL and native PKCS#11\n";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($use_pkcs11 ne "yes") {
651878e16668d1809562813020c298cf9eed7184Francis Dupont if ($verbose) {
651878e16668d1809562813020c298cf9eed7184Francis Dupont print "native PKCS#11 support: force with-pkcs11\n";
651878e16668d1809562813020c298cf9eed7184Francis Dupont }
651878e16668d1809562813020c298cf9eed7184Francis Dupont $use_pkcs11 = "yes";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($pkcs11_path eq "unknown") {
651878e16668d1809562813020c298cf9eed7184Francis Dupont if ($verbose) {
651878e16668d1809562813020c298cf9eed7184Francis Dupont print "native PKCS#11 support: no PKCS#11 provider defined?\n";
651878e16668d1809562813020c298cf9eed7184Francis Dupont }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt $configdefd{"CRYPTO"} = "PKCS11CRYPTO";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($use_ecdsa eq "no") {
651878e16668d1809562813020c298cf9eed7184Francis Dupont if ($verbose) {
651878e16668d1809562813020c298cf9eed7184Francis Dupont print "no ECDSA support in native PKCS#11\n";
651878e16668d1809562813020c298cf9eed7184Francis Dupont }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt } else {
651878e16668d1809562813020c298cf9eed7184Francis Dupont if ($verbose) {
651878e16668d1809562813020c298cf9eed7184Francis Dupont print "enabled ECDSA support in native PKCS#11\n";
651878e16668d1809562813020c298cf9eed7184Francis Dupont }
651878e16668d1809562813020c298cf9eed7184Francis Dupont $configdefh{"HAVE_PKCS11_ECDSA"} = 1;
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($use_gost eq "no") {
651878e16668d1809562813020c298cf9eed7184Francis Dupont if ($verbose) {
651878e16668d1809562813020c298cf9eed7184Francis Dupont print "no GOST support in native PKCS#11\n";
651878e16668d1809562813020c298cf9eed7184Francis Dupont }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt } else {
651878e16668d1809562813020c298cf9eed7184Francis Dupont if ($verbose) {
651878e16668d1809562813020c298cf9eed7184Francis Dupont print "enabled GOST support in native PKCS#11\n";
651878e16668d1809562813020c298cf9eed7184Francis Dupont }
651878e16668d1809562813020c298cf9eed7184Francis Dupont $configdefh{"HAVE_PKCS11_GOST"} = 1;
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($use_aes eq "no") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($verbose) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "no AES support in native PKCS#11\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } else {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($verbose) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "enabled AES support in native PKCS#11\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_aes = "pkcs11";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt}
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-filter-aaaa
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($enable_filter_aaaa eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"ALLOW_FILTER_AAAA"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-fixed-rrset
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($enable_fixed_rrset eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"DNS_RDATASET_FIXED"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-rpz-nsip
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($enable_rpz_nsip ne "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"ENABLE_RPZ_NSIP"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman# enable-querytrace
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaramanif ($enable_querytrace eq "yes") {
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman $configdefh{"WANT_QUERYTRACE"} = 1;
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman}
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-rpz-nsdname
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($enable_rpz_nsdname ne "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"ENABLE_RPZ_NSDNAME"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-tests
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_tests eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configcond{"TESTS"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-extra-tests
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_xtests eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configcond{"XTESTS"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt# with-samples
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntif ($use_samples eq "yes") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $configcond{"SAMPLES"} = 1;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt}
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-openssl
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_openssl eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "OpenSSL library is disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($use_openssl eq "auto") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for an OpenSSL built directory at sibling root\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews opendir DIR, $openssl_path || die "No Directory: $!\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @dirlist = grep (/^openssl-[0-9]+\.[0-9]+\.[0-9]+[a-z]{0,1}$/i,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews readdir(DIR));
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews closedir(DIR);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # Make sure we have something
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (scalar(@dirlist) == 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find an OpenSSL at sibling root\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # Now see if we have a directory or just a file.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # Make sure we are case insensitive
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $file;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $file (sort {uc($b) cmp uc($a)} @dirlist) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (-f File::Spec->catfile($openssl_path,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $file,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "inc32\\openssl",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "opensslv.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $openssl_path = File::Spec->catdir($openssl_path, $file);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_openssl = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews last;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # If we have one use it otherwise report the error
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_openssl eq "auto") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find an OpenSSL built directory at sibling root\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# falls into (so no else)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_openssl eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $openssl_path = File::Spec->rel2abs($openssl_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for OpenSSL built directory at \"$openssl_path\"\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($openssl_path,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "inc32\\openssl",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "opensslv.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find OpenSSL opensslv.h include\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($openssl_path, "out32dll", "libeay32.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find OpenSSL libeay32.lib library\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($openssl_path, "out32dll", "libeay32.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find OpenSSL libeay32.dll DLL\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $openssl_inc = File::Spec->catdir($openssl_path, "inc32");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $openssl_libdir = File::Spec->catdir($openssl_path, "out32dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $openssl_lib = File::Spec->catfile($openssl_libdir, "libeay32.lib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $openssl_dll = File::Spec->catfile($openssl_libdir, "libeay32.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configcond{"OPENSSL"} = 1;
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt $configdefd{"CRYPTO"} = "OPENSSL";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"OPENSSL_PATH"} = "$openssl_path";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configinc{"OPENSSL_INC"} = "$openssl_inc";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configlib{"OPENSSL_LIB"} = "$openssl_lib";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdll{"OPENSSL_DLL"} = "$openssl_dll";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (-f File::Spec->catfile($openssl_inc, "openssl", "dsa.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_OPENSSL_DSA"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "OpenSSL DSA support is disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# check OpenSSL
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_openssl eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking whether linking with OpenSSL works\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $dll = $configdll{"OPENSSL_DLL"};
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $ret = `copy "$dll" .`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? != 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "Can't copy OpenSSL DLL to working directory: $ret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">testossl.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <openssl/err.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmain(void)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews{
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ERR_clear_error();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return(0);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEOF
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $include = $configinc{"OPENSSL_INC"};
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $library = $configlib{"OPENSSL_LIB"};
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD /I "$include" testossl.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\testossl.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews `.\\testossl.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? != 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "OpenSSL test failed\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't compile OpenSSL test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# check OpenSSL version
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_openssl eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews printf "checking OpenSSL library version\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">testosslv.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <stdio.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <openssl/opensslv.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint main() {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ((OPENSSL_VERSION_NUMBER >= 0x009070cfL &&
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews OPENSSL_VERSION_NUMBER < 0x00908000L) ||
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews OPENSSL_VERSION_NUMBER >= 0x0090804fL)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return (0);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews OPENSSL_VERSION_NUMBER);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews printf("Require OPENSSL_VERSION_NUMBER 0x009070cf or greater (0.9.7l)\n"
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "Require OPENSSL_VERSION_NUMBER 0x0090804f or greater (0.9.8d)\n\n");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return (1);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEOF
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $include = $configinc{"OPENSSL_INC"};
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $library = $configlib{"OPENSSL_LIB"};
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD /I "$include" testosslv.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\testosslv.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews `.\\testosslv.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? != 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "OpenSSL version test failed\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't compile OpenSSL version test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# check EVP_sha256 / EVP_sha384 / EVP_sha512
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_openssl eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews printf "checking for EVP_sha256\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">testsha256.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsextern void *EVP_sha256();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint main() {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return EVP_sha256() != 0;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEOF
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $library = $configlib{"OPENSSL_LIB"};
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD testsha256.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\testsha256.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews `.\\testsha256.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? == 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "EVP_sha256 test failed: disabling EVP_sha256\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_ecdsa = "no";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $enable_openssl_hash = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_EVP_SHA256"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "can't compile EVP_sha256 test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "disabling EVP_sha256\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_ecdsa = "no";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $enable_openssl_hash = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews printf "checking for EVP_sha384\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">testsha384.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsextern void *EVP_sha384();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint main() {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return EVP_sha384() != 0;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEOF
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD testsha384.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\testsha384.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews `.\\testsha384.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? == 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "EVP_sha384 test failed: disabling EVP_sha384\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_ecdsa = "no";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $enable_openssl_hash = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_EVP_SHA384"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "can't compile EVP_sha384 test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "disabling EVP_sha384\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_ecdsa = "no";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $enable_openssl_hash = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews printf "checking for EVP_sha512\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">testsha512.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsextern void *EVP_sha512();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint main() {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return EVP_sha512() != 0;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEOF
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD testsha512.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\testsha512.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews `.\\testsha512.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? == 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "EVP_sha512 test failed: disabling EVP_sha512\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_EVP_SHA512"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "can't compile EVP_sha512 test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "disabling EVP_sha512\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-ecdsa
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_openssl eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_ecdsa = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_ecdsa eq "auto") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for OpenSSL ECDSA support\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">testecdsa.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <openssl/ecdsa.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <openssl/objects.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmain(void)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews{
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews EC_KEY *ec256, *ec384;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ec256 = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ec384 = EC_KEY_new_by_curve_name(NID_secp384r1);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (ec256 == NULL || ec384 == NULL)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return (2);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return (0);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEOF
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $include = $configinc{"OPENSSL_INC"};
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $library = $configlib{"OPENSSL_LIB"};
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD /I "$include" testecdsa.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\testecdsa.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews `.\\testecdsa.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? != 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "ECDSA test failed: disabling ECDSA\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_ecdsa = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "can't compile ECDSA test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "disabling ECDSA\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_ecdsa = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_ecdsa ne "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_ecdsa = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_OPENSSL_ECDSA"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-gost
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_openssl eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_gost = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_gost eq "auto") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for OpenSSL GOST support\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">testgost.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <openssl/conf.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <openssl/engine.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmain(void)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews{
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#if (OPENSSL_VERSION_NUMBER >= 0x10000000L)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ENGINE *e;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews EC_KEY *ek;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ek = NULL;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews OPENSSL_config(NULL);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews e = ENGINE_by_id("gost");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (e == NULL)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return (1);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (ENGINE_init(e) <= 0)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return (1);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return (0);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#else
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return (1);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#endif
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEOF
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $include = $configinc{"OPENSSL_INC"};
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $library = $configlib{"OPENSSL_LIB"};
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD /I "$include" testgost.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\testgost.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews `.\\testgost.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? != 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "GOST test failed: disabling GOST\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_gost = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "can't compile GOST test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "disabling GOST\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_gost = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_gost ne "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_gost = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_OPENSSL_GOST"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Huntif ($gost_encoding eq "ans1") {
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt $configdefh{"PREFER_GOSTASN1"} = 1;
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt} elsif ($gost_encoding ne "raw") {
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt die "Unrecognized GOST private key encoding: $gost_encoding\n";
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt}
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt# with-aes
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntif ($use_openssl eq "no") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($use_aes ne "pkcs11") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_aes = "no";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt}
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntif ($use_aes eq "auto") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($verbose) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "checking for OpenSSL EVP AES support\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_aes = "evp";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt open F, ">testevpaes.c" || die $!;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print F << 'EOF';
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt#include <openssl/evp.h>
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntint
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntmain(void)
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt{
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt EVP_CIPHER *aes128, *aes192, *aes256;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt aes128 = EVP_aes_128_ecb();
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt aes192 = EVP_aes_192_ecb();
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt aes256 = EVP_aes_256_ecb();
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if (aes128 == NULL || aes192 == NULL || aes256 == NULL)
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt return (1);
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt return (0);
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt}
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan HuntEOF
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt close F;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt my $include = $configinc{"OPENSSL_INC"};
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt my $library = $configlib{"OPENSSL_LIB"};
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $compret = `cl /nologo /MD /I "$include" testevpaes.c "$library"`;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if (grep { -f and -x } ".\\testevpaes.exe") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt `.\\testevpaes.exe`;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($? != 0) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($verbose) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "EVP AES test failed: disabling EVP AES\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_aes = "auto";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } else {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($verbose) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "can't compile EVP AES test: $compret\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "disabling EVP AES\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_aes = "auto";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt}
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntif ($use_aes eq "auto") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($verbose) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "checking for OpenSSL native AES support\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_aes = "native";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt open F, ">testaes.c" || die $!;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print F << 'EOF';
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt#include <openssl/aes.h>
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan HuntAES_KEY k;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntconst unsigned char bufin[16];
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntunsigned char bufout[16];
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntint
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntmain(void)
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt{
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt AES_encrypt(bufin, bufout, &k);
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt return (0);
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt}
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan HuntEOF
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt close F;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt my $include = $configinc{"OPENSSL_INC"};
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt my $library = $configlib{"OPENSSL_LIB"};
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $compret = `cl /nologo /MD /I "$include" testaes.c "$library"`;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if (grep { -f and -x } ".\\testaes.exe") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt `.\\testaes.exe`;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($? != 0) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($verbose) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "native AES test failed: disabling AES\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_aes = "no";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } else {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($verbose) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "can't compile native AES test: $compret\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "disabling AES\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_aes = "no";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt}
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntif ($use_aes eq "yes") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $configdefh{"HAVE_OPENSSL_EVP_AES"} = 1;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt} elsif ($use_aes eq "evp") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $configdefh{"HAVE_OPENSSL_EVP_AES"} = 1;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_aes = "yes";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt} elsif ($use_aes eq "native") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $configdefh{"HAVE_OPENSSL_AES"} = 1;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_aes = "yes";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt} elsif ($use_aes eq "pkcs11") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $use_aes = "yes";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt}
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntif ($use_aes eq "yes") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $configdefp{"ISC_PLATFORM_WANTAES"} = 1;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $configcond{"AES"} = 1;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt}
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# with-cc-alg
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupontif ($cookie_algorithm eq "aes") {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if ($use_aes ne "yes") {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $cookie_algorithm = "sha256";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont } else {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $configdefh{"AES_CC"} = 1;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt }
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt}
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupontif ($cookie_algorithm eq "sha1") {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $configdefh{"HMAC_SHA1_CC"} = 1;
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont} elsif ($cookie_algorithm eq "sha256") {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $configdefh{"HMAC_SHA256_CC"} = 1;
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont} elsif ($cookie_algorithm ne "aes") {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont die "Unrecognized cookie algorithm: $cookie_algorithm\n";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont}
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-openssl-hash
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($enable_openssl_hash eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_openssl eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "No OpenSSL for hash functions\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefp{"ISC_PLATFORM_OPENSSLHASH"} = 1;
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont if ($verbose) {
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont print "checking HMAC_Init() return type\n";
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont }
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont open F, ">testhmac.c" || die $!;
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont print F << 'EOF';
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont#include <openssl/hmac.h>
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupontint
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupontmain(void)
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont{
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont HMAC_CTX ctx;
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont int n = HMAC_Init(&ctx, NULL, 0, NULL);
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont n += HMAC_Update(&ctx, NULL, 0);
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont n += HMAC_Final(&ctx, NULL, NULL);
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont return(n);
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont}
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis DupontEOF
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont close F;
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont my $include = $configinc{"OPENSSL_INC"};
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont my $library = $configlib{"OPENSSL_LIB"};
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont $compret = `cl /nologo /MD /I "$include" testhmac.c "$library"`;
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont if (grep { -f and -x } ".\\testhmac.exe") {
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont $configdefh{"HMAC_RETURN_INT"} = 1;
fc63119c8b7aa8827fad9e3e45e50c69bc2630e8Francis Dupont }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-pkcs11
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_pkcs11 ne "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configcond{"PKCS11"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefd{"USE_PKCS11"} = "USE_PKCS11";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"PKCS11_TOOLS"} = "pkcs11";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefd{"PK11_LIB_LOCATION"} = "PK11_LIB_LOCATION=\"$pkcs11_path\"";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-gssapi
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_gssapi eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "gssapi library is disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $gssapi_path = File::Spec->rel2abs($gssapi_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for gssapi directory at \"$gssapi_path\"\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configcond{"GSSAPI"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefd{"USE_GSSAPI"} = "GSSAPI";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "include",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "gssapi", "gssapi.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find gssapi.h include\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "include",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "gssapi", "gssapi_krb5.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find gssapi_krb5.h include\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "include",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "krb5", "krb5.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find krb5.h include\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configinc{"GSSAPI_INC"} = File::Spec->catdir($gssapi_path, "include");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $bits = "32";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $gssapi_lib;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $krb5_lib;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($want_win32 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $bits = "32";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "lib", "i386",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "gssapi${bits}.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find gssapi${bits}.lib library\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $gssapi_lib = File::Spec->catfile($gssapi_path, "lib", "i386",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "gssapi${bits}.lib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "lib", "i386",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "krb5_${bits}.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find krb5_${bits}.lib library\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $krb5_lib = File::Spec->catfile($gssapi_path, "lib", "i386",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "krb5_${bits}.lib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($want_x64 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $bits = "64";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "lib", "amd64",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "gssapi${bits}.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find gssapi${bits}.lib library\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $gssapi_lib = File::Spec->catfile($gssapi_path, "lib", "amd64",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "gssapi${bits}.lib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "lib", "amd64",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "krb5_${bits}.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find krb5_${bits}.lib library\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $krb5_lib = File::Spec->catfile($gssapi_path, "lib", "amd64",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "krb5_${bits}.lib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't happen: no choice between Win32 and x64\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "bin", "gssapi${bits}.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find gssapi${bits}.dll DLL\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "bin", "krb5_${bits}.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find krb5_${bits}.dll DLL\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "bin", "comerr${bits}.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find comerr${bits}.dll DLL\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "bin", "k5sprt${bits}.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find k5sprt${bits}.dll DLL\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "bin", "wshelp${bits}.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find wshelp${bits}.dll DLL\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configlib{"GSSAPI_LIB"} = "$gssapi_lib";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configlib{"KRB5_LIB"} = "$krb5_lib";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $gssapi_dll = File::Spec->catfile($gssapi_path, "bin",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "gssapi${bits}.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdll{"GSSAPI_DLL"} = "$gssapi_dll";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $krb5_dll = File::Spec->catfile($gssapi_path, "bin",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "krb5_${bits}.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdll{"KRB5_DLL"} = "$krb5_dll";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $comerr_dll = File::Spec->catfile($gssapi_path, "bin",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "comerr${bits}.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdll{"COMERR_DLL"} = "$comerr_dll";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $k5sprt_dll = File::Spec->catfile($gssapi_path, "bin",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "k5sprt${bits}.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdll{"K5SPRT_DLL"} = "$k5sprt_dll";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $wshelp_dll = File::Spec->catfile($gssapi_path, "bin",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "wshelp${bits}.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdll{"WSHELP_DLL"} = "$wshelp_dll";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-isc-spnego
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_gssapi ne "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_isc_spnego = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($enable_isc_spnego eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_gssapi eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "No GSSAPI for SPNEGO\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefd{"USE_ISC_SPNEGO"} = "USE_ISC_SPNEGO";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-geoip
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_geoip eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "geoip library is disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configcond{"GEOIP"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $geoip_path = File::Spec->rel2abs($geoip_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for geoip directory at \"$geoip_path\"\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($geoip_path, "GeoIP.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find GeoIP.h include\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($geoip_path, "GeoIP.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find Geoip.lib library\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($geoip_path, "GeoIP.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find Geoip.dll DLL\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configinc{"GEOIP_INC"} = "$geoip_path";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $geoip_lib = File::Spec->catfile($geoip_path, "GeoIP.lib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configlib{"GEOIP_LIB"} = "$geoip_lib";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $geoip_dll = File::Spec->catfile($geoip_path, "GeoIP.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdll{"GEOIP_DLL"} = "$geoip_dll";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for GeoIP support\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $ret = `copy "$geoip_dll" .`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? != 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "Can't copy GeoIP DLL to working directory: $ret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">testgeoip.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsextern void *GeoIP_open();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint main() {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return GeoIP_open != 0;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEOF
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD testgeoip.c "$geoip_lib"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\testgeoip.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews `.\\testgeoip.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? == 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "GeoIP test failed\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't compile GeoIP test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_GEOIP"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for GeoIP Country IPv6 support\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $geoip_inc = qq(/I "$geoip_path");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $geoip_libs = qq("$geoip_lib" ws2_32.lib);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">testgeoip1.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <GeoIP.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsstruct in6_addr in6;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint flag = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint main() {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (flag)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return GeoIP_country_name_by_ipnum_v6(NULL, in6) != NULL;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEOF
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo $geoip_inc /MD testgeoip1.c $geoip_libs`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\testgeoip1.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews `.\\testgeoip1.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? == 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "GeoIP Country IPv6 test failed\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't compile GeoIP Country IPv6 test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_GEOIP_V6"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for GeoIP City IPv6 support\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">testgeoip2.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <GeoIP.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <GeoIPCity.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsstruct in6_addr in6;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint i = GEOIP_CITY_EDITION_REV0_V6;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint flag = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint main() {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (flag)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return GeoIP_record_by_ipnum_v6(NULL, in6) != NULL;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsEOF
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo $geoip_inc /MD testgeoip2.c $geoip_libs`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\testgeoip2.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews `.\\testgeoip2.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? == 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "GeoIP City IPv6 test failed\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't compile GeoIP City IPv6 test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_GEOIP_CITY_V6"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-readline
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_readline eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "readline library is disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $readline_path = File::Spec->rel2abs($readline_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for readline directory at \"$readline_path\"\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($readline_path, "readline", "readline.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find readline.h include\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($readline_path, "readline", "readline.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find readline.lib library\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_READLINE"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configinc{"READLINE_INC"} = "$readline_path";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $readline_lib = File::Spec->catfile($readline_path,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "readline", "readline.lib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configlib{"READLINE_LIB"} = "$readline_lib";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (-f File::Spec->catfile($readline_path, "readline", "readlineD.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $readline_libd = File::Spec->catfile($readline_path,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "readline", "readlineD.lib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configlib{"READLINE_LIBD"} = "$readline_libd";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configlib{"READLINE_LIBD"} = "$readline_lib";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-idn (including with-iconv)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_idn eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "IDN kit is disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $idn_path = File::Spec->rel2abs($idn_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for IDN kit directory at \"$idn_path\"\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($idn_path, "idn", "api.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find idn\\api.h include\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($idn_path, "idn", "idnkit.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find idnkit.lib library\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($idn_path, "idn", "idnkit.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find idnkit.dll DLL\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configcond{"IDNKIT"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"WITH_IDN"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configinc{"IDN_INC"} = "$idn_path";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $idn_lib = File::Spec->catfile($idn_path, "idn", "idnkit.lib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configlib{"IDN_LIB"} = "$idn_lib";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $idn_dll = File::Spec->catfile($idn_path, "idn", "idnkit.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdll{"IDN_DLL"} = "$idn_dll";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($iconv_path eq " --idn-- ") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $iconv_dll = File::Spec->catfile($idn_path, "idn", "iconv.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdll{"ICONV_DLL"} = "$iconv_dll";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $iconv_dll =File::Spec->catfile($iconv_path, "iconv.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdll{"ICONV_DLL"} = "$iconv_dll";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-libxml2
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_libxml2 eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "libxml2 library is disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($use_libxml2 eq "auto") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for a libxml2 built directory at sibling root\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews opendir DIR, $libxml2_path || die "No Directory: $!\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @dirlist = grep (/^libxml2-[0-9]+\.[0-9]+\.[0-9]+[a-z]*/i,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews readdir(DIR));
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews closedir(DIR);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # Make sure we have something
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (scalar(@dirlist) == 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find a libxml2 at sibling root\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # Now see if we have a directory or just a file.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # Make sure we are case insensitive
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $file;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $file (sort {uc($b) cmp uc($a)} @dirlist) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (-f File::Spec->catfile($libxml2_path,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $file,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "include\\libxml",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "xmlversion.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $libxml2_path = File::Spec->catdir($libxml2_path, $file);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_libxml2 = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews last;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # If we have one use it otherwise report the error
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_libxml2 eq "auto") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find a libxml2 built directory at sibling root\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# falls into (so no else)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_libxml2 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $libxml2_path = File::Spec->rel2abs($libxml2_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for libxml2 built directory at \"$libxml2_path\"\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($libxml2_path,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "include\\libxml",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "xmlversion.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find libxml2 xmlversion.h include\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($libxml2_path,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "win32\\bin.msvc",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "libxml2.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find Libxml2 libxml2.lib library\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($libxml2_path,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "win32\\bin.msvc",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "libxml2.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find Libxml2 DLL\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configcond{"LIBXML2"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_LIBXML2"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $libxml2_inc = File::Spec->catdir($libxml2_path, "include");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configinc{"LIBXML2_INC"} = "$libxml2_inc";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $libxml2_libdir = File::Spec->catdir($libxml2_path, "win32\\bin.msvc");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $libxml2_lib = File::Spec->catfile($libxml2_libdir, "libxml2.lib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configlib{"LIBXML2_LIB"} = "$libxml2_lib";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $libxml2_dll = File::Spec->catfile($libxml2_libdir, "libxml2.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdll{"LIBXML2_DLL"} = "$libxml2_dll";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# with-zlib
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupontif ($use_zlib eq "no") {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if ($verbose) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont print "zlib library is disabled\n";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont }
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont} else {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $configcond{"ZLIB"} = 1;
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $zlib_path = File::Spec->rel2abs($zlib_path);
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if ($verbose) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont print "checking for zlib directory at \"$zlib_path\"\n";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont }
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if (!-f File::Spec->catfile($zlib_path, "zlib.h")) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont die "can't find zlib.h include\n";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont }
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if (!-f File::Spec->catfile($zlib_path, "zdll.lib")) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont die "can't find zdll.lib library\n";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont }
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if (!-f File::Spec->catfile($zlib_path, "zlib1.dll")) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont die "can't find zlib1.dll DLL\n";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont }
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $configdefh{"HAVE_ZLIB"} = 1;
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $configinc{"ZLIB_INC"} = "$zlib_path";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont my $zlib_lib = File::Spec->catfile($zlib_path, "zdll.lib");
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $configlib{"ZLIB_LIB"} = "$zlib_lib";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont my $zlib_dll = File::Spec->catfile($zlib_path, "zlib1.dll");
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $configdll{"ZLIB_DLL"} = "$zlib_dll";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont}
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-python
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_python eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "python is disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($use_python eq "auto") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for python in path\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $pythonret = `python -c "quit()" 2>&1`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? != 0) {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print STDERR "can't launch the python interpreter: $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $use_python = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_python ne "no") {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($use_python ne "auto") {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($verbose) {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print "checking for $python_command\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $pythonret = `"$python_command" -c "quit()" 2>&1`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? != 0) {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews die "can't launch $python_command: $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($verbose) {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print "checking for python module 'argparse'\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews my $pythonret = `"$python_command" -c "import argparse" 2>&1`;
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($? != 0) {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($use_python ne "auto") {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews die "can't find python module 'argparse': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews } else {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print STDERR "can't find python module 'argparse': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $use_python = "no";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($use_python ne "no") {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($verbose) {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print "checking for python module 'ply'\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $pythonret = `"$python_command" -c "from ply import *" 2>&1`;
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($? != 0) {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($use_python ne "auto") {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews die "can't find python module 'ply': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews } else {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print STDERR "can't find python module 'ply': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $use_python = "no";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($use_python ne "no") {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($verbose) {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print "checking for python module 'win32api'\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $pythonret = `"$python_command" -c "import win32api" 2>&1`;
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($? != 0) {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($use_python ne "auto") {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews die "can't find python module 'win32api': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews } else {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print STDERR
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews "can't find python module 'win32api': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $use_python = "no";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($use_python ne "no") {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($verbose) {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print "checking for python module 'win32con'\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $pythonret = `"$python_command" -c "import win32con" 2>&1`;
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($? != 0) {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($use_python ne "auto") {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews die "can't find python module 'win32con': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews } else {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print STDERR
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews "can't find python module 'win32con': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $use_python = "no";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($use_python ne "no") {
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $configcond{"PYTHON"} = 1;
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $configdefd{"USE_PYTHON"} = "USE_PYTHON";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $configvar{"PYTHON"} = "$python_command";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews # Doesn't matter
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $configvar{"prefix"} = "__prefix__";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $configvar{"expanded_sysconfdir"} = "__prefix__\\etc";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-vcredist
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews$vcredist_path = File::Spec->rel2abs($vcredist_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif (!grep { -f and -x } $vcredist_path) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "$vcredist_path is not correct\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"VCREDIST_PATH"} = "$vcredist_path";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt# tuning
98091cb21da79b0c7fd329fd64497dcb03402467Evan Huntif ($tuning eq "large") {
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt $configdefh{"TUNE_LARGE"} = 1;
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt}
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# setup config.h with %configdefh
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub setupconfigh {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $line;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @Lines;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, $configfilein || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews @Lines = <F>;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $line (@Lines) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews chomp $line;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($line =~ /^@([^@]+)\@$/) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdefh{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "#define $1 $configdefh{$1}";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "/* #undef $1 */";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, $configfileout || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "Setting up config.h\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $line (@Lines) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F $line . "\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# setup platform.h with %configdefp
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub setupplatformh {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $line;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @Lines;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, $platformfile . ".in" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews @Lines = <F>;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $line (@Lines) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews chomp $line;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($line =~ /^@([^@]+)\@$/) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdefp{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "#define $1 $configdefp{$1}";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "/* #undef $1 */";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">" . $platformfile || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "Setting up platform.h\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $line (@Lines) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F $line . "\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# escape spaces
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub kw {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($_[0] =~ / /) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return "\"$_[0]\"";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return "$_[0]";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# setup a file with %configcond stack and %config{var,defd,inc,lib,dll}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub setupfile {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $line;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @Linesin;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @Linesout;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $filename = $_[0];
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $cond;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @conds;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $pass = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @passes;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, $filename . ".in" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews @Linesin = <F>;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $line (@Linesin) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews chomp $line;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($line =~ /^\@IF (.*)$/) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($cond)) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews unshift(@conds, $cond);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews unshift(@passes, $pass);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if ($1 ~~ @allcond) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $cond = $1;
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if (defined($configcond{$cond})) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont # do nothing
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont } else {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $pass = 0;
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont die "unknown condition \@IF $1 in $filename\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews next;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($line =~ /^\@ELSE (.*)$/) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($cond ne $1) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "\@ELSE $1 mismatch in $filename\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configcond{$cond})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = 0;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (scalar(@conds) > 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = $passes[0];
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews next;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($line =~ /^\@END (.*)$/) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($cond ne $1) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "\@END $1 mismatch in $filename\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $cond = shift(@conds);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (scalar(@passes) > 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = shift(@passes);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews next;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($pass == 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews next;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews while ($line =~ /@([^@ ]*)@/) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($1 ~~ @substvar) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configvar{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $val = kw($configvar{$1});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$val$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substdefd) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdefd{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $def = $configdefd{$1};
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt my $pre = "$`";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt my $post = "$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $def =~ s/([\\ "])/\\$1/g;
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt $line = qq($pre/D "$def"$post);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substinc) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configinc{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = qq($`/I "$configinc{$1}"$');
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substlib) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configlib{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $val = kw($configlib{$1});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$val$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substdll) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdll{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $val = kw($configdll{$1});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$val$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "unknown control $& in $filename\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews push @Linesout, $line;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">" . $filename || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "Setting up $filename\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $line (@Linesout) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F $line . "\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# setup a project with %configcond stack and %config{var,defd,inc,lib,dll}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub setupproject {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $line;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @Linesin;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @Linesout;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $projectname = $_[0];
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $cond;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @conds;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $pass = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @passes;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, $projectname . ".in" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews @Linesin = <F>;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $line (@Linesin) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews chomp $line;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($line =~ /^\@IF (.*)$/) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($cond)) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews unshift(@conds, $cond);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews unshift(@passes, $pass);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if ($1 ~~ @allcond) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $cond = $1;
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if (defined($configcond{$cond})) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont # do nothing
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont } else {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $pass = 0;
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont die "unknown condition \@IF $1 in $projectname\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews next;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($line =~ /^\@ELSE (.*)$/) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($cond ne $1) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "\@ELSE $1 mismatch in $projectname\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configcond{$cond})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = 0;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (scalar(@conds) > 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = $passes[0];
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews next;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($line =~ /^\@END (.*)$/) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($cond ne $1) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "\@END $1 mismatch in $projectname\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $cond = shift(@conds);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (scalar(@passes) > 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = shift(@passes);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews next;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($pass == 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews next;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews while ($line =~ /@([^@ ]*)@/) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($1 ~~ @substvar) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configvar{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $val = kw($configvar{$1});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$val$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substdefd) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdefd{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $val = kw($configdefd{$1});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$val;$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substinc) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configinc{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $val = kw($configinc{$1});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$val;$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substlib) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configlib{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $val = kw($configlib{$1});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$val;$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substdll) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdll{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $val = kw($configdll{$1});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$val$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "unknown control $& in $projectname\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews push @Linesout, $line;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">" . $projectname || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "Setting up $projectname\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $line (@Linesout) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F $line . "\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close F;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# make versions.h
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub makeversion {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # List of directories with version files
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt my @dirlist = ("isc", "dns", "isccc", "isccfg", "lwres", "bind9", "irs");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my %LibMacros = (
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "bind9" => "LIBBIND9_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "dns" => "LIBDNS_EXPORTS",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "irs" => "LIBIRS_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "isc" => "LIBISC_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "isccc" => "LIBISCCC_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "isccfg" => "LIBISCCFG_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "lwres" => "LIBLWRES_EXPORTS");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @VersionNames = ("LIBINTERFACE", "LIBREVISION", "LIBAGE");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $Version;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my %ApiVersions;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $Mapapi;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $versionfile = "versions.h";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $versionpath = "..\\$versionfile";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $data;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $name;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $value;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # And the mapapi one
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open M, "..\\lib\\dns\\mapapi" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews while (<M>) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews chomp;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($data) = split(/\#/);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($data) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($name, $value) = split(/=/, $data);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($name) = split(/\s+/, $name);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($name eq 'MAPAPI') {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($value) =~ s/^["\s]+//;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($value) =~ s/["\s]+$//;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($value) = split(/\s+/, $value);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $Mapapi = $value;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close M;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # Now set up the output version file
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $ThisDate = scalar localtime();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open O, ">$versionpath" ||
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "Can't open output file $versionpath: $!\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # Standard Header
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O '/*
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * Copyright (C) 2001 Internet Software Consortium.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews *
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * Permission to use, copy, modify, and distribute this software for any
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * purpose with or without fee is hereby granted, provided that the above
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * copyright notice and this permission notice appear in all copies.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews *
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews */
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O "/*\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O " * $versionfile.";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O " Generated automatically by Configure.pl.\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O " * Date generated: $ThisDate\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O " */\n\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O '
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#ifndef VERSIONS_H
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#define VERSIONS_H 1
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $Version = "$Versions{'MAJORVER'}.$Versions{'MINORVER'}";
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont if ($Versions{'PATCHVER'} ne "") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $Version = "$Version.$Versions{'PATCHVER'}";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $Version = "$Version$Versions{'RELEASETYPE'}$Versions{'RELEASEVER'}";
f02bd534effb926bd5c759ba6d1fb8761dad96dfFrancis Dupont $Version = "$Version$Versions{'EXTENSIONS'}";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "BIND Version: $Version\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O "#define VERSION \"$Version\"\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O "#define PRODUCT \"$Versions{'PRODUCT'}\"\n\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O "#define DESCRIPTION \"$Versions{'DESCRIPTION'}\"\n\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "#define MAJOR \"$Versions{'MAJORVER'}.$Versions{'MINORVER'}\"\n\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O "#define MAPAPI \"$Mapapi\"\n\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $dir;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $apifile;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $dir (@dirlist) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $apifile = "..\\lib\\$dir\\api";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open A, $apifile || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews while (<A>) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews chomp;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($data) = split(/\#/);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($data) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($name, $value) = split(/=/, $data);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $name =~ s/\s+//;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $value =~ s/\s+//;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $ApiVersions{$name} = $value;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close A;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O "\n#ifdef $LibMacros{$dir}\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $name (@VersionNames) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O "#define $name\t$ApiVersions{$name}\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O "#endif\n\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O "#endif /* VERSIONS_H */\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close O;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# make srcid.h
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub makesrcid {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $data;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $name;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $value;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $srcid = "unset";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open SOUT, ">..\\srcid.h" || die "cannot open srcid.h: $!\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (open (SIN, "..\\srcid")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews LOOP: while (<SIN>) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews chomp;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($data) = split(/\#/);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($data) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($name, $value) = split(/=/, $data);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($name) = split(/\s+/, $name);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($value) = split(/\s+/, $value);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews next LOOP if ($name != "SRCID");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $srcid = $value;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close SIN;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # Now set up the output version file
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $ThisDate = scalar localtime();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # Standard Header
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print SOUT '/*
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * Copyright (C) 2012 Internet Software Consortium.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews *
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * Permission to use, copy, modify, and distribute this software for any
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * purpose with or without fee is hereby granted, provided that the above
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * copyright notice and this permission notice appear in all copies.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews *
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews */
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print SOUT "/*\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print SOUT " * srcid.h";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print SOUT " * Generated automatically by Configure.pl.\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print SOUT " * Date generated: $ThisDate\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print SOUT " */\n\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print SOUT '
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#ifndef SRCID_H
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#define SRCID_H 1
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "BIND SRCID: $srcid\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print SOUT "#define SRCID\t\"$srcid\"\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print SOUT "#endif /* SRCID_H */\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close SOUT;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews# Build install files
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews
3fa134363f99816b36e30822a098196810ae6f20Mark Andrewssub makeinstallfile {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews open FOUT, ">InstallFlags" || die "cannot open InstallFlags: $!\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print FOUT "# Flags for BINDInstall\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews if ($msc_ver >= 1400) {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print FOUT "runvcredist\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews }
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews if ($want_x64 eq "yes") {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print FOUT "forwin64\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews }
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews close FOUT;
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews open LOUT, ">InstallFiles" || die "cannot open InstallFiles: $!\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "# File list for BINDInstall\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews if ($msc_ver < 1400) {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews if ($msc_ver >= 1310) {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "mfc71.dll-WCTT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "msvcr71.dll-WCTT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews } elsif (($msc_ver > 1200) && ($msc_ver < 1310)) {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "mfc70.dll-WCTT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "msvcr70.dll-WCTT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews }
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews }
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "bindevt.dll-BNFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "libbind9.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "libisc.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "libisccfg.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "libisccc.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "libdns.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "liblwres.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "libirs.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews if ($use_openssl eq "yes") {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "libeay32.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews }
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews if ($use_libxml2 eq "yes") {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "libxml2.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews }
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews if ($use_gssapi eq "yes") {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews if ($want_x64 eq "yes") {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "gssapi64.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "krb5_64.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews } else {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "gssapi32.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "krb5_32.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews }
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews }
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews if ($use_geoip eq "yes") {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "libgeoip.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews }
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews if ($use_idn eq "yes") {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "idnkit.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "iconv.dll-BCFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews }
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "named.exe-BCFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "nsupdate.exe-BNFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "BINDInstall.exe-BNFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "InstallFlags-BNFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "InstallFiles-BNFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "rndc.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "dig.exe-BNFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "host.exe-BNFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "nslookup.exe-BNFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "delv.exe-BNFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "arpaname.exe-BNFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "nsec3hash.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "genrandom.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "rndc-confgen.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "ddns-confgen.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "tsig-keygen.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "dnssec-keygen.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "dnssec-signzone.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "dnssec-dsfromkey.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "dnssec-importkey.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "dnssec-keyfromlabel.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "dnssec-revoke.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "dnssec-settime.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "dnssec-verify.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "named-checkconf.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "named-checkzone.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "named-compilezone.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "named-journalprint.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "named-rrchecker.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "isc-hmax-fixup.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews if ($use_pkcs11 eq "yes") {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "pkcs11-destroy.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "pkcs11-keygen.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "pkcs11-list.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "pkcs11-tokens.exe-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews }
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews if ($use_python ne "no") {
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "dnssec-checkds.py-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "dnssec-coverage.py-BNFF\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print LOUT "dnssec-keymgr.py-BNFF\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews }
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews print LOUT "readme1st.txt-BTFT\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews close LOUT;
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews}
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Status
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $name;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "Configuration Status\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\tconfig.h:\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $name (@substdefh) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdefh{$name})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print qq(\t\t$name defined to "$configdefh{$name}"\n);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews printf qq(\t\t$name undefined\n);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\tplatform.h:\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $name (@substdefp) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdefp{$name})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print qq(\t\t$name defined to "$configdefp{$name}"\n);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews printf qq(\t\t$name undefined\n);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\tconditions:\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $name (@substcond) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configcond{$name})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\t\t$name is true\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\t\t$name is false\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\tsubstitutions:\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $name (@substvar) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configvar{$name})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print qq(\t\t$name -> "$configvar{$name}"\n);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\tdefines:\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $name (@substdefd) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdefd{$name})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print qq(\t\t/D "$configdefd{$name}"\n);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\tincludes:\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $name (@substinc) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configinc{$name})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print qq(\t\t/I "$configinc{$name}"\n);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\tlibraries:\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $name (@substlib) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configlib{$name})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\t\t$configlib{$name}\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\tDLLs:\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $name (@substdll) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdll{$name})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\t\t$configdll{$name}\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Setup
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif (($want_win32 eq "yes") || ($want_x64 eq "yes")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews setupconfigh();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews setupplatformh();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $file;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $file (@filelist) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews setupfile($file);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!$legacy_only) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $file (@projectlist) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews setupproject($file);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews makeversion();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews makesrcid();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews makeinstallfile();
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "Configured.\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "add win32 or x64 to commit configuration to build files\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsexit 0;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Notes: Unix configure.in options
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-developer partially supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-newstats (9.9/9.9sub only)
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont# --enable-native-pkcs11 supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-openssl-version-check included without a way to disable it
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-openssl-hash supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-threads included without a way to disable it
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-backtrace backtrace included without a way to disable it
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-symtable incompatible with DLLs (or libtool)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-ipv6 included without a way to disable it
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont# --enable-atomic supported (renamed to intrinsic)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --enable-isc-spnego supported (part of GSSAPI)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-fixed-rrset supported
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman# --enable-querytrace supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --disable-rpz-nsip supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --disable-rpz-nsdname supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-filter-aaaa supported
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont# --enable-full-report supported by verbose
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --enable-dnstap not supported (requires libfstrm support on WIN32)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --enable-seccomp not supported (Linux specific)
affa9c98250c2e3090114d9867460b39beea64b7Francis Dupont# --enable-afl not supported (not yet considered on WIN32)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-python supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-openssl supported
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont# --with-pkcs11 supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-ecdsa supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-gost supported
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt# --with-aes supported
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-cc-alg supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-geoip supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-gssapi supported with MIT (K)erberos (f)or (W)indows
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-libxml2 supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-libjson not supported on WIN32 (package not available on WIN32)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-zlib supported
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-purify not supported (package available on WIN32 but for free?)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-gperftools-profiler not supported (package not available on WIN32)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-libtool not supported on WIN32 (never)
2672fb3a13343154adea7fca628160fd9f0a74f6Francis Dupont# --with-locktype not supported on WIN32 (not yet available on WIN32)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-readline supported
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt# --with-protobuf-c not supported (no reason to until libfstrm is ready)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-libfrtrm not supported (not yet available on WIN32)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-docbook-xsl not supported (?)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-idn[lib] supported
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-[lib]iconv supported (part of IDN)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-atf not supported on WIN32 (package not available on WIN32)
1831311ac6179951c8fcca75aa29dc2f5c0218b9Francis Dupont# --with-tuning supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-dlopen included without a way to disable it
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-dlz-* ?
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Notes: MSVC versions
7ab0c9f13d30600d1980882a36586b6b96d55413Francis Dupont# MSVC 14.0 _MSC_VER == 1900 (VS 2015)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 12.0 _MSC_VER == 1800 (VS 2013)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 11.0 _MSC_VER == 1700 (VS 2012)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 10.0 _MSC_VER == 1600 (VS 2010)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 9.0 _MSC_VER == 1500 (VS 2008)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 8.0 _MSC_VER == 1400 (VS 2005)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 7.1 _MSC_VER == 1310 (VS .NET 2003)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 7.0 _MSC_VER == 1300 (VS .NET (2002))
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 6.0 _MSC_VER == 1200 (VS 6.0 (1998))
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 5.0 _MSC_VER == 1100 (VS 97)