configure.ac 50.2 KB
Newer Older
Leigh B. Stoller's avatar
Leigh B. Stoller committed
1
#
2
# Copyright (c) 2000-2018 University of Utah and the Flux Group.
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
# 
# {{{EMULAB-LICENSE
# 
# This file is part of the Emulab network testbed software.
# 
# This file is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or (at
# your option) any later version.
# 
# This file is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public
# License for more details.
# 
# You should have received a copy of the GNU Affero General Public License
# along with this file.  If not, see <http://www.gnu.org/licenses/>.
# 
# }}}
Leigh B. Stoller's avatar
Leigh B. Stoller committed
22
#
23
AC_PREREQ([2.68])
24

25 26 27
AC_INIT
AC_CONFIG_SRCDIR([Makeconf.in])
AC_CONFIG_AUX_DIR(autoconf)
28
AC_PREFIX_DEFAULT(/usr/testbed)
29
AC_CONFIG_HEADER(config.h)
Leigh B Stoller's avatar
Leigh B Stoller committed
30
AC_CANONICAL_HOST
31

32 33 34 35 36 37
# We use separate source and obj trees in Emulab.  Configuring in a source
# tree messes it up, so throw an error.
#
# Check that $srcdir, (which defaults to the argv[0] path to the configure
# script,) is different from the current directory.
#
38
if test `(cd $srcdir; pwd)` = `pwd`; then
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
    if test "$ac_srcdir_defaulted" = yes; then
	AC_MSG_ERROR(
	    [You are running the configure script in the current directory.
Output from configure must go into an Emulab obj tree, not a source tree!
cd to the top of an obj tree, and run the configure in your source tree.])
    else
	AC_MSG_ERROR(
	    [You specified --srcdir= to be the current directory.
Output from configure should go into an Emulab obj tree, not a source tree!
cd to the top of an obj tree, and run the configure in your source tree.
Then --srcdir= will be unnecessary.])
    fi
fi
#
# Double-check that there isn't a Makeconf.in (the UNIQUE-FILE-IN-SOURCE-DIR)
# in the current directory.
#
if test -f $ac_unique_file; then
    AC_MSG_ERROR([The current directory is a source tree containing $ac_unique_file .
Output from configure should go into an Emulab obj tree, not a source tree!
cd to the top of an obj tree, and run the configure in your source tree.])
fi

Timothy Stack's avatar
 
Timothy Stack committed
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
for tbarch in arm/3.4.1; do
    PATH="/usr/local/$tbarch/bin:${PATH}"
done

if test x"${JAVA_HOME}" != x""; then
    PATH="${JAVA_HOME}/bin:${PATH}"
else
    for jdk in /usr/local/jdk*; do
	PATH="${jdk}/bin:${PATH}"
	break
    done
fi

AC_SUBST(PATH)

Leigh B Stoller's avatar
Leigh B Stoller committed
77
CPPFLAGS="-I/usr/local/include"
78

Leigh B Stoller's avatar
Leigh B Stoller committed
79
# BEGIN Python detection. For the event library.
80
AC_PATH_PROGS(PYTHON, python python2.7 python2.6 python2.5 python2.4 python2.3 python2.2)
81 82 83 84 85 86 87

if test x"$PYTHON" = x""; then
    AC_MSG_ERROR([python not detected])
fi

PYTHON_VERSION=`${PYTHON} -V 2>&1 | cut -d ' ' -f 2 | cut -d '.' -f 1,2`
PYTHON_PATH=`dirname ${PYTHON}`
88 89 90
if test ! -d "$PYTHON_PATH/include"; then
    PYTHON_PATH=`dirname ${PYTHON_PATH}`
fi
91 92 93 94
PYTHON_INCLUDE="${PYTHON_PATH}/include/python${PYTHON_VERSION}"
CPPFLAGS="${CPPFLAGS} -I${PYTHON_INCLUDE}"
AC_CHECK_HEADERS([Python.h],
		 [],
95
		 [AC_MSG_WARN("Cannot find Python.h in ${PYTHON_INCLUDE}")])
96 97 98
AC_SUBST(PYTHON_INCLUDE)
# END Python detection.

99 100 101 102 103
AC_CHECK_TOOL(CC,gcc)
AC_CHECK_TOOL(CXX,g++)
AC_CHECK_TOOL(AR,ar)
AC_CHECK_TOOL(RANLIB,ranlib)
AC_CHECK_TOOL(STRIP,strip)
Timothy Stack's avatar
 
Timothy Stack committed
104

105 106
AC_EXEEXT

107
AC_PATH_PROG(DIG,dig)
Timothy Stack's avatar
 
Timothy Stack committed
108
AC_PATH_PROG(ELVIN_CONFIG,elvin-config)
Timothy Stack's avatar
 
Timothy Stack committed
109 110
AC_PATH_PROG(JAVAC,javac)
AC_PATH_PROG(JAR,jar)
111
AC_PATH_PROG(NC,nc)
112
AC_PATH_PROG(SUDO,sudo)
Mike Hibler's avatar
Mike Hibler committed
113
AC_PATH_PROG(UUIDGEN,uuidgen)
Timothy Stack's avatar
 
Timothy Stack committed
114

Robert Ricci's avatar
Robert Ricci committed
115
AC_CHECK_TOOL(SSH,ssh)
116

Timothy Stack's avatar
 
Timothy Stack committed
117 118
AC_CHECK_FUNCS(srandomdev)

119 120
AC_SUBST(optional_subdirs)

121
#
122
# These get defined in the definitions file (--with-TBDEFS).
123 124
# NB: See AC_DEFINE_UNQUOTED() calls below, if you want a variable
# to appear in config.h.
Ryan Jackson's avatar
Ryan Jackson committed
125
#
126
AC_SUBST(TBDBNAME)
127
AC_SUBST(TBERRORLOGDBNAME)
128
AC_SUBST(TBADMINGROUP)
Leigh B. Stoller's avatar
Leigh B. Stoller committed
129 130
AC_SUBST(DELAYCAPACITY)
AC_SUBST(IPBASE)
131 132
AC_SUBST(JAILIPBASE)
AC_SUBST(JAILIPMASK)
133 134
AC_SUBST(BOSSNODE)
AC_SUBST(USERNODE)
135
AC_SUBST(FSNODE)
136
AC_SUBST(EVENTSERVER)
137
AC_SUBST(BOSSEVENTPORT)
138
AC_SUBST(OURDOMAIN)
139 140 141 142 143
AC_SUBST(USERSROOT_DIR)
AC_SUBST(PROJROOT_DIR)
AC_SUBST(GROUPSROOT_DIR)
AC_SUBST(SCRATCHROOT_DIR)
AC_SUBST(SHAREROOT_DIR)
144 145 146
AC_SUBST(FSDIR_PROJ)
AC_SUBST(FSDIR_GROUPS)
AC_SUBST(FSDIR_USERS)
147
AC_SUBST(FSDIR_SHARE)
148
AC_SUBST(FSDIR_SCRATCH)
149
AC_SUBST(FS_WITH_QUOTAS)
150
AC_SUBST(TRACK_INTERSWITCH_BANDWIDTH)
151
AC_SUBST(TIMESTAMPS)
152
AC_SUBST(OURTIMEZONE)
153
AC_SUBST(NODECONSOLE)
154
AC_SUBST(MFSVERSION)
155
AC_SUBST(UNIFIED_BOSS_AND_OPS)
156
AC_SUBST(DISABLE_NSE)
157 158
AC_SUBST(DISABLE_DHCPD_INSTALL)
AC_SUBST(DISABLE_NAMED_INSTALL)
159
AC_SUBST(DISABLE_NAMED_SETUP)
160
AC_SUBST(DISABLE_EXPORTS_SETUP)
161
AC_SUBST(DISABLE_EVENT_SCHED)
162 163 164
AC_SUBST(CLIENT_ETCDIR)
AC_SUBST(CLIENT_BINDIR)
AC_SUBST(CLIENT_VARDIR)
165
AC_SUBST(CLIENT_MANDIR)
166
AC_SUBST(SNMP_RW_COMMUNITY)
167 168 169
AC_SUBST(WWWHOST)
AC_SUBST(WWW)
AC_SUBST(TBBASE)
170
AC_SUBST(TBDEFS)
171 172 173 174 175 176 177 178
AC_SUBST(TBDOCBASE)
AC_SUBST(TBWWW)
AC_SUBST(THISHOMEBASE)
AC_SUBST(TBSECURECOOKIES)
AC_SUBST(TBCOOKIESUFFIX)
AC_SUBST(TBAUTHDOMAIN)
AC_SUBST(TBAUTHTIMEOUT)
AC_SUBST(TBMAINSITE)
179
AC_SUBST(FANCYBANNER)
180
AC_SUBST(SFSSUPPORT)
181
AC_SUBST(ELABINELAB)
182 183 184
AC_SUBST(OUTERBOSS_NODENAME)
AC_SUBST(OUTERBOSS_XMLRPCPORT)
AC_SUBST(OUTERBOSS_SSLCERTNAME)
Ryan Jackson's avatar
Ryan Jackson committed
185
AC_SUBST(SUBBOSS_SSLCERTNAME)
186
AC_SUBST(PLABSUPPORT)
Kevin Atkinson's avatar
 
