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 11.3 KB
Newer Older
1
#
Leigh B. Stoller's avatar
Leigh B. Stoller committed
2
# EMULAB-COPYRIGHT
3
# Copyright (c) 2000-2010 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@
Mike Hibler's avatar
Mike Hibler committed
14
NSVERIFY	= @NSVERIFY@
15
SYSTEM         := $(shell uname -s)
16

17
include $(OBJDIR)/Makeconf
18

Mike Hibler's avatar
Mike Hibler committed
19 20 21 22
SUBDIRS		= checkpass ns2ir nseparse checkup template_cvsroot
ifeq ($(NSVERIFY),1)
SUBDIRS		+= nsverify
endif
Leigh B. Stoller's avatar
Leigh B. Stoller committed
23

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

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

Ryan Jackson's avatar
Ryan Jackson committed
52 53
SUBBOSS_SBIN_STUFF = subboss_frisbeelauncher subboss_frisbeeimage

54
CTRLSBIN_STUFF  = console_setup.proxy sfskey_update.proxy \
55
		  savelogs.proxy eventsys.proxy
56

57 58
CTRLBIN_STUFF	= fetchtar.proxy

59
FSBIN_STUFF	= exports_setup.proxy smbpasswd_setup.proxy
60

61 62
WEB_SBIN_SCRIPTS= webrmproj webpanic webrmgroup \
                  webmkgroup websetgroups webmkproj \
Leigh B. Stoller's avatar
Leigh B. Stoller committed
63 64
                  webrmuser webmodgroups webidleswap webnode_attributes

65 66 67
WEB_BIN_SCRIPTS = webnscheck webendexp webtbreport webbatchexp \
		  webnode_history webswapexp webeventsys_control \
		  webnode_reboot webtarfiles_setup webarchive_control \
68
		  webnode_control webnode_update webtemplate_create \
69
		  webtemplate_swapin webtemplate_swapout webtemplate_exprun \
70
		  webtemplate_graph webtemplate_metadata webtemplate_export \
71
		  webtemplate_control webtemplate_commit webtemplate_analyze \
72
		  webtemplate_linkgraph webtemplate_instantiate \
73
		  webtemplate_delete webtemplate_revise
74

75
LIBEXEC_STUFF	= wanlinksolve wanlinkinfo os_setup mkexpdir console_setup \
76
		  assign_wrapper assign_wrapper2 os_setup_new \
77 78 79 80 81 82
		  assign_prepass ptopgen \
		  spewlogfile staticroutes routecalc wanassign \
		  switchmac \
		  spewrpmtar webfrisbeekiller gentopofile \
                  $(WEB_BIN_SCRIPTS) $(WEB_SBIN_SCRIPTS)

83
LIB_STUFF       = libtbsetup.pm exitonwarn.pm libtestbed.pm snmpit_intel.pm \
84
                  snmpit_cisco.pm snmpit_lib.pm snmpit_apc.pm power_rpc27.pm \
85
		  snmpit_cisco_stack.pm snmpit_intel_stack.pm power_sgmote.pm \
86
		  snmpit_foundry.pm snmpit_stack.pm snmpit_remote.pm \
87
		  snmpit_nortel.pm snmpit_hp.pm snmpit_apcon.pm\
Timothy Stack's avatar
 
Timothy Stack committed
88
		  libaudit.pm libreboot.pm libosload.pm libtestbed.py \
Kevin Atkinson's avatar
 
Kevin Atkinson committed
89
		  libadminmfs.pm libtblog.pm libtblog_simple.pm libArchive.pm \
David Johnson's avatar
David Johnson committed
90
		  power_mail.pm power_whol.pm Template.pm power_rmcp.pm \
91 92
		  power_ilo.pm libvtop.pm libptop.pm libossetup.pm \
		  power_ipmi.pm
93

94 95 96 97 98 99
# 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 \
100 101
			elabinelab nfstrace rmproj subboss_frisbeelauncher_wrapper \
			subboss_wrapper
102
SETUID_LIBX_SCRIPTS  = console_setup spewlogfile
103

104 105
ifeq ($(SYSTEM),FreeBSD)
FBSDVERSION   := $(shell uname -v | sed -e 's/FreeBSD \([0-9]\).*/FreeBSD\1/')
106
ifeq ($(FBSDVERSION),FreeBSD4)
107 108 109 110
SUBDIRS  += ipassign
IPASSIGN  = Yes
endif
endif
111

