All new accounts created on Gitlab now require administrator approval. If you invite any collaborators, please let Flux staff know so they can approve the accounts.

GNUmakefile.in 10.4 KB
Newer Older
1
#
Leigh B. Stoller's avatar
Leigh B. Stoller committed
2
# EMULAB-COPYRIGHT
3
# Copyright (c) 2000-2009 University of Utah and the Flux Group.
Leigh B. Stoller's avatar
Leigh B. Stoller committed
4
# All rights reserved.
5
#
Leigh B. Stoller's avatar
Leigh B. Stoller committed
6

7 8 9 10
SRCDIR		= @srcdir@
TESTBED_SRCDIR	= @top_srcdir@
OBJDIR		= ..
SUBDIR		= tbsetup
11
UNIFIED         = @UNIFIED_BOSS_AND_OPS@
12
PLABSUPPORT     = @PLABSUPPORT@
13
ISMAINSITE	= @TBMAINSITE@
14
SYSTEM         := $(shell uname -s)
15

16
include $(OBJDIR)/Makeconf
17

18
SUBDIRS		= checkpass ns2ir nsverify nseparse checkup template_cvsroot
Leigh B. Stoller's avatar
Leigh B. Stoller committed
19

Chad Barb's avatar
 
Chad Barb committed
20
BIN_STUFF	= power snmpit tbend tbprerun tbreport \
21
		  os_load endexp batchexp swapexp \
22
		  node_reboot nscheck node_update savelogs node_control \
Chad Barb's avatar
 
Chad Barb committed
23
		  portstats checkports eventsys_control os_select tbrestart \
Kirk Webb's avatar
 
Kirk Webb committed
24
		  tbswap nseswap tarfiles_setup node_history tbrsync \
25
		  archive_control template_create \
26
		  template_swapin template_swapout template_graph \
27
		  template_exprun template_delete template_metadata \
28
		  template_export template_control template_commit \
29
		  template_analyze template_linkgraph template_instantiate \
30
		  template_revise template_checkout vtopgen mapper regression
31

32
SBIN_STUFF	= resetvlans console_setup.proxy sched_reload named_setup \
33
		  batch_daemon exports_setup reload_daemon sched_reserve \
34
		  console_reset db2ns bwconfig frisbeelauncher \
35
		  frisbeeimage rmgroup mkgroup setgroups mkproj modgroups \
36
		  exports_setup.proxy vnode_setup eventsys_start \
37
		  sfskey_update sfskey_update.proxy rmuser idleswap \
38
		  newnode_reboot savelogs.proxy eventsys.proxy \
39
		  elabinelab snmpit.proxy panic node_attributes \
40
		  nfstrace plabinelab smbpasswd_setup smbpasswd_setup.proxy \
41 42
		  rmproj snmpit.proxynew snmpit.proxyv2 pool_daemon \
		  checknodes_daemon
43 44 45
ifeq ($(ISMAINSITE),1)
SBIN_STUFF     += repos_daemon
endif
46

47
CTRLSBIN_STUFF  = console_setup.proxy sfskey_update.proxy \
48
		  savelogs.proxy eventsys.proxy
49

50 51
CTRLBIN_STUFF	= fetchtar.proxy

52
FSBIN_STUFF	= exports_setup.proxy smbpasswd_setup.proxy
53

54 55
WEB_SBIN_SCRIPTS= webrmproj webpanic webrmgroup \
                  webmkgroup websetgroups webmkproj \
Leigh B. Stoller's avatar
Leigh B. Stoller committed
56 57
                  webrmuser webmodgroups webidleswap webnode_attributes

58 59 60
WEB_BIN_SCRIPTS = webnscheck webendexp webtbreport webbatchexp \
		  webnode_history webswapexp webeventsys_control \
		  webnode_reboot webtarfiles_setup webarchive_control \
61
		  webnode_control webnode_update webtemplate_create \
62
		  webtemplate_swapin webtemplate_swapout webtemplate_exprun \