Kevin Atkinson committed
187
AC_SUBST(PUBSUPPORT)
188
AC_SUBST(WIKISUPPORT)
189
AC_SUBST(MAILMANSUPPORT)
190
AC_SUBST(BUGDBSUPPORT)
191
AC_SUBST(OPSDBSUPPORT)
Timothy Stack's avatar
Timothy Stack committed
192
AC_SUBST(NFSTRACESUPPORT)
193
AC_SUBST(NTPSERVER)
194 195 196 197 198
AC_SUBST(EXTERNAL_NTPSERVER1)
AC_SUBST(EXTERNAL_NTPSERVER2)
AC_SUBST(EXTERNAL_NTPSERVER3)
AC_SUBST(EXTERNAL_NTPSERVER4)
AC_SUBST(NTPDRIFTFILE)
199
AC_SUBST(TBLOGFACIL)
200
AC_SUBST(TESTBED_NETWORK)
201
AC_SUBST(EXTERNAL_TESTBED_NETWORK)
202
AC_SUBST(TESTBED_NETMASK)
203
AC_SUBST(EXTERNAL_TESTBED_NETMASK)
204
AC_SUBST(BOSSNODE_IP)
205
AC_SUBST(EXTERNAL_BOSSNODE_IP)
206
AC_SUBST(USERNODE_IP)
207
AC_SUBST(EXTERNAL_USERNODE_IP)
208 209
AC_SUBST(FSNODE_IP)
AC_SUBST(EXTERNAL_FSNODE_IP)
210 211 212 213 214 215 216 217 218
AC_SUBST(CONTROL_ROUTER_IP)
AC_SUBST(CONTROL_NETWORK)
AC_SUBST(CONTROL_NETMASK)
AC_SUBST(PRIVATE_NETWORK)
AC_SUBST(PRIVATE_ROUTER)
AC_SUBST(PRIVATE_NETMASK)
AC_SUBST(PUBLIC_NETWORK)
AC_SUBST(PUBLIC_ROUTER)
AC_SUBST(PUBLIC_NETMASK)
219 220 221
AC_SUBST(MANAGEMENT_NETWORK)
AC_SUBST(MANAGEMENT_NETMASK)
AC_SUBST(MANAGEMENT_ROUTER)
222 223
AC_SUBST(VIRTNODE_NETWORK)
AC_SUBST(VIRTNODE_NETMASK)
224
AC_SUBST(DHCPD_DYNRANGE)
225
AC_SUBST(DHCPD_EXTRAIFS)
226
AC_SUBST(DHCPD_CONTROLNET_DECL)
227
AC_SUBST(NAMED_FORWARDERS)
228
AC_SUBST(NAMED_ALSONOTIFY)
229 230 231 232
AC_SUBST(SSLCERT_COUNTRY)
AC_SUBST(SSLCERT_STATE)
AC_SUBST(SSLCERT_LOCALITY)
AC_SUBST(SSLCERT_ORGNAME)
233 234
AC_SUBST(FRISEBEEMCASTADDR)
AC_SUBST(FRISEBEEMCASTPORT)
235
AC_SUBST(FRISEBEENUMPORTS)
236
AC_SUBST(WINSUPPORT)
Mike Hibler's avatar
Mike Hibler committed
237
AC_SUBST(NSVERIFY)
238
AC_SUBST(CVSSUPPORT)
239
AC_SUBST(TRACSUPPORT)
240
AC_SUBST(CHATSUPPORT)
241
AC_SUBST(STAMPS)
242
AC_SUBST(ARCHIVESUPPORT)
243 244
AC_SUBST(MIN_UNIX_UID)
AC_SUBST(MIN_UNIX_GID)
245
AC_SUBST(DELAYTHRESH)
246
AC_SUBST(PELABSUPPORT)
247
AC_SUBST(MOBILESUPPORT)
248
AC_SUBST(ELVIN_COMPAT)
249 250
AC_SUBST(ISOLATEADMINS)
AC_SUBST(DYNAMICROOTPASSWORDS)
251
AC_SUBST(TPM)
252
AC_SUBST(REMOTEWIKIDOCS)
Leigh B. Stoller's avatar
Leigh B. Stoller committed
253
AC_SUBST(PROTOGENI_SUPPORT)
254 255 256
AC_SUBST(PROTOGENI_WEBSITE)
AC_SUBST(PROTOGENI_ISCLEARINGHOUSE)
AC_SUBST(PROTOGENI_EMAIL)
Leigh B. Stoller's avatar
Leigh B. Stoller committed
257
AC_SUBST(PROTOGENI_DOMAIN)
258 259
AC_SUBST(PROTOGENI_RPCPORT)
AC_SUBST(PROTOGENI_RPCNAME)
260
AC_SUBST(PROTOGENI_LOCALUSER)
261
AC_SUBST(PROTOGENI_MAXSERVERLOAD)
262
AC_SUBST(PROTOGENI_GENIWEBLOGIN)
263
AC_SUBST(PROTOGENI_NONFSMOUNTS)
264
AC_SUBST(GENI_PUBRPCPORT)
265
AC_SUBST(PROTOGENI_URL)
266
AC_SUBST(PROTOGENI_GENIRACK)
Gary Wong's avatar
Gary Wong committed
267
AC_SUBST(PROTOGENI_NICKNAME)
268
AC_SUBST(STANDALONE_CLEARINGHOUSE)
269
AC_SUBST(GMAP_API_KEY)
270
AC_SUBST(NODE_USAGE_SUPPORT)
271
AC_SUBST(NOSTACKMIB)
272
AC_SUBST(EXP_VIS_SUPPORT)
273
AC_SUBST(NOSHAREDFS)
274
AC_SUBST(IMPORT_TMPDIR)
275
AC_SUBST(SELFLOADER_DATA)
276
AC_SUBST(TBUSEDBI)
277
AC_SUBST(BIGDB)
278
AC_SUBST(NEEDMCQUERIER)
279 280
AC_SUBST(OPSVM_ENABLE)
AC_SUBST(OPSVM_MOUNTPOINT)
281 282
AC_SUBST(PORTAL_ENABLE)
AC_SUBST(PORTAL_ISPRIMARY)
283
AC_SUBST(LINUX_FSNODE)
284 285
AC_SUBST(VPUBADDR_BASE)
AC_SUBST(VPUBADDR_BITLEN)
286 287 288 289
AC_SUBST(WINDOWS_ORGNAME)
AC_SUBST(WINDOWS_OWNER)
AC_SUBST(WINDOWS_TIMEZONE)
AC_SUBST(WINDOWS_KEY_7PRO_X86)
290 291 292 293
AC_SUBST(FIREWALL_BOSS)
AC_SUBST(FIREWALL_OPS)
AC_SUBST(FIREWALL_BOSS_LOCALRULETMPL)
AC_SUBST(FIREWALL_OPS_LOCALRULETMPL)
294
AC_SUBST(SPEWFROMOPS)
295
AC_SUBST(NOSITECHECKIN)
296
AC_SUBST(EC2META_ENABLE)
297
AC_SUBST(BROWSER_CONSOLE_ENABLE)
Gary Wong's avatar
Gary Wong committed
298 299
AC_SUBST(IPV6_ENABLED)
AC_SUBST(IPV6_SUBNET_PREFIX)
300
AC_SUBST(NFSMAPTOUSER)
301
AC_SUBST(IMAGEPROVENANCE)
Leigh B Stoller's avatar
Leigh B Stoller committed
302
AC_SUBST(IMAGEDIRECTORIES)
303
AC_SUBST(IMAGEDELTAS)
304
AC_SUBST(PROFILEVERSIONS)
305
AC_SUBST(NOVIRTNFSMOUNTS)
306 307 308 309 310
AC_SUBST(WITHZFS)
AC_SUBST(ZFS_ROOT)
AC_SUBST(ZFS_QUOTA_USER)
AC_SUBST(ZFS_QUOTA_PROJECT)
AC_SUBST(ZFS_QUOTA_GROUP)
311 312 313
AC_SUBST(ZFS_QUOTA_USER_X)
AC_SUBST(ZFS_QUOTA_PROJECT_X)
AC_SUBST(ZFS_QUOTA_GROUP_X)
314
AC_SUBST(ZFS_NOEXPORT)
315
AC_SUBST(INCREMENTAL_MOUNTD)
316 317
AC_SUBST(WITHAMD)
AC_SUBST(AMD_ROOT)
Mike Hibler's avatar
Mike Hibler committed
318
AC_SUBST(NFSMFS_ROOT)
319
AC_SUBST(BS_IQN_PREFIX)
320
AC_SUBST(ATTENUATOR)
321
AC_SUBST(CLUSTER_PORTAL)
322 323
AC_SUBST(CLUSTER_PUBSUBD_SSLPORT)
AC_SUBST(CLUSTER_PUBSUBD_ALTPORT)
324
AC_SUBST(EXPIRE_PASSWORDS)
325 326
AC_SUBST(SDCOLLECTD_DOSTATS)
AC_SUBST(SDCOLLECTD_USE_RRDTOOL)
327
AC_SUBST(BOOTINFO_EVENTS)
328

