configure.ac 48.6 KB
Newer Older
Leigh B. Stoller's avatar
Leigh B. Stoller committed
1
#
2
# Copyright (c) 2000-2016 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

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)
104

105 106
AC_EXEEXT

107
AC_PATH_PROG(DIG,dig)
108
AC_PATH_PROG(ELVIN_CONFIG,elvin-config)
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)
114

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

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.
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)
185
AC_SUBST(SUBBOSS_SSLCERTNAME)
186
AC_SUBST(PLABSUPPORT)
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(ELVIN_COMPAT)
248 249
AC_SUBST(ISOLATEADMINS)
AC_SUBST(DYNAMICROOTPASSWORDS)
250
AC_SUBST(TPM)
251
AC_SUBST(REMOTEWIKIDOCS)
Leigh B. Stoller's avatar
Leigh B. Stoller committed
252
AC_SUBST(PROTOGENI_SUPPORT)
253 254 255
AC_SUBST(PROTOGENI_WEBSITE)
AC_SUBST(PROTOGENI_ISCLEARINGHOUSE)
AC_SUBST(PROTOGENI_EMAIL)
Leigh B. Stoller's avatar
Leigh B. Stoller committed
256
AC_SUBST(PROTOGENI_DOMAIN)
257 258
AC_SUBST(PROTOGENI_RPCPORT)
AC_SUBST(PROTOGENI_RPCNAME)
259
AC_SUBST(PROTOGENI_LOCALUSER)
260
AC_SUBST(PROTOGENI_MAXSERVERLOAD)
261
AC_SUBST(PROTOGENI_GENIWEBLOGIN)
262
AC_SUBST(PROTOGENI_NONFSMOUNTS)
263
AC_SUBST(GENI_PUBRPCPORT)
264
AC_SUBST(PROTOGENI_URL)
265
AC_SUBST(PROTOGENI_GENIRACK)
Gary Wong's avatar
Gary Wong committed
266
AC_SUBST(PROTOGENI_NICKNAME)
267
AC_SUBST(STANDALONE_CLEARINGHOUSE)
268
AC_SUBST(GMAP_API_KEY)
269
AC_SUBST(NODE_USAGE_SUPPORT)
270
AC_SUBST(NOSTACKMIB)
271
AC_SUBST(EXP_VIS_SUPPORT)
272
AC_SUBST(NOSHAREDFS)
273
AC_SUBST(IMPORT_TMPDIR)
274
AC_SUBST(SELFLOADER_DATA)
275
AC_SUBST(TBUSEDBI)
276
AC_SUBST(BIGDB)
277
AC_SUBST(NEEDMCQUERIER)
278 279
AC_SUBST(OPSVM_ENABLE)
AC_SUBST(OPSVM_MOUNTPOINT)
280 281
AC_SUBST(PORTAL_ENABLE)
AC_SUBST(PORTAL_ISPRIMARY)
282
AC_SUBST(LINUX_FSNODE)
283 284
AC_SUBST(VPUBADDR_BASE)
AC_SUBST(VPUBADDR_BITLEN)
285 286 287 288
AC_SUBST(WINDOWS_ORGNAME)
AC_SUBST(WINDOWS_OWNER)
AC_SUBST(WINDOWS_TIMEZONE)
AC_SUBST(WINDOWS_KEY_7PRO_X86)
289 290 291 292
AC_SUBST(FIREWALL_BOSS)
AC_SUBST(FIREWALL_OPS)
AC_SUBST(FIREWALL_BOSS_LOCALRULETMPL)
AC_SUBST(FIREWALL_OPS_LOCALRULETMPL)
293
AC_SUBST(SPEWFROMOPS)
294
AC_SUBST(NOSITECHECKIN)
295
AC_SUBST(EC2META_ENABLE)
296
AC_SUBST(BROWSER_CONSOLE_ENABLE)
Gary Wong's avatar
Gary Wong committed
297 298
AC_SUBST(IPV6_ENABLED)
AC_SUBST(IPV6_SUBNET_PREFIX)
299
AC_SUBST(NFSMAPTOUSER)
300
AC_SUBST(IMAGEPROVENANCE)
301
AC_SUBST(IMAGEDIRECTORIES)
302
AC_SUBST(IMAGEDELTAS)
303
AC_SUBST(PROFILEVERSIONS)
304
AC_SUBST(NOVIRTNFSMOUNTS)
305 306 307 308 309
AC_SUBST(WITHZFS)
AC_SUBST(ZFS_ROOT)
AC_SUBST(ZFS_QUOTA_USER)
AC_SUBST(ZFS_QUOTA_PROJECT)
AC_SUBST(ZFS_QUOTA_GROUP)
310
AC_SUBST(ZFS_NOEXPORT)
311
AC_SUBST(INCREMENTAL_MOUNTD)
312 313
AC_SUBST(WITHAMD)
AC_SUBST(AMD_ROOT)
314
AC_SUBST(BS_IQN_PREFIX)
315
AC_SUBST(ATTENUATOR)
316 317
AC_SUBST(CLUSTER_PORTAL)
AC_SUBST(CLUSTER_PUBSUBD_PORT)
318