63
		  webtemplate_graph webtemplate_metadata webtemplate_export \
64
		  webtemplate_control webtemplate_commit webtemplate_analyze \
65
		  webtemplate_linkgraph webtemplate_instantiate \
66
		  webtemplate_delete webtemplate_revise
67

68 69 70 71 72 73 74 75
LIBEXEC_STUFF	= wanlinksolve wanlinkinfo os_setup mkexpdir console_setup \
		  assign_wrapper assign_wrapper2 \
		  assign_prepass ptopgen \
		  spewlogfile staticroutes routecalc wanassign \
		  switchmac \
		  spewrpmtar webfrisbeekiller gentopofile \
                  $(WEB_BIN_SCRIPTS) $(WEB_SBIN_SCRIPTS)

76
LIB_STUFF       = libtbsetup.pm exitonwarn.pm libtestbed.pm snmpit_intel.pm \
77
                  snmpit_cisco.pm snmpit_lib.pm snmpit_apc.pm power_rpc27.pm \
78
		  snmpit_cisco_stack.pm snmpit_intel_stack.pm power_sgmote.pm \
79
		  snmpit_foundry.pm snmpit_stack.pm snmpit_remote.pm \
80
		  snmpit_nortel.pm snmpit_hp.pm \
Timothy Stack's avatar
 
Timothy Stack committed
81
		  libaudit.pm libreboot.pm libosload.pm libtestbed.py \
Kevin Atkinson's avatar
 
Kevin Atkinson committed
82
		  libadminmfs.pm libtblog.pm libtblog_simple.pm libArchive.pm \
David Johnson's avatar
David Johnson committed
83
		  power_mail.pm power_whol.pm Template.pm power_rmcp.pm \
Leigh B. Stoller's avatar
Leigh B. Stoller committed
84
		  power_ilo.pm libvtop.pm
85

86 87 88 89 90 91
# These scripts installed setuid, with sudo. 
SETUID_BIN_SCRIPTS   = node_reboot eventsys_control tarfiles_setup savelogs \
			tbrsync
SETUID_SBIN_SCRIPTS  = mkproj rmgroup mkgroup frisbeelauncher frisbeeimage \
			rmuser idleswap named_setup exports_setup \
			sfskey_update setgroups newnode_reboot vnode_setup \
92 93
			elabinelab nfstrace rmproj
SETUID_LIBX_SCRIPTS  = console_setup spewlogfile
94

95 96
ifeq ($(SYSTEM),FreeBSD)
FBSDVERSION   := $(shell uname -v | sed -e 's/FreeBSD \([0-9]\).*/FreeBSD\1/')
97
ifeq ($(FBSDVERSION),FreeBSD4)
98 99 100 101
SUBDIRS  += ipassign
IPASSIGN  = Yes
endif
endif
102

103 104 105 106 107 108 109 110 111 112 113 114 115
#
# Targets
#
ifeq ($(STANDALONE_CLEARINGHOUSE),0)
TARGETS	= $(BIN_STUFF) $(SBIN_STUFF) $(LIBEXEC_STUFF) $(LIB_STUFF) $(SUBDIRS)
else
SUBDIRS = 
TARGETS = libaudit.pm libtestbed.pm libtblog_simple.pm
SETUID_BIN_SCRIPTS  =
SETUID_SBIN_SCRIPTS =
SETUID_LIBX_SCRIPTS = 
endif

116
#
117 118 119
# Force dependencies on the scripts so that they will be rerun through
# configure if the .in file is changed.
# 
120
all:	$(TARGETS)
121 122 123

include $(TESTBED_SRCDIR)/GNUmakerules

124
CXXFLAGS += -Wall -O2 -g
Chad Barb's avatar
 
Chad Barb committed
125

126
wanlinksolve: wanlinksolve.cc
127
	${CXX} $< ${CXXFLAGS} -o $@ ${LIBS} -lm -lstdc++ ${LDFLAGS}
128 129