329 330 331 332 333 334
#
# Offer both versions of the email addresses that have the @ escaped
# for perl (the default), and that don't
#
AC_SUBST(TBOPSEMAIL)
AC_SUBST(TBOPSEMAIL_NOSLASH)
335 336
AC_SUBST(TBROBOCOPSEMAIL)
AC_SUBST(TBROBOCOPSEMAIL_NOSLASH)
337 338 339 340 341 342 343 344 345 346 347 348
AC_SUBST(TBLOGSEMAIL)
AC_SUBST(TBLOGSEMAIL_NOSLASH)
AC_SUBST(TBWWWEMAIL)
AC_SUBST(TBWWWEMAIL_NOSLASH)
AC_SUBST(TBAPPROVALEMAIL)
AC_SUBST(TBAPPROVALEMAIL_NOSLASH)
AC_SUBST(TBAUDITEMAIL)
AC_SUBST(TBAUDITEMAIL_NOSLASH)
AC_SUBST(TBSTATEDEMAIL)
AC_SUBST(TBSTATEDEMAIL_NOSLASH)
AC_SUBST(TBTESTSUITEEMAIL)
AC_SUBST(TBTESTSUITEEMAIL_NOSLASH)
349 350
AC_SUBST(TBAUTOMAILEMAIL)
AC_SUBST(TBAUTOMAILEMAIL_NOSLASH)
351 352 353 354
AC_SUBST(TBACTIVEARCHIVE)
AC_SUBST(TBACTIVEARCHIVE_NOSLASH)
AC_SUBST(TBUSERSARCHIVE)
AC_SUBST(TBUSERSARCHIVE_NOSLASH)
Leigh B. Stoller's avatar
Leigh B. Stoller committed
355 356
AC_SUBST(TBERRORSEMAIL)
AC_SUBST(TBERRORSEMAIL_NOSLASH)
357

358 359 360 361 362
#
# For snmpit support of Arista switch.
#
AC_SUBST(ARISTA_SWITCH_XMLRPCPORT)

363 364
#
# Defaults for for above variables.
Ryan Jackson's avatar
Ryan Jackson committed
365
#
366
TBERRORLOGDBNAME="errorlog"
367
TBADMINGROUP="flux"
368 369 370
CLIENT_ETCDIR="/etc/emulab"
CLIENT_BINDIR="/usr/local/etc/emulab"
CLIENT_VARDIR="/var/emulab"
371
CLIENT_MANDIR="/usr/local/man"
372 373
TBSECURECOOKIES=1
TBMAINSITE=0
374
TBUSEDBI=0
375
BIGDB=0
376
FANCYBANNER=0
377 378 379 380
VIRTNODE_NETWORK=172.16.0.0
VIRTNODE_NETMASK=255.240.0.0
JAILIPBASE=$VIRTNODE_NETWORK
JAILIPMASK=$VIRTNODE_NETMASK
381
IPBASE=10
382
SFSSUPPORT=0
383
ELABINELAB=0
384 385 386
OUTERBOSS_NODENAME=""
OUTERBOSS_XMLRPCPORT=3069
OUTERBOSS_SSLCERTNAME="/etc/outer_emulab.pem"
Ryan Jackson's avatar
Ryan Jackson committed
387
SUBBOSS_SSLCERTNAME="/etc/subboss.pem"
388
PLABSUPPORT=0
Kevin Atkinson's avatar
 
