configure.in 45 KB
Newer Older
Leigh B. Stoller's avatar
Leigh B. 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 B. Stoller's avatar
Leigh B. 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 B Stoller's avatar
Leigh B 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 B Stoller's avatar
Leigh B Stoller committed
76
CPPFLAGS="-I/usr/local/include"
77

Leigh B Stoller's avatar
Leigh B 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)
Mike Hibler's avatar
Mike Hibler committed
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 B. Stoller's avatar
Leigh B. 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)
Timothy Stack's avatar
Timothy Stack committed
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)
Mike Hibler's avatar
Mike Hibler committed
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 B. Stoller's avatar
Leigh B. Stoller committed
251
AC_SUBST(PROTOGENI_SUPPORT)
252 253 254
AC_SUBST(PROTOGENI_WEBSITE)
AC_SUBST(PROTOGENI_ISCLEARINGHOUSE)
AC_SUBST(PROTOGENI_EMAIL)
Leigh B. Stoller's avatar
Leigh B. 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)
Gary Wong's avatar
Gary Wong committed
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)
Gary Wong's avatar
Gary Wong committed
291 292
AC_SUBST(IPV6_ENABLED)
AC_SUBST(IPV6_SUBNET_PREFIX)
293
AC_SUBST(NFSMAPTOUSER)
294

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

324 325 326 327 328
#
# For snmpit support of Arista switch.
#
AC_SUBST(ARISTA_SWITCH_XMLRPCPORT)

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

437 438 439 440 441 442 443 444 445 446
#
# 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
447 448 449 450 451 452
#
# Flag as full Emulab build (for clientside). 
#
WITH_EMULAB=1
AC_SUBST(WITH_EMULAB)

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

if test -f $TBDEFS; then
    #
    # Remove the comments and newlines.  Really, that's what it does.
    #
476 477
    OLDPATH=$PATH
    PATH="$TBPATH:$PATH"
478
    . $TBDEFS
479
    PATH=$OLDPATH
480 481 482
else
	AC_MSG_ERROR([Definitions file $TBDEFS was not found.])
fi
483

484 485 486 487 488
# 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
489 490 491 492 493 494 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
# 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

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

579
AC_DEFINE_UNQUOTED(NTPSERVER, "$NTPSERVER")
580 581 582 583 584
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")
585

586 587 588 589
AC_DEFINE_UNQUOTED(MANAGEMENT_NETWORK, "$MANAGEMENT_NETWORK")
AC_DEFINE_UNQUOTED(MANAGEMENT_NETMASK, "$MANAGEMENT_NETMASK")
AC_DEFINE_UNQUOTED(MANAGEMENT_ROUTER, "$MANAGEMENT_ROUTER")

590 591 592 593
if test $OPSDBSUPPORT -eq 1; then
    AC_DEFINE_UNQUOTED(OPSDBSUPPORT, 1)
fi

594 595 596 597
if test $ELVIN_COMPAT -eq 1; then
    AC_DEFINE_UNQUOTED(ELVIN_COMPAT, 1)
fi

598 599 600
if test $ELABINELAB -eq 1; then
    AC_DEFINE_UNQUOTED(ELABINELAB, 1)
fi
601

602 603 604 605 606 607
if test $ISOLATEADMINS -eq 1; then
    AC_DEFINE_UNQUOTED(ISOLATEADMINS, 1)
fi
if test $DYNAMICROOTPASSWORDS -eq 1; then
    AC_DEFINE_UNQUOTED(DYNAMICROOTPASSWORDS, 1)
fi
608 609 610
if test $TPM -eq 1; then
    AC_DEFINE_UNQUOTED(TPM, 1)
fi
611 612 613 614 615 616
if test $NOSHAREDFS -eq 1; then
    AC_DEFINE_UNQUOTED(NOSHAREDFS, 1)
fi
if test $NFSRACY -eq 1; then
    AC_DEFINE_UNQUOTED(NFSRACY, 1)
fi
617 618 619 620
if test $OPSVM_ENABLE -eq 1; then
    AC_DEFINE_UNQUOTED(OPSVM_ENABLE, 1)
    AC_DEFINE_UNQUOTED(OPSVM_MOUNTPOINT, $OPSVM_MOUNTPOINT)
fi
621 622 623
if test $SPEWFROMOPS -eq 1; then
    AC_DEFINE_UNQUOTED(SPEWFROMOPS, 1)