routecalc: routecalc.cc
130
	${CXX} $< ${CXXFLAGS} -o $@ ${LIBS} -lm -lstdc++ ${LDFLAGS}
Chad Barb's avatar
 
Chad Barb committed
131

132
.PHONY:	checkpass ns2ir nsverify plab ipassign checkup template_cvsroot
133 134
checkpass:
	@$(MAKE) -C checkpass all
Leigh B. Stoller's avatar
Leigh B. Stoller committed
135

136 137
ns2ir:
	@$(MAKE) -C ns2ir all
138

Timothy Stack's avatar
 
Timothy Stack committed
139 140 141
nsverify:
	@$(MAKE) -C nsverify all

142 143 144
nseparse:
	@$(MAKE) -C nseparse all

145 146 147
plab:
	@$(MAKE) -C plab all

148 149 150
ipassign:
	@$(MAKE) -C ipassign all

Timothy Stack's avatar
 
Timothy Stack committed
151 152 153
checkup:
	@$(MAKE) -C checkup all

154 155 156
template_cvsroot:
	@$(MAKE) -C template_cvsroot all

157 158 159 160 161
ifeq ($(STANDALONE_CLEARINGHOUSE),0)
install: boss-install
else
install: clrhouse-install
endif
162

163 164
boss-install: all script-install subdir-install
	@echo "Don't forget to do a post-install as root"
Leigh B. Stoller's avatar
Leigh B. Stoller committed
165

166 167 168 169 170 171 172 173 174 175 176
#
# Only install the planetlab support if enabled in the defs file
#
ifeq ($(PLABSUPPORT),1)
PLAB_INSTALL      = @$(MAKE) -C plab install
PLAB_POST_INSTALL = @$(MAKE) -C plab post-install 
else
PLAB_INSTALL      =
PLAB_POST_INSTALL =
endif

Leigh B. Stoller's avatar
Leigh B. Stoller committed
177 178 179 180 181
#
# Automate this part at some point.
# 
subdir-install:
	@$(MAKE) -C checkpass install	
Leigh B. Stoller's avatar
Leigh B. Stoller committed
182
	@$(MAKE) -C ns2ir install
183
	@$(MAKE) -C template_cvsroot install
Timothy Stack's avatar
 
Timothy Stack committed
184
	@$(MAKE) -C nsverify install
185
	@$(MAKE) -C nseparse install
186
	$(PLAB_INSTALL)
187
ifeq ($(IPASSIGN),Yes)
188
	@$(MAKE) -C ipassign install
189
endif
Timothy Stack's avatar
 
Timothy Stack committed
190
	@$(MAKE) -C checkup install
Leigh B. Stoller's avatar
Leigh B. Stoller committed
191

192 193 194
script-install:	$(addprefix $(INSTALL_BINDIR)/, $(BIN_STUFF)) \
	 $(addprefix $(INSTALL_SBINDIR)/, $(SBIN_STUFF)) \
	 $(addprefix $(INSTALL_LIBDIR)/, $(LIB_STUFF)) \
195
	 $(addprefix $(INSTALL_LIBEXECDIR)/, $(LIBEXEC_STUFF)) \
196
	 $(addprefix $(INSTALL_DIR)/opsdir/lib/, libtestbed.pm) \
David Johnson's avatar
David Johnson committed
197
	 $(addprefix $(INSTALL_DIR)/opsdir/lib/, libtestbed.py) \
198 199
	 $(addprefix $(INSTALL_DIR)/opsdir/bin/, $(CTRLBIN_STUFF)) \
	 $(addprefix $(INSTALL_DIR)/opsdir/sbin/, $(CTRLSBIN_STUFF))\
200
	 $(addprefix $(INSTALL_DIR)/opsdir/sbin/, $(FSBIN_STUFF))
201 202

post-install: 
203
	@$(MAKE) -C ns2ir post-install
Timothy Stack's avatar
 
Timothy Stack committed
204
	@$(MAKE) -C nsverify post-install
205
	@$(MAKE) -C nseparse post-install
