Configure revision f02bd534effb926bd5c759ba6d1fb8761dad96df
a7c412f37cc73d0332887a746e81220cbf09dd00Mark Andrews# Copyright (C) 2013, 2014 Internet Systems Consortium, Inc. ("ISC")
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# 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# This script builds nmake and visual studio build files
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsrequire 5.000;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# files to configure
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $platformfile = "..\\lib\\isc\\win32\\include\\isc\\platform.h";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @filelist = ("..\\bin\\check\\win32\\checktool.dsp",
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\\win32\\BINDInstall\\BINDInstall.dsp",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\win32\\BINDInstall\\BINDInstall.mak",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @projectlist = ("..\\bin\\check\\win32\\checkconf.vcxproj",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\check\\win32\\checkconf.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\check\\win32\\checktool.vcxproj.filters",
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\\dig\\win32\\dighost.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dig\\win32\\nslookup.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\dnssectool.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\dsfromkey.vcxproj.filters",
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.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\revoke.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\settime.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\signzone.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\dnssec\\win32\\verify.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\named\\win32\\named.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\nsupdate\\win32\\nsupdate.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11destroy.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11keygen.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\pkcs11\\win32\\pk11list.vcxproj.filters",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "..\\bin\\pkcs11\\win32\\pk11tokens.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\rndc\\win32\\rndcutil.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\arpaname.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\genrandom.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\ischmacfixup.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\journalprint.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tools\\win32\\nsec3hash.vcxproj.filters",
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.filters",
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.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.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.filters",
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.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\task_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\timer_test.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\inter_test.vcxproj.filters",
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.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\bin\\tests\\win32\\task_test.vcxproj.filters",
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.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isccc\\win32\\libisccc.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\isccfg\\win32\\libisccfg.vcxproj.filters",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "..\\lib\\iscpk11\\win32\\libiscpk11.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\lwres\\win32\\liblwres.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\tests\\win32\\libtests.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\win32\\bindevt\\bindevt.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @substdefp = ("ISC_PLATFORM_HAVEATOMICSTORE",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# general arguments
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy @optionlist = ("help", "verbose", "legacy", "win32", "x64", "clean");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews"'Configure' configures BIND9 build files.\n\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" legacy (options) process only files for legacy build\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" win32 (command) configure for Win32 platform\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" <none> (command) print a summary of the configuration\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-intrinsics enable instrinsic/atomic functions [default=yes]\n",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt" enable-native-pkcs11 use native PKCS#11 for all crypto [default=no]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-openssl-hash use OpenSSL for hash functions [default=no]\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-rpz-nsip enable rpz-nsip rules [default=yes]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-rpz-nsdname enable rpz-nsdname rules [default=yes]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-extra-tests build with extra test suite\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-openssl[=PATH] build with OpenSSL yes|no|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-pkcs11[=PATH] build with PKCS#11 support yes|no|provider-path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-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",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt" with-vcredist[=PATH] visual C++ redistributable package yes|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-cross-compile 32 / 64 bit build / host plaforms\n");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Parse arguments
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsmy $gssapi_path = "C:\\Program\ Files\\MIT\\Kerberos\\";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# no arguments -> usage
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# parse arguments
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# legacy default to win32
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# configure the platform
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# append seen args to CONFIGARGS define
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub myenable {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($key =~ /^intrinsics$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt } elsif ($key =~ /^native-pkcs11$/i) {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^openssl-hash$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^isc-spnego$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^filter-aaaa$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^fixed-rrset$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^developer$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^rpz-nsip$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^rpz-nsdname$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-developer expansion now
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # no atf on WIN32
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # TODO: dlz filesystem
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($key =~ /^tests$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^extra-tests$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^openssl$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^pkcs11$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val !~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pkcs11_path =~ s/\.dll$//i;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^ecdsa$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^gost$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^gssapi$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^libxml2$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^geoip$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^readline$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^idn$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^iconv$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $unknown_value = "without-iconv doesn't make sense)";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $iconv_path = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^python$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_python = "no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $use_python = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $python_command = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^vcredist$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $want_unknown = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $unknown_value = "without-vcredist (vcredist is required)";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($val !~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $vcredist_path = $val;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^cross-compile$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^yes$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $cross_compile = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $want_unknown = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $unknown_value = "without-" . $key;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $unknown_value = "with-" . $key;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($want_help ne "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach (@help) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# clean up and exit if requested
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($want_clean eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $file (@filelist) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews unlink($file);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $file (@projectlist) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews unlink($file);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($want_unknown ne "no") {
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt print "gost private key encoding: $gost_encoding\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Check environment
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# infer vcredist when not given
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "trying to infer vcredist path from build environment\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews (-f File::Spec->catfile($ENV{"FrameworkSDKDir"},
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $vcredist_path = File::Spec->catfile($ENV{"FrameworkSDKDir"},
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews (-f File::Spec->catfile($ENV{"FrameworkSDKDir"},
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $vcredist_path = File::Spec->catfile($ENV{"FrameworkSDKDir"},
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews (-f File::Spec->catfile($ENV{"VCINSTALLDIR"}, "redist",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $vcredist_path = File::Spec->catfile($ENV{"VCINSTALLDIR"},
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews (-f File::Spec->catfile($ENV{"VCINSTALLDIR"}, "redist",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $vcredist_path = File::Spec->catfile($ENV{"VCINSTALLDIR"},
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsprint F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "_MSV_VER == $msc_ver\n";
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# gen single threaded for < VS 2005
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($msc_ver < 1400) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"COPTML"} = "/ML";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"COPTMLD"} = "/MLD";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# /GX deprecated in VS 2005
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($msc_ver < 1400) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"COPTX"} = "/GX";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"COPTX"} = "/EHsc";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# /YX for < VS 2005
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($msc_ver < 1400) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"COPTY"} = "/YX";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# backtrace for >= VS 2012
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($msc_ver >= 1700) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefp{"ISC_PLATFORM_USEBACKTRACE"} = 1;
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt# no version of MSVS supports strcasestr() yet
1bb2f53b9f74a8ca9812cbe9243ef41190b4da14Evan Hunt$configdefp{"ISC_PLATFORM_NEEDSTRCASESTR"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# warn when cross compiling
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 if ($want_win32 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"BUILD_PLATFORM"} = "x64";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"BUILD_MACHINE"} = "/machine:X64";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews} elsif ($want_win32 eq "yes") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">cross.c" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#ifdef _WIN64
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews fprintf(stderr, "compiling for x64 when win32 was asked?!\n");
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 print STDERR "can't check cross compile: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#ifndef _WIN64
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews fprintf(stderr, "compiling in 32 bits when x64 was asked?!\n");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print STDERR $cross;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print STDERR "can't check cross compile: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Process arguments
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_HAVEATOMICSTORE"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefp{"ISC_PLATFORM_HAVECMPXCHG"} = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"INTRINSIC"} = "false";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt# enable-native-pkcs11
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Huntif ($enable_native_pkcs11 eq "yes") {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($use_openssl eq "auto") {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt $use_openssl = "no";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($use_openssl ne "no") {
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt die "can't have both OpenSSL and native PKCS#11\n";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt print "native PKCS#11 support: force with-pkcs11\n";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt print "native PKCS#11 support: no PKCS#11 provider defined?\n";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt print "enabled ECDSA support in native PKCS#11\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-filter-aaaa
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-fixed-rrset
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-rpz-nsip
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-rpz-nsdname
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-extra-tests
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-openssl
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for an OpenSSL built directory at sibling root\n";
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 # Now see if we have a directory or just a file.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $file (sort {uc($b) cmp uc($a)} @dirlist) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $openssl_path = File::Spec->catdir($openssl_path, $file);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # If we have one use it otherwise report the error
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find an OpenSSL built directory at sibling root\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# falls into (so no else)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $openssl_path = File::Spec->rel2abs($openssl_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for OpenSSL built directory at \"$openssl_path\"\n";
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 if (!-f File::Spec->catfile($openssl_path, "out32dll", "libeay32.dll")) {
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 if (-f File::Spec->catfile($openssl_inc, "openssl", "dsa.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# check OpenSSL
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking whether linking with OpenSSL works\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "Can't copy OpenSSL DLL to working directory: $ret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD /I "$include" testossl.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# check OpenSSL version
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n",
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 $compret = `cl /nologo /MD /I "$include" testosslv.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't compile OpenSSL version test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# check EVP_sha256 / EVP_sha384 / EVP_sha512
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD testsha256.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "EVP_sha256 test failed: disabling EVP_sha256\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "can't compile EVP_sha256 test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD testsha384.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "EVP_sha384 test failed: disabling EVP_sha384\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "can't compile EVP_sha384 test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD testsha512.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "EVP_sha512 test failed: disabling EVP_sha512\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "can't compile EVP_sha512 test: $compret\n";
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 $compret = `cl /nologo /MD /I "$include" testecdsa.c "$library"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#if (OPENSSL_VERSION_NUMBER >= 0x10000000L)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD /I "$include" testgost.c "$library"`;
12bf5d4796505b4c20680531da96a31e6c2c1144Evan Hunt die "Unrecognized GOST private key encoding: $gost_encoding\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-openssl-hash
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-pkcs11
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefd{"PK11_LIB_LOCATION"} = "PK11_LIB_LOCATION=\"$pkcs11_path\"";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-gssapi
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $gssapi_path = File::Spec->rel2abs($gssapi_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for gssapi directory at \"$gssapi_path\"\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "include",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "include",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "include",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configinc{"GSSAPI_INC"} = File::Spec->catdir($gssapi_path, "include");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "lib", "i386",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $gssapi_lib = File::Spec->catfile($gssapi_path, "lib", "i386",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "lib", "i386",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $krb5_lib = File::Spec->catfile($gssapi_path, "lib", "i386",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "lib", "amd64",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $gssapi_lib = File::Spec->catfile($gssapi_path, "lib", "amd64",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "lib", "amd64",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $krb5_lib = File::Spec->catfile($gssapi_path, "lib", "amd64",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't happen: no choice between Win32 and x64\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "bin", "gssapi${bits}.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "bin", "krb5_${bits}.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "bin", "comerr${bits}.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "bin", "k5sprt${bits}.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($gssapi_path, "bin", "wshelp${bits}.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $gssapi_dll = File::Spec->catfile($gssapi_path, "bin",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $krb5_dll = File::Spec->catfile($gssapi_path, "bin",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $comerr_dll = File::Spec->catfile($gssapi_path, "bin",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $k5sprt_dll = File::Spec->catfile($gssapi_path, "bin",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $wshelp_dll = File::Spec->catfile($gssapi_path, "bin",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-isc-spnego
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configdefd{"USE_ISC_SPNEGO"} = "USE_ISC_SPNEGO";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $geoip_path = File::Spec->rel2abs($geoip_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for geoip directory at \"$geoip_path\"\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($geoip_path, "GeoIP.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($geoip_path, "GeoIP.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($geoip_path, "GeoIP.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $geoip_lib = File::Spec->catfile($geoip_path, "GeoIP.lib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $geoip_dll = File::Spec->catfile($geoip_path, "GeoIP.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "Can't copy GeoIP DLL to working directory: $ret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo /MD testgeoip.c "$geoip_lib"`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for GeoIP Country IPv6 support\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return GeoIP_country_name_by_ipnum_v6(NULL, in6) != NULL;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo $geoip_inc /MD testgeoip1.c $geoip_libs`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't compile GeoIP Country IPv6 test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for GeoIP City IPv6 support\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews return GeoIP_record_by_ipnum_v6(NULL, in6) != NULL;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $compret = `cl /nologo $geoip_inc /MD testgeoip2.c $geoip_libs`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't compile GeoIP City IPv6 test: $compret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-readline
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $readline_path = File::Spec->rel2abs($readline_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for readline directory at \"$readline_path\"\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($readline_path, "readline", "readline.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($readline_path, "readline", "readline.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $readline_lib = File::Spec->catfile($readline_path,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (-f File::Spec->catfile($readline_path, "readline", "readlineD.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $readline_libd = File::Spec->catfile($readline_path,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configlib{"READLINE_LIBD"} = "$readline_libd";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-idn (including with-iconv)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for IDN kit directory at \"$idn_path\"\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($idn_path, "idn", "api.h")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($idn_path, "idn", "idnkit.lib")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (!-f File::Spec->catfile($idn_path, "idn", "idnkit.dll")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $idn_lib = File::Spec->catfile($idn_path, "idn", "idnkit.lib");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $idn_dll = File::Spec->catfile($idn_path, "idn", "idnkit.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $iconv_dll = File::Spec->catfile($idn_path, "idn", "iconv.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $iconv_dll =File::Spec->catfile($iconv_path, "iconv.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-libxml2
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for a libxml2 built directory at sibling root\n";
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 # Now see if we have a directory or just a file.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $file (sort {uc($b) cmp uc($a)} @dirlist) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $libxml2_path = File::Spec->catdir($libxml2_path, $file);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # If we have one use it otherwise report the error
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find a libxml2 built directory at sibling root\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# falls into (so no else)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $libxml2_path = File::Spec->rel2abs($libxml2_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "checking for libxml2 built directory at \"$libxml2_path\"\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find libxml2 xmlversion.h include\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't find Libxml2 libxml2.lib library\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $libxml2_inc = File::Spec->catdir($libxml2_path, "include");
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 my $libxml2_dll = File::Spec->catfile($libxml2_libdir, "libxml2.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-python
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "can't launch the python interpreter: $pythonret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $pythonret = `"$python_command" -c "quit()" 2>&1`;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "can't lanch the local python interpreter: $pythonret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"prefix"} = "C:\\Windows\\system32\\dns";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-vcredist
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews$vcredist_path = File::Spec->rel2abs($vcredist_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"VCREDIST_PATH"} = "$vcredist_path";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# setup config.h with %configdefh
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# setup platform.h with %configdefp
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# escape spaces
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# setup a file with %configcond stack and %config{var,defd,inc,lib,dll}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substdefd) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdefd{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substinc) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configinc{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substlib) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configlib{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substdll) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdll{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $val = kw($configdll{$1});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# setup a project with %configcond stack and %config{var,defd,inc,lib,dll}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substdefd) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdefd{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substinc) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configinc{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $val = kw($configinc{$1});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($1 ~~ @substdll) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configdll{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "unknown control $& in $projectname\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews push @Linesout, $line;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, ">" . $projectname || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($verbose) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "Setting up $projectname\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $line (@Linesout) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print F $line . "\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub makeversion {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # List of directories with version files
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt my @dirlist = ("iscpk11", "isc", "dns", "isccc",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "isccfg", "lwres", "bind9");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my %LibMacros = (
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "bind9" => "LIBBIND9_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "dns" => "LIBDNS_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "isc" => "LIBISC_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "isccc" => "LIBISCCC_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "isccfg" => "LIBISCCFG_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "iscpk11" => "LIBISCPK11_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "lwres" => "LIBLWRES_EXPORTS");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @VersionNames = ("LIBINTERFACE", "LIBREVISION", "LIBAGE");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my %Versions;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $Version;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my %ApiVersions;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $versionfile = "versions.h";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $versionpath = "..\\$versionfile";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # First get the version information
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open V, "..\\version" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews while (<V>) {
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 ($value) = split(/\s+/, $value);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $Versions{$name} = $value;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # And the mapapi one
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open M, "..\\lib\\dns\\mapapi" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews while (<M>) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($data) = split(/\#/);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($data) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($name, $value) = split(/=/, $data);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($name) = split(/\s+/, $name);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($value) =~ s/^["\s]+//;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($value) =~ s/["\s]+$//;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews ($value) = split(/\s+/, $value);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $Mapapi = $value;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # Now set up the output version file
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $ThisDate = scalar localtime();
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open O, ">$versionpath" ||
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "Can't open output file $versionpath: $!\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews # Standard Header
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * Copyright (C) 2001 Internet Software Consortium.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * Permission to use, copy, modify, and distribute this software for any
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * purpose with or without fee is hereby granted, provided that the above
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * copyright notice and this permission notice appear in all copies.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O " Generated automatically by Configure.pl.\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#ifndef VERSIONS_H
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#define VERSIONS_H 1
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $Version = "$Versions{'MAJORVER'}.$Versions{'MINORVER'}";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($Versions{'PATCHVER'} != "") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $Version = "$Version$Versions{'RELEASETYPE'}$Versions{'RELEASEVER'}";
f02bd534effb926bd5c759ba6d1fb8761dad96dfFrancis Dupont $Version = "$Version$Versions{'EXTENSIONS'}";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O "#define PRODUCT \"$Versions{'PRODUCT'}\"\n\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O "#define DESCRIPTION \"$Versions{'DESCRIPTION'}\"\n\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "#define MAJOR \"$Versions{'MAJORVER'}.$Versions{'MINORVER'}\"\n\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print O "#define $name\t$ApiVersions{$name}\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open SOUT, ">..\\srcid.h" || die "cannot open srcid.h: $!\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * Copyright (C) 2012 Internet Software Consortium.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * Permission to use, copy, modify, and distribute this software for any
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * purpose with or without fee is hereby granted, provided that the above
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * copyright notice and this permission notice appear in all copies.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print SOUT " * Generated automatically by Configure.pl.\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#ifndef SRCID_H
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#define SRCID_H 1
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print qq(\t\t$name defined to "$configdefh{$name}"\n);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print qq(\t\t$name defined to "$configdefp{$name}"\n);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif (($want_win32 eq "yes") || ($want_x64 eq "yes")) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print "add win32 or x64 to commit configuration to build files\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Notes: Unix configure.in options
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-developer partially supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-newstats (9.9/9.9sub only)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-openssl-version-check included without a way to disable it
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-openssl-hash supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-threads included without a way to disable it
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-backtrace backtrace included without a way to disable it
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-symtable incompatible with DLLs (or libtool)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-exportlib TODO (obsolete)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-ipv6 included without a way to disable it
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-atomic supported (renamed intrinsic)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-spnego support (part of GSSAPI)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-fixed-rrset supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --disable-rpz-nsip supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --disable-rpz-nsdname supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-filter-aaaa supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-python supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-openssl supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-ecdsa supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-gost supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-pkcs11 supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-geoip supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-gssapi supported with MIT (K)erberos (f)or (W)indows
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-libxml2 supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-libjson not supported on WIN32 (package not available on WIN32)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-purify ? (package available on WIN32 but for free?)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-libtool not supported on WIN32 (never)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-readline supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-idn support
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-[lib]iconv (part of IDN)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-atf not supported on WIN32 (package not available on WIN32)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-dlopen included without a way to disable it
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-dlz-* ?
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Notes: MSVC versions
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 12.0 _MSC_VER == 1800 (VS 2013)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 11.0 _MSC_VER == 1700 (VS 2012)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 10.0 _MSC_VER == 1600 (VS 2010)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 9.0 _MSC_VER == 1500 (VS 2008)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 8.0 _MSC_VER == 1400 (VS 2005)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 7.1 _MSC_VER == 1310 (VS .NET 2003)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 7.0 _MSC_VER == 1300 (VS .NET (2002))
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 6.0 _MSC_VER == 1200 (VS 6.0 (1998))
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 5.0 _MSC_VER == 1100 (VS 97)