Kevin Atkinson committed
389
PUBSUPPORT=0
390
WIKISUPPORT=0
391
BUGDBSUPPORT=0
392
OPSDBSUPPORT=0
393
MAILMANSUPPORT=0
394
WINSUPPORT=0
Mike Hibler's avatar
Mike Hibler committed
395
NSVERIFY=1
396
CVSSUPPORT=0
397
TRACSUPPORT=0
398
CHATSUPPORT=0
399
STAMPS=0
400
ARCHIVESUPPORT=0
Timothy Stack's avatar
Timothy Stack committed
401
NFSTRACESUPPORT=0
402
TBLOGFACIL="local5"
403
BOSSEVENTPORT=16505
404
NTPSERVER="ops"
405 406 407 408 409
EXTERNAL_NTPSERVER1="0.pool.ntp.org"
EXTERNAL_NTPSERVER2="1.pool.ntp.org"
EXTERNAL_NTPSERVER3="2.pool.ntp.org"
EXTERNAL_NTPSERVER4="3.pool.ntp.org"
NTPDRIFTFILE="/var/db/ntp.drift"
410
UNIFIED_BOSS_AND_OPS=0
411 412
DISABLE_NAMED_INSTALL=0
DISABLE_DHCPD_INSTALL=0
413
DISABLE_NAMED_SETUP=0
414 415
FRISEBEEMCASTADDR="234.5.6"
FRISEBEEMCASTPORT=3564
416
FRISEBEENUMPORTS=0
417 418
MIN_UNIX_UID=10000
MIN_UNIX_GID=6000
419
DELAYTHRESH=2
420
PELABSUPPORT=0
421
MOBILESUPPORT=0
422
ELVIN_COMPAT=0
423 424
ISOLATEADMINS=1
DYNAMICROOTPASSWORDS=1
425
TPM=0
426
REMOTEWIKIDOCS=1
Leigh B. Stoller's avatar
Leigh B. Stoller committed
427
PROTOGENI_SUPPORT=0
428 429 430
PROTOGENI_ISCLEARINGHOUSE=0
PROTOGENI_EMAIL="geni-dev-utah@flux.utah.edu"
PROTOGENI_WEBSITE="www.emulab.net"
Leigh B. Stoller's avatar
Leigh B. Stoller committed
431
PROTOGENI_DOMAIN="unknown"
432 433
PROTOGENI_RPCPORT=12369
PROTOGENI_RPCNAME=""
434 435
PROTOGENI_LOCALUSER=0
PROTOGENI_GENIWEBLOGIN=0
436
PROTOGENI_MAXSERVERLOAD=12
437
PROTOGENI_NONFSMOUNTS=0
438
GENI_PUBRPCPORT=12370
439
PROTOGENI_GENIRACK=0
Gary Wong's avatar
Gary Wong committed
440
PROTOGENI_NICKNAME="unknown"
441
STANDALONE_CLEARINGHOUSE=0
442
NODE_USAGE_SUPPORT=0
443
EXP_VIS_SUPPORT=0
444
NOSTACKMIB=0
445
NOSHAREDFS=0
446
IMPORT_TMPDIR="/q"
447
NFSRACY=1
448
SELFLOADER_DATA=""
449
NEEDMCQUERIER=0
450 451
OPSVM_ENABLE=0
OPSVM_MOUNTPOINT="/ops"
452
OURTIMEZONE="America/Denver"
453
NODECONSOLE="sio"
454
MFSVERSION=""
455 456
PORTAL_ENABLE=0
PORTAL_ISPRIMARY=0
457
LINUX_FSNODE=0
458
DHCPD_EXTRAIFS=""
459 460
VPUBADDR_BASE="none"
VPUBADDR_BITLEN="none"
461
ARISTA_SWITCH_XMLRPCPORT=80
462 463 464 465
FIREWALL_BOSS=0
FIREWALL_OPS=0
FIREWALL_BOSS_LOCALRULETMPL=""
FIREWALL_OPS_LOCALRULETMPL=""
466
SPEWFROMOPS=0
467
NOSITECHECKIN=0
468
EC2META_ENABLE=0
469
BROWSER_CONSOLE_ENABLE=0
470 471
IPV6_ENABLED=0
IPV6_SUBNET_PREFIX=""
472 473 474
MANAGEMENT_NETWORK="10.249.249.0"
MANAGEMENT_NETMASK="255.255.255.0"
MANAGEMENT_ROUTER="10.249.249.253"
475
NFSMAPTOUSER="root"
476
IMAGEPROVENANCE=0
Leigh B Stoller's avatar
Leigh B Stoller committed
477
IMAGEDIRECTORIES=0
478
IMAGEDELTAS=0
479
PROFILEVERSIONS=0
480
NOVIRTNFSMOUNTS=0
481 482 483 484 485
WITHZFS=0
ZFS_ROOT=z
ZFS_QUOTA_USER="1G"
ZFS_QUOTA_PROJECT="100G"
ZFS_QUOTA_GROUP="10G"
486 487 488
ZFS_QUOTA_USER_X="1.0"
ZFS_QUOTA_PROJECT_X="1.0"
ZFS_QUOTA_GROUP_X="1.0"
489
ZFS_NOEXPORT=0
490
INCREMENTAL_MOUNTD=0
491 492
WITHAMD=0
AMD_ROOT=/.amd_mnt
Mike Hibler's avatar
Mike Hibler committed
493
NFSMFS_ROOT=""
494
BS_IQN_PREFIX=iqn.2000-10.net.emulab
495
ATTENUATOR=""
496
CLUSTER_PORTAL=""
497 498
CLUSTER_PUBSUBD_ALTPORT=""
CLUSTER_PUBSUBD_SSLPORT=""
499
EXPIRE_PASSWORDS=1
500 501
SDCOLLECTD_DOSTATS=0
SDCOLLECTD_USE_RRDTOOL=0
502
BOOTINFO_EVENTS=1
503

504 505 506 507 508 509 510 511 512 513
#
# XXX You really don't want to change these!
# They are ingrained and who knows what might break if you change them.
#
USERSROOT_DIR="/users"
PROJROOT_DIR="/proj"
GROUPSROOT_DIR="/groups"
SHAREROOT_DIR="/share"
SCRATCHROOT_DIR=""

Leigh B Stoller's avatar
Leigh B Stoller committed
514 515 516 517 518 519
#
# Flag as full Emulab build (for clientside). 
#
WITH_EMULAB=1
AC_SUBST(WITH_EMULAB)

520 521 522
#
# Okay, I know this is improper usage of --with. Too bad.
#
523 524
AC_ARG_WITH(TBDEFS,
[  --with-TBDEFS=name	Specify definitions file (defs-default default)],
525 526
[
    if test "$withval" = "yes"; then
527
	AC_MSG_ERROR([Invalid TBDEFS - Must specify the value])
528
    fi
529
    TBDEFS="$withval"
530
    TBPATH=`dirname $withval`
531
],[
532 533 534
    AC_MSG_ERROR(
	[The required --with-TBDEFS= argument was not given.
The value of --with-TBDEFS= must be the path to your Emulab defs file.
535 536
Copy and modify the defs-example file for your Emulab installation.
defs-default has values for Utah, including client-side image compilations.])
537
])
538 539 540 541 542

if test -f $TBDEFS; then
    #
    # Remove the comments and newlines.  Really, that's what it does.
    #
543 544
    OLDPATH=$PATH
    PATH="$TBPATH:$PATH"
545
    . $TBDEFS
546
    PATH=$OLDPATH
547 548 549
else
	AC_MSG_ERROR([Definitions file $TBDEFS was not found.])
fi
550

551 552 553 554 555
# XXX this can optionally be set in the defs file
if test -n "$FSDIR_SCRATCH"; then
    SCRATCHROOT_DIR="/scratch"
fi