fi
624 625 626 627 628 629
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
630
AC_DEFINE_UNQUOTED(IMPORT_TMPDIR, "$IMPORT_TMPDIR")
631

632 633 634 635
LOG_TESTBED=`echo "LOG_$TBLOGFACIL" | tr a-z A-Z`
AC_DEFINE_UNQUOTED(LOG_TESTBED, $LOG_TESTBED)
AC_SUBST(LOG_TESTBED)

636 637 638 639
#
# 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!
640
#
641 642
if test "$PRIVATE_NETWORK" != "$CONTROL_NETWORK"; then
    DHCPD_CONTROLNET_DECL="subnet $PRIVATE_NETWORK netmask $PRIVATE_NETMASK {}"
643 644
fi

645
#
646 647
# The email addresses need to be be munged for perl scripts. But,
# php needs them un-escaped
648
#
649
TBOPSEMAIL_NOSLASH="$TBOPSEMAIL"
650
TBOPSEMAIL="`echo $TBOPSEMAIL | sed -e 's/@/\\\@/'`"
651 652
TBROBOCOPSEMAIL_NOSLASH="$TBROBOCOPSEMAIL"
TBROBOCOPSEMAIL="`echo $TBROBOCOPSEMAIL | sed -e 's/@/\\\@/'`"
653
TBLOGSEMAIL_NOSLASH="$TBLOGSEMAIL"
654
TBLOGSEMAIL="`echo $TBLOGSEMAIL | sed -e 's/@/\\\@/'`"
655
TBAUDITEMAIL_NOSLASH="$TBAUDITEMAIL"
656
TBAUDITEMAIL="`echo $TBAUDITEMAIL | sed -e 's/@/\\\@/'`"
657 658 659 660
TBWWWEMAIL_NOSLASH="$TBWWWEMAIL"
TBWWWEMAIL="`echo $TBWWWEMAIL | sed -e 's/@/\\\@/'`"
TBAPPROVALEMAIL_NOSLASH="$TBAPPROVALEMAIL"
TBAPPROVALEMAIL="`echo $TBAPPROVALEMAIL | sed -e 's/@/\\\@/'`"
661 662 663 664
TBSTATEDEMAIL_NOSLASH="$TBSTATEDEMAIL_NOSLASH"
TBSTATEDEMAIL="`echo $TBSTATEDEMAIL | sed -e 's/@/\\\@/'`"
TBTESTSUITEEMAIL_NOSLASH="$TBTESTSUITEEMAIL_NOSLASH"
TBTESTSUITEEMAIL="`echo $TBTESTSUITEEMAIL | sed -e 's/@/\\\@/'`"
665

666
if test -n "$TBAUTOMAILEMAIL"; then
667
    TBAUTOMAILEMAIL_NOSLASH="$TBAUTOMAILEMAIL"
668 669 670 671 672
    TBAUTOMAILEMAIL="`echo $TBAUTOMAILEMAIL | sed -e 's/@/\\\@/'`"
else
    TBAUTOMAILEMAIL_NOSLASH="$TBLOGSEMAIL_NOSLASH"
    TBAUTOMAILEMAIL="$TBLOGSEMAIL"
fi
673
if test -n "$TBACTIVEARCHIVE"; then
674
    TBACTIVEARCHIVE_NOSLASH="$TBACTIVEARCHIVE"
675 676
    TBACTIVEARCHIVE="`echo $TBACTIVEARCHIVE | sed -e 's/@/\\\@/'`"
else
677
    TBACTIVEARCHIVE_NOSLASH="$TBOPSEMAIL_NOSLASH"
678 679 680
    TBACTIVEARCHIVE="$TBOPSEMAIL"
fi
if test -n "$TBUSERSARCHIVE"; then
681
    TBUSERSARCHIVE_NOSLASH="$TBUSERSARCHIVE"
682 683
    TBUSERSARCHIVE="`echo $TBUSERSARCHIVE | sed -e 's/@/\\\@/'`"
else
684
    TBUSERSARCHIVE_NOSLASH="$TBOPSEMAIL_NOSLASH"
685 686
    TBUSERSARCHIVE="$TBOPSEMAIL"
fi
Leigh B. Stoller's avatar
Leigh B. Stoller committed
687 688 689 690 691 692 693
if test -n "$TBERRORSEMAIL"; then
    TBERRORSEMAIL_NOSLASH="$TBERRORSEMAIL"
    TBERRORSEMAIL="`echo $TBERRORSEMAIL | sed -e 's/@/\\\@/'`"