112 113 114 115 116 117 118 119 120 121 122 123
#
# 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
124 125
#COMPILED_TARGETS    = $(filter %.pm, $(TARGETS))
COMPILED_TARGETS    = 
126

127
#
128 129 130
# Force dependencies on the scripts so that they will be rerun through
# configure if the .in file is changed.
# 
131
all:	$(TARGETS) $(addprefix compiled/, $(COMPILED_TARGETS))
132 133 134

include $(TESTBED_SRCDIR)/GNUmakerules

135
CXXFLAGS += -Wall -O2 -g
Chad Barb's avatar
 
Chad Barb committed
136

137
wanlinksolve: wanlinksolve.cc
138
	${CXX} $< ${CXXFLAGS} -o $@ ${LIBS} -lm -lstdc++ ${LDFLAGS}
139 140

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

143
.PHONY:	checkpass ns2ir nsverify plab ipassign checkup template_cvsroot
144 145
checkpass:
	@$(MAKE) -C checkpass all
Leigh B. Stoller's avatar
Leigh B. Stoller committed
146

147 148
ns2ir:
	@$(MAKE) -C ns2ir all
149

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

153 154 155
nseparse:
	@$(MAKE) -C nseparse all

156 157 158
plab:
	@$(MAKE) -C plab all

159 160 161
ipassign:
	@$(MAKE) -C ipassign all

Timothy Stack's avatar
 
Timothy Stack committed
162 163 164
checkup:
	@$(MAKE) -C checkup all

165 166 167
template_cvsroot:
	@$(MAKE) -C template_cvsroot all

168 169 170 171 172
ifeq ($(STANDALONE_CLEARINGHOUSE),0)
install: boss-install
else
install: clrhouse-install
endif
173

174 175
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
176

177 178 179 180 181 182 183 184 185 186 187
#
# 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
188 189 190 191 192
#
# Automate this part at some point.
# 
subdir-install:
	@$(MAKE) -C checkpass install	
Leigh B. Stoller's avatar
Leigh B. Stoller committed
193
	@$(MAKE) -C ns2ir install
194
	@$(MAKE) -C template_cvsroot install
Mike Hibler's avatar
Mike Hibler committed
195
ifeq ($(NSVERIFY),1)
Timothy Stack's avatar
 
Timothy Stack committed
196
	@$(MAKE) -C nsverify install
Mike Hibler's avatar
Mike Hibler committed
197
endif
198
	@$(MAKE) -C nseparse install
199
	$(PLAB_INSTALL)
200
ifeq ($(IPASSIGN),Yes)
201
	@$(MAKE) -C ipassign install
202
endif
Timothy Stack's avatar
 
Timothy Stack committed
203
	@$(MAKE) -C checkup install
Leigh B. Stoller's avatar
Leigh B. Stoller committed
204

205 206 207
script-install:	$(addprefix $(INSTALL_BINDIR)/, $(BIN_STUFF)) \
	 $(addprefix $(INSTALL_SBINDIR)/, $(SBIN_STUFF)) \
	 $(addprefix $(INSTALL_LIBDIR)/, $(LIB_STUFF)) \
208
	 $(addprefix $(INSTALL_LIBEXECDIR)/, $(LIBEXEC_STUFF)) \
209
	 $(addprefix $(INSTALL_DIR)/opsdir/lib/, libtestbed.pm) \
David Johnson's avatar
David Johnson committed
210
	 $(addprefix $(INSTALL_DIR)/opsdir/lib/, libtestbed.py) \
211 212
	 $(addprefix $(INSTALL_DIR)/opsdir/bin/, $(CTRLBIN_STUFF)) \
	 $(addprefix $(INSTALL_DIR)/opsdir/sbin/, $(CTRLSBIN_STUFF))\
213
	 $(addprefix $(INSTALL_DIR)/opsdir/sbin/, $(FSBIN_STUFF))
214 215

post-install: 
216
	@$(MAKE) -C ns2ir post-install
Mike Hibler's avatar
Mike Hibler committed
217
ifeq ($(NSVERIFY),1)
Timothy Stack's avatar
 