Gary Wong's avatar
Gary Wong committed
556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589
# Try to guess ProtoGENI nickname if it wasn't specified explicitly,
# for backward compatibility (nobody used to care what they were called)
if test x"$PROTOGENI_NICKNAME" = x"unknown"; then
    case $OURDOMAIN in
    *utah.geniracks.net) PROTOGENI_NICKNAME="utah-ig";;
    *utahddc.geniracks.net) PROTOGENI_NICKNAME="utahddc-ig";;
    *gpolab.bbn.com) PROTOGENI_NICKNAME="gpo-ig";;
    *northwestern.edu) PROTOGENI_NICKNAME="northwestern-ig";;
    *lan.sdn.uky.edu) PROTOGENI_NICKNAME="uky-ig";;
    *kettering.edu) PROTOGENI_NICKNAME="kettering-ig";;
    *rnoc.gatech.edu) PROTOGENI_NICKNAME="gatech-ig";;
    *cs.princeton.edu) PROTOGENI_NICKNAME="princeton-ig";;
    *clemson.edu) PROTOGENI_NICKNAME="clemson-ig";;
    *ku.gpeni.net) PROTOGENI_NICKNAME="kansas-ig";;
    *nyu.edu) PROTOGENI_NICKNAME="nyu-ig";;
    *uidaho.edu) PROTOGENI_NICKNAME="idaho-ig";;
    *maxgigapop.net) PROTOGENI_NICKNAME="max-ig";;
    *nysernet.org) PROTOGENI_NICKNAME="nysernet-ig";;
    *sox.net) PROTOGENI_NICKNAME="sox-ig";;
    *illinois.edu) PROTOGENI_NICKNAME="illinois-ig";;
    *rnet.missouri.edu) PROTOGENI_NICKNAME="missouri-ig";;
    *wisc.edu) PROTOGENI_NICKNAME="wisconsin-ig";;
    *rutgers.edu) PROTOGENI_NICKNAME="rutgers-ig";;
    *stanford.edu) PROTOGENI_NICKNAME="stanford-ig";;
    *it.cornell.edu) PROTOGENI_NICKNAME="cornell-ig";;
    *lsu.edu) PROTOGENI_NICKNAME="lsu-ig";;
    *case.edu) PROTOGENI_NICKNAME="cwru-ig";;
    *iu.edu) PROTOGENI_NICKNAME="moxi-ig";;
    *uchicago.edu) PROTOGENI_NICKNAME="uchicago-ig";;
    *metrodatacenter.com) PROTOGENI_NICKNAME="ohmetrodc-ig";;
    *nps.edu) PROTOGENI_NICKNAME="nps-ig";;
    *osu.edu) PROTOGENI_NICKNAME="osu-ig";;
    *umkc.edu) PROTOGENI_NICKNAME="umkc-ig";;
    *idre.ucla.edu) PROTOGENI_NICKNAME="ucla-ig";;
590 591
    *washington.edu) PROTOGENI_NICKNAME="uwashington-ig";;
    *rnet.missouri.edu) PROTOGENI_NICKNAME="missouri-ig";;
Gary Wong's avatar
Gary Wong committed
592 593 594
    *pks2.sdn.uky.edu) PROTOGENI_NICKNAME="ukypks2-ig";;
    *colorado.edu) PROTOGENI_NICKNAME="colorado-ig";;
    *cenic.net) PROTOGENI_NICKNAME="cenic-ig";;
595
    *vt.edu) PROTOGENI_NICKNAME="vt-ig";;
596
    *stitch.geniracks.net) PROTOGENI_NICKNAME="utah-stitch";;
Gary Wong's avatar
Gary Wong committed
597 598 599
    esac
fi

600 601 602 603 604 605
#
# These must come after the "eval" above, since the variables are not
# defined until the defs file is taken in.
#
# Be sure to add to config.h.in!
#
606
if test x"$prefix" = x"NONE"; then
607
    AC_DEFINE_UNQUOTED(TBROOT, "/usr/testbed", [FS base for Emulab files])
608
else
609 610 611 612 613 614 615 616 617 618 619 620 621 622 623
    AC_DEFINE_UNQUOTED(TBROOT, "$prefix", [FS base for Emulab files])
fi
AC_DEFINE_UNQUOTED(TBDBNAME, "$TBDBNAME", [Emulab DB name])
AC_DEFINE_UNQUOTED(TBERRORLOGDBNAME, "$TBERRORLOGDBNAME", [Emulab errorlog DB])
AC_DEFINE_UNQUOTED(TBADMINGROUP, "$TBADMINGROUP", [Unix group of admin user])
AC_DEFINE_UNQUOTED(IPBASE, "$IPBASE", [Base of IPv4 space used for experiments])
AC_DEFINE_UNQUOTED(JAILIPBASE, "$JAILIPBASE", [Base of IPv4 space used for VMs])
AC_DEFINE_UNQUOTED(JAILIPMASK, "$JAILIPMASK", [Netmask for JAILIPBASE])
AC_DEFINE_UNQUOTED(BOSSNODE, "$BOSSNODE", [DNS name of boss node])
AC_DEFINE_UNQUOTED(BOSSNODE_IP, "$BOSSNODE_IP", [IPv4 address of boss node to be used by nodes])
AC_DEFINE_UNQUOTED(EXTERNAL_BOSSNODE_IP, "$EXTERNAL_BOSSNODE_IP", [IPv4 address of boss used from outside])
AC_DEFINE_UNQUOTED(USERNODE, "$USERNODE", [DNS name of ops node])
AC_DEFINE_UNQUOTED(USERNODE_IP, "$USERNODE_IP", [IPv4 address of ops node to be used by nodes])
AC_DEFINE_UNQUOTED(EXTERNAL_USERNODE_IP, "$EXTERNAL_USERNODE_IP", [IPv4 address of ops used from outside])
AC_DEFINE_UNQUOTED(FSNODE, "$FSNODE", [DNS name of fs node])
624
if test -n "$FSNODE_IP"; then
625
	AC_DEFINE_UNQUOTED(FSNODE_IP, "$FSNODE_IP", [IPv4 address of fs node to be used by nodes])
626
elif test "$USERNODE" = "$FSNODE"; then
627
	AC_DEFINE_UNQUOTED(FSNODE_IP, "$USERNODE_IP", [IPv4 address of fs node to be used by nodes])
628
elif test "$BOSSNODE" = "$FSNODE"; then
629 630 631 632 633 634 635 636 637 638 639 640 641
	AC_DEFINE_UNQUOTED(FSNODE_IP, "$BOSSNODE_IP", [IPv4 address of fs node to be used by nodes])
fi
AC_DEFINE_UNQUOTED(CONTROL_ROUTER_IP, "$CONTROL_ROUTER_IP", [IPv4 address of router to be used by nodes])
AC_DEFINE_UNQUOTED(CONTROL_NETWORK, "$CONTROL_NETWORK", [IPv4 node control network])
AC_DEFINE_UNQUOTED(CONTROL_NETMASK, "$CONTROL_NETMASK", [IPv4 node control network mask])
AC_DEFINE_UNQUOTED(USERSROOT_DIR, "$USERSROOT_DIR", [Root of 'users' filesystem])
AC_DEFINE_UNQUOTED(PROJROOT_DIR, "$PROJROOT_DIR", [Root of 'proj' filesystem])
AC_DEFINE_UNQUOTED(GROUPSROOT_DIR, "$GROUPSROOT_DIR", [Root of 'groups' filesystem])
AC_DEFINE_UNQUOTED(SCRATCHROOT_DIR, "$SCRATCHROOT_DIR", [Root of 'scratch' filesystem])
AC_DEFINE_UNQUOTED(SHAREROOT_DIR, "$SHAREROOT_DIR", [Root of 'share' filesystem])
AC_DEFINE_UNQUOTED(FSDIR_PROJ, "$FSDIR_PROJ", [Mount point of 'proj' filesystem on fs node])
AC_DEFINE_UNQUOTED(FSDIR_GROUPS, "$FSDIR_GROUPS", [Mount point of 'groups' filesystem on fs node])
AC_DEFINE_UNQUOTED(FSDIR_USERS, "$FSDIR_USERS", [Mount point of 'users' filesystem on fs node])
642
if test -n "$FSDIR_SHARE"; then
643
    AC_DEFINE_UNQUOTED(FSDIR_SHARE, "$FSDIR_SHARE", [Mount point of 'share' filesystem on fs node])
644
fi
645
if test -n "$FSDIR_SCRATCH"; then
646
    AC_DEFINE_UNQUOTED(FSDIR_SCRATCH, "$FSDIR_SCRATCH", [Mount point of 'scratch' filesystem on fs node])