else
    TBERRORSEMAIL_NOSLASH="$TBOPSEMAIL_NOSLASH"
    TBERRORSEMAIL="$TBOPSEMAIL"
fi
694 695 696
if test -n "$PROTOGENI_EMAIL"; then
    PROTOGENI_EMAIL="`echo $PROTOGENI_EMAIL | sed -e 's/@/\\\@/'`"
fi
697

698 699 700 701 702 703 704 705 706 707
# 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
708
AC_DEFINE_UNQUOTED(OURDOMAIN, "$OURDOMAIN")
709

710 711 712 713 714 715 716 717 718 719 720 721
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
722 723 724 725 726 727
if test -z "$FSNODE_IP"; then
    FSNODE_IP=$USERNODE_IP
fi
if test -z "$EXTERNAL_FSNODE_IP"; then
    EXTERNAL_FSNODE_IP=$FSNODE_IP
fi
728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745
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
746 747
AC_DEFINE_UNQUOTED(TBBASE, "$TBBASE")

748 749 750
if test -z "$THISHOMEBASE"; then
    THISHOMEBASE="Emulab.Net"
fi
751
if test -z "$EVENTSERVER"; then
752
    EVENTSERVER="event-server"
753
fi
754
AC_DEFINE_UNQUOTED(EVENTSERVER, "$EVENTSERVER")
755

756 757 758 759 760 761 762
#
# 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")

763 764 765
#
# LEDA library path
#
766
AC_ARG_WITH(LEDA,
767
[  --with-LEDA		Specify LEDA path (/usr/testbed default)],
768 769 770 771 772 773 774
[
    if test "$withval" = "yes"; then
        LEDA="$ac_default_prefix/LEDA/LEDA-4.0"
    else
        LEDA="$withval"
    fi
],[
775 776 777 778 779
    if test -d "$ac_default_prefix/LEDA/LEDA-4.0"; then
        LEDA="$ac_default_prefix/LEDA/LEDA-4.0"
    else
        LEDA=""
    fi
780 781 782
])
AC_SUBST(LEDA)

783 784 785
#
# Override LEDA with assign binary.
#
786 787
AC_ARG_WITH(assignbinary,
[  --with-assignbinary	Specify assign binary (overrides LEDA, default on)],
788 789 790 791 792 793 794 795 796
[
    if test "$withval" = "yes"; then
        ASSIGN="assign.bin"
        LEDA=""
    else
        ASSIGN="$withval"
        LEDA=""
    fi
],[
797 798 799 800 801
    if test "$LEDA" = ""; then
        ASSIGN="assign.bin"
    else
        ASSIGN=""
    fi
802 803 804
])
AC_SUBST(ASSIGN)

Robert Ricci's avatar
Robert Ricci committed
805 806 807
#
# Arguments to ssh to disable strict host key checking, etc
#
808
AC_ARG_WITH(ssh-args,
Robert Ricci's avatar
Robert Ricci committed
809 810 811 812
[  --with-ssh-args	Specify ssh arguments when running from testbed scripts ],
[
    SSH_ARGS="$withval"
],[
813
    SSH_ARGS="-q -o BatchMode=yes -o StrictHostKeyChecking=no"
Robert Ricci's avatar
Robert Ricci committed
814 815 816
])
AC_SUBST(SSH_ARGS)

817 818 819 820 821 822 823 824 825 826 827 828
#
# 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)

829 830 831 832 833 834 835 836
#
# 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
837
    foo=`/usr/local/sbin/httpd -V | grep SERVER_CONFIG_FILE | grep 'apache2'`
838 839 840
    if test "$foo" = ""; then
        INSTALL_APACHE_CONFIG="/usr/local/etc/apache"
	APACHE_VERSION="1.3"
841
	APACHE_START_COMMAND="/usr/local/etc/rc.d/apache.sh"
842 843 844
    else
        INSTALL_APACHE_CONFIG="/usr/local/etc/apache22"
	APACHE_VERSION="22"
845
	APACHE_START_COMMAND="/usr/local/etc/rc.d/apache22"
846
    fi
847 848
])
AC_SUBST(INSTALL_APACHE_CONFIG)
849
AC_SUBST(APACHE_VERSION)
850
AC_SUBST(APACHE_START_COMMAND)
851

852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867
#
# 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)

868

869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887
#
# 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)

888
#
889
# Disable event system. Relies on Elvin. On by default.
890
#
891
AC_ARG_ENABLE(events,
892
[  --disable-events      Disable events (requires Elvin libraries)])
893