206
	$(PLAB_POST_INSTALL)
207
ifeq ($(IPASSIGN),Yes)
208
	@$(MAKE) -C ipassign post-install
209
endif
210 211 212 213
	chmod 775 $(INSTALL_BINDIR)
	chmod 775 $(INSTALL_SBINDIR)
	chmod 775 $(INSTALL_LIBDIR)
	chmod 775 $(INSTALL_LIBEXECDIR)
214 215
	chown root $(INSTALL_SBINDIR)/mkproj
	chmod u+s $(INSTALL_SBINDIR)/mkproj
Leigh B. Stoller's avatar
Leigh B. Stoller committed
216 217
	chown root $(INSTALL_SBINDIR)/rmproj
	chmod u+s $(INSTALL_SBINDIR)/rmproj
Leigh B. Stoller's avatar
Leigh B. Stoller committed
218 219
	chown root $(INSTALL_SBINDIR)/rmgroup
	chmod u+s $(INSTALL_SBINDIR)/rmgroup
220 221
	chown root $(INSTALL_SBINDIR)/mkgroup
	chmod u+s $(INSTALL_SBINDIR)/mkgroup
222 223
	chown root $(INSTALL_SBINDIR)/frisbeelauncher
	chmod u+s $(INSTALL_SBINDIR)/frisbeelauncher
224 225
	chown root $(INSTALL_SBINDIR)/frisbeeimage
	chmod u+s $(INSTALL_SBINDIR)/frisbeeimage
226 227
	chown root $(INSTALL_SBINDIR)/rmuser
	chmod u+s $(INSTALL_SBINDIR)/rmuser
228 229
	chown root $(INSTALL_SBINDIR)/idleswap
	chmod u+s $(INSTALL_SBINDIR)/idleswap
230 231
	chown root $(INSTALL_SBINDIR)/named_setup
	chmod u+s $(INSTALL_SBINDIR)/named_setup
232 233
	chown root $(INSTALL_SBINDIR)/exports_setup
	chmod u+s $(INSTALL_SBINDIR)/exports_setup
234 235
	chown root $(INSTALL_SBINDIR)/sfskey_update
	chmod u+s $(INSTALL_SBINDIR)/sfskey_update
236 237
	chown root $(INSTALL_SBINDIR)/setgroups
	chmod u+s $(INSTALL_SBINDIR)/setgroups
238 239
	chown root $(INSTALL_LIBEXECDIR)/console_setup
	chmod u+s $(INSTALL_LIBEXECDIR)/console_setup
240 241
	chown root $(INSTALL_LIBEXECDIR)/spewlogfile
	chmod u+s $(INSTALL_LIBEXECDIR)/spewlogfile
242 243
	chown root $(INSTALL_BINDIR)/node_reboot
	chmod u+s $(INSTALL_BINDIR)/node_reboot
244 245
	chown root $(INSTALL_SBINDIR)/newnode_reboot
	chmod u+s $(INSTALL_SBINDIR)/newnode_reboot
246 247
	chown root $(INSTALL_SBINDIR)/vnode_setup
	chmod u+s $(INSTALL_SBINDIR)/vnode_setup
248 249
	chown root $(INSTALL_BINDIR)/eventsys_control
	chmod u+s $(INSTALL_BINDIR)/eventsys_control
250 251
	chown root $(INSTALL_BINDIR)/tarfiles_setup
	chmod u+s $(INSTALL_BINDIR)/tarfiles_setup
252 253
	chown root $(INSTALL_BINDIR)/savelogs
	chmod u+s $(INSTALL_BINDIR)/savelogs
254 255
	chown root $(INSTALL_SBINDIR)/elabinelab
	chmod u+s $(INSTALL_SBINDIR)/elabinelab
Kirk Webb's avatar
 
Kirk Webb committed
256 257
	chown root $(INSTALL_BINDIR)/tbrsync
	chmod u+s $(INSTALL_BINDIR)/tbrsync
