Configure revision affa9c98250c2e3090114d9867460b39beea64b7
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#!/usr/bin/perl
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#
a7c412f37cc73d0332887a746e81220cbf09dd00Mark Andrews# Copyright (C) 2013-2016 Internet Systems Consortium, Inc. ("ISC")
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Permission to use, copy, modify, and/or 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 ISC DISCLAIMS ALL WARRANTIES WITH
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# PERFORMANCE OF THIS SOFTWARE.
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;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsuse Cwd;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt# 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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\delv\\win32\\delv.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\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",
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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\mdig.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\irs\\win32\\libirs.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\async.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\async.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\gai.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\gai.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\nsprobe.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\nsprobe.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\request.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\request.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\resolve.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\resolve.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\update.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\delv\\win32\\delv.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\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",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "..\\bin\\dnssec\\win32\\revoke.vcxproj",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "..\\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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11tokens.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\mdig.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\irs\\win32\\libirs.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\resolve.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\resolve.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\async.vcxproj",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "..\\lib\\samples\\win32\\async.vcxproj.filters",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "..\\lib\\samples\\win32\\gai.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\gai.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\update.vcxproj",
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt "..\\lib\\samples\\win32\\update.vcxproj.filters",
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt "..\\lib\\samples\\win32\\request.vcxproj",
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt "..\\lib\\samples\\win32\\request.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\samples\\win32\\nsprobe.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\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
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy %configdefh;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @substdefh = ("AES_CC",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_GEOIP_V6",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_LIBXML2",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_OPENSSL_AES",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_OPENSSL_DSA",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_OPENSSL_ECDSA",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_OPENSSL_EVP_AES",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_OPENSSL_GOST",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_PKCS11_ECDSA",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_PKCS11_GOST",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_READLINE",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HAVE_ZLIB",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HMAC_RETURN_INT",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HMAC_SHA1_CC",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "HMAC_SHA256_CC",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ISC_LIST_CHECKINIT",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "PREFER_GOSTASN1",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "TUNE_LARGE",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "WANT_QUERYTRACE",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "WITH_IDN");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# for platform.h
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy %configdefp;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @substdefp = ("ISC_PLATFORM_BUSYWAITNOP",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ISC_PLATFORM_HAVEATOMICSTORE",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ISC_PLATFORM_HAVEATOMICSTOREQ",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ISC_PLATFORM_HAVECMPXCHG",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ISC_PLATFORM_HAVEXADD",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ISC_PLATFORM_HAVEXADDQ",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ISC_PLATFORM_NEEDSTRCASESTR",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ISC_PLATFORM_USEBACKTRACE",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "READLINE_INC",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "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",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "KRB5_LIB",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "LIBXML2_LIB",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "OPENSSL_LIB",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "READLINE_LIB",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "READLINE_LIBD",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "WSHELP_DLL",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ZLIB_DLL");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# variables
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy %configvar;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @substvar = ("BIND9_VERSION",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "BUILD_MACHINE",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "BUILD_PLATFORM",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "COPTI",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "COPTML",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "COPTMLD",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "COPTX",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "COPTY",
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
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @substdefd = ("CRYPTO",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "PK11_LIB_LOCATION",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "USE_GSSAPI",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "USE_PKCS11",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "USE_PYTHON",
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt "USE_ISC_SPNEGO");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# conditions
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy %configcond;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @substcond = ("AES",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ATOMIC",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "GSSAPI",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "GEOIP",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "IDNKIT",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "LIBXML2",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "OPENSSL",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "PKCS11",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "PYTHON",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "SAMPLES",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "TESTS",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "XTESTS",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ZLIB");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @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",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "intrinsics",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "isc-spnego",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "native-pkcs11",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "openssl-hash",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "filter-aaaa",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "querytrace",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "rpz-nsdname",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "rpz-nsip");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-xxx/without-xxx
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @withlist = ("aes",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "cross-compile",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "ecdsa",
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt "extra-tests",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "gssapi",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "geoip",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "gost",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "iconv",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "idn",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "openssl",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "libxml2",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "pkcs11",
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt "python",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "readline",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "samples",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "cc-alg",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "tests",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "tuning",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "vcredist",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "zlib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# general arguments
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @optionlist = ("help", "verbose", "legacy", "win32", "x64", "clean");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# usage
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt
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",
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt" 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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-native-pkcs11 use native PKCS#11 for all crypto [default=no]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" 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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" 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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-samples build with sample programs\n",
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt" 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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-gost[=ENC] crypto GOST yes|no|raw|ans1\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-aes crypto AES\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" 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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-zlib[=PATH] build with zlib library yes|no|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-vcredist[=PATH] visual C++ redistributable package yes|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" 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;
f03747965c663e5d21af52dd111460efea9e8dd7Francis Dupontmy $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";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $enable_native_pkcs11 = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $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";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $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";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $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";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $gost_encoding = "raw";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_aes = "auto";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $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-- ";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_zlib = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $zlib_path = "..\\..\\";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $use_vcredist = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $vcredist_path = " --infer-- ";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $cross_compile = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $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");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } 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");
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt } elsif (/^legacy$/i) {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt $legacy_only = 1;
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt } elsif (/^win32$/i) {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt $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";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $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";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefp{"ISC_PLATFORM_BUSYWAITNOP"} = "_mm_pause()";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# get the version information
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy %Versions;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub getversion {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $data;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $name;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $value;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $version;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open V, "..\\version" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews while (<V>) {
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 'PRODUCT' || $name eq 'DESCRIPTION') {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($value) =~ s/^["\s]+//;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($value) =~ s/["\s]+$//;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($value) = split(/\s+/, $value);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $Versions{$name} = $value;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews close V;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $version = "$Versions{'MAJORVER'}.$Versions{'MINORVER'}";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($Versions{'PATCHVER'} ne "") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $version = "$version.$Versions{'PATCHVER'}";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $version = "$version$Versions{'RELEASETYPE'}$Versions{'RELEASEVER'}";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $version = "$version$Versions{'EXTENSIONS'}";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"BIND9_VERSION"} = "$version";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsgetversion();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
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\"";
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt} 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 }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^native-pkcs11$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_native_pkcs11 = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^openssl-hash$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_openssl_hash = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $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 }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^querytrace$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_querytrace = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
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
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt
98091cb21da79b0c7fd329fd64497dcb03402467Evan Huntif ($enable_developer eq "yes") {
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt $configdefh{"ISC_LIST_CHECKINIT"} = 1;
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt $enable_filter_aaaa = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $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";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $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 }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^samples$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_samples = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
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";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $gost_encoding = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^aes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_aes = "no";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt } elsif ($val =~ /^yes$/i) {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt $use_aes = "yes";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt } elsif ($key =~ /^cc-alg$/i) {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt $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 }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^zlib$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_zlib = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $zlib_path = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
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) {
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt $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 }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^tuning$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^large$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $tuning = "large";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
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
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# resolve enable-openssl-hash
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($enable_openssl_hash eq "auto") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_openssl ne "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($enable_native_pkcs11 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_openssl_hash="no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_openssl_hash="yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $enable_openssl_hash="no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
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") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt my $file;
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt foreach $file (@filelist) {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt unlink($file);
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt foreach $file (@projectlist) {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt unlink($file);
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt exit 0;
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt}
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Huntif ($want_unknown ne "no") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print STDERR "can't parse $unknown_value\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt exit 1;
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt}
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Huntif ($verbose) {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($want_win32 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "configure for win32\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($want_x64 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "configure for x64\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($cross_compile eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "cross compiling";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($want_x64 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print ": build on win32 for x64 host\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt } elsif ($want_win32 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print ": build on x64 for win32 host\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt } else {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($enable_intrinsics eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "intrinsics: enabled\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt } else {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "intrinsics: disabled\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($enable_native_pkcs11 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "native-pkcs11: enabled\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt } else {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "native-pkcs11: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($enable_openssl_hash eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "openssl-hash: enabled\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt } else {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "openssl-hash: disabled\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($enable_isc_spnego eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "isc-spnego: enabled\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt } else {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "isc-spnego: disabled\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($enable_filter_aaaa eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "filter-aaaa: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "filter-aaaa: disabled\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt }
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($enable_fixed_rrset eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "fixed-rrset: enabled\n";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt } 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 }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($enable_querytrace eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "querytrace: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "querytrace: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
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 }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews 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 }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_samples eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "sample programs: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
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";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "gost private key encoding: $gost_encoding\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_aes eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "aes: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "aes: enabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt if ($use_gssapi eq "no") {
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt print "gssapi: disabled\n";
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt } 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 }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_zlib eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "zlib: disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "zlib-path: $zlib_path\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
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 }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @vcpaths = {};
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews push(@vcpaths, $ENV{"VCRedistPath"}) if ($ENV{"VCRedistPath"} ne "");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews push(@vcpaths, File::Spec->catfile( cwd(), "..", ".." ));
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($ENV{"FrameworkSDKDir"} ne "" && $want_win32 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews push(@vcpaths, File::Spec->catfile($ENV{"FrameworkSDKDir"},
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "BootStrapper", "Packages",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "vcredist_x86"));
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($ENV{"FrameworkSDKDir"} ne "" && $want_x64 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews push(@vcpaths, File::Spec->catfile($ENV{"FrameworkSDKDir"},
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "BootStrapper", "Packages",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "vcredist_x64"));
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($ENV{"WindowsSDKDir"} ne "" && $want_win32 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir"},
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "BootStrapper", "Packages",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "vcredist_x86"));
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($ENV{"WindowsSDKDir"} ne "" && $want_x64 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir"},
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "BootStrapper", "Packages",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "vcredist_x64"));
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($ENV{"WindowsSDKDir_old"} ne "" && $want_win32 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir_old"},
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "BootStrapper", "Packages",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "vcredist_x86"));
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($ENV{"WindowsSDKDir_old"} ne "" && $want_x64 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir_old"},
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "BootStrapper", "Packages",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "vcredist_x64"));
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($ENV{"VCINSTALLDIR"}) {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"VCINSTALLDIR"},
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "redist", "1033"));
651878e16668d1809562813020c298cf9eed7184Francis Dupont }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt my $rfile;
651878e16668d1809562813020c298cf9eed7184Francis Dupont if ($want_win32 eq "yes") {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt $rfile = "vcredist_x86.exe";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt } else {
651878e16668d1809562813020c298cf9eed7184Francis Dupont $rfile = "vcredist_x64.exe";
651878e16668d1809562813020c298cf9eed7184Francis Dupont }
651878e16668d1809562813020c298cf9eed7184Francis Dupont
651878e16668d1809562813020c298cf9eed7184Francis Dupont foreach (@vcpaths) {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt my $vp = File::Spec->catfile($_, $rfile);
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if (-f $vp) {
651878e16668d1809562813020c298cf9eed7184Francis Dupont $vcredist_path = $vp;
651878e16668d1809562813020c298cf9eed7184Francis Dupont last;
651878e16668d1809562813020c298cf9eed7184Francis Dupont }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($vcredist_path eq " --infer-- ") {
651878e16668d1809562813020c298cf9eed7184Francis Dupont die "with-vcredist is REQUIRED\n";
651878e16668d1809562813020c298cf9eed7184Francis Dupont }
651878e16668d1809562813020c298cf9eed7184Francis Dupont
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($verbose) {
651878e16668d1809562813020c298cf9eed7184Francis Dupont print "found vcredist at " . $vcredist_path . "\n";
651878e16668d1809562813020c298cf9eed7184Francis Dupont }
651878e16668d1809562813020c298cf9eed7184Francis Dupont}
651878e16668d1809562813020c298cf9eed7184Francis Dupont
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Huntmy $msc_ver = 0;
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt
651878e16668d1809562813020c298cf9eed7184Francis Dupontopen F, ">mscver.c" || die $!;
651878e16668d1809562813020c298cf9eed7184Francis Dupontprint F << 'EOF';
651878e16668d1809562813020c298cf9eed7184Francis Dupont#include <windows.h>
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt#include <stdio.h>
651878e16668d1809562813020c298cf9eed7184Francis Dupont
651878e16668d1809562813020c298cf9eed7184Francis Dupontint
651878e16668d1809562813020c298cf9eed7184Francis Dupontmain(void)
651878e16668d1809562813020c298cf9eed7184Francis Dupont{
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt printf("%d\n", _MSC_VER);
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt return(0);
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt}
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
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# no version of MSVS supports strcasestr() yet
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews$configdefp{"ISC_PLATFORM_NEEDSTRCASESTR"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
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)
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt{
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;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $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
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-native-pkcs11
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($enable_native_pkcs11 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_openssl eq "auto") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_openssl = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_openssl ne "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't have both OpenSSL and native PKCS#11\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_pkcs11 ne "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "native PKCS#11 support: force with-pkcs11\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_pkcs11 = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($pkcs11_path eq "unknown") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "native PKCS#11 support: no PKCS#11 provider defined?\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefd{"CRYPTO"} = "PKCS11CRYPTO";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_ecdsa eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "no ECDSA support in native PKCS#11\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "enabled ECDSA support in native PKCS#11\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_PKCS11_ECDSA"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_gost eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "no GOST support in native PKCS#11\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "enabled GOST support in native PKCS#11\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_PKCS11_GOST"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_aes eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "no AES support in native PKCS#11\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "enabled AES support in native PKCS#11\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_aes = "pkcs11";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
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
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-querytrace
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($enable_querytrace eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"WANT_QUERYTRACE"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
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
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-samples
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_samples eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configcond{"SAMPLES"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
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;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $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") {
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt `.\\testsha256.exe`;
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt if ($? == 0) {
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt if ($verbose) {
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt print "EVP_sha256 test failed: disabling EVP_sha256\n";
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt }
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt $use_ecdsa = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $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";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $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";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $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";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $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
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($gost_encoding eq "ans1") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"PREFER_GOSTASN1"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($gost_encoding ne "raw") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "Unrecognized GOST private key encoding: $gost_encoding\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-aes
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_openssl eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_aes ne "pkcs11") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_aes = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_aes eq "auto") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for OpenSSL EVP AES support\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_aes = "evp";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">testevpaes.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <openssl/evp.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmain(void)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews{
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews EVP_CIPHER *aes128, *aes192, *aes256;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews aes128 = EVP_aes_128_ecb();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews aes192 = EVP_aes_192_ecb();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews aes256 = EVP_aes_256_ecb();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (aes128 == NULL || aes192 == NULL || aes256 == NULL)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return (1);
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" testevpaes.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\testevpaes.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews `.\\testevpaes.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? != 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "EVP AES test failed: disabling EVP AES\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_aes = "auto";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "can't compile EVP AES test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "disabling EVP AES\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_aes = "auto";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_aes eq "auto") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for OpenSSL native AES support\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_aes = "native";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">testaes.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <openssl/aes.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark AndrewsAES_KEY k;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsconst unsigned char bufin[16];
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsunsigned char bufout[16];
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmain(void)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews{
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews AES_encrypt(bufin, bufout, &k);
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" testaes.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\testaes.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews `.\\testaes.exe`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? != 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "native AES test failed: disabling AES\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_aes = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "can't compile native AES test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "disabling AES\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_aes = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_aes eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_OPENSSL_EVP_AES"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($use_aes eq "evp") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_OPENSSL_EVP_AES"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_aes = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($use_aes eq "native") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_OPENSSL_AES"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_aes = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($use_aes eq "pkcs11") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_aes = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_aes eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefp{"ISC_PLATFORM_WANTAES"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configcond{"AES"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-cc-alg
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($cookie_algorithm eq "aes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($use_aes ne "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $cookie_algorithm = "sha256";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"AES_CC"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($cookie_algorithm eq "sha1") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HMAC_SHA1_CC"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($cookie_algorithm eq "sha256") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HMAC_SHA256_CC"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($cookie_algorithm ne "aes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "Unrecognized cookie algorithm: $cookie_algorithm\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
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;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking HMAC_Init() return type\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">testhmac.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#include <openssl/hmac.h>
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmain(void)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews{
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews HMAC_CTX ctx;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews int n = HMAC_Init(&ctx, NULL, 0, NULL);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews n += HMAC_Update(&ctx, NULL, 0);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews n += HMAC_Final(&ctx, NULL, NULL);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return(n);
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" testhmac.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (grep { -f and -x } ".\\testhmac.exe") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HMAC_RETURN_INT"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
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 }
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt $gssapi_lib = File::Spec->catfile($gssapi_path, "lib", "amd64",
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt "gssapi${bits}.lib");
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt if (!-f File::Spec->catfile($gssapi_path, "lib", "amd64",
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt "krb5_${bits}.lib")) {
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt 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;
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Huntint flag = 1;
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsint main() {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt 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
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-zlib
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_zlib eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "zlib library is disabled\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configcond{"ZLIB"} = 1;
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt $zlib_path = File::Spec->rel2abs($zlib_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt print "checking for zlib directory at \"$zlib_path\"\n";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if (!-f File::Spec->catfile($zlib_path, "zlib.h")) {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt die "can't find zlib.h include\n";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt }
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if (!-f File::Spec->catfile($zlib_path, "zdll.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find zdll.lib library\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($zlib_path, "zlib1.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find zlib1.dll DLL\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"HAVE_ZLIB"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configinc{"ZLIB_INC"} = "$zlib_path";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $zlib_lib = File::Spec->catfile($zlib_path, "zdll.lib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configlib{"ZLIB_LIB"} = "$zlib_lib";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $zlib_dll = File::Spec->catfile($zlib_path, "zlib1.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdll{"ZLIB_DLL"} = "$zlib_dll";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
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) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't launch the python interpreter: $pythonret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_python = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($use_python ne "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $pythonret = `"$python_command" -c "quit()" 2>&1`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($? != 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print STDERR
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "can't lanch the local python interpreter: $pythonret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configcond{"PYTHON"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefd{"USE_PYTHON"} = "USE_PYTHON";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"PYTHON"} = "$python_command";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # Only a default!
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"prefix"} = "C:\\Program Files\ISC BIND 9";
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
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# tuning
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($tuning eq "large") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefh{"TUNE_LARGE"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews
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;
f02bd534effb926bd5c759ba6d1fb8761dad96dfFrancis Dupont
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 }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($1 ~~ @allcond) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $cond = $1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configcond{$cond})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # do nothing
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = 0;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews 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};
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $pre = "$`";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $post = "$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $def =~ s/([\\ "])/\\$1/g;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $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 }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($1 ~~ @allcond) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $cond = $1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configcond{$cond})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # do nothing
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = 0;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } else {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews 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 }
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont if ($pass == 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews next;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont 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 {
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont $line = "$`$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substdefd) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdefd{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $val = kw($configdefd{$1});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$val;$'";
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont } else {
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont $line = "$`$'";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews }
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substinc) {
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont if (defined($configinc{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $val = kw($configinc{$1});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $line = "$`$val;$'";
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont } 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
open F, ">" . $projectname || die $!;
if ($verbose) {
print "Setting up $projectname\n";
}
foreach $line (@Linesout) {
print F $line . "\n";
}
close F;
}
# make versions.h
sub makeversion {
# List of directories with version files
my @dirlist = ("isc", "dns", "isccc", "isccfg", "lwres", "bind9", "irs");
my %LibMacros = (
"bind9" => "LIBBIND9_EXPORTS",
"dns" => "LIBDNS_EXPORTS",
"irs" => "LIBIRS_EXPORTS",
"isc" => "LIBISC_EXPORTS",
"isccc" => "LIBISCCC_EXPORTS",
"isccfg" => "LIBISCCFG_EXPORTS",
"lwres" => "LIBLWRES_EXPORTS");
my @VersionNames = ("LIBINTERFACE", "LIBREVISION", "LIBAGE");
my $Version;
my %ApiVersions;
my $Mapapi;
my $versionfile = "versions.h";
my $versionpath = "..\\$versionfile";
my $data;
my $name;
my $value;
# And the mapapi one
open M, "..\\lib\\dns\\mapapi" || die $!;
while (<M>) {
chomp;
($data) = split(/\#/);
if ($data) {
($name, $value) = split(/=/, $data);
($name) = split(/\s+/, $name);
if ($name eq 'MAPAPI') {
($value) =~ s/^["\s]+//;
($value) =~ s/["\s]+$//;
} else {
($value) = split(/\s+/, $value);
}
$Mapapi = $value;
}
}
close M;
# Now set up the output version file
my $ThisDate = scalar localtime();
open O, ">$versionpath" ||
die "Can't open output file $versionpath: $!\n";
# Standard Header
print O '/*
* Copyright (C) 2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
';
print O "/*\n";
print O " * $versionfile.";
print O " Generated automatically by Configure.pl.\n";
print O " * Date generated: $ThisDate\n";
print O " */\n\n";
print O '
#ifndef VERSIONS_H
#define VERSIONS_H 1
';
$Version = "$Versions{'MAJORVER'}.$Versions{'MINORVER'}";
if ($Versions{'PATCHVER'} ne "") {
$Version = "$Version.$Versions{'PATCHVER'}";
}
$Version = "$Version$Versions{'RELEASETYPE'}$Versions{'RELEASEVER'}";
$Version = "$Version$Versions{'EXTENSIONS'}";
if ($verbose) {
print "BIND Version: $Version\n";
}
print O "#define VERSION \"$Version\"\n";
print O "#define PRODUCT \"$Versions{'PRODUCT'}\"\n\n";
print O "#define DESCRIPTION \"$Versions{'DESCRIPTION'}\"\n\n";
print O
"#define MAJOR \"$Versions{'MAJORVER'}.$Versions{'MINORVER'}\"\n\n";
print O "#define MAPAPI \"$Mapapi\"\n\n";
my $dir;
my $apifile;
foreach $dir (@dirlist) {
$apifile = "..\\lib\\$dir\\api";
open A, $apifile || die $!;
while (<A>) {
chomp;
($data) = split(/\#/);
if ($data) {
($name, $value) = split(/=/, $data);
$name =~ s/\s+//;
$value =~ s/\s+//;
$ApiVersions{$name} = $value;
}
}
close A;
print O "\n#ifdef $LibMacros{$dir}\n";
foreach $name (@VersionNames) {
print O "#define $name\t$ApiVersions{$name}\n";
}
print O "#endif\n\n";
}
print O "#endif /* VERSIONS_H */\n";
close O;
}
# make srcid.h
sub makesrcid {
my $data;
my $name;
my $value;
my $srcid = "unset";
open SOUT, ">..\\srcid.h" || die "cannot open srcid.h: $!\n";
if (open (SIN, "..\\srcid")) {
LOOP: while (<SIN>) {
chomp;
($data) = split(/\#/);
if ($data) {
($name, $value) = split(/=/, $data);
($name) = split(/\s+/, $name);
($value) = split(/\s+/, $value);
next LOOP if ($name != "SRCID");
$srcid = $value;
}
}
close SIN;
}
# Now set up the output version file
my $ThisDate = scalar localtime();
# Standard Header
print SOUT '/*
* Copyright (C) 2012 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
';
print SOUT "/*\n";
print SOUT " * srcid.h";
print SOUT " * Generated automatically by Configure.pl.\n";
print SOUT " * Date generated: $ThisDate\n";
print SOUT " */\n\n";
print SOUT '
#ifndef SRCID_H
#define SRCID_H 1
';
if ($verbose) {
print "BIND SRCID: $srcid\n";
}
print SOUT "#define SRCID\t\"$srcid\"\n";
print SOUT "#endif /* SRCID_H */\n";
close SOUT;
}
# Build install files
sub makeinstallfile {
open FOUT, ">InstallFlags" || die "cannot open InstallFlags: $!\n";
print FOUT "# Flags for BINDInstall\n";
if ($msc_ver >= 1400) {
print FOUT "runvcredist\n";
}
if ($want_x64 eq "yes") {
print FOUT "forwin64\n";
}
close FOUT;
open LOUT, ">InstallFiles" || die "cannot open InstallFiles: $!\n";
print LOUT "# File list for BINDInstall\n";
if ($msc_ver < 1400) {
if ($msc_ver >= 1310) {
print LOUT "mfc71.dll-WCTT\n";
print LOUT "msvcr71.dll-WCTT\n";
} elsif (($msc_ver > 1200) && ($msc_ver < 1310)) {
print LOUT "mfc70.dll-WCTT\n";
print LOUT "msvcr70.dll-WCTT\n";
}
}
print LOUT "bindevt.dll-BNFT\n";
print LOUT "libbind9.dll-BCFT\n";
print LOUT "libisc.dll-BCFT\n";
print LOUT "libisccfg.dll-BCFT\n";
print LOUT "libisccc.dll-BCFT\n";
print LOUT "libdns.dll-BCFT\n";
print LOUT "liblwres.dll-BCFT\n";
print LOUT "libirs.dll-BCFT\n";
if ($use_openssl eq "yes") {
print LOUT "libeay32.dll-BCFT\n";
}
if ($use_libxml2 eq "yes") {
print LOUT "libxml2.dll-BCFT\n";
}
if ($use_gssapi eq "yes") {
if ($want_x64 eq "yes") {
print LOUT "gssapi64.dll-BCFT\n";
print LOUT "krb5_64.dll-BCFT\n";
} else {
print LOUT "gssapi32.dll-BCFT\n";
print LOUT "krb5_32.dll-BCFT\n";
}
}
if ($use_geoip eq "yes") {
print LOUT "libgeoip.dll-BCFT\n";
}
if ($use_idn eq "yes") {
print LOUT "idnkit.dll-BCFT\n";
print LOUT "iconv.dll-BCFT\n";
}
print LOUT "named.exe-BCFF\n";
print LOUT "nsupdate.exe-BNFT\n";
print LOUT "BINDInstall.exe-BNFT\n";
print LOUT "InstallFlags-BNFT\n";
print LOUT "InstallFiles-BNFT\n";
print LOUT "rndc.exe-BNFF\n";
print LOUT "dig.exe-BNFT\n";
print LOUT "host.exe-BNFT\n";
print LOUT "nslookup.exe-BNFT\n";
print LOUT "delv.exe-BNFT\n";
print LOUT "arpaname.exe-BNFT\n";
print LOUT "nsec3hash.exe-BNFF\n";
print LOUT "genrandom.exe-BNFF\n";
print LOUT "rndc-confgen.exe-BNFF\n";
print LOUT "ddns-confgen.exe-BNFF\n";
print LOUT "tsig-keygen.exe-BNFF\n";
print LOUT "dnssec-keygen.exe-BNFF\n";
print LOUT "dnssec-signzone.exe-BNFF\n";
print LOUT "dnssec-dsfromkey.exe-BNFF\n";
print LOUT "dnssec-importkey.exe-BNFF\n";
print LOUT "dnssec-keyfromlabel.exe-BNFF\n";
print LOUT "dnssec-revoke.exe-BNFF\n";
print LOUT "dnssec-settime.exe-BNFF\n";
print LOUT "dnssec-verify.exe-BNFF\n";
print LOUT "named-checkconf.exe-BNFF\n";
print LOUT "named-checkzone.exe-BNFF\n";
print LOUT "named-compilezone.exe-BNFF\n";
print LOUT "named-journalprint.exe-BNFF\n";
print LOUT "named-rrchecker.exe-BNFF\n";
print LOUT "isc-hmax-fixup.exe-BNFF\n";
if ($use_pkcs11 eq "yes") {
print LOUT "pkcs11-destroy.exe-BNFF\n";
print LOUT "pkcs11-keygen.exe-BNFF\n";
print LOUT "pkcs11-list.exe-BNFF\n";
print LOUT "pkcs11-tokens.exe-BNFF\n";
}
if ($use_python eq "yes") {
print LOUT "dnssec-checkds.py-BNFF\n";
print LOUT "dnssec-coverage.py-BNFF\n";
}
print LOUT "readme1st.txt-BTFT\n";
close LOUT;
}
# Status
if ($verbose) {
my $name;
print "Configuration Status\n";
print "\tconfig.h:\n";
foreach $name (@substdefh) {
if (defined($configdefh{$name})) {
print qq(\t\t$name defined to "$configdefh{$name}"\n);
} else {
printf qq(\t\t$name undefined\n);
}
}
print "\tplatform.h:\n";
foreach $name (@substdefp) {
if (defined($configdefp{$name})) {
print qq(\t\t$name defined to "$configdefp{$name}"\n);
} else {
printf qq(\t\t$name undefined\n);
}
}
print "\tconditions:\n";
foreach $name (@substcond) {
if (defined($configcond{$name})) {
print "\t\t$name is true\n";
} else {
print "\t\t$name is false\n";
}
}
print "\tsubstitutions:\n";
foreach $name (@substvar) {
if (defined($configvar{$name})) {
print qq(\t\t$name -> "$configvar{$name}"\n);
}
}
print "\tdefines:\n";
foreach $name (@substdefd) {
if (defined($configdefd{$name})) {
print qq(\t\t/D "$configdefd{$name}"\n);
}
}
print "\tincludes:\n";
foreach $name (@substinc) {
if (defined($configinc{$name})) {
print qq(\t\t/I "$configinc{$name}"\n);
}
}
print "\tlibraries:\n";
foreach $name (@substlib) {
if (defined($configlib{$name})) {
print "\t\t$configlib{$name}\n";
}
}
print "\tDLLs:\n";
foreach $name (@substdll) {
if (defined($configdll{$name})) {
print "\t\t$configdll{$name}\n";
}
}
print "\n";
}
# Setup
if (($want_win32 eq "yes") || ($want_x64 eq "yes")) {
setupconfigh();
setupplatformh();
my $file;
foreach $file (@filelist) {
setupfile($file);
}
if (!$legacy_only) {
foreach $file (@projectlist) {
setupproject($file);
}
}
makeversion();
makesrcid();
makeinstallfile();
print "Configured.\n";
} else {
print "add win32 or x64 to commit configuration to build files\n";
}
exit 0;
# Notes: Unix configure.in options
# --enable-developer partially supported
# --enable-newstats (9.9/9.9sub only)
# --enable-native-pkcs11 supported
# --enable-openssl-version-check included without a way to disable it
# --enable-openssl-hash supported
# --enable-threads included without a way to disable it
# --enable-backtrace backtrace included without a way to disable it
# --enable-symtable incompatible with DLLs (or libtool)
# --enable-ipv6 included without a way to disable it
# --enable-atomic supported (renamed to intrinsic)
# --enable-isc-spnego supported (part of GSSAPI)
# --enable-fixed-rrset supported
# --enable-querytrace supported
# --disable-rpz-nsip supported
# --disable-rpz-nsdname supported
# --enable-filter-aaaa supported
# --enable-full-report supported by verbose
# --enable-dnstap not supported (requires libfstrm support on WIN32)
# --enable-seccomp not supported (Linux specific)
# --enable-afl not supported (not yet considered on WIN32)
# --with-python supported
# --with-openssl supported
# --with-pkcs11 supported
# --with-ecdsa supported
# --with-gost supported
# --with-aes supported
# --with-cc-alg supported
# --with-geoip supported
# --with-gssapi supported with MIT (K)erberos (f)or (W)indows
# --with-libxml2 supported
# --with-libjson not supported on WIN32 (package not available on WIN32)
# --with-zlib supported
# --with-purify not supported (package available on WIN32 but for free?)
# --with-gperftools-profiler not supported (package not available on WIN32)
# --with-libtool not supported on WIN32 (never)
# --with-locktype not supported on WIN32 (not yet available on WIN32)
# --with-readline supported
# --with-protobuf-c not supported (no reason to until libfstrm is ready)
# --with-libfrtrm not supported (not yet available on WIN32)
# --with-docbook-xsl not supported (?)
# --with-idn[lib] supported
# --with-[lib]iconv supported (part of IDN)
# --with-atf not supported on WIN32 (package not available on WIN32)
# --with-tuning supported
# --with-dlopen included without a way to disable it
# --with-dlz-* ?
#
# Notes: MSVC versions
# MSVC 14.0 _MSC_VER == 1900 (VS 2015)
# MSVC 12.0 _MSC_VER == 1800 (VS 2013)
# MSVC 11.0 _MSC_VER == 1700 (VS 2012)
# MSVC 10.0 _MSC_VER == 1600 (VS 2010)
# MSVC 9.0 _MSC_VER == 1500 (VS 2008)
# MSVC 8.0 _MSC_VER == 1400 (VS 2005)
# MSVC 7.1 _MSC_VER == 1310 (VS .NET 2003)
# MSVC 7.0 _MSC_VER == 1300 (VS .NET (2002))
# MSVC 6.0 _MSC_VER == 1200 (VS 6.0 (1998))
# MSVC 5.0 _MSC_VER == 1100 (VS 97)