894 895 896 897
if test "$enable_events" = "no"; then
	eventfiles="";
        EVENTSYS=0;
else
898
	eventfiles="event/GNUmakefile clientside/lib/event/GNUmakefile \
899
		    event/etc/elvind-boss.conf event/etc/elvind-ops.conf \
900
		    event/etc/elvind-inetd.conf event/etc/GNUmakefile\
901
		    event/sched/GNUmakefile \
Ryan Jackson's avatar
Ryan Jackson committed
902
		    event/new_sched/GNUmakefile \
903
                    event/example/GNUmakefile event/example/tbsend.pl \
904
		    event/example/tbrecv.pl event/example/tbsend-short.pl \
905
                    event/example/tbsend.py event/example/tbrecv.py \
906
		    event/example/eventdebug.pl \
907
		    event/proxy/GNUmakefile \
Gary Wong's avatar
Gary Wong committed
908
		    event/monitoring/GNUmakefile \		    
909
		    event/nsetrafgen/GNUmakefile \
910
		    event/nsetrafgen/nseinput.tcl \
911
		    event/nsetrafgen/nse-makepatch \
912
		    event/stated/waitForState \
913
		    event/stated/GNUmakefile event/stated/stated"
914

915
	optional_subdirs="$optional_subdirs event";
916
        EVENTSYS=1;
917
fi
918
AC_SUBST(EVENTSYS)
919

920 921 922 923 924 925
#
# Quickie pelab support.
#
if test $PELABSUPPORT -eq 0; then
	pelabfiles="";
else
926 927 928
	pelabfiles="pelab/GNUmakefile pelab/db/GNUmakefile \
		    pelab/bgmon/GNUmakefile ";
	optional_subdirs="$optional_subdirs pelab";
929 930
fi

931 932 933 934
#
# Enable Windows support.
# Right now this means NTFS support in imagezip, maybe more things later.
# Relies on Linux NTFS library.
935
#
936
AC_ARG_ENABLE(windows,
937
[  --enable-windows      Enable Windows XP support (default)])
938

939 940
if test "$enable_windows" = "no"; then
	WINSUPPORT=0;
941 942 943 944 945 946
elif test "$enable_windows" = "yes"; then
	WINSUPPORT=1;
fi

if test $WINSUPPORT -eq 0; then
	winfiles="";
947
else
948 949 950
	if test $LINUX_FSNODE -ne 0; then
		AC_MSG_ERROR([You cannot define LINUX_FSNODE with windows support]);
	fi
951 952 953 954
	winfiles="clientside/os/imagezip/ntfs/GNUmakefile \
		  clientside/os/imagezip/ntfs/liblocale/GNUmakefile \
		  clientside/os/imagezip/ntfs/libntfs/GNUmakefile \
		  clientside/os/imagezip/fat/GNUmakefile"
955
	optional_subdirs="$optional_subdirs";
956
        AC_DEFINE_UNQUOTED(WINSUPPORT, 1)
957
fi
958

959 960 961 962 963 964 965 966 967
#
# Check for ulsshxmlrpc header
#

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

968 969 970 971 972 973 974 975
#
# 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)

976 977 978
AC_ARG_ENABLE(mezzanine,
[  --enable-mezzanine    Enable mezzanine support])

979
if test x"$HAVE_LINUX_VIDEODEV_H" != x"" && test x"$GTK_CONFIG" != x""; then
980
    HAVE_MEZZANINE="$enable_mezzanine"
981 982 983 984 985 986
    AC_DEFINE([HAVE_MEZZANINE])
else
    HAVE_MEZZANINE="no"
fi
AC_SUBST(HAVE_MEZZANINE)

987
#
988
# Check for a few things used by assign
989 990 991
#
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
992 993 994 995

#
# Check for Xerces (required for XML support in assign).
#
996
AC_CHECK_HEADER([xercesc/dom/DOM.hpp],[HAVE_XERCES=yes])
997 998 999 1000 1001 1002

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

1003 1004
AC_LANG_RESTORE
AC_SUBST(HAVE_XERCES)
1005
AC_SUBST(NEWER_BOOST)
1006

1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021
#
# 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)

1022 1023 1024 1025 1026 1027 1028 1029 1030 1031
#
# 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
1032
	TESTMODE=1
1033
else
1034
	TESTMODE=0
1035 1036 1037
fi
AC_SUBST(TESTMODE)

