configure.in 45.2 KB
Newer Older
Leigh Stoller's avatar
Leigh Stoller committed
1
#
2
# Copyright (c) 2000-2014 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 Stoller's avatar
Leigh Stoller committed
22
#
23
AC_PREREQ(2.62)
24 25 26

AC_INIT(Makeconf.in)
AC_CONFIG_AUX_DIR(${srcdir}/autoconf)
27
AC_PREFIX_DEFAULT(/usr/testbed)
28
AC_CONFIG_HEADER(config.h)
Leigh Stoller's avatar
Leigh Stoller committed
29
AC_CANONICAL_HOST
30

31 32 33 34 35 36
# 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.
#
37
if test `(cd $srcdir; pwd)` = `pwd`; then
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
    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

61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
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 Stoller's avatar
Leigh Stoller committed
76
CPPFLAGS="-I/usr/local/include"
77

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

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}`
87 88 89
if test ! -d "$PYTHON_PATH/include"; then
    PYTHON_PATH=`dirname ${PYTHON_PATH}`
fi
90 91 92 93
PYTHON_INCLUDE="${PYTHON_PATH}/include/python${PYTHON_VERSION}"
CPPFLAGS="${CPPFLAGS} -I${PYTHON_INCLUDE}"
AC_CHECK_HEADERS([Python.h],
		 [],
94
		 [AC_MSG_WARN("Cannot find Python.h in ${PYTHON_INCLUDE}")])
95 96 97
AC_SUBST(PYTHON_INCLUDE)
# END Python detection.

98 99 100 101 102
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)
103

104 105
AC_EXEEXT

106
AC_PATH_PROG(DIG,dig)
107
AC_PATH_PROG(ELVIN_CONFIG,elvin-config)
108 109
AC_PATH_PROG(JAVAC,javac)
AC_PATH_PROG(JAR,jar)
110
AC_PATH_PROG(NC,nc)
111
AC_PATH_PROG(SUDO,sudo)
112
AC_PATH_PROG(UUIDGEN,uuidgen)
113

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

116 117
AC_CHECK_FUNCS(srandomdev)

118 119
AC_SUBST(optional_subdirs)

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

298 299 300 301 302 303
#
# 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)
304 305
AC_SUBST(TBROBOCOPSEMAIL)
AC_SUBST(TBROBOCOPSEMAIL_NOSLASH)
306 307 308 309 310 311 312 313 314 315 316 317
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)
318 319
AC_SUBST(TBAUTOMAILEMAIL)
AC_SUBST(TBAUTOMAILEMAIL_NOSLASH)
320 321 322 323
AC_SUBST(TBACTIVEARCHIVE)
AC_SUBST(TBACTIVEARCHIVE_NOSLASH)
AC_SUBST(TBUSERSARCHIVE)
AC_SUBST(TBUSERSARCHIVE_NOSLASH)
Leigh Stoller's avatar
Leigh Stoller committed
324 325
AC_SUBST(TBERRORSEMAIL)
AC_SUBST(TBERRORSEMAIL_NOSLASH)
326

327 328 329 330 331
#
# For snmpit support of Arista switch.
#
AC_SUBST(ARISTA_SWITCH_XMLRPCPORT)

332 333
#
# Defaults for for above variables.
334
#
335
TBERRORLOGDBNAME="errorlog"
336
TBADMINGROUP="flux"
337 338 339
CLIENT_ETCDIR="/etc/emulab"
CLIENT_BINDIR="/usr/local/etc/emulab"
CLIENT_VARDIR="/var/emulab"
340
CLIENT_MANDIR="/usr/local/man"
341 342
TBSECURECOOKIES=1
TBMAINSITE=0
343
TBUSEDBI=0
344
FANCYBANNER=0
345 346 347 348
VIRTNODE_NETWORK=172.16.0.0
VIRTNODE_NETMASK=255.240.0.0
JAILIPBASE=$VIRTNODE_NETWORK
JAILIPMASK=$VIRTNODE_NETMASK
349
IPBASE=10
350
SFSSUPPORT=0
351
ELABINELAB=0
352 353 354
OUTERBOSS_NODENAME=""
OUTERBOSS_XMLRPCPORT=3069
OUTERBOSS_SSLCERTNAME="/etc/outer_emulab.pem"
355
SUBBOSS_SSLCERTNAME="/etc/subboss.pem"
356
PLABSUPPORT=0
357
PUBSUPPORT=0
358
WIKISUPPORT=0
359
BUGDBSUPPORT=0
360
OPSDBSUPPORT=0
361
MAILMANSUPPORT=0
362
WINSUPPORT=0
363
NSVERIFY=1
364
CVSSUPPORT=0
365
TRACSUPPORT=0
366
CHATSUPPORT=0
367
STAMPS=0
368
ARCHIVESUPPORT=0
369
NFSTRACESUPPORT=0
370
TBLOGFACIL="local5"
371
BOSSEVENTPORT=16505
372
NTPSERVER="ops"
373 374 375 376 377
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"
378
UNIFIED_BOSS_AND_OPS=0
379 380
DISABLE_NAMED_INSTALL=0
DISABLE_DHCPD_INSTALL=0
381
DISABLE_NAMED_SETUP=0
382 383
FRISEBEEMCASTADDR="234.5.6"
FRISEBEEMCASTPORT=3564
384
FRISEBEENUMPORTS=0
385 386
MIN_UNIX_UID=10000
MIN_UNIX_GID=6000
387
DELAYTHRESH=2
388
PELABSUPPORT=0
389
ELVIN_COMPAT=0
390 391
ISOLATEADMINS=1
DYNAMICROOTPASSWORDS=1
392
TPM=0
393
REMOTEWIKIDOCS=1
Leigh Stoller's avatar
Leigh Stoller committed
394
PROTOGENI_SUPPORT=0
395 396 397
PROTOGENI_ISCLEARINGHOUSE=0
PROTOGENI_EMAIL="geni-dev-utah@flux.utah.edu"
PROTOGENI_WEBSITE="www.emulab.net"
Leigh Stoller's avatar
Leigh Stoller committed
398
PROTOGENI_DOMAIN="unknown"
399 400
PROTOGENI_RPCPORT=12369
PROTOGENI_RPCNAME=""
401
GENI_PUBRPCPORT=12370
402
PROTOGENI_GENIRACK=0
403
PROTOGENI_NICKNAME="unknown"
404
STANDALONE_CLEARINGHOUSE=0
405
NODE_USAGE_SUPPORT=0
406
EXP_VIS_SUPPORT=0
407
NOSTACKMIB=0
408
NOSHAREDFS=0
409
IMPORT_TMPDIR="/q"
410
NFSRACY=1
411
SELFLOADER_DATA="__DATA__"
412
NEEDMCQUERIER=0
413 414
OPSVM_ENABLE=0
OPSVM_MOUNTPOINT="/ops"
415
OURTIMEZONE="America/Denver"
416
NODECONSOLE="sio"
417
MFSVERSION=""
418 419
PORTAL_ENABLE=0
PORTAL_ISPRIMARY=0
420
LINUX_FSNODE=0
421
DHCPD_EXTRAIFS=""
422 423
VPUBADDR_BASE="none"
VPUBADDR_BITLEN="none"
424
ARISTA_SWITCH_XMLRPCPORT=80
425 426 427 428
FIREWALL_BOSS=0
FIREWALL_OPS=0
FIREWALL_BOSS_LOCALRULETMPL=""
FIREWALL_OPS_LOCALRULETMPL=""
429
SPEWFROMOPS=0
430
NOSITECHECKIN=0
431
EC2META_ENABLE=0
432
BROWSER_CONSOLE_ENABLE=0
433 434
IPV6_ENABLED=0
IPV6_SUBNET_PREFIX=""
435 436 437
MANAGEMENT_NETWORK="10.249.249.0"
MANAGEMENT_NETMASK="255.255.255.0"
MANAGEMENT_ROUTER="10.249.249.253"
438
NFSMAPTOUSER="root"
439
IMAGEPROVENANCE=0
440
IMAGEDELTAS=0
441
PROFILEVERSIONS=0
442

443 444 445 446 447 448 449 450 451 452
#
# 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 Stoller's avatar
Leigh Stoller committed
453 454 455 456 457 458
#
# Flag as full Emulab build (for clientside). 
#
WITH_EMULAB=1
AC_SUBST(WITH_EMULAB)

459 460 461
#
# Okay, I know this is improper usage of --with. Too bad.
#
462 463
AC_ARG_WITH(TBDEFS,
[  --with-TBDEFS=name	Specify definitions file (defs-default default)],
464 465
[
    if test "$withval" = "yes"; then
466
	AC_MSG_ERROR([Invalid TBDEFS - Must specify the value])
467
    fi
468
    TBDEFS="$withval"
469
    TBPATH=`dirname $withval`
470
],[
471 472 473
    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.
474 475
Copy and modify the defs-example file for your Emulab installation.
defs-default has values for Utah, including client-side image compilations.])
476
])
477 478 479 480 481

if test -f $TBDEFS; then
    #
    # Remove the comments and newlines.  Really, that's what it does.
    #
482 483
    OLDPATH=$PATH
    PATH="$TBPATH:$PATH"
484
    . $TBDEFS
485
    PATH=$OLDPATH
486 487 488
else
	AC_MSG_ERROR([Definitions file $TBDEFS was not found.])
fi
489

490 491 492 493 494
# XXX this can optionally be set in the defs file
if test -n "$FSDIR_SCRATCH"; then
    SCRATCHROOT_DIR="/scratch"
fi

495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531
# 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";;
    esac
fi

532 533 534 535 536 537
#
# 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!
#
538 539 540 541 542
if test x"$prefix" = x"NONE"; then
    AC_DEFINE_UNQUOTED(TBROOT, "/usr/testbed")
else
    AC_DEFINE_UNQUOTED(TBROOT, "$prefix")
fi
543
AC_DEFINE_UNQUOTED(TBDBNAME, "$TBDBNAME")
544
AC_DEFINE_UNQUOTED(TBERRORLOGDBNAME, "$TBERRORLOGDBNAME")
545
AC_DEFINE_UNQUOTED(TBADMINGROUP, "$TBADMINGROUP")
546
AC_DEFINE_UNQUOTED(IPBASE, "$IPBASE")
547 548
AC_DEFINE_UNQUOTED(JAILIPBASE, "$JAILIPBASE")
AC_DEFINE_UNQUOTED(JAILIPMASK, "$JAILIPMASK")
549
AC_DEFINE_UNQUOTED(BOSSNODE, "$BOSSNODE")
550
AC_DEFINE_UNQUOTED(BOSSNODE_IP, "$BOSSNODE_IP")
551
AC_DEFINE_UNQUOTED(EXTERNAL_BOSSNODE_IP, "$EXTERNAL_BOSSNODE_IP")
552
AC_DEFINE_UNQUOTED(USERNODE, "$USERNODE")
553
AC_DEFINE_UNQUOTED(USERNODE_IP, "$USERNODE_IP")
554
AC_DEFINE_UNQUOTED(EXTERNAL_USERNODE_IP, "$EXTERNAL_USERNODE_IP")
555
AC_DEFINE_UNQUOTED(FSNODE, "$FSNODE")
556 557 558 559
if test -n "$FSNODE_IP"; then
	AC_DEFINE_UNQUOTED(FSNODE_IP, "$FSNODE_IP")
elif test "$USERNODE" = "$FSNODE"; then
	AC_DEFINE_UNQUOTED(FSNODE_IP, "$USERNODE_IP")
560 561
elif test "$BOSSNODE" = "$FSNODE"; then
	AC_DEFINE_UNQUOTED(FSNODE_IP, "$BOSSNODE_IP")
562 563 564 565
fi
AC_DEFINE_UNQUOTED(CONTROL_ROUTER_IP, "$CONTROL_ROUTER_IP")
AC_DEFINE_UNQUOTED(CONTROL_NETWORK, "$CONTROL_NETWORK")
AC_DEFINE_UNQUOTED(CONTROL_NETMASK, "$CONTROL_NETMASK")
566 567 568 569 570
AC_DEFINE_UNQUOTED(USERSROOT_DIR, "$USERSROOT_DIR")
AC_DEFINE_UNQUOTED(PROJROOT_DIR, "$PROJROOT_DIR")
AC_DEFINE_UNQUOTED(GROUPSROOT_DIR, "$GROUPSROOT_DIR")
AC_DEFINE_UNQUOTED(SCRATCHROOT_DIR, "$SCRATCHROOT_DIR")
AC_DEFINE_UNQUOTED(SHAREROOT_DIR, "$SHAREROOT_DIR")
571 572 573
AC_DEFINE_UNQUOTED(FSDIR_PROJ, "$FSDIR_PROJ")
AC_DEFINE_UNQUOTED(FSDIR_GROUPS, "$FSDIR_GROUPS")
AC_DEFINE_UNQUOTED(FSDIR_USERS, "$FSDIR_USERS")
574 575 576
if test -n "$FSDIR_SHARE"; then
    AC_DEFINE_UNQUOTED(FSDIR_SHARE, "$FSDIR_SHARE")
fi
577 578 579
if test -n "$FSDIR_SCRATCH"; then
    AC_DEFINE_UNQUOTED(FSDIR_SCRATCH, "$FSDIR_SCRATCH")
fi
580
AC_DEFINE_UNQUOTED(BOSSEVENTPORT, "$BOSSEVENTPORT")
581 582
AC_DEFINE_UNQUOTED(FRISEBEEMCASTADDR, "$FRISEBEEMCASTADDR")
AC_DEFINE_UNQUOTED(FRISEBEEMCASTPORT, "$FRISEBEEMCASTPORT")
583
AC_DEFINE_UNQUOTED(FRISEBEENUMPORTS, "$FRISEBEENUMPORTS")
584

585
AC_DEFINE_UNQUOTED(NTPSERVER, "$NTPSERVER")
586 587 588 589 590
AC_DEFINE_UNQUOTED(EXTERNAL_NTPSERVER1, "$EXTERNAL_NTPSERVER1")
AC_DEFINE_UNQUOTED(EXTERNAL_NTPSERVER2, "$EXTERNAL_NTPSERVER2")
AC_DEFINE_UNQUOTED(EXTERNAL_NTPSERVER3, "$EXTERNAL_NTPSERVER3")
AC_DEFINE_UNQUOTED(EXTERNAL_NTPSERVER4, "$EXTERNAL_NTPSERVER4")
AC_DEFINE_UNQUOTED(NTPDRIFTFILE, "$NTPDRIFTFILE")
591

592 593 594 595
AC_DEFINE_UNQUOTED(MANAGEMENT_NETWORK, "$MANAGEMENT_NETWORK")
AC_DEFINE_UNQUOTED(MANAGEMENT_NETMASK, "$MANAGEMENT_NETMASK")
AC_DEFINE_UNQUOTED(MANAGEMENT_ROUTER, "$MANAGEMENT_ROUTER")

596 597 598 599
if test $OPSDBSUPPORT -eq 1; then
    AC_DEFINE_UNQUOTED(OPSDBSUPPORT, 1)
fi

600 601 602 603
if test $ELVIN_COMPAT -eq 1; then
    AC_DEFINE_UNQUOTED(ELVIN_COMPAT, 1)
fi

604 605 606
if test $ELABINELAB -eq 1; then
    AC_DEFINE_UNQUOTED(ELABINELAB, 1)
fi
607

608 609 610 611 612 613
if test $ISOLATEADMINS -eq 1; then
    AC_DEFINE_UNQUOTED(ISOLATEADMINS, 1)
fi
if test $DYNAMICROOTPASSWORDS -eq 1; then
    AC_DEFINE_UNQUOTED(DYNAMICROOTPASSWORDS, 1)
fi
614 615 616
if test $TPM -eq 1; then
    AC_DEFINE_UNQUOTED(TPM, 1)
fi
617 618 619 620 621 622
if test $NOSHAREDFS -eq 1; then
    AC_DEFINE_UNQUOTED(NOSHAREDFS, 1)
fi
if test $NFSRACY -eq 1; then
    AC_DEFINE_UNQUOTED(NFSRACY, 1)
fi
623 624 625 626
if test $OPSVM_ENABLE -eq 1; then
    AC_DEFINE_UNQUOTED(OPSVM_ENABLE, 1)
    AC_DEFINE_UNQUOTED(OPSVM_MOUNTPOINT, $OPSVM_MOUNTPOINT)
fi
627 628 629
if test $SPEWFROMOPS -eq 1; then
    AC_DEFINE_UNQUOTED(SPEWFROMOPS, 1)
fi
630 631 632 633 634 635
if test $PROTOGENI_SUPPORT -eq 1; then
    AC_DEFINE_UNQUOTED(PROTOGENI_SUPPORT, 1)
fi
if test $PROTOGENI_GENIRACK -eq 1; then
    AC_DEFINE_UNQUOTED(PROTOGENI_GENIRACK, 1)
fi
636 637 638 639 640 641
if test $IMAGEPROVENANCE -eq 1; then
    AC_DEFINE_UNQUOTED(IMAGEPROVENANCE, 1)
fi
if test $IMAGEDELTAS -eq 1; then
    AC_DEFINE_UNQUOTED(IMAGEDELTAS, 1)
fi
642
AC_DEFINE_UNQUOTED(IMPORT_TMPDIR, "$IMPORT_TMPDIR")
643

644 645 646 647
LOG_TESTBED=`echo "LOG_$TBLOGFACIL" | tr a-z A-Z`
AC_DEFINE_UNQUOTED(LOG_TESTBED, $LOG_TESTBED)
AC_SUBST(LOG_TESTBED)

648 649 650 651
#
# 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!
652
#
653 654
if test "$PRIVATE_NETWORK" != "$CONTROL_NETWORK"; then
    DHCPD_CONTROLNET_DECL="subnet $PRIVATE_NETWORK netmask $PRIVATE_NETMASK {}"
655 656
fi

657
#
658 659
# The email addresses need to be be munged for perl scripts. But,
# php needs them un-escaped
660
#
661
TBOPSEMAIL_NOSLASH="$TBOPSEMAIL"
662
TBOPSEMAIL="`echo $TBOPSEMAIL | sed -e 's/@/\\\@/'`"
663 664
TBROBOCOPSEMAIL_NOSLASH="$TBROBOCOPSEMAIL"
TBROBOCOPSEMAIL="`echo $TBROBOCOPSEMAIL | sed -e 's/@/\\\@/'`"
665
TBLOGSEMAIL_NOSLASH="$TBLOGSEMAIL"
666
TBLOGSEMAIL="`echo $TBLOGSEMAIL | sed -e 's/@/\\\@/'`"
667
TBAUDITEMAIL_NOSLASH="$TBAUDITEMAIL"
668
TBAUDITEMAIL="`echo $TBAUDITEMAIL | sed -e 's/@/\\\@/'`"
669 670 671 672
TBWWWEMAIL_NOSLASH="$TBWWWEMAIL"
TBWWWEMAIL="`echo $TBWWWEMAIL | sed -e 's/@/\\\@/'`"
TBAPPROVALEMAIL_NOSLASH="$TBAPPROVALEMAIL"
TBAPPROVALEMAIL="`echo $TBAPPROVALEMAIL | sed -e 's/@/\\\@/'`"
673 674 675 676
TBSTATEDEMAIL_NOSLASH="$TBSTATEDEMAIL_NOSLASH"
TBSTATEDEMAIL="`echo $TBSTATEDEMAIL | sed -e 's/@/\\\@/'`"
TBTESTSUITEEMAIL_NOSLASH="$TBTESTSUITEEMAIL_NOSLASH"
TBTESTSUITEEMAIL="`echo $TBTESTSUITEEMAIL | sed -e 's/@/\\\@/'`"
677

678
if test -n "$TBAUTOMAILEMAIL"; then
679
    TBAUTOMAILEMAIL_NOSLASH="$TBAUTOMAILEMAIL"
680 681 682 683 684
    TBAUTOMAILEMAIL="`echo $TBAUTOMAILEMAIL | sed -e 's/@/\\\@/'`"
else
    TBAUTOMAILEMAIL_NOSLASH="$TBLOGSEMAIL_NOSLASH"
    TBAUTOMAILEMAIL="$TBLOGSEMAIL"
fi
685
if test -n "$TBACTIVEARCHIVE"; then
686
    TBACTIVEARCHIVE_NOSLASH="$TBACTIVEARCHIVE"
687 688
    TBACTIVEARCHIVE="`echo $TBACTIVEARCHIVE | sed -e 's/@/\\\@/'`"
else
689
    TBACTIVEARCHIVE_NOSLASH="$TBOPSEMAIL_NOSLASH"
690 691 692
    TBACTIVEARCHIVE="$TBOPSEMAIL"
fi
if test -n "$TBUSERSARCHIVE"; then
693
    TBUSERSARCHIVE_NOSLASH="$TBUSERSARCHIVE"
694 695
    TBUSERSARCHIVE="`echo $TBUSERSARCHIVE | sed -e 's/@/\\\@/'`"
else
696
    TBUSERSARCHIVE_NOSLASH="$TBOPSEMAIL_NOSLASH"
697 698
    TBUSERSARCHIVE="$TBOPSEMAIL"
fi
Leigh Stoller's avatar
Leigh Stoller committed
699 700 701 702 703 704 705
if test -n "$TBERRORSEMAIL"; then
    TBERRORSEMAIL_NOSLASH="$TBERRORSEMAIL"
    TBERRORSEMAIL="`echo $TBERRORSEMAIL | sed -e 's/@/\\\@/'`"
else
    TBERRORSEMAIL_NOSLASH="$TBOPSEMAIL_NOSLASH"
    TBERRORSEMAIL="$TBOPSEMAIL"
fi
706 707 708
if test -n "$PROTOGENI_EMAIL"; then
    PROTOGENI_EMAIL="`echo $PROTOGENI_EMAIL | sed -e 's/@/\\\@/'`"
fi
709

710 711 712 713 714 715 716 717 718 719
# 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
720
AC_DEFINE_UNQUOTED(OURDOMAIN, "$OURDOMAIN")
721

722 723 724 725 726 727 728 729 730 731 732 733
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
734 735 736 737 738 739
if test -z "$FSNODE_IP"; then
    FSNODE_IP=$USERNODE_IP
fi
if test -z "$EXTERNAL_FSNODE_IP"; then
    EXTERNAL_FSNODE_IP=$FSNODE_IP
fi
740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757
if test -z "$TBAUTHDOMAIN"; then
    TBAUTHDOMAIN=".$OURDOMAIN"
fi
if test -z "$TBAUTHTIMEOUT"; then
    TBAUTHTIMEOUT="21600"
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
758 759
AC_DEFINE_UNQUOTED(TBBASE, "$TBBASE")

760 761 762
if test -z "$THISHOMEBASE"; then
    THISHOMEBASE="Emulab.Net"
fi
763
if test -z "$EVENTSERVER"; then
764
    EVENTSERVER="event-server"
765
fi
766
AC_DEFINE_UNQUOTED(EVENTSERVER, "$EVENTSERVER")
767

768 769 770 771 772 773 774
#
# 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.
#
AC_DEFINE_UNQUOTED(SELFLOADER_DATA, "$SELFLOADER_DATA")

775 776 777
#
# LEDA library path
#
778
AC_ARG_WITH(LEDA,
779
[  --with-LEDA		Specify LEDA path (/usr/testbed default)],
780 781 782 783 784 785 786
[
    if test "$withval" = "yes"; then
        LEDA="$ac_default_prefix/LEDA/LEDA-4.0"
    else
        LEDA="$withval"
    fi
],[
787 788 789 790 791
    if test -d "$ac_default_prefix/LEDA/LEDA-4.0"; then
        LEDA="$ac_default_prefix/LEDA/LEDA-4.0"
    else
        LEDA=""
    fi
792 793 794
])
AC_SUBST(LEDA)

795 796 797
#
# Override LEDA with assign binary.
#
798 799
AC_ARG_WITH(assignbinary,
[  --with-assignbinary	Specify assign binary (overrides LEDA, default on)],
800 801 802 803 804 805 806 807 808
[
    if test "$withval" = "yes"; then
        ASSIGN="assign.bin"
        LEDA=""
    else
        ASSIGN="$withval"
        LEDA=""
    fi
],[
809 810 811 812 813
    if test "$LEDA" = ""; then
        ASSIGN="assign.bin"
    else
        ASSIGN=""
    fi
814 815 816
])
AC_SUBST(ASSIGN)

Robert Ricci's avatar
Robert Ricci committed
817 818 819
#
# Arguments to ssh to disable strict host key checking, etc
#
820
AC_ARG_WITH(ssh-args,
Robert Ricci's avatar
Robert Ricci committed
821 822 823 824
[  --with-ssh-args	Specify ssh arguments when running from testbed scripts ],
[
    SSH_ARGS="$withval"
],[
825
    SSH_ARGS="-q -o BatchMode=yes -o StrictHostKeyChecking=no"
Robert Ricci's avatar
Robert Ricci committed
826 827 828
])
AC_SUBST(SSH_ARGS)

829 830 831 832 833 834 835 836 837 838 839 840
#
# 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)

841 842 843 844 845 846 847 848
#
# 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 Stoller's avatar
Leigh Stoller committed
849
    foo=`/usr/local/sbin/httpd -V | grep SERVER_CONFIG_FILE | grep 'apache2'`
850 851 852
    if test "$foo" = ""; then
        INSTALL_APACHE_CONFIG="/usr/local/etc/apache"
	APACHE_VERSION="1.3"
853
	APACHE_START_COMMAND="/usr/local/etc/rc.d/apache.sh"
854 855 856
    else
        INSTALL_APACHE_CONFIG="/usr/local/etc/apache22"
	APACHE_VERSION="22"
857
	APACHE_START_COMMAND="/usr/local/etc/rc.d/apache22"
858
    fi
859 860
])
AC_SUBST(INSTALL_APACHE_CONFIG)
861
AC_SUBST(APACHE_VERSION)
862
AC_SUBST(APACHE_START_COMMAND)
863

864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879
#
# 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)

880

881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899
#
# 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)

900
#
901
# Disable event system. Relies on Elvin. On by default.
902
#
903
AC_ARG_ENABLE(events,
904
[  --disable-events      Disable events (requires Elvin libraries)])
905

906 907 908 909
if test "$enable_events" = "no"; then
	eventfiles="";
        EVENTSYS=0;
else
910
	eventfiles="event/GNUmakefile clientside/lib/event/GNUmakefile \
911
		    event/etc/elvind-boss.conf event/etc/elvind-ops.conf \
912
		    event/etc/elvind-inetd.conf event/etc/GNUmakefile\
913
		    event/sched/GNUmakefile \
914
		    event/new_sched/GNUmakefile \
915
                    event/example/GNUmakefile event/example/tbsend.pl \
916
		    event/example/tbrecv.pl event/example/tbsend-short.pl \
917
                    event/example/tbsend.py event/example/tbrecv.py \
918
		    event/example/eventdebug.pl \
919
		    event/proxy/GNUmakefile \
920
		    event/monitoring/GNUmakefile \		    
921
		    event/nsetrafgen/GNUmakefile \
922
		    event/nsetrafgen/nseinput.tcl \
923
		    event/nsetrafgen/nse-makepatch \
924
		    event/stated/waitForState \
925
		    event/stated/GNUmakefile event/stated/stated"
926

927
	optional_subdirs="$optional_subdirs event";
928
        EVENTSYS=1;
929
fi
930
AC_SUBST(EVENTSYS)
931

932 933 934 935 936 937
#
# Quickie pelab support.
#
if test $PELABSUPPORT -eq 0; then
	pelabfiles="";
else
938 939 940
	pelabfiles="pelab/GNUmakefile pelab/db/GNUmakefile \
		    pelab/bgmon/GNUmakefile ";
	optional_subdirs="$optional_subdirs pelab";
941 942
fi

943 944 945 946
#
# Enable Windows support.
# Right now this means NTFS support in imagezip, maybe more things later.
# Relies on Linux NTFS library.
947
#
948
AC_ARG_ENABLE(windows,
949
[  --enable-windows      Enable Windows XP support (default)])
950

951 952
if test "$enable_windows" = "no"; then
	WINSUPPORT=0;
953 954 955 956 957 958
elif test "$enable_windows" = "yes"; then
	WINSUPPORT=1;
fi

if test $WINSUPPORT -eq 0; then
	winfiles="";
959
else
960 961 962
	if test $LINUX_FSNODE -ne 0; then
		AC_MSG_ERROR([You cannot define LINUX_FSNODE with windows support]);
	fi
963 964 965 966
	winfiles="clientside/os/imagezip/ntfs/GNUmakefile \
		  clientside/os/imagezip/ntfs/liblocale/GNUmakefile \
		  clientside/os/imagezip/ntfs/libntfs/GNUmakefile \
		  clientside/os/imagezip/fat/GNUmakefile"
967
	optional_subdirs="$optional_subdirs";
968
        AC_DEFINE_UNQUOTED(WINSUPPORT, 1)
969
fi
970

971 972 973 974 975 976 977 978 979
#
# Check for ulsshxmlrpc header
#

AC_CHECK_HEADERS([ulxmlrpcpp/ulxr_config.h],
		 [AC_DEFINE(HAVE_ULXMLRPCPP)
		  HAVE_ULXMLRPCPP="yes"])
AC_SUBST(HAVE_ULXMLRPCPP)

980 981 982 983 984 985 986 987
#
# 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)

988 989 990
AC_ARG_ENABLE(mezzanine,
[  --enable-mezzanine    Enable mezzanine support])

991
if test x"$HAVE_LINUX_VIDEODEV_H" != x"" && test x"$GTK_CONFIG" != x""; then
992
    HAVE_MEZZANINE="$enable_mezzanine"
993 994 995 996 997 998
    AC_DEFINE([HAVE_MEZZANINE])
else
    HAVE_MEZZANINE="no"
fi
AC_SUBST(HAVE_MEZZANINE)

999
#
1000
# Check for a few things used by assign
1001 1002 1003
#
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
1004 1005 1006 1007

#
# Check for Xerces (required for XML support in assign).
#
1008
AC_CHECK_HEADER([xercesc/dom/DOM.hpp],[HAVE_XERCES=yes])
1009 1010 1011 1012 1013 1014

#
# Check for newer versions of boost, which have moved some headers
#
AC_CHECK_HEADER([boost/property_map/property_map.hpp],[NEWER_BOOST=yes])

1015 1016
AC_LANG_RESTORE
AC_SUBST(HAVE_XERCES)
1017
AC_SUBST(NEWER_BOOST)
1018

1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033
#
# Are we building with Clang?
# Taken from MesaLib configure via chromium.
#
AC_MSG_CHECKING([if compiling with clang])
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([], [[
#ifndef __clang__
       not clang
#endif
]])],
[USING_CLANG=yes], [USING_CLANG=no])
AC_MSG_RESULT([$USING_CLANG])
AC_SUBST(USING_CLANG)

1034 1035 1036 1037 1038 1039 1040 1041 1042 1043
#
# Testing mode.  In testing mode scripts should not effect hardware state.
# This is designed to be used with the testsuite software which operates
# on a test copy of the DB.
#
AC_ARG_ENABLE(testmode,
[  --enable-testmode     Enable test mode
  --disable-testmode    Disable test mode])

if test "$enable_testmode" = "yes"; then
1044
	TESTMODE=1
1045
else
1046
	TESTMODE=0
1047 1048 1049
fi
AC_SUBST(TESTMODE)

1050 1051 1052 1053 1054 1055 1056 1057 1058 1059
# Make sure $INSTALL is valid at any depth in our tree, i.e. make it absoulte.
# This can be needed when no valid install is found and autoconf falls back on
# the supplied install.sh, but we called 'configure' with a relative path.
AC_PROG_INSTALL
[case "$INSTALL" in
..*)
        INSTALL=`pwd`/$INSTALL
        ;;
esac]

1060 1061
AC_PATH_PROG(RSYNC, rsync, "", [${PATH}])
if test x"$RSYNC" = x"" || test ! -x "$RSYNC"; then
1062
    AC_MSG_WARN([Rsync is required for logholes to work, see www.rsync.org.])
1063
fi
1064

1065 1066 1067 1068 1069 1070
# Turn on the new fancy banner - normally turned on only at Utah, but
# overridable for other sites
if test "$TBMAINSITE" = 1; then
    FANCYBANNER=1
fi

1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084
#
# Get rid of old third-party distributions in the source tree since we now
# unpack them in the build tree. In the case of tg2.0, it actually breaks
# the build if the old tree exists.
#
echo -n "Checking for errant distributions in src dir ... ";
for baddir in trafgen/tg2.0 linktest/iperf/iperf-2.0.2 linktest/rude/rude-0.70; do
    if test -e "$srcdir/event/$baddir" -o -e "$srcdir/clientside/event/$baddir"; then
	rm -rf $srcdir/event/$baddir $srcdir/clientside/event/$baddir
	echo -n "$baddir "
    fi
done
echo "done"

1085 1086 1087
#
# Check for protogeni rspec.
#
1088
if test "$PROTOGENI_SUPPORT" = "1" -a $ELABINELAB = "0" -a -e "$srcdir/.git"; then
1089
   if test ! -e "$srcdir/protogeni/rspec-geni/.git"; then
1090
	AC_MSG_WARN([protogeni/rspec-geni submodule not initialized yet]);
1091 1092 1093 1094 1095 1096
	echo "Please cd into your source directory and run:"
	echo "    git submodule init"
	echo "    git submodule update"
	echo "Then rerun configure in your object tree"
	exit 1;
   fi
1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108
   module_status=`cd $srcdir; git submodule status protogeni/rspec-geni`
   if test $? -ne 0; then
       AC_MSG_WARN([Cannot get submodule status for protogeni/rspec-geni]);
       exit 1;
   fi
   if echo '$module_status' | grep -E '^\+'; then
	AC_MSG_WARN([protogeni/rspec-geni submodule is out of date]);
	echo "Please cd into your source directory and run:"
	echo "    git submodule update protogeni/rspec-geni"
	echo "Then rerun configure in your object tree"
	exit 1;
   fi
1109 1110
fi

1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123
#
# Set the Protogeni URL, which depends on the the port and name.
#
if test -z "$PROTOGENI_RPCNAME"; then
    PROTOGENI_RPCNAME=$WWW
fi

if test $PROTOGENI_RPCPORT -eq 443; then
    AC_MSG_ERROR([The ProtoGENI RPC port cannot be 443 (https)]);
else
    PROTOGENI_URL="https://$PROTOGENI_RPCNAME:$PROTOGENI_RPCPORT/protogeni/xmlrpc"
fi

1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138
#
# Determine the timezone (stupidity in PHP5, see apache/php.ini)
#
if test -e "$srcdir/utils/gettimezone.pl"; then
    echo -n "Checking to see what timezone we are ... ";
    ZONE=`$srcdir/utils/gettimezone.pl`
    if test $? -ne 0; then
        AC_MSG_WARN([Cannot find gettimezone script; defaulting to $OURTIMEZONE]);
    fi
    OURTIMEZONE=$ZONE
    echo "$OURTIMEZONE"
else
    AC_MSG_WARN([Cannot find gettimezone script; defaulting to $OURTIMEZONE]);
fi

1139 1140 1141 1142 1143 1144 1145 1146
#
# Merge build
#
MERGE_BUILD=0
MERGE_BUILD_SANDBOX=
if test -e "$srcdir/.merge-build"; then
   merge_sandbox=`grep source-tree "$srcdir/.merge-build" | cut -d' ' -f2`
   merge_tree=`grep merge-tree "$srcdir/.merge-build" | cut -d' ' -f2`
1147
   if test "$srcdir" -ef "$srcdir/$merge_sandbox/$merge_tree"; then
1148 1149 1150 1151 1152
      MERGE_BUILD=1
      MERGE_BUILD_SANDBOX=$srcdir/$merge_sandbox
      echo "#/bin/sh"   > sync
      echo              >> sync
      echo "cd \"$srcdir\"" >> sync
Kevin Atkinson's avatar
Kevin Atkinson committed
1153
      echo "utils/merge-build sync" >> sync
1154 1155 1156 1157 1158 1159 1160
      chmod +x sync
      echo "Merge-build enabled"
   fi
fi
AC_SUBST(MERGE_BUILD)
AC_SUBST(MERGE_BUILD_SANDBOX)

1161 1162
outfiles="$outfiles Makeconf GNUmakefile \
	assign/GNUmakefile \
1163
        named/GNUmakefile firewall/GNUmakefile fwrules/GNUmakefile \
1164
	ssl/GNUmakefile ssl/mksig ssl/usercert.cnf ssl/mkserial \
1165
	capture/GNUmakefile \
1166
	db/GNUmakefile \
1167 1168 1169 1170
	db/EmulabConstants.pm db/EmulabFeatures.pm db/Experiment.pm \
	db/Firewall.pm db/Group.pm db/Image.pm db/Interface.pm \
	db/Lan.pm db/Logfile.pm db/Node.pm db/NodeType.pm db/OSinfo.pm \
	db/Project.pm db/User.pm db/VirtExperiment.pm \
1171
	db/nalloc db/nfree db/if2port db/backup \
1172
	db/webcontrol db/node_status db/genelists db/genelists.proxy \
1173
	db/dumperrorlog.proxy \
1174
	db/setsitevar db/newwanode db/audit db/changeuid db/changepid \
1175
	db/libdb.pm db/libtbdb.pm db/inuse db/avail db/nodeip db/showgraph \
1176
	db/emdb.pm db/emdbi.pm db/emutil.pm \
1177
	db/dhcpd_makeconf db/nodelog db/unixgroups \
1178
	db/dbcheck db/interswitch db/dbboot db/schemacheck \
1179
	db/sitevarscheck db/dbfillcheck db/libadminctrl.pm \
1180 1181 1182 1183
	db/update_permissions \
	db/grabron db/stategraph db/readycount \
	db/idletimes db/idlemail db/xmlconvert \
	db/libdb.py db/elabinelab_bossinit \
1184
	ipod/GNUmakefile \
1185
	os/GNUmakefile os/split-image.sh \
1186
	pxe/GNUmakefile pxe/bootinfo.restart \
1187
	security/GNUmakefile security/lastlog_daemon \
Leigh Stoller's avatar
Leigh Stoller committed
1188
        sensors/GNUmakefile \
1189
	sensors/and/GNUmakefile sensors/and/and-emulab.conf \
Timothy Stack's avatar
Timothy Stack committed
1190
	sensors/powermon/GNUmakefile sensors/powermon/powermon \
1191
	sensors/nfstrace/GNUmakefile sensors/nfstrace/nfstrace.init \
1192
	sensors/nfstrace/nfsdump2/GNUmakefile \
1193
	account/GNUmakefile account/tbacct \
1194 1195
	account/addpubkey account/addsfskey account/genpubkeys \
	account/quotamail account/mkusercert account/newproj account/newuser \
1196
	backend/GNUmakefile backend/moduserinfo backend/newgroup \
1197 1198 1199
	backend/newmmlist backend/editexp backend/editimageid \
	backend/editnodetype backend/editsitevars backend/newimageid \
	backend/editgroup backend/newimageid_ez \
1200
	tbsetup/GNUmakefile tbsetup/console_setup tbsetup/spewlogfile \
1201
	tbsetup/snmpit_test/GNUmakefile  \
1202
	tbsetup/snmpit_old/GNUmakefile  \
1203
	tbsetup/spewrpmtar tbsetup/gentopofile tbsetup/power_sgmote.pm \
1204
	tbsetup/console_reset tbsetup/bwconfig tbsetup/power_rpc27.pm \
Mike Hibler's avatar
Mike Hibler committed
1205
	tbsetup/power_mail.pm tbsetup/power_whol.pm \
1206
	tbsetup/os_load tbsetup/os_setup tbsetup/os_select tbsetup/power \
1207
	tbsetup/node_reboot tbsetup/nscheck tbsetup/pxe_select \
1208
	tbsetup/resetvlans tbsetup/rmuser tbsetup/rmproj \
1209
	tbsetup/sched_reload tbsetup/sched_reserve tbsetup/reload_daemon \
1210
	tbsetup/batchexp tbsetup/batch_daemon tbsetup/repos_daemon \
1211
	tbsetup/wanlinkinfo tbsetup/wanassign \
1212
	tbsetup/swapexp	tbsetup/endexp tbsetup/elabinelab \
1213
	tbsetup/eventsys.proxy \
1214 1215
	tbsetup/snmpit.proxy \
	tbsetup/ns2ir/GNUmakefile \
1216
	tbsetup/ns2ir/parse.tcl tbsetup/ns2ir/tb_compat.tcl \
1217
	tbsetup/ns2ir/parse-ns tbsetup/ns2ir/parse.proxy \
Mike Hibler's avatar
Mike Hibler committed
1218
	tbsetup/ns2ir/sim.tcl tbsetup/nseswap tbsetup/nseparse/GNUmakefile \
1219
	tbsetup/nseparse/nse.parse.proxy tbsetup/nseparse/parse-nse \
1220 1221 1222 1223
	tbsetup/nseparse/nse.parse.tcl \
	tbsetup/nsverify/GNUmakefile tbsetup/nsverify/nstbparse \
	tbsetup/nsverify/verify-ns \
	tbsetup/db2ns \
Mike Hibler's avatar
Mike Hibler committed
1224
	tbsetup/tbprerun tbsetup/tbswap tbsetup/tbend tbsetup/tbrestart \
Leigh Stoller's avatar
Leigh Stoller committed
1225 1226
	tbsetup/tbreport tbsetup/named_setup tbsetup/exports_setup \
	tbsetup/checkpass/GNUmakefile tbsetup/assign_wrapper tbsetup/ptopgen \
1227
	tbsetup/assign_wrapper2 \
1228
	tbsetup/node_update \
1229 1230 1231 1232 1233 1234
	tbsetup/savelogs tbsetup/setgroups \
	tbsetup/savelogs.proxy tbsetup/rmgroup tbsetup/mkexpdir \
	tbsetup/node_control tbsetup/node_attributes \
        tbsetup/mkgroup tbsetup/eventsys_start \
	tbsetup/eventsys_control \
	tbsetup/mkproj tbsetup/libtestbed.pm \
1235
	tbsetup/vnode_setup tbsetup/staticroutes \
1236
	tbsetup/console_setup.proxy tbsetup/exports_setup.proxy \
Mike Hibler's avatar
Mike Hibler committed
1237
	tbsetup/smbpasswd_setup.proxy \
1238
	tbsetup/checkports tbsetup/libaudit.pm \
1239
	tbsetup/libreboot.pm tbsetup/libosload.pm tbsetup/libadminmfs.pm \
1240
	tbsetup/sfskey_update tbsetup/sfskey_update.proxy \
1241 1242
	tbsetup/idleswap tbsetup/switchmac \
	tbsetup/newnode_reboot \
1243
        tbsetup/libtestbed.py \
1244
	tbsetup/libArchive.pm tbsetup/archive_control \
1245
	tbsetup/tarfiles_setup \
1246
	tbsetup/fetchtar.proxy tbsetup/webfrisbeekiller \
1247
	tbsetup/tcpp \
1248
	tbsetup/plab/GNUmakefile tbsetup/plab/libplab.py \
1249
        tbsetup/plab/mod_dslice.py tbsetup/plab/mod_PLC.py \
1250
        tbsetup/plab/mod_PLCNM.py \
Kirk Webb's avatar
Kirk Webb committed
1251
	tbsetup/plab/plabslice tbsetup/plab/plabnode tbsetup/plab/plabrenewd \
1252
        tbsetup/plab/plabrenewonce \
1253
	tbsetup/plab/plabmetrics tbsetup/plab/plabstats \
1254
	tbsetup/plab/plabmonitord tbsetup/plab/libplabmon.pm \
1255 1256
        tbsetup/plab/plabmon_badpool.pm tbsetup/plab/plabmon_goodpool.pm \
        tbsetup/plab/plablinkdata \
1257
	tbsetup/plab/libdslice/GNUmakefile tbsetup/plab/etc/GNUmakefile \
1258
	tbsetup/plab/plabdist tbsetup/plab/plabhttpd \
Kirk Webb's avatar
Kirk Webb committed
1259
	tbsetup/plab/plabdiscover tbsetup/plab/etc/netbed_files/GNUmakefile \
1260
	tbsetup/ipassign/GNUmakefile tbsetup/ipassign/src/GNUmakefile \
1261
	tbsetup/ipassign/ipassign_wrapper tbsetup/assign_prepass \
1262
	tbsetup/panic tbsetup/tbrsync tbsetup/nfstrace \
1263
	tbsetup/checkup/GNUmakefile tbsetup/checkup/checkup_daemon \
1264
	tbsetup/libtblog.pm tbsetup/template_cvsroot/GNUmakefile \
1265
	tip/GNUmakefile tip/console \
1266
	tmcd/GNUmakefile tmcd/tmcd.restart \
1267
	utils/GNUmakefile utils/vlandiff utils/vlansync utils/delay_config \
1268
	utils/sshtb utils/create_image utils/node_admin \
1269
	utils/firstuser utils/export_tables utils/eventping \
Leigh Stoller's avatar
Leigh Stoller committed
1270
	utils/cvsupd.pl utils/newnode utils/grantnodetype \
1271
	utils/nsgen/GNUmakefile utils/nsgen/webnsgen \
1272
	utils/link_config utils/import_commitlog \
1273
	utils/opsreboot utils/deletenode utils/spewleds \
1274
	utils/grabwebcams utils/loghole utils/webcopy \
1275
	utils/setdest utils/grabswitchconfig \
1276
        utils/backupswitches utils/setbuildinfo utils/checkquota \
1277
	utils/spewconlog utils/xlogin \
1278
	utils/opsdb_control utils/opsdb_control.proxy \
1279
	utils/remove_old_www utils/epmodeset \
1280
	utils/mkblob utils/rmblob utils/ctrladdr utils/tcppd \
1281
	utils/mktestbedtest \
1282
	www/GNUmakefile www/defs.php3 www/dbdefs.php3 www/xmlrpc.php3 \
1283
	www/xmlrpcpipe.php3 \
1284 1285
	www/swish.conf www/websearch \
	www/garcia-telemetry/GNUmakefile www/tutorial/GNUmakefile \
1286
	www/sec-check/GNUmakefile www/emusearch.xml \
Mike Hibler's avatar
Mike Hibler committed
1287
	vis/GNUmakefile vis/webvistopology vis/dbvistopology \
1288
	vis/prerender vis/prerender_all vis/render \
Mike Hibler's avatar
Mike Hibler committed
1289
	vis/floormap vis/webfloormap \
1290
	rc.d/GNUmakefile rc.d/2.mysql-server.sh rc.d/3.testbed.sh \
1291
	rc.d/2.elvind.sh rc.d/3.plab.sh rc.d/2.dhcpd.sh rc.d/3.and.sh \
1292
	rc.d/3.elvin_gateway.sh rc.d/pelab.sh rc.d/capture.sh \
1293
	rc.d/3.mfrisbeed.sh rc.d/3.mfrisbeed-subboss.sh \
1294
	tools/GNUmakefile rc.d/1.mysql-server.sh tools/svn/GNUmakefile \
Leigh Stoller's avatar
Leigh Stoller committed
1295
	tools/teachswitch/GNUmakefile \
1296
        tools/webcamapplet/GNUmakefile tools/whol/GNUmakefile \
1297
        tools/selectapplet/GNUmakefile tools/rmanage/GNUmakefile \
1298
	$eventfiles \
1299
	$winfiles \
1300
	$pelabfiles \
1301
	apache/GNUmakefile apache/php.ini \
1302 1303
        xmlrpc/GNUmakefile xmlrpc/emulabclient.py xmlrpc/emulabserver.py \
	xmlrpc/sshxmlrpc_client.py xmlrpc/sshxmlrpc_server.py \
1304
	xmlrpc/sslxmlrpc_client.py xmlrpc/sslxmlrpc_server.py \
1305
	xmlrpc/webxmlrpc xmlrpc/script_wrapper.py xmlrpc/libxmlrpc.pm \
Mike Hibler's avatar
Mike Hibler committed
1306
	xmlrpc/emulab xmlrpc/node xmlrpc/experiment xmlrpc/fs xmlrpc/user \
1307
	xmlrpc/imageid xmlrpc/osid xmlrpc/server xmlrpc/xmlrpcbag \
1308
	cdrom/GNUmakefile cdrom/tbbootconfig/GNUmakefile \
1309
	cdrom/groklilo/GNUmakefile \
1310
	flash/GNUmakefile \
1311
	dhcpd/dhcpd.conf.template dhcpd/GNUmakefile \
1312
	dhcpd/dhcpd.conf.subboss.template \
1313 1314
	ntpd/GNUmakefile \
	ntpd/ntp.conf-client ntpd/ntp.conf-server ntpd/ntp.conf-external \
1315
	install/GNUmakefile install/installvars.pm install/emulab-install \
1316
	install/ops-install install/boss-install install/fs-install \
Leigh Stoller's avatar
Leigh Stoller committed
1317
	install/load-descriptors install/dump-descriptors \
1318
	install/newnode_sshkeys/GNUmakefile install/smb.conf.head \
1319
        install/clrhouse-install install/genirack/GNUmakefile \
1320
	install/libinstall.pm install/update-install install/update-testbed \
1321
	mote/GNUmakefile mote/tbuisp mote/tbsgmotepower mote/newmote \