319 320 321 322 323 324
#
# 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)
325 326
AC_SUBST(TBROBOCOPSEMAIL)
AC_SUBST(TBROBOCOPSEMAIL_NOSLASH)
327 328 329 330 331 332 333 334 335 336 337 338
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)
339 340
AC_SUBST(TBAUTOMAILEMAIL)
AC_SUBST(TBAUTOMAILEMAIL_NOSLASH)
341 342 343 344
AC_SUBST(TBACTIVEARCHIVE)
AC_SUBST(TBACTIVEARCHIVE_NOSLASH)
AC_SUBST(TBUSERSARCHIVE)
AC_SUBST(TBUSERSARCHIVE_NOSLASH)
Leigh B. Stoller's avatar
Leigh B. Stoller committed
345 346
AC_SUBST(TBERRORSEMAIL)
AC_SUBST(TBERRORSEMAIL_NOSLASH)
347

348 349 350 351 352
#
# For snmpit support of Arista switch.
#
AC_SUBST(ARISTA_SWITCH_XMLRPCPORT)

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

484 485 486 487 488 489 490 491 492 493
#
# 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
494 495 496 497 498 499
#
# Flag as full Emulab build (for clientside). 
#
WITH_EMULAB=1
AC_SUBST(WITH_EMULAB)

500 501 502
#
# Okay, I know this is improper usage of --with. Too bad.
#
503 504
AC_ARG_WITH(TBDEFS,
[  --with-TBDEFS=name	Specify definitions file (defs-default default)],
505 506
[
    if test "$withval" = "yes"; then
507
	AC_MSG_ERROR([Invalid TBDEFS - Must specify the value])
508
    fi
509
    TBDEFS="$withval"
510
    TBPATH=`dirname $withval`
511
],[
512 513 514
    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.
515 516
Copy and modify the defs-example file for your Emulab installation.
defs-default has values for Utah, including client-side image compilations.])
517
])
518 519 520 521 522

if test -f $TBDEFS; then
    #
    # Remove the comments and newlines.  Really, that's what it does.
    #
523 524
    OLDPATH=$PATH
    PATH="$TBPATH:$PATH"
525
    . $TBDEFS
526
    PATH=$OLDPATH
527 528 529
else
	AC_MSG_ERROR([Definitions file $TBDEFS was not found.])
fi
530

531 532 533 534 535
# 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
536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569
# 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";;
570 571
    *washington.edu) PROTOGENI_NICKNAME="uwashington-ig";;
    *rnet.missouri.edu) PROTOGENI_NICKNAME="missouri-ig";;