647
fi
648 649 650 651
AC_DEFINE_UNQUOTED(BOSSEVENTPORT, "$BOSSEVENTPORT", [IPv4 address of pubsub server on boss])
AC_DEFINE_UNQUOTED(FRISEBEEMCASTADDR, "$FRISEBEEMCASTADDR", [Base IPv4 multicast address for disk imaging])
AC_DEFINE_UNQUOTED(FRISEBEEMCASTPORT, "$FRISEBEEMCASTPORT", [Base IPv4 port for disk imaging])
AC_DEFINE_UNQUOTED(FRISEBEENUMPORTS, "$FRISEBEENUMPORTS", [Number of IPv4 ports for disk imaging])
652

653 654 655 656 657 658
AC_DEFINE_UNQUOTED(NTPSERVER, "$NTPSERVER", [NTP server for nodes])
AC_DEFINE_UNQUOTED(EXTERNAL_NTPSERVER1, "$EXTERNAL_NTPSERVER1", [External NTP server for NTP node])
AC_DEFINE_UNQUOTED(EXTERNAL_NTPSERVER2, "$EXTERNAL_NTPSERVER2", [External NTP server for NTP node])
AC_DEFINE_UNQUOTED(EXTERNAL_NTPSERVER3, "$EXTERNAL_NTPSERVER3", [External NTP server for NTP node])
AC_DEFINE_UNQUOTED(EXTERNAL_NTPSERVER4, "$EXTERNAL_NTPSERVER4", [External NTP server for NTP node])
AC_DEFINE_UNQUOTED(NTPDRIFTFILE, "$NTPDRIFTFILE", [Location of NTP driftfile])
659

660 661 662
AC_DEFINE_UNQUOTED(MANAGEMENT_NETWORK, "$MANAGEMENT_NETWORK", [IPv4 node mangagement network])
AC_DEFINE_UNQUOTED(MANAGEMENT_NETMASK, "$MANAGEMENT_NETMASK", [IPv4 node management netmask])
AC_DEFINE_UNQUOTED(MANAGEMENT_ROUTER, "$MANAGEMENT_ROUTER", [IPv4 node management default GW])
663

664
if test $OPSDBSUPPORT -eq 1; then
665
    AC_DEFINE_UNQUOTED(OPSDBSUPPORT, 1, [Obsolete])
666 667
fi

668
if test $ELVIN_COMPAT -eq 1; then
669
    AC_DEFINE_UNQUOTED(ELVIN_COMPAT, 1, [Obsolete])
670 671
fi

672
if test $ELABINELAB -eq 1; then
673
    AC_DEFINE_UNQUOTED(ELABINELAB, 1, [For an Emulab-in-Emulab configuration])
674
fi
675

676
if test $ISOLATEADMINS -eq 1; then
677
    AC_DEFINE_UNQUOTED(ISOLATEADMINS, 1, [Do not allow admins and non-admins in same project])
678 679
fi
if test $DYNAMICROOTPASSWORDS -eq 1; then
680
    AC_DEFINE_UNQUOTED(DYNAMICROOTPASSWORDS, 1, [Per-node root passwords])
681
fi
682
if test $TPM -eq 1; then
683
    AC_DEFINE_UNQUOTED(TPM, 1, [Something about TPM])
684
fi
685
if test $NOSHAREDFS -eq 1; then
686
    AC_DEFINE_UNQUOTED(NOSHAREDFS, 1, [Do not allow NFS-shared filesystems])
687 688
fi
if test $NFSRACY -eq 1; then
689
    AC_DEFINE_UNQUOTED(NFSRACY, 1, [NFS server has race])
690
fi
691
if test $OPSVM_ENABLE -eq 1; then
692 693
    AC_DEFINE_UNQUOTED(OPSVM_ENABLE, 1, [ops node is a VM])
    AC_DEFINE_UNQUOTED(OPSVM_MOUNTPOINT, $OPSVM_MOUNTPOINT, [mount point on boss for ops VM FSes])
694
fi
695
if test $SPEWFROMOPS -eq 1; then
696
    AC_DEFINE_UNQUOTED(SPEWFROMOPS, 1, [Server rpm/tarballs from ops rather than boss])
697
fi
698
if test $PROTOGENI_SUPPORT -eq 1; then
699
    AC_DEFINE_UNQUOTED(PROTOGENI_SUPPORT, 1, [Support Protogeni])
700 701
fi
if test $PROTOGENI_GENIRACK -eq 1; then
702
    AC_DEFINE_UNQUOTED(PROTOGENI_GENIRACK, 1, [Support Protogeni rack])
703
fi
704
if test $IMAGEPROVENANCE -eq 1; then
705
    AC_DEFINE_UNQUOTED(IMAGEPROVENANCE, 1, [Support image versioning])
706 707
fi
if test $IMAGEDELTAS -eq 1; then
708
    AC_DEFINE_UNQUOTED(IMAGEDELTAS, 1, [Support imagezip delta images])
709
fi
710
if test $NOVIRTNFSMOUNTS -eq 1; then
711
    AC_DEFINE_UNQUOTED(NOVIRTNFSMOUNTS, 1, [Do not use NFS mounts on virtual nodes])
712 713
fi
if test $WITHZFS -eq 1; then
714
    AC_DEFINE_UNQUOTED(WITHZFS, 1, [Use ZFS on FS node for shared filesystems])
715
fi
716
if test $WITHAMD -eq 1; then
717
    AC_DEFINE_UNQUOTED(WITHAMD, 1, [Run AMD on boss node to handle shared FS mounts])
Mike Hibler's avatar
Mike Hibler committed
718
    AC_DEFINE_UNQUOTED(AMD_ROOT, "$AMD_ROOT", [Actual FS mount directory for AMD])
719
fi
720 721 722
if test $PROTOGENI_LOCALUSER -eq 1; then
    AC_DEFINE_UNQUOTED(PROTOGENI_LOCALUSER, 1, [Map geni users to local users,projects,groups])
fi
723
AC_DEFINE_UNQUOTED(IMPORT_TMPDIR, "$IMPORT_TMPDIR", [Directory to use for imported images])
724

725
LOG_TESTBED=`echo "LOG_$TBLOGFACIL" | tr a-z A-Z`
726
AC_DEFINE_UNQUOTED(LOG_TESTBED, $LOG_TESTBED, [Syslog log facility for Emulab daemons])
727 728
AC_SUBST(LOG_TESTBED)

729 730 731 732
#
# If the private network is different then the control network, we need
# an extra subnet decl for it in dhcpd.conf.template. This is enormously
# crude and simplistic, but works for the local case!
Ryan Jackson's avatar
Ryan Jackson committed
733
#
734 735
if test "$PRIVATE_NETWORK" != "$CONTROL_NETWORK"; then
    DHCPD_CONTROLNET_DECL="subnet $PRIVATE_NETWORK netmask $PRIVATE_NETMASK {}"
736 737
fi