1038 1039 1040 1041 1042 1043 1044 1045 1046 1047
# 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]

1048 1049
AC_PATH_PROG(RSYNC, rsync, "", [${PATH}])
if test x"$RSYNC" = x"" || test ! -x "$RSYNC"; then
1050
    AC_MSG_WARN([Rsync is required for logholes to work, see www.rsync.org.])
1051
fi
1052

1053 1054 1055 1056 1057 1058
# 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

1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072
#
# 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"

1073 1074 1075
#
# Check for protogeni rspec.
#
Mike Hibler's avatar
Mike Hibler committed
1076
if test "$PROTOGENI_SUPPORT" = "1" -a $ELABINELAB = "0" -a -e "$srcdir/.git"; then
1077
   if test ! -e "$srcdir/protogeni/rspec-geni/.git"; then
1078
	AC_MSG_WARN([protogeni/rspec-geni submodule not initialized yet]);
1079 1080 1081 1082 1083 1084
	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
1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096
   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
1097 1098
fi

1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111
#
# 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

1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126
#
# 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

1127 1128 1129 1130 1131 1132 1133 1134
#
# 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`
1135
   if test "$srcdir" -ef "$srcdir/$merge_sandbox/$merge_tree"; then
1136 1137 1138 1139 1140
      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
1141
      echo "utils/merge-build sync" >> sync
1142 1143 1144 1145 1146 1147 1148
      chmod +x sync
      echo "Merge-build enabled"
   fi
fi
AC_SUBST(MERGE_BUILD)
AC_SUBST(MERGE_BUILD_SANDBOX)

1149 1150
outfiles="$outfiles Makeconf GNUmakefile \
	assign/GNUmakefile \
1151
        named/GNUmakefile firewall/GNUmakefile fwrules/GNUmakefile \
1152
	ssl/GNUmakefile ssl/mksig ssl/usercert.cnf ssl/mkserial \
1153
	capture/GNUmakefile \
1154
	db/GNUmakefile \
1155 1156 1157 1158
	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 \
1159
	db/nalloc db/nfree db/if2port db/backup \
1160
	db/webcontrol db/node_status db/genelists db/genelists.proxy \
Leigh B. Stoller's avatar
Leigh B. Stoller committed
1161
	db/dumperrorlog.proxy \
1162
	db/setsitevar db/newwanode db/audit db/changeuid db/changepid \
1163
	db/libdb.pm db/libtbdb.pm db/inuse db/avail db/nodeip db/showgraph \
1164
	db/emdb.pm db/emdbi.pm db/emutil.pm \
1165
	db/dhcpd_makeconf db/nodelog db/unixgroups \
1166
	db/dbcheck db/interswitch db/dbboot db/schemacheck \
1167
	db/sitevarscheck db/dbfillcheck db/libadminctrl.pm \
1168 1169 1170 1171
	db/update_permissions \
	db/grabron db/stategraph db/readycount \
	db/idletimes db/idlemail db/xmlconvert \
	db/libdb.py db/elabinelab_bossinit \
Mike Hibler's avatar
Mike Hibler committed
1172
	ipod/GNUmakefile \
1173
	os/GNUmakefile os/split-image.sh \
1174
	pxe/GNUmakefile pxe/bootinfo.restart \
1175
	security/GNUmakefile security/lastlog_daemon \
Leigh B Stoller's avatar
Leigh B Stoller committed
1176
        sensors/GNUmakefile \
1177
	sensors/and/GNUmakefile sensors/and/and-emulab.conf \
Timothy Stack's avatar
Timothy Stack committed
1178
	sensors/powermon/GNUmakefile sensors/powermon/powermon \
1179
	sensors/nfstrace/GNUmakefile sensors/nfstrace/nfstrace.init \
1180
	sensors/nfstrace/nfsdump2/GNUmakefile \
1181
	account/GNUmakefile account/tbacct \
1182 1183
	account/addpubkey account/addsfskey account/genpubkeys \
	account/quotamail account/mkusercert account/newproj account/newuser \
1184
	backend/GNUmakefile backend/moduserinfo backend/newgroup \
1185 1186 1187
	backend/newmmlist backend/editexp backend/editimageid \
	backend/editnodetype backend/editsitevars backend/newimageid \
	backend/editgroup backend/newimageid_ez \
1188
	tbsetup/GNUmakefile tbsetup/console_setup tbsetup/spewlogfile \
Leigh B Stoller's avatar