Gary Wong's avatar
Gary Wong committed
572 573 574
    *pks2.sdn.uky.edu) PROTOGENI_NICKNAME="ukypks2-ig";;
    *colorado.edu) PROTOGENI_NICKNAME="colorado-ig";;
    *cenic.net) PROTOGENI_NICKNAME="cenic-ig";;
575
    *vt.edu) PROTOGENI_NICKNAME="vt-ig";;
576
    *stitch.geniracks.net) PROTOGENI_NICKNAME="utah-stitch";;
Gary Wong's avatar
Gary Wong committed
577 578 579
    esac
fi

580 581 582 583 584 585
#
# 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!
#
586
if test x"$prefix" = x"NONE"; then
587
    AC_DEFINE_UNQUOTED(TBROOT, "/usr/testbed", [FS base for Emulab files])
588
else
589 590 591 592 593 594 595 596 597 598 599 600 601 602 603
    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])
604
if test -n "$FSNODE_IP"; then
605
	AC_DEFINE_UNQUOTED(FSNODE_IP, "$FSNODE_IP", [IPv4 address of fs node to be used by nodes])
606
elif test "$USERNODE" = "$FSNODE"; then
607
	AC_DEFINE_UNQUOTED(FSNODE_IP, "$USERNODE_IP", [IPv4 address of fs node to be used by nodes])
608
elif test "$BOSSNODE" = "$FSNODE"; then
609 610 611 612 613 614 615 616 617 618 619 620 621
	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])
622
if test -n "$FSDIR_SHARE"; then
623
    AC_DEFINE_UNQUOTED(FSDIR_SHARE, "$FSDIR_SHARE", [Mount point of 'share' filesystem on fs node])
624
fi
625
if test -n "$FSDIR_SCRATCH"; then
626
    AC_DEFINE_UNQUOTED(FSDIR_SCRATCH, "$FSDIR_SCRATCH", [Mount point of 'scratch' filesystem on fs node])
627
fi
628 629 630 631
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])
632

633 634 635 636 637 638
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])
639

640 641 642
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])
643

644
if test $OPSDBSUPPORT -eq 1; then
645
    AC_DEFINE_UNQUOTED(OPSDBSUPPORT, 1, [Obsolete])
646 647
fi

648
if test $ELVIN_COMPAT -eq 1; then
649
    AC_DEFINE_UNQUOTED(ELVIN_COMPAT, 1, [Obsolete])
650 651
fi

652
if test $ELABINELAB -eq 1; then
653
    AC_DEFINE_UNQUOTED(ELABINELAB, 1, [For an Emulab-in-Emulab configuration])
654
fi
655

656
if test $ISOLATEADMINS -eq 1; then
657
    AC_DEFINE_UNQUOTED(ISOLATEADMINS, 1, [Do not allow admins and non-admins in same project])
658 659
fi
if test $DYNAMICROOTPASSWORDS -eq 1; then
660
    AC_DEFINE_UNQUOTED(DYNAMICROOTPASSWORDS, 1, [Per-node root passwords])
661
fi
662
if test $TPM -eq 1; then
663
    AC_DEFINE_UNQUOTED(TPM, 1, [Something about TPM])
664
fi
665
if test $NOSHAREDFS -eq 1; then
666
    AC_DEFINE_UNQUOTED(NOSHAREDFS, 1, [Do not allow NFS-shared filesystems])
667 668
fi
if test $NFSRACY -eq 1; then
669
    AC_DEFINE_UNQUOTED(NFSRACY, 1, [NFS server has race])
670
fi
671
if test $OPSVM_ENABLE -eq 1; then
672 673
    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])
674
fi
675
if test $SPEWFROMOPS -eq 1; then
676
    AC_DEFINE_UNQUOTED(SPEWFROMOPS, 1, [Server rpm/tarballs from ops rather than boss])
677
fi
678
if test $PROTOGENI_SUPPORT -eq 1; then
679
    AC_DEFINE_UNQUOTED(PROTOGENI_SUPPORT, 1, [Support Protogeni])