258 259
	chown root $(INSTALL_SBINDIR)/nfstrace
	chmod u+s $(INSTALL_SBINDIR)/nfstrace
260

261 262 263
#
# Control node installation (okay, plastic)
#
264 265
control-install:	$(addprefix $(INSTALL_SBINDIR)/, $(CTRLSBIN_STUFF)) \
			$(addprefix $(INSTALL_BINDIR)/, $(CTRLBIN_STUFF)) \
266
			$(addprefix $(INSTALL_LIBDIR)/, libtestbed.pm)
267
	@$(MAKE) -C ns2ir control-install
Timothy Stack's avatar
 
Timothy Stack committed
268
	@$(MAKE) -C nsverify control-install
269
	@$(MAKE) -C nseparse control-install
270

271 272 273 274 275 276
#
# FS install
#
fs-install:	$(addprefix $(INSTALL_SBINDIR)/, $(FSBIN_STUFF)) \
		$(addprefix $(INSTALL_LIBDIR)/, libtestbed.pm)

277 278 279 280 281
#
# Tip servers get very little
#
tipserv-install:	$(addprefix $(INSTALL_SBINDIR)/, console_setup.proxy)

282 283 284 285
# Clearinghouse install.
clrhouse-install: $(INSTALL_LIBDIR)/libaudit.pm \
		$(INSTALL_LIBDIR)/libtestbed.pm \
		$(INSTALL_LIBDIR)/libtblog_simple.pm
Mike Hibler's avatar
Mike Hibler committed
286

287
clean:	subdir-clean
Mike Hibler's avatar
Mike Hibler committed
288
	rm -f *.o core routecalc wanlinksolve
289 290 291 292

subdir-clean:
	@$(MAKE) -C checkpass clean
	@$(MAKE) -C ns2ir clean
Timothy Stack's avatar
 
Timothy Stack committed
293
	@$(MAKE) -C nsverify clean
294
	@$(MAKE) -C nseparse clean
Mike Hibler's avatar
Mike Hibler committed
295
	@$(MAKE) -C plab clean
296
	@$(MAKE) -C ipassign clean
Timothy Stack's avatar
 
Timothy Stack committed
297
	@$(MAKE) -C checkup clean
298 299 300 301 302 303

distclean:	subdir-distclean

subdir-distclean:
	@$(MAKE) -C checkpass distclean
	@$(MAKE) -C ns2ir distclean
Timothy Stack's avatar
 
Timothy Stack committed
304
	@$(MAKE) -C nsverify distclean
305
	@$(MAKE) -C nseparse distclean
306
	@$(MAKE) -C plab distclean
307
	@$(MAKE) -C ipassign distclean
Timothy Stack's avatar
 
Timothy Stack committed
308
	@$(MAKE) -C checkup distclean
309 310 311 312 313 314
#
# XXX Create non .tcl files.
#
%: %.tcl
	cp -p $< $@

315 316 317 318 319 320 321 322 323 324 325 326
# This rule says what web* script depends on which installed binary directory.
$(WEB_SBIN_SCRIPTS): $(INSTALL_SBINDIR)
$(WEB_BIN_SCRIPTS):  $(INSTALL_BINDIR)

# Just in case the dirs are not yet created,
$(INSTALL_SBINDIR) $(INSTALL_BINDIR):

# And then how to turn the template into the actual script. 
$(WEB_SBIN_SCRIPTS) $(WEB_BIN_SCRIPTS): $(TESTBED_SRCDIR)/WEBtemplate.in
	@echo "Generating $@"
	cat $< | sed -e 's,@PROGTOINVOKE@,$(word 2,$^)/$(subst web,,$@),' > $@

327 328 329 330
$(INSTALL_DIR)/opsdir/lib/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/lib
	$(INSTALL) $< $@
331

332 333 334 335 336
$(INSTALL_DIR)/opsdir/bin/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/bin
	$(INSTALL) $< $@

337 338 339 340
$(INSTALL_DIR)/opsdir/sbin/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/sbin
	$(INSTALL) $< $@