738
#
739 740
# The email addresses need to be be munged for perl scripts. But,
# php needs them un-escaped
741
#
742
TBOPSEMAIL_NOSLASH="$TBOPSEMAIL"
743
TBOPSEMAIL="`echo $TBOPSEMAIL | sed -e 's/@/\\\@/'`"
744 745
TBROBOCOPSEMAIL_NOSLASH="$TBROBOCOPSEMAIL"
TBROBOCOPSEMAIL="`echo $TBROBOCOPSEMAIL | sed -e 's/@/\\\@/'`"
746
TBLOGSEMAIL_NOSLASH="$TBLOGSEMAIL"
747
TBLOGSEMAIL="`echo $TBLOGSEMAIL | sed -e 's/@/\\\@/'`"
748
TBAUDITEMAIL_NOSLASH="$TBAUDITEMAIL"
749
TBAUDITEMAIL="`echo $TBAUDITEMAIL | sed -e 's/@/\\\@/'`"
750 751 752 753
TBWWWEMAIL_NOSLASH="$TBWWWEMAIL"
TBWWWEMAIL="`echo $TBWWWEMAIL | sed -e 's/@/\\\@/'`"
TBAPPROVALEMAIL_NOSLASH="$TBAPPROVALEMAIL"
TBAPPROVALEMAIL="`echo $TBAPPROVALEMAIL | sed -e 's/@/\\\@/'`"
754 755 756 757
TBSTATEDEMAIL_NOSLASH="$TBSTATEDEMAIL_NOSLASH"
TBSTATEDEMAIL="`echo $TBSTATEDEMAIL | sed -e 's/@/\\\@/'`"
TBTESTSUITEEMAIL_NOSLASH="$TBTESTSUITEEMAIL_NOSLASH"
TBTESTSUITEEMAIL="`echo $TBTESTSUITEEMAIL | sed -e 's/@/\\\@/'`"
758

759
if test -n "$TBAUTOMAILEMAIL"; then
760
    TBAUTOMAILEMAIL_NOSLASH="$TBAUTOMAILEMAIL"
761 762 763 764 765
    TBAUTOMAILEMAIL="`echo $TBAUTOMAILEMAIL | sed -e 's/@/\\\@/'`"
else
    TBAUTOMAILEMAIL_NOSLASH="$TBLOGSEMAIL_NOSLASH"
    TBAUTOMAILEMAIL="$TBLOGSEMAIL"
fi
766
if test -n "$TBACTIVEARCHIVE"; then
767
    TBACTIVEARCHIVE_NOSLASH="$TBACTIVEARCHIVE"
768 769
    TBACTIVEARCHIVE="`echo $TBACTIVEARCHIVE | sed -e 's/@/\\\@/'`"
else
770
    TBACTIVEARCHIVE_NOSLASH="$TBOPSEMAIL_NOSLASH"
771 772 773
    TBACTIVEARCHIVE="$TBOPSEMAIL"
fi
if test -n "$TBUSERSARCHIVE"; then
774
    TBUSERSARCHIVE_NOSLASH="$TBUSERSARCHIVE"
775 776
    TBUSERSARCHIVE="`echo $TBUSERSARCHIVE | sed -e 's/@/\\\@/'`"
else
777
    TBUSERSARCHIVE_NOSLASH="$TBOPSEMAIL_NOSLASH"
778 779
    TBUSERSARCHIVE="$TBOPSEMAIL"
fi
Leigh B. Stoller's avatar
Leigh B. Stoller committed
780 781 782 783 784 785 786
if test -n "$TBERRORSEMAIL"; then
    TBERRORSEMAIL_NOSLASH="$TBERRORSEMAIL"
    TBERRORSEMAIL="`echo $TBERRORSEMAIL | sed -e 's/@/\\\@/'`"
else
    TBERRORSEMAIL_NOSLASH="$TBOPSEMAIL_NOSLASH"
    TBERRORSEMAIL="$TBOPSEMAIL"
fi
787 788 789
if test -n "$PROTOGENI_EMAIL"; then
    PROTOGENI_EMAIL="`echo $PROTOGENI_EMAIL | sed -e 's/@/\\\@/'`"
fi
790

791 792 793 794 795 796 797 798 799 800
# Default OURDOMAIN to the domain name of the boss node
# This is gross beyond all description - autoconf changes m4's quote characters
# to '[' and ']', which prevents them from working in the sed expression below.
# So, we temporarily change them to something else then change them back.
# Note: In newer versions of autoconf, this can be done with 'quadrigraphs'
changequote(START, END)dnl
if test -z "$OURDOMAIN"; then
    OURDOMAIN="`echo $BOSSNODE | sed -E -e 's/^[a-zA-Z0-9\-]+\.//'`"
fi
changequote([, ])dnl
801
AC_DEFINE_UNQUOTED(OURDOMAIN, "$OURDOMAIN", [Domain name of Emulab site])
802

803 804 805 806 807 808 809 810 811 812 813 814
if test -z "$EXTERNAL_TESTBED_NETWORK"; then
    EXTERNAL_TESTBED_NETWORK=$TESTBED_NETWORK
fi
if test -z "$EXTERNAL_TESTBED_NETMASK"; then
    EXTERNAL_TESTBED_NETMASK=$TESTBED_NETMASK
fi
if test -z "$EXTERNAL_BOSSNODE_IP"; then
    EXTERNAL_BOSSNODE_IP=$BOSSNODE_IP
fi
if test -z "$EXTERNAL_USERNODE_IP"; then
    EXTERNAL_USERNODE_IP=$USERNODE_IP
fi
815 816 817 818 819 820
if test -z "$FSNODE_IP"; then
    FSNODE_IP=$USERNODE_IP
fi
if test -z "$EXTERNAL_FSNODE_IP"; then
    EXTERNAL_FSNODE_IP=$FSNODE_IP
fi
821 822 823 824
if test -z "$TBAUTHDOMAIN"; then
    TBAUTHDOMAIN=".$OURDOMAIN"
fi
if test -z "$TBAUTHTIMEOUT"; then
825
    TBAUTHTIMEOUT="86400"
826 827 828 829 830 831 832 833 834 835 836 837 838
fi
if test -z "$WWW"; then
    WWW="$WWWHOST"
fi
if test -z "$TBBASE"; then
    TBBASE="https://$WWW"
fi
if test -z "$TBDOCBASE"; then
    TBDOCBASE="http://$WWW"
fi
if test -z "$TBWWW"; then
    TBWWW="<$TBBASE/>"
fi
839
AC_DEFINE_UNQUOTED(TBBASE, "$TBBASE", [Base URL for Emulab files])
840

841 842 843
if test -z "$THISHOMEBASE"; then
    THISHOMEBASE="Emulab.Net"
fi
844
if test -z "$EVENTSERVER"; then
845
    EVENTSERVER="event-server"
846
fi
847
AC_DEFINE_UNQUOTED(EVENTSERVER, "$EVENTSERVER", [Emulab event server node])
Mike Hibler's avatar
Mike Hibler committed
848
AC_DEFINE_UNQUOTED(BS_IQN_PREFIX, "$BS_IQN_PREFIX", [IQN prefix for blockstores])
849

850 851 852 853 854
#
# Perl SelfLoader
# XXX this is a hack which enables us to disable it on versions of perl
# where there are problems with taint checking in the SelfLoader module.
#
855
AC_DEFINE_UNQUOTED(SELFLOADER_DATA, "$SELFLOADER_DATA", [Need perl SelfLoader hack])
856

857 858 859
#
# LEDA library path
#
860
AC_ARG_WITH(LEDA,
861
[  --with-LEDA		Specify LEDA path (/usr/testbed default)],
862 863 864 865 866 867 868
[
    if test "$withval" = "yes"; then
        LEDA="$ac_default_prefix/LEDA/LEDA-4.0"
    else
        LEDA="$withval"
    fi
],[
869 870 871 872 873
    if test -d "$ac_default_prefix/LEDA/LEDA-4.0"; then
        LEDA="$ac_default_prefix/LEDA/LEDA-4.0"
    else
        LEDA=""
    fi
874 875 876
])
AC_SUBST(LEDA)