680 681
fi
if test $PROTOGENI_GENIRACK -eq 1; then
682
    AC_DEFINE_UNQUOTED(PROTOGENI_GENIRACK, 1, [Support Protogeni rack])
683
fi
684
if test $IMAGEPROVENANCE -eq 1; then
685
    AC_DEFINE_UNQUOTED(IMAGEPROVENANCE, 1, [Support image versioning])
686 687
fi
if test $IMAGEDELTAS -eq 1; then
688
    AC_DEFINE_UNQUOTED(IMAGEDELTAS, 1, [Support imagezip delta images])
689
fi
690
if test $NOVIRTNFSMOUNTS -eq 1; then
691
    AC_DEFINE_UNQUOTED(NOVIRTNFSMOUNTS, 1, [Do not use NFS mounts on virtual nodes])
692 693
fi
if test $WITHZFS -eq 1; then
694
    AC_DEFINE_UNQUOTED(WITHZFS, 1, [Use ZFS on FS node for shared filesystems])
695
fi
696
if test $WITHAMD -eq 1; then
697
    AC_DEFINE_UNQUOTED(WITHAMD, 1, [Run AMD on boss node to handle shared FS mounts])
698
    AC_DEFINE_UNQUOTED(AMD_ROOT, "$AMD_ROOT", [Actual FS mount directory for AMD])
699
fi
700
AC_DEFINE_UNQUOTED(IMPORT_TMPDIR, "$IMPORT_TMPDIR", [Directory to use for imported images])
701

702
LOG_TESTBED=`echo "LOG_$TBLOGFACIL" | tr a-z A-Z`
703
AC_DEFINE_UNQUOTED(LOG_TESTBED, $LOG_TESTBED, [Syslog log facility for Emulab daemons])
704 705
AC_SUBST(LOG_TESTBED)

706 707 708 709
#
# 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!
710
#
711 712
if test "$PRIVATE_NETWORK" != "$CONTROL_NETWORK"; then
    DHCPD_CONTROLNET_DECL="subnet $PRIVATE_NETWORK netmask $PRIVATE_NETMASK {}"
713 714
fi

715
#
716 717
# The email addresses need to be be munged for perl scripts. But,
# php needs them un-escaped
718
#
719
TBOPSEMAIL_NOSLASH="$TBOPSEMAIL"
720
TBOPSEMAIL="`echo $TBOPSEMAIL | sed -e 's/@/\\\@/'`"
721 722
TBROBOCOPSEMAIL_NOSLASH="$TBROBOCOPSEMAIL"
TBROBOCOPSEMAIL="`echo $TBROBOCOPSEMAIL | sed -e 's/@/\\\@/'`"
723
TBLOGSEMAIL_NOSLASH="$TBLOGSEMAIL"
724
TBLOGSEMAIL="`echo $TBLOGSEMAIL | sed -e 's/@/\\\@/'`"
725
TBAUDITEMAIL_NOSLASH="$TBAUDITEMAIL"
726
TBAUDITEMAIL="`echo $TBAUDITEMAIL | sed -e 's/@/\\\@/'`"
727 728 729 730
TBWWWEMAIL_NOSLASH="$TBWWWEMAIL"
TBWWWEMAIL="`echo $TBWWWEMAIL | sed -e 's/@/\\\@/'`"
TBAPPROVALEMAIL_NOSLASH="$TBAPPROVALEMAIL"
TBAPPROVALEMAIL="`echo $TBAPPROVALEMAIL | sed -e 's/@/\\\@/'`"
731 732 733 734
TBSTATEDEMAIL_NOSLASH="$TBSTATEDEMAIL_NOSLASH"
TBSTATEDEMAIL="`echo $TBSTATEDEMAIL | sed -e 's/@/\\\@/'`"
TBTESTSUITEEMAIL_NOSLASH="$TBTESTSUITEEMAIL_NOSLASH"
TBTESTSUITEEMAIL="`echo $TBTESTSUITEEMAIL | sed -e 's/@/\\\@/'`"
735