Timothy Stack committed
218
	@$(MAKE) -C nsverify post-install
Mike Hibler's avatar
Mike Hibler committed
219
endif
220
	@$(MAKE) -C nseparse post-install
221
	$(PLAB_POST_INSTALL)
222
ifeq ($(IPASSIGN),Yes)
223
	@$(MAKE) -C ipassign post-install
224
endif
225 226 227 228
	chmod 775 $(INSTALL_BINDIR)
	chmod 775 $(INSTALL_SBINDIR)
	chmod 775 $(INSTALL_LIBDIR)
	chmod 775 $(INSTALL_LIBEXECDIR)
229 230
	chown root $(INSTALL_SBINDIR)/mkproj
	chmod u+s $(INSTALL_SBINDIR)/mkproj
Leigh B. Stoller's avatar
Leigh B. Stoller committed
231 232
	chown root $(INSTALL_SBINDIR)/rmproj
	chmod u+s $(INSTALL_SBINDIR)/rmproj
Leigh B. Stoller's avatar
Leigh B. Stoller committed
233 234
	chown root $(INSTALL_SBINDIR)/rmgroup
	chmod u+s $(INSTALL_SBINDIR)/rmgroup
235 236
	chown root $(INSTALL_SBINDIR)/mkgroup
	chmod u+s $(INSTALL_SBINDIR)/mkgroup
237 238
	chown root $(INSTALL_SBINDIR)/frisbeelauncher
	chmod u+s $(INSTALL_SBINDIR)/frisbeelauncher
239 240
	chown root $(INSTALL_SBINDIR)/subboss_frisbeelauncher_wrapper
	chmod u+s $(INSTALL_SBINDIR)/subboss_frisbeelauncher_wrapper
241 242
	chown root $(INSTALL_SBINDIR)/subboss_wrapper
	chmod u+s $(INSTALL_SBINDIR)/subboss_wrapper
243 244
	chown root $(INSTALL_SBINDIR)/frisbeeimage
	chmod u+s $(INSTALL_SBINDIR)/frisbeeimage
245 246
	chown root $(INSTALL_SBINDIR)/rmuser
	chmod u+s $(INSTALL_SBINDIR)/rmuser
247 248
	chown root $(INSTALL_SBINDIR)/idleswap
	chmod u+s $(INSTALL_SBINDIR)/idleswap
249 250
	chown root $(INSTALL_SBINDIR)/named_setup
	chmod u+s $(INSTALL_SBINDIR)/named_setup
251 252
	chown root $(INSTALL_SBINDIR)/exports_setup
	chmod u+s $(INSTALL_SBINDIR)/exports_setup
253 254
	chown root $(INSTALL_SBINDIR)/sfskey_update
	chmod u+s $(INSTALL_SBINDIR)/sfskey_update
255 256
	chown root $(INSTALL_SBINDIR)/setgroups
	chmod u+s $(INSTALL_SBINDIR)/setgroups
257 258
	chown root $(INSTALL_LIBEXECDIR)/console_setup
	chmod u+s $(INSTALL_LIBEXECDIR)/console_setup
259 260
	chown root $(INSTALL_LIBEXECDIR)/spewlogfile
	chmod u+s $(INSTALL_LIBEXECDIR)/spewlogfile
261 262
	chown root $(INSTALL_BINDIR)/node_reboot
	chmod u+s $(INSTALL_BINDIR)/node_reboot
263 264
	chown root $(INSTALL_SBINDIR)/newnode_reboot
	chmod u+s $(INSTALL_SBINDIR)/newnode_reboot
265 266
	chown root $(INSTALL_SBINDIR)/vnode_setup
	chmod u+s $(INSTALL_SBINDIR)/vnode_setup
267 268
	chown root $(INSTALL_BINDIR)/eventsys_control
	chmod u+s $(INSTALL_BINDIR)/eventsys_control
269 270
	chown root $(INSTALL_BINDIR)/tarfiles_setup
	chmod u+s $(INSTALL_BINDIR)/tarfiles_setup
271 272
	chown root $(INSTALL_BINDIR)/savelogs
	chmod u+s $(INSTALL_BINDIR)/savelogs
273 274
	chown root $(INSTALL_SBINDIR)/elabinelab
	chmod u+s $(INSTALL_SBINDIR)/elabinelab
