9eb24f1f84885d5c2e51a7f675264db398c31af7Tinderbox User# Copyright (C) 2013-2018 Internet Systems Consortium, Inc. ("ISC")
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# file, You can obtain one at http://mozilla.org/MPL/2.0/.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# 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";
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecickimy $confshfile = "..\\bin\\tests\\system\\conf.sh";
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",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\bigkey.dsp",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\bigkey.mak",
45fd95544cd650a8e6a0fc39b656d1109b811ac0Evan Hunt "..\\bin\\tests\\system\\win32\\feature-test.dsp",
45fd95544cd650a8e6a0fc39b656d1109b811ac0Evan Hunt "..\\bin\\tests\\system\\win32\\feature-test.mak",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\gencheck.dsp",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\gencheck.mak",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\keycreate.dsp",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\keycreate.mak",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\keydelete.dsp",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\keydelete.mak",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\lwtest.dsp",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\lwtest.mak",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\pipequeries.dsp",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\pipequeries.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",
1059bc2e42e8214f8b73d3b4cd181d8394a94a6aFrancis Dupont "..\\bin\\tools\\win32\\mdig.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",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\bigkey.vcxproj",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\bigkey.vcxproj.filters",
45fd95544cd650a8e6a0fc39b656d1109b811ac0Evan Hunt "..\\bin\\tests\\system\\win32\\feature-test.vcxproj",
45fd95544cd650a8e6a0fc39b656d1109b811ac0Evan Hunt "..\\bin\\tests\\system\\win32\\feature-test.vcxproj.filters",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\gencheck.vcxproj",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\gencheck.vcxproj.filters",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\keycreate.vcxproj",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\keycreate.vcxproj.filters",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\keydelete.vcxproj",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\keydelete.vcxproj.filters",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\lwtest.vcxproj",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\lwtest.vcxproj.filters",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\pipequeries.vcxproj",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\system\\win32\\pipequeries.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",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\win32\\makejournal.vcxproj",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki "..\\bin\\tests\\win32\\makejournal.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",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\lwres\\win32\\liblwres.vcxproj.filters",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\resolve.vcxproj.filters",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\update.vcxproj.filters",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\request.vcxproj.filters",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "..\\lib\\samples\\win32\\nsprobe.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\tests\\win32\\libtests.vcxproj.filters",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews "..\\lib\\win32\\bindevt\\bindevt.vcxproj.filters",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupontmy @allcond = (@substcond, "NOTYET", "NOLONGER");
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",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt" enable-openssl-hash use OpenSSL for hash functions [default=yes]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-isc-spnego use SPNEGO from lib/dns [default=yes]\n",
5c4e0c7800b5c7783e7f8b9ce80a6f8dc47f8856Mark Andrews" enable-filter-aaaa enable filtering of AAAA records [default=yes]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-fixed-rrset enable fixed rrset ordering [default=no]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-developer enable developer build settings [default=no]\n",
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman" enable-querytrace enable very verbose query trace [default=no]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-rpz-nsip enable rpz-nsip rules [default=yes]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" enable-rpz-nsdname enable rpz-nsdname rules [default=yes]\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-extra-tests build with extra test suite\n",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki" with-system-tests build with system 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",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont" with-cc-alg choose the algorithm for cookies aes|sha1|sha256\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-gssapi[=PATH] build with MIT KfW GSSAPI yes|no|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-libxml2[=PATH] build with libxml2 library yes|no|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-geoip[=PATH] build with GeoIP support yes|no|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-python[=COMMAND] specify python interpreter python|command\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-readline[=PATH] build with readline library support yes|no|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-idn[=PATH] build with IDN kit support yes|no|path\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-iconv[=PATH] path of the iconv DLL [default=same than idn]\n",
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont" with-zlib[=PATH] build with zlib library yes|no|path\n",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt" with-vcredist[=PATH] visual C++ redistributable package yes|path\n",
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt" with-tuning=OPTION tune for plaform size (large|default)\n",
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews" with-cross-compile 32 / 64 bit build / host plaforms\n");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# 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";
cf24cbd837617c5cb89f04ba97b262be21a925bfEvan Hunt $configdefp{"ISC_PLATFORM_BUSYWAITNOP"} = "__asm { rep nop }";
bca79675ee0d9017d78768fbf5e69bca621f7e47Evan Hunt $configdefp{"ISC_PLATFORM_BUSYWAITNOP"} = "_mm_pause()";
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki# Standard configure variable
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont# get the version information
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont if ($name eq 'PRODUCT' || $name eq 'DESCRIPTION') {
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont $version = "$Versions{'MAJORVER'}.$Versions{'MINORVER'}";
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont $version = "$version$Versions{'RELEASETYPE'}$Versions{'RELEASEVER'}";
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont $version = "$version$Versions{'EXTENSIONS'}";
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) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } elsif ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^isc-spnego$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^filter-aaaa$/i) {
5c4e0c7800b5c7783e7f8b9ce80a6f8dc47f8856Mark Andrews if ($val =~ /^no$/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) {
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman } elsif ($key =~ /^querytrace$/i) {
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman 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) {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki } elsif ($key =~ /^system-tests$/i) {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki if ($val =~ /^yes$/i) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } elsif ($key =~ /^samples$/i) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt 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) {
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont } elsif ($key =~ /^eddsa$/i) {
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont if ($val =~ /^no$/i) {
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont } elsif ($val !~ /^no$/i) {
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont if ($val =~ /^all$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($key =~ /^gost$/i) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val =~ /^no$/i) {
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont } elsif ($val !~ /^no$/i) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } elsif ($key =~ /^aes$/i) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($val =~ /^no$/i) {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt } elsif ($val =~ /^yes$/i) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont } elsif ($key =~ /^cc-alg$/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;
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont } elsif ($key =~ /^zlib$/i) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if ($val !~ /^no$/i) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $use_zlib = "yes";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if ($val !~ /^yes$/i) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $zlib_path = $val;
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";
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt } elsif ($key =~ /^tuning$/i) {
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt if ($val =~ /^large$/i) {
98091cb21da79b0c7fd329fd64497dcb03402467Evan Hunt $tuning = "large";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $want_unknown = "yes";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($val eq "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $unknown_value = "without-" . $key;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $unknown_value = "with-" . $key;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt# resolve enable-openssl-hash
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntif ($enable_openssl_hash eq "auto") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($use_openssl ne "no") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if ($enable_native_pkcs11 eq "yes") {
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $enable_openssl_hash="no";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $enable_openssl_hash="yes";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $enable_openssl_hash="no";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($want_help ne "no") {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach (@help) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# clean up and exit if requested
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($want_clean eq "yes") {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki unlink($configfile);
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki unlink($platformfile);
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki unlink($confshfile);
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki unlink($icshfile);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $file (@filelist) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews unlink($file);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews foreach $file (@projectlist) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews unlink($file);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($want_unknown ne "no") {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont print "cookie algorithm: $cookie_algorithm\n";
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";
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt my @vcpaths = {};
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, $ENV{"VCRedistPath"}) if ($ENV{"VCRedistPath"} ne "");
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile( cwd(), "..", ".." ));
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($ENV{"FrameworkSDKDir"} ne "" && $want_win32 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"FrameworkSDKDir"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt } elsif ($ENV{"FrameworkSDKDir"} ne "" && $want_x64 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"FrameworkSDKDir"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($ENV{"WindowsSDKDir"} ne "" && $want_win32 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt } elsif ($ENV{"WindowsSDKDir"} ne "" && $want_x64 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt if ($ENV{"WindowsSDKDir_old"} ne "" && $want_win32 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir_old"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt } elsif ($ENV{"WindowsSDKDir_old"} ne "" && $want_x64 eq "yes") {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"WindowsSDKDir_old"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt push(@vcpaths, File::Spec->catfile($ENV{"VCINSTALLDIR"},
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt foreach (@vcpaths) {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt my $vp = File::Spec->catfile($_, $rfile);
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt print "found vcredist at " . $vcredist_path . "\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsprint F << 'EOF';
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewsif ($verbose) {
12b4d2a75ef1d227387ab5b6dcbb347d64728541Francis Dupont print "_MSC_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;
821ff5e8fa1df2e09fea157ee3e298eef6cf4ec9Evan Hunt $configdefp{"ISC_PLATFORM_HAVEATOMICSTOREQ"} = 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") {
651878e16668d1809562813020c298cf9eed7184Francis Dupont $use_openssl = "no";
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt if ($use_openssl ne "no") {
651878e16668d1809562813020c298cf9eed7184Francis Dupont die "can't have both OpenSSL and native PKCS#11\n";
651878e16668d1809562813020c298cf9eed7184Francis Dupont print "native PKCS#11 support: force with-pkcs11\n";
651878e16668d1809562813020c298cf9eed7184Francis Dupont print "native PKCS#11 support: no PKCS#11 provider defined?\n";
651878e16668d1809562813020c298cf9eed7184Francis Dupont print "no ECDSA support in native PKCS#11\n";
651878e16668d1809562813020c298cf9eed7184Francis Dupont print "enabled ECDSA support in native PKCS#11\n";
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont print "no EDDSA support in native PKCS#11\n";
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont print "enabled Ed25519 support in native PKCS#11\n";
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont print "no Ed448 support in native PKCS#11\n";
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont print "enabled Ed448 support in native PKCS#11\n";
651878e16668d1809562813020c298cf9eed7184Francis Dupont print "enabled GOST support in native PKCS#11\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-filter-aaaa
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-fixed-rrset
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-rpz-nsip
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman# enable-querytrace
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# enable-rpz-nsdname
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-extra-tests
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki# with-system-tests
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt# with-samples
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) {
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews $openssl_path = File::Spec->catdir($openssl_path, $file);
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 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");
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews die "can't find OpenSSL libeay32.lib library\n";
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews # OpenSSL >= 1.1 is easier at the exception of the DLL
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews $openssl_inc = File::Spec->catdir($openssl_path, "include");
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews $openssl_lib = File::Spec->catfile($openssl_path, "libcrypto.lib");
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews die "can't find OpenSSL libcrypto.lib library\n";
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews opendir DIR, $openssl_path || die "No Directory: $!\n";
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews my @dirlist = grep (/^libcrypto-[^.]+\.dll$/i, readdir(DIR));
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews die "can't find OpenSSL libcrypto-*.dll DLL\n";
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews die "find more than one OpenSSL libcrypto-*.dll DLL candidate\n";
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews $openssl_dll = File::Spec->catdir($openssl_path, "@dirlist[0]");
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";
f9c410d93711fbf312a0162f1e2d3f2a5ede69afFrancis Dupont# check FIPS_mode
f9c410d93711fbf312a0162f1e2d3f2a5ede69afFrancis Dupont $compret = `cl /nologo /MD testfips.c "$library"`;
f9c410d93711fbf312a0162f1e2d3f2a5ede69afFrancis Dupont print "can't compile FIPS_mode 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"`;
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont print "checking for OpenSSL ED25519 support\n";
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont ctx = EVP_PKEY_CTX_new_id(NID_ED25519, NULL);
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont $compret = `cl /nologo /MD /I "$include" tested25519.c "$library"`;
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont if (grep { -f and -x } ".\\tested25519.exe") {
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont print "EDDSA test failed: disabling EDDSA\n";
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont print "can't compile EDDSA test: $compret\n";
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont print "checking for OpenSSL ED448 support\n";
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont $compret = `cl /nologo /MD /I "$include" tested448.c "$library"`;
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont print "ED448 test failed: disabling ED448\n";
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont print "can't compile ED448 test: $compret\n";
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";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt if (aes128 == NULL || aes192 == NULL || aes256 == NULL)
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $compret = `cl /nologo /MD /I "$include" testevpaes.c "$library"`;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "checking for OpenSSL native AES support\n";
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntconst unsigned char bufin[16];
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Huntunsigned char bufout[16];
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt $compret = `cl /nologo /MD /I "$include" testaes.c "$library"`;
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt print "can't compile native AES test: $compret\n";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont die "Unrecognized cookie algorithm: $cookie_algorithm\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");
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont $zlib_path = File::Spec->rel2abs($zlib_path);
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont print "checking for zlib directory at \"$zlib_path\"\n";
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if (!-f File::Spec->catfile($zlib_path, "zlib.h")) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if (!-f File::Spec->catfile($zlib_path, "zdll.lib")) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if (!-f File::Spec->catfile($zlib_path, "zlib1.dll")) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont my $zlib_lib = File::Spec->catfile($zlib_path, "zdll.lib");
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont my $zlib_dll = File::Spec->catfile($zlib_path, "zlib1.dll");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-python
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki my $pythonret = `python.exe -c "quit()" 2>&1`;
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print STDERR "can't launch the python interpreter: $pythonret\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $pythonret = `"$python_command" -c "quit()" 2>&1`;
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews die "can't launch $python_command: $pythonret\n";
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki # tried to use the full path without success here
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print "checking for python module 'argparse'\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews my $pythonret = `"$python_command" -c "import argparse" 2>&1`;
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews die "can't find python module 'argparse': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print STDERR "can't find python module 'argparse': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $pythonret = `"$python_command" -c "from ply import *" 2>&1`;
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews die "can't find python module 'ply': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print STDERR "can't find python module 'ply': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print "checking for python module 'win32api'\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $pythonret = `"$python_command" -c "import win32api" 2>&1`;
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews die "can't find python module 'win32api': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews "can't find python module 'win32api': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews print "checking for python module 'win32con'\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $pythonret = `"$python_command" -c "import win32con" 2>&1`;
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews die "can't find python module 'win32con': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews "can't find python module 'win32con': $pythonret\n";
9f5443280fcfd625a06f63a1b457ed2335840278Mark Andrews $configvar{"expanded_sysconfdir"} = "__prefix__\\etc";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# with-vcredist
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews$vcredist_path = File::Spec->rel2abs($vcredist_path);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $configvar{"VCREDIST_PATH"} = "$vcredist_path";
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki# escape spaces
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# setup config.h with %configdefh
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# setup platform.h with %configdefp
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki# setup conf.sh with %configtest and %configvar
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki } elsif ($1 ~~ @substvar) {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki if (defined($configvar{$1})) {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki die "unknown control $& in $confshfile.win32\n";
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki open F, ">" . $confshfile || die $!;
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki if ($verbose) {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki print "Setting up $confshfile\n";
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki foreach $line (@Lines) {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki print F $line . "\n";
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki# setup isc-config.sh with %configvar accepting undefined
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecickisub setupicsh {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki open F, $icshfile . ".in" || die $!;
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki @Lines = <F>;
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki foreach $line (@Lines) {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki while ($line =~ /@([^@]+)\@/) {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki if ($1 ~~ @substvar) {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki if (defined($configvar{$1})) {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki $val = kw($configvar{$1});
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki open F, ">" . $icshfile || die $!;
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki if ($verbose) {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki print "Setting up $icshfile\n";
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki foreach $line (@Lines) {
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki print F $line . "\n";
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki# setup a file with %configcond stack and %config{var,defd,inc,lib,dll,test}
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrewssub setupfile {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @Linesin;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @Linesout;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $filename = $_[0];
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $pass = 1;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews open F, $filename . ".in" || die $!;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews @Linesin = <F>;
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);
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if ($1 ~~ @allcond) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont if (defined($configcond{$cond})) {
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont die "unknown condition \@IF $1 in $filename\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($line =~ /^\@ELSE (.*)$/) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($cond ne $1) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "\@ELSE $1 mismatch in $filename\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configcond{$cond})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (scalar(@conds) > 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = $passes[0];
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews } elsif ($line =~ /^\@END (.*)$/) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($cond ne $1) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews die "\@END $1 mismatch in $filename\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $cond = shift(@conds);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (scalar(@passes) > 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $pass = shift(@passes);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($pass == 0) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews while ($line =~ /@([^@ ]*)@/) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if ($1 ~~ @substvar) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews if (defined($configvar{$1})) {
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $val = kw($configvar{$1});
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews $def =~ s/([\\ "])/\\$1/g;
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt $line = qq($pre/D "$def"$post);
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}
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont die "unknown condition \@IF $1 in $projectname\n";
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
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt my @dirlist = ("isc", "dns", "isccc", "isccfg", "lwres", "bind9", "irs");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my %LibMacros = (
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "bind9" => "LIBBIND9_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "dns" => "LIBDNS_EXPORTS",
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt "irs" => "LIBIRS_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "isc" => "LIBISC_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "isccc" => "LIBISCCC_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "isccfg" => "LIBISCCFG_EXPORTS",
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt "lwres" => "LIBLWRES_EXPORTS");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my @VersionNames = ("LIBINTERFACE", "LIBREVISION", "LIBAGE");
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $Version;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my %ApiVersions;
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $versionfile = "versions.h";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews my $versionpath = "..\\$versionfile";
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
704e6c8876907aac0bf7380effca8bca400d4acdMark Andrews * Copyright (C) 2001 Internet Systems Consortium, Inc. ("ISC")
704e6c8876907aac0bf7380effca8bca400d4acdMark Andrews * This Source Code Form is subject to the terms of the Mozilla Public
704e6c8876907aac0bf7380effca8bca400d4acdMark Andrews * License, v. 2.0. If a copy of the MPL was not distributed with this
704e6c8876907aac0bf7380effca8bca400d4acdMark Andrews * file, You can obtain one at http://mozilla.org/MPL/2.0/.
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'}";
b7c6138405d62bae04bd4d065d4a2057ff125707Francis Dupont if ($Versions{'PATCHVER'} ne "") {
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";
704e6c8876907aac0bf7380effca8bca400d4acdMark Andrews * Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC")
704e6c8876907aac0bf7380effca8bca400d4acdMark Andrews * This Source Code Form is subject to the terms of the Mozilla Public
704e6c8876907aac0bf7380effca8bca400d4acdMark Andrews * License, v. 2.0. If a copy of the MPL was not distributed with this
704e6c8876907aac0bf7380effca8bca400d4acdMark Andrews * file, You can obtain one at http://mozilla.org/MPL/2.0/.
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print SOUT " * Generated automatically by Configure.pl.\n";
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#ifndef SRCID_H
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews#define SRCID_H 1
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews# Build install files
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews open FOUT, ">InstallFlags" || die "cannot open InstallFlags: $!\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews open LOUT, ">InstallFiles" || die "cannot open InstallFiles: $!\n";
3fa134363f99816b36e30822a098196810ae6f20Mark Andrews } elsif (($msc_ver > 1200) && ($msc_ver < 1310)) {
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews ($v, $d, $name) =File::Spec->splitpath($configdll{"OPENSSL_DLL"});
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki# Adjust system tests
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki# WIN32 not a BSD
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki# dnstap not supported
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki#$configtest{"DNSTAP"} = "dnstap";
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki#$configtest{"FSTRM_CAPTURE"} = "fstrm_capture";
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki# no json-c library for WIN32
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki#$configtest{"JSONSTATS"} = 1;
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki# lmdb not supported
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki#$configtest{"NZD_TOOLS"} = "nzd";
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki# TODO check for pkcs11ssl and set PKCS11_TEST
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print qq(\t\t$name defined to "$configdefh{$name}"\n);
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews print qq(\t\t$name defined to "$configdefp{$name}"\n);
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki print qq(\t\t$name defined to "$configtest{$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)
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont# --enable-native-pkcs11 supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-openssl-version-check included without a way to disable it
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-openssl-hash supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-threads included without a way to disable it
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-backtrace backtrace included without a way to disable it
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-symtable incompatible with DLLs (or libtool)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-ipv6 included without a way to disable it
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont# --enable-atomic supported (renamed to intrinsic)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --enable-isc-spnego supported (part of GSSAPI)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-fixed-rrset supported
84f95ddb2572641022619950a211aff49e331c98Mukund Sivaraman# --enable-querytrace supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --disable-rpz-nsip supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --disable-rpz-nsdname supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --enable-filter-aaaa supported
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont# --enable-full-report supported by verbose
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --enable-dnstap not supported (requires libfstrm support on WIN32)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --enable-seccomp not supported (Linux specific)
f8ef82e4756dafd6f9b2890d3eb2965ee16e4bedMark Andrews# --enable-afl not supported (not yet available on Visual Studio C++)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-python supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-openssl supported
b1acd6c4248caca345a68ed6674ae7c265d9f4feFrancis Dupont# --with-pkcs11 supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-ecdsa supported
78608b0a454246d0e1e0169f1d671b8427e48199Francis Dupont# --with-eddsa supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-gost supported
98922b2b2b024dcca25be7c220cf3b16b1e6c4b5Evan Hunt# --with-aes supported
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-cc-alg supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-geoip supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-gssapi supported with MIT (K)erberos (f)or (W)indows
75713d8c373a174fa05a4f74959747560d9e59baFrancis Dupont# --with-lmdb no supported on WIN32 (port is not reliable)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-libxml2 supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-libjson not supported on WIN32 (package not available on WIN32)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-zlib supported
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-purify not supported (package available on WIN32 but for free?)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-gperftools-profiler not supported (package not available on WIN32)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-libtool not supported on WIN32 (never)
2672fb3a13343154adea7fca628160fd9f0a74f6Francis Dupont# --with-locktype not supported on WIN32 (not yet available on WIN32)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-readline supported
b66b333f59cf51ef87f973084a5023acd9317fb2Evan Hunt# --with-protobuf-c not supported (no reason to until libfstrm is ready)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-libfrtrm not supported (not yet available on WIN32)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-docbook-xsl not supported (?)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-idn[lib] supported
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-[lib]iconv supported (part of IDN)
343aeac7176d28c4a1b9d246b1f7311b4cd5da7dFrancis Dupont# --with-atf not supported on WIN32 (package not available on WIN32)
1831311ac6179951c8fcca75aa29dc2f5c0218b9Francis Dupont# --with-tuning supported
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-dlopen included without a way to disable it
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# --with-dlz-* ?
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# Notes: MSVC versions
f9c410d93711fbf312a0162f1e2d3f2a5ede69afFrancis Dupont# MSVC 15.x _MSC_VER == 191y (VS 2017)
7ab0c9f13d30600d1980882a36586b6b96d55413Francis Dupont# MSVC 14.0 _MSC_VER == 1900 (VS 2015)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 12.0 _MSC_VER == 1800 (VS 2013)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 11.0 _MSC_VER == 1700 (VS 2012)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 10.0 _MSC_VER == 1600 (VS 2010)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 9.0 _MSC_VER == 1500 (VS 2008)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 8.0 _MSC_VER == 1400 (VS 2005)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 7.1 _MSC_VER == 1310 (VS .NET 2003)
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 7.0 _MSC_VER == 1300 (VS .NET (2002))
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 6.0 _MSC_VER == 1200 (VS 6.0 (1998))
c3c8823fed039b3a2b8e5ca8bc2f3301d1dd840eMark Andrews# MSVC 5.0 _MSC_VER == 1100 (VS 97)