877 878 879
#
# Override LEDA with assign binary.
#
880 881
AC_ARG_WITH(assignbinary,
[  --with-assignbinary	Specify assign binary (overrides LEDA, default on)],
882 883 884 885 886 887 888 889 890
[
    if test "$withval" = "yes"; then
        ASSIGN="assign.bin"
        LEDA=""
    else
        ASSIGN="$withval"
        LEDA=""
    fi
],[
891 892 893 894 895
    if test "$LEDA" = ""; then
        ASSIGN="assign.bin"
    else
        ASSIGN=""
    fi
896 897 898
])
AC_SUBST(ASSIGN)

Robert Ricci's avatar
Robert Ricci committed
899 900 901
#
# Arguments to ssh to disable strict host key checking, etc
#
Kirk Webb's avatar
 
Kirk Webb committed
902
AC_ARG_WITH(ssh-args,
Robert Ricci's avatar
Robert Ricci committed
903 904 905 906
[  --with-ssh-args	Specify ssh arguments when running from testbed scripts ],
[
    SSH_ARGS="$withval"
],[
Kirk Webb's avatar
 
Kirk Webb committed
907
    SSH_ARGS="-q -o BatchMode=yes -o StrictHostKeyChecking=no"
Robert Ricci's avatar
Robert Ricci committed
908 909 910
])
AC_SUBST(SSH_ARGS)

911 912 913 914 915 916 917 918 919 920 921 922
#
# Path to install rc.d scripts in
#
AC_ARG_WITH(rcdir,
[  --with-rcdir		Specify path to install rc.d scripts (/usr/local/etc/rc.d default)],
[
    INSTALL_RCDIR="$with_rcdir"
],[
    INSTALL_RCDIR="/usr/local/etc/rc.d"
])
AC_SUBST(INSTALL_RCDIR)

923 924 925 926 927 928 929 930
#
# Path to install apache config files in
#
AC_ARG_WITH(apache-config-dir,
[  --with-apache-config	Specify path to install apache config files (/usr/local/etc/apache default)],
[
    INSTALL_APACHE_CONFIG="$withval"
],[
Leigh B Stoller's avatar
Leigh B Stoller committed
931
    foo=`/usr/local/sbin/httpd -V | grep SERVER_CONFIG_FILE | grep 'apache2'`
932 933 934
    if test "$foo" = ""; then
        INSTALL_APACHE_CONFIG="/usr/local/etc/apache"
	APACHE_VERSION="1.3"
935
	APACHE_START_COMMAND="/usr/local/etc/rc.d/apache.sh"
936 937 938
    else
        INSTALL_APACHE_CONFIG="/usr/local/etc/apache22"
	APACHE_VERSION="22"
939
	APACHE_START_COMMAND="/usr/local/etc/rc.d/apache22"
940
    fi
941 942
])
AC_SUBST(INSTALL_APACHE_CONFIG)
943
AC_SUBST(APACHE_VERSION)
944
AC_SUBST(APACHE_START_COMMAND)
945

Timothy Stack's avatar
 
Timothy Stack committed
946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961
#
# Path to garcia installation
#
AC_ARG_WITH(brainstem,
[  --with-brainstem=<DIR> Specify the path to the brainstem installation.],
[
    if test x"$withval" != x""; then
	BRAINSTEM_DIR="$withval"
    else
	AC_MSG_ERROR([You must specify a brainstem directory]);
    fi
],[
    BRAINSTEM_DIR=""
])
AC_SUBST(BRAINSTEM_DIR)

962

963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981
#
# Optionally build with optimization or aggressive non-optimization
# (Actually three options: on, off or default.)
#
AC_ARG_ENABLE(debug,
[  --enable-debug        Build with debug flags (-g -DDEBUG)
  --disable-debug       Build with optimization flags (-O2 -DNDEBUG -UDEBUG)])

if test "$enable_debug" = "yes"; then
	OPT_CFLAGS="-g -DDEBUG";
else
	if test "$enable_debug" = "no"; then
		OPT_CFLAGS="-O2 -DNDEBUG -UDEBUG";
	else
		OPT_CFLAGS="-g -O";
	fi
fi
AC_SUBST(OPT_CFLAGS)

982
#
983
# Disable event system. Relies on Elvin. On by default.
Ryan Jackson's avatar
Ryan Jackson committed
984
#
985
AC_ARG_ENABLE(events,
986
[  --disable-events      Disable events (requires Elvin libraries)])
987

988 989 990 991
if test "$enable_events" = "no"; then
	eventfiles="";
        EVENTSYS=0;
else
992
	eventfiles="event/GNUmakefile clientside/lib/event/GNUmakefile \
993
		    event/etc/elvind-boss.conf event/etc/elvind-ops.conf \
994
		    event/etc/elvind-inetd.conf event/etc/GNUmakefile\
995
		    event/sched/GNUmakefile \
Ryan Jackson's avatar
Ryan Jackson committed
996
		    event/new_sched/GNUmakefile \
997
                    event/example/GNUmakefile event/example/tbsend.pl \
998
		    event/example/tbrecv.pl event/example/tbsend-short.pl \
999
                    event/example/tbsend.py event/example/tbrecv.py \
1000
		    event/example/eventdebug.pl \
1001
		    event/proxy/GNUmakefile \
Gary Wong's avatar
Gary Wong committed
1002
		    event/monitoring/GNUmakefile \		    
1003
		    event/nsetrafgen/GNUmakefile \
1004
		    event/nsetrafgen/nseinput.tcl \
1005
		    event/nsetrafgen/nse-makepatch \
1006
		    event/stated/waitForState \
1007
		    event/stated/GNUmakefile event/stated/stated"
1008

1009
	optional_subdirs="$optional_subdirs event";
1010
        EVENTSYS=1;
1011
fi
1012
AC_SUBST(EVENTSYS)
1013

1014 1015 1016 1017 1018 1019
#
# Quickie pelab support.
#
if test $PELABSUPPORT -eq 0; then
	pelabfiles="";
else
1020 1021 1022
	pelabfiles="pelab/GNUmakefile pelab/db/GNUmakefile \
		    pelab/bgmon/GNUmakefile ";
	optional_subdirs="$optional_subdirs pelab";
1023 1024
fi

1025 1026 1027 1028 1029 1030
#
# Mobile networking support.
#
if test $MOBILESUPPORT -eq 0; then
	mobilefiles="";
else
1031 1032
	mobilefiles="mobile/GNUmakefile \
	             clientside/mobile/GNUmakefile";
1033 1034 1035
	optional_subdirs="$optional_subdirs mobile";
fi

1036 1037 1038 1039
#
# Enable Windows support.
# Right now this means NTFS support in imagezip, maybe more things later.
# Relies on Linux NTFS library.
Ryan Jackson's avatar
Ryan Jackson committed
1040
#
1041
AC_ARG_ENABLE(windows,
Kirk Webb's avatar
 
Kirk Webb committed
1042
[  --enable-windows      Enable Windows XP support (default)])
1043

Kirk Webb's avatar
 
Kirk Webb committed
1044 1045
if test "$enable_windows" = "no"; then
	WINSUPPORT=0;
1046 1047 1048 1049 1050 1051
elif test "$enable_windows" = "yes"; then
	WINSUPPORT=1;
fi

if test $WINSUPPORT -eq 0; then
	winfiles="";
Kirk Webb's avatar
 
Kirk Webb committed
1052
else
1053 1054 1055
	if test $LINUX_FSNODE -ne 0; then
		AC_MSG_ERROR([You cannot define LINUX_FSNODE with windows support]);
	fi
1056 1057 1058 1059
	winfiles="clientside/os/imagezip/ntfs/GNUmakefile \
		  clientside/os/imagezip/ntfs/liblocale/GNUmakefile \
		  clientside/os/imagezip/ntfs/libntfs/GNUmakefile \
		  clientside/os/imagezip/fat/GNUmakefile"