Kirk Webb's avatar
 
Kirk Webb committed
275 276
	chown root $(INSTALL_BINDIR)/tbrsync
	chmod u+s $(INSTALL_BINDIR)/tbrsync
277 278
	chown root $(INSTALL_SBINDIR)/nfstrace
	chmod u+s $(INSTALL_SBINDIR)/nfstrace
279

Ryan Jackson's avatar
Ryan Jackson committed
280 281 282 283 284
#
# Subboss installation
#
subboss-install:	$(addprefix $(INSTALL_SBINDIR)/, $(SUBBOSS_SBIN_STUFF))

285 286 287
#
# Control node installation (okay, plastic)
#
288 289
control-install:	$(addprefix $(INSTALL_SBINDIR)/, $(CTRLSBIN_STUFF)) \
			$(addprefix $(INSTALL_BINDIR)/, $(CTRLBIN_STUFF)) \
290
			$(addprefix $(INSTALL_LIBDIR)/, libtestbed.pm)
291
	@$(MAKE) -C ns2ir control-install
Mike Hibler's avatar
Mike Hibler committed
292
ifeq ($(NSVERIFY),1)
Timothy Stack's avatar
 
Timothy Stack committed
293
	@$(MAKE) -C nsverify control-install
Mike Hibler's avatar
Mike Hibler committed
294
endif
295
	@$(MAKE) -C nseparse control-install
296

297 298 299 300 301 302
#
# FS install
#
fs-install:	$(addprefix $(INSTALL_SBINDIR)/, $(FSBIN_STUFF)) \
		$(addprefix $(INSTALL_LIBDIR)/, libtestbed.pm)

303 304 305 306 307
#
# Tip servers get very little
#
tipserv-install:	$(addprefix $(INSTALL_SBINDIR)/, console_setup.proxy)

308 309 310 311
# Clearinghouse install.
clrhouse-install: $(INSTALL_LIBDIR)/libaudit.pm \
		$(INSTALL_LIBDIR)/libtestbed.pm \
		$(INSTALL_LIBDIR)/libtblog_simple.pm
Mike Hibler's avatar
Mike Hibler committed
312

313
clean:	subdir-clean
Mike Hibler's avatar
Mike Hibler committed
314
	rm -f *.o core routecalc wanlinksolve
315 316 317 318

subdir-clean:
	@$(MAKE) -C checkpass clean
	@$(MAKE) -C ns2ir clean
Timothy Stack's avatar
 
Timothy Stack committed
319
	@$(MAKE) -C nsverify clean
320
	@$(MAKE) -C nseparse clean
Mike Hibler's avatar
Mike Hibler committed
321
	@$(MAKE) -C plab clean
322
	@$(MAKE) -C ipassign clean
Timothy Stack's avatar
 
Timothy Stack committed
323
	@$(MAKE) -C checkup clean
324 325 326 327 328 329

distclean:	subdir-distclean

subdir-distclean:
	@$(MAKE) -C checkpass distclean
	@$(MAKE) -C ns2ir distclean
Timothy Stack's avatar
 
Timothy Stack committed
330
	@$(MAKE) -C nsverify distclean
331
	@$(MAKE) -C nseparse distclean
332
	@$(MAKE) -C plab distclean
333
	@$(MAKE) -C ipassign distclean
Timothy Stack's avatar
 
Timothy Stack committed
334
	@$(MAKE) -C checkup distclean
335 336 337 338 339 340
#
# XXX Create non .tcl files.
#
%: %.tcl
	cp -p $< $@

341 342 343 344 345 346 347 348 349 350 351 352
# 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,,$@),' > $@

353 354 355 356
$(INSTALL_DIR)/opsdir/lib/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/lib
	$(INSTALL) $< $@
357

358 359 360 361 362
$(INSTALL_DIR)/opsdir/bin/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/bin
	$(INSTALL) $< $@

363 364 365 366
$(INSTALL_DIR)/opsdir/sbin/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/sbin
	$(INSTALL) $< $@
367 368 369 370 371

compiled/%: %
	@echo "Compiling $< to $@"
	-mkdir -p compiled
	perlcc -I $(INSTALL_LIBDIR) -B -o $@ $<