736
if test -n "$TBAUTOMAILEMAIL"; then
737
    TBAUTOMAILEMAIL_NOSLASH="$TBAUTOMAILEMAIL"
738 739 740 741 742
    TBAUTOMAILEMAIL="`echo $TBAUTOMAILEMAIL | sed -e 's/@/\\\@/'`"
else
    TBAUTOMAILEMAIL_NOSLASH="$TBLOGSEMAIL_NOSLASH"
    TBAUTOMAILEMAIL="$TBLOGSEMAIL"
fi
743
if test -n "$TBACTIVEARCHIVE"; then
744
    TBACTIVEARCHIVE_NOSLASH="$TBACTIVEARCHIVE"
745 746
    TBACTIVEARCHIVE="`echo $TBACTIVEARCHIVE | sed -e 's/@/\\\@/'`"
else
747
    TBACTIVEARCHIVE_NOSLASH="$TBOPSEMAIL_NOSLASH"
748 749 750
    TBACTIVEARCHIVE="$TBOPSEMAIL"
fi
if test -n "$TBUSERSARCHIVE"; then
751
    TBUSERSARCHIVE_NOSLASH="$TBUSERSARCHIVE"
752 753
    TBUSERSARCHIVE="`echo $TBUSERSARCHIVE | sed -e 's/@/\\\@/'`"
else
754
    TBUSERSARCHIVE_NOSLASH="$TBOPSEMAIL_NOSLASH"
755 756
    TBUSERSARCHIVE="$TBOPSEMAIL"
fi
Leigh B. Stoller's avatar
Leigh B. Stoller committed
757 758 759 760 761 762 763
if test -n "$TBERRORSEMAIL"; then
    TBERRORSEMAIL_NOSLASH="$TBERRORSEMAIL"
    TBERRORSEMAIL="`echo $TBERRORSEMAIL | sed -e 's/@/\\\@/'`"
else
    TBERRORSEMAIL_NOSLASH="$TBOPSEMAIL_NOSLASH"
    TBERRORSEMAIL="$TBOPSEMAIL"
fi
764 765 766
if test -n "$PROTOGENI_EMAIL"; then
    PROTOGENI_EMAIL="`echo $PROTOGENI_EMAIL | sed -e 's/@/\\\@/'`"
fi
767

768 769 770 771 772 773 774 775 776 777
# 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
778
AC_DEFINE_UNQUOTED(OURDOMAIN, "$OURDOMAIN", [Domain name of Emulab site])
779

780 781 782 783 784 785 786 787 788 789 790 791
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
792 793 794 795 796 797
if test -z "$FSNODE_IP"; then
    FSNODE_IP=$USERNODE_IP
fi
if test -z "$EXTERNAL_FSNODE_IP"; then
    EXTERNAL_FSNODE_IP=$FSNODE_IP
fi
798 799 800 801
if test -z "$TBAUTHDOMAIN"; then
    TBAUTHDOMAIN=".$OURDOMAIN"
fi
if test -z "$TBAUTHTIMEOUT"; then
802
    TBAUTHTIMEOUT="86400"
803 804 805 806 807 808 809 810 811 812 813 814 815
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
816
AC_DEFINE_UNQUOTED(TBBASE, "$TBBASE", [Base URL for Emulab files])
817

818 819 820
if test -z "$THISHOMEBASE"; then
    THISHOMEBASE="Emulab.Net"
fi
821
if test -z "$EVENTSERVER"; then
822
    EVENTSERVER="event-server"
823
fi
824
AC_DEFINE_UNQUOTED(EVENTSERVER, "$EVENTSERVER", [Emulab event server node])
825
AC_DEFINE_UNQUOTED(BS_IQN_PREFIX, "$BS_IQN_PREFIX", [IQN prefix for blockstores])
826

827 828 829 830 831
#
# 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.
#
832
AC_DEFINE_UNQUOTED(SELFLOADER_DATA, "$SELFLOADER_DATA", [Need perl SelfLoader hack])
833

834 835 836
#
# LEDA library path
#
837
AC_ARG_WITH(LEDA,
838
[  --with-LEDA		Specify LEDA path (/usr/testbed default)],
839 840 841 842 843 844 845
[
    if test "$withval" = "yes"; then
        LEDA="$ac_default_prefix/LEDA/LEDA-4.0"
    else
        LEDA="$withval"
    fi
],[
846 847 848 849 850
    if test -d "$ac_default_prefix/LEDA/LEDA-4.0"; then
        LEDA="$ac_default_prefix/LEDA/LEDA-4.0"
    else
        LEDA=""
    fi
851 852 853
])
AC_SUBST(LEDA)

854 855 856
#
# Override LEDA with assign binary.
#
857 858
AC_ARG_WITH(assignbinary,
[  --with-assignbinary	Specify assign binary (overrides LEDA, default on)],
859 860 861 862 863 864 865 866 867
[
    if test "$withval" = "yes"; then
        ASSIGN="assign.bin"
        LEDA=""
    else
        ASSIGN="$withval"
        LEDA=""
    fi
],[
868 869 870 871 872
    if test "$LEDA" = ""; then
        ASSIGN="assign.bin"
    else
        ASSIGN=""
    fi
873 874 875
])
AC_SUBST(ASSIGN)

Robert Ricci's avatar
Robert Ricci committed
876 877 878
#
# Arguments to ssh to disable strict host key checking, etc
#
879
AC_ARG_WITH(ssh-args,
Robert Ricci's avatar
Robert Ricci committed
880 881 882 883
[  --with-ssh-args	Specify ssh arguments when running from testbed scripts ],
[
    SSH_ARGS="$withval"
],[
884
    SSH_ARGS="-q -o BatchMode=yes -o StrictHostKeyChecking=no"
Robert Ricci's avatar
Robert Ricci committed
885 886 887
])
AC_SUBST(SSH_ARGS)

888 889 890 891 892 893 894 895 896 897 898 899
#
# 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)

900 901 902 903 904 905 906 907
#
# 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
908
    foo=`/usr/local/sbin/httpd -V | grep SERVER_CONFIG_FILE | grep 'apache2'`
909 910 911
    if test "$foo" = ""; then
        INSTALL_APACHE_CONFIG="/usr/local/etc/apache"
	APACHE_VERSION="1.3"
912
	APACHE_START_COMMAND="/usr/local/etc/rc.d/apache.sh"
913 914 915
    else
        INSTALL_APACHE_CONFIG="/usr/local/etc/apache22"
	APACHE_VERSION="22"
916
	APACHE_START_COMMAND="/usr/local/etc/rc.d/apache22"
917
    fi
918 919
])
AC_SUBST(INSTALL_APACHE_CONFIG)
920
AC_SUBST(APACHE_VERSION)
921
AC_SUBST(APACHE_START_COMMAND)
922

923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938
#
# 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)

939

940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958
#
# 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)

959
#
960
# Disable event system. Relies on Elvin. On by default.
961
#
962
AC_ARG_ENABLE(events,
963
[  --disable-events      Disable events (requires Elvin libraries)])
964

965 966 967 968
if test "$enable_events" = "no"; then
	eventfiles="";
        EVENTSYS=0;
else
969
	eventfiles="event/GNUmakefile clientside/lib/event/GNUmakefile \
970
		    event/etc/elvind-boss.conf event/etc/elvind-ops.conf \
971
		    event/etc/elvind-inetd.conf event/etc/GNUmakefile\
972
		    event/sched/GNUmakefile \
Ryan Jackson's avatar
Ryan Jackson committed
973
		    event/new_sched/GNUmakefile \
974
                    event/example/GNUmakefile event/example/tbsend.pl \
975
		    event/example/tbrecv.pl event/example/tbsend-short.pl \
976
                    event/example/tbsend.py event/example/tbrecv.py \
977
		    event/example/eventdebug.pl \
978
		    event/proxy/GNUmakefile \
Gary Wong's avatar
Gary Wong committed
979
		    event/monitoring/GNUmakefile \		    
980
		    event/nsetrafgen/GNUmakefile \
981
		    event/nsetrafgen/nseinput.tcl \
982
		    event/nsetrafgen/nse-makepatch \
983
		    event/stated/waitForState \
984
		    event/stated/GNUmakefile event/stated/stated"
985

986
	optional_subdirs="$optional_subdirs event";
987
        EVENTSYS=1;
988
fi
989
AC_SUBST(EVENTSYS)
990

991 992 993 994 995 996
#
# Quickie pelab support.
#
if test $PELABSUPPORT -eq 0; then
	pelabfiles="";
else
997 998 999
	pelabfiles="pelab/GNUmakefile pelab/db/GNUmakefile \
		    pelab/bgmon/GNUmakefile ";
	optional_subdirs="$optional_subdirs pelab";
1000 1001
fi

1002 1003 1004 1005
#
# Enable Windows support.
# Right now this means NTFS support in imagezip, maybe more things later.
# Relies on Linux NTFS library.
1006
#
1007
AC_ARG_ENABLE(windows,
1008
[  --enable-windows      Enable Windows XP support (default)])
1009

1010 1011
if test "$enable_windows" = "no"; then
	WINSUPPORT=0;
1012 1013 1014 1015 1016 1017
elif test "$enable_windows" = "yes"; then
	WINSUPPORT=1;
fi

if test $WINSUPPORT -eq 0; then
	winfiles="";
1018
else
1019 1020 1021
	if test $LINUX_FSNODE -ne 0; then
		AC_MSG_ERROR([You cannot define LINUX_FSNODE with windows support]);
	fi
1022 1023 1024 1025
	winfiles="clientside/os/imagezip/ntfs/GNUmakefile \
		  clientside/os/imagezip/ntfs/liblocale/GNUmakefile \
		  clientside/os/imagezip/ntfs/libntfs/GNUmakefile \
		  clientside/os/imagezip/fat/GNUmakefile"
1026
	optional_subdirs="$optional_subdirs";
1027
        AC_DEFINE_UNQUOTED(WINSUPPORT, 1, [Support Windows images])
1028
fi
1029

1030 1031 1032 1033 1034
#
# Check for ulsshxmlrpc header
#

AC_CHECK_HEADERS([ulxmlrpcpp/ulxr_config.h],
1035
		 [AC_DEFINE(HAVE_ULXMLRPCPP, [], [XXX])
1036 1037 1038
		  HAVE_ULXMLRPCPP="yes"])
AC_SUBST(HAVE_ULXMLRPCPP)

1039 1040 1041 1042 1043 1044 1045 1046
#
# Check for the robot vision system dependencies.
#
AC_CHECK_HEADERS([linux/videodev.h],
		 [AC_DEFINE(HAVE_LINUX_VIDEODEV_H)
		  HAVE_LINUX_VIDEODEV_H="yes"])
AC_CHECK_PROG(GTK_CONFIG, gtk-config, gtk-config)

1047 1048 1049
AC_ARG_ENABLE(mezzanine,
[  --enable-mezzanine    Enable mezzanine support])

1050
if test x"$HAVE_LINUX_VIDEODEV_H" != x"" && test x"$GTK_CONFIG" != x""; then
1051
    HAVE_MEZZANINE="$enable_mezzanine"
1052
    AC_DEFINE([HAVE_MEZZANINE], [], [Obsolete])
1053 1054 1055 1056 1057
else
    HAVE_MEZZANINE="no"
fi
AC_SUBST(HAVE_MEZZANINE)

1058
#
1059
# Check for a few things used by assign
1060
#
1061
AC_LANG_PUSH([C++])