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.9 KB
Newer Older
1
#
Leigh B. Stoller's avatar
Leigh B. Stoller committed
2
# EMULAB-COPYRIGHT
3
# Copyright (c) 2000-2012 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
PORTAL_ISPRIMARY= @PORTAL_ISPRIMARY@
16
SYSTEM         := $(shell uname -s)
17

18
include $(OBJDIR)/Makeconf
19

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

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

39
SBIN_STUFF	= resetvlans console_setup.proxy sched_reload named_setup \
40
		  batch_daemon exports_setup reload_daemon sched_reserve \
41
		  console_reset db2ns bwconfig frisbeehelper \
42
		  rmgroup mkgroup setgroups mkproj modgroups \
43
		  exports_setup.proxy vnode_setup eventsys_start \
44
		  sfskey_update sfskey_update.proxy rmuser idleswap idlepower \
45
		  newnode_reboot savelogs.proxy eventsys.proxy \
46
		  elabinelab snmpit.proxy panic node_attributes \
47
		  nfstrace plabinelab smbpasswd_setup smbpasswd_setup.proxy \
48
		  rmproj snmpit.proxynew snmpit.proxyv2 pool_daemon \
49
		  checknodes_daemon snmpit.proxyv3 
Leigh B Stoller's avatar
Leigh B Stoller committed
50

51 52 53
ifeq ($(ISMAINSITE),1)
SBIN_STUFF     += repos_daemon
endif
54 55 56
ifeq ($(PORTAL_ISPRIMARY),1)
SBIN_STUFF     += portal_daemon
endif
57

58
CTRLSBIN_STUFF  = console_setup.proxy sfskey_update.proxy \
59
		  savelogs.proxy eventsys.proxy
60

61 62
CTRLBIN_STUFF	= fetchtar.proxy

63
FSBIN_STUFF	= exports_setup.proxy smbpasswd_setup.proxy
64

65 66
WEB_SBIN_SCRIPTS= webrmproj webpanic webrmgroup \
                  webmkgroup websetgroups webmkproj \
Leigh B. Stoller's avatar
Leigh B. Stoller committed
67 68
                  webrmuser webmodgroups webidleswap webnode_attributes

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

79
LIBEXEC_STUFF	= wanlinksolve wanlinkinfo os_setup mkexpdir console_setup \
80
		  assign_wrapper assign_wrapper2 os_setup_old \
81
		  assign_prepass ptopgen ptopgen_new \
82 83 84 85 86
		  spewlogfile staticroutes routecalc wanassign \
		  switchmac \
		  spewrpmtar webfrisbeekiller gentopofile \
                  $(WEB_BIN_SCRIPTS) $(WEB_SBIN_SCRIPTS)

87 88 89
LIB_STUFF       = libtbsetup.pm exitonwarn.pm libtestbed.pm \
                  power_rpc27.pm \
		  power_sgmote.pm \
Timothy Stack's avatar
 
Timothy Stack committed
90
		  libaudit.pm libreboot.pm libosload.pm libtestbed.py \
Kevin Atkinson's avatar
 
Kevin Atkinson committed
91
		  libadminmfs.pm libtblog.pm libtblog_simple.pm libArchive.pm \
David Johnson's avatar
David Johnson committed
92
		  power_mail.pm power_whol.pm Template.pm power_rmcp.pm \
93 94
		  power_ilo.pm libvtop.pm libptop.pm libptop_new.pm \
		  libossetup.pm \
95
		  power_ipmi.pm libosload_new.pm libosload_switch.pm \
96 97 98
		  libossetup_switch.pm power_icebox.pm \
		  libvtop_stable.pm libvtop_test.pm

99

100 101 102
# These scripts installed setuid, with sudo. 
SETUID_BIN_SCRIPTS   = node_reboot eventsys_control tarfiles_setup savelogs \
			tbrsync
103
SETUID_SBIN_SCRIPTS  = mkproj rmgroup mkgroup frisbeehelper \
104 105
			rmuser idleswap named_setup exports_setup \
			sfskey_update setgroups newnode_reboot vnode_setup \
106
			elabinelab nfstrace rmproj
107 108
SETUID_LIBX_SCRIPTS  = console_setup
SETUID_SUEXEC_SCRIPTS= spewlogfile
109

110 111 112 113
ifeq ($(SYSTEM),FreeBSD)
SUBDIRS  += ipassign
IPASSIGN  = Yes
endif
114

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

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

include $(TESTBED_SRCDIR)/GNUmakerules

138
CXXFLAGS += -Wall -O2 -g
Chad Barb's avatar
 
Chad Barb committed
139

140
wanlinksolve: wanlinksolve.cc
141
	${CXX} $< ${CXXFLAGS} -o $@ ${LIBS} -lm -lstdc++ ${LDFLAGS}
142 143

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

146 147
.PHONY:	${SUBDIRS}

148 149
checkpass:
	@$(MAKE) -C checkpass all
Leigh B. Stoller's avatar
Leigh B. Stoller committed
150

151 152
ns2ir:
	@$(MAKE) -C ns2ir all
153

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

157 158 159
snmpit_old:
	@$(MAKE) -C snmpit_old all

Timothy Stack's avatar
 
Timothy Stack committed
160 161 162
nsverify:
	@$(MAKE) -C nsverify all

163 164 165
nseparse:
	@$(MAKE) -C nseparse all

166 167 168
plab:
	@$(MAKE) -C plab all

169 170 171
ipassign:
	@$(MAKE) -C ipassign all

Timothy Stack's avatar
 
Timothy Stack committed
172 173 174
checkup:
	@$(MAKE) -C checkup all

175 176 177
template_cvsroot:
	@$(MAKE) -C template_cvsroot all

178 179 180 181 182
ifeq ($(STANDALONE_CLEARINGHOUSE),0)
install: boss-install
else
install: clrhouse-install
endif
183

184 185
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
186

187 188 189 190 191 192 193 194 195 196 197
#
# 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
198 199 200 201 202
#
# Automate this part at some point.
# 
subdir-install:
	@$(MAKE) -C checkpass install	
Leigh B. Stoller's avatar
Leigh B. Stoller committed
203
	@$(MAKE) -C ns2ir install
204
	@$(MAKE) -C template_cvsroot install
Mike Hibler's avatar
Mike Hibler committed
205
ifeq ($(NSVERIFY),1)
Timothy Stack's avatar
 
Timothy Stack committed
206
	@$(MAKE) -C nsverify install
Mike Hibler's avatar
Mike Hibler committed
207
endif
208
	@$(MAKE) -C nseparse install
209
	$(PLAB_INSTALL)
210
ifeq ($(IPASSIGN),Yes)
211
	@$(MAKE) -C ipassign install
212
endif
Timothy Stack's avatar
 
Timothy Stack committed
213
	@$(MAKE) -C checkup install
214
	@$(MAKE) -C snmpit_test install
215
	@$(MAKE) -C snmpit_old install
Leigh B. Stoller's avatar
Leigh B. Stoller committed
216

217 218 219
script-install:	$(addprefix $(INSTALL_BINDIR)/, $(BIN_STUFF)) \
	 $(addprefix $(INSTALL_SBINDIR)/, $(SBIN_STUFF)) \
	 $(addprefix $(INSTALL_LIBDIR)/, $(LIB_STUFF)) \
220
	 $(addprefix $(INSTALL_LIBEXECDIR)/, $(LIBEXEC_STUFF)) \
221
	 $(addprefix $(INSTALL_DIR)/opsdir/lib/, libtestbed.pm) \
David Johnson's avatar
David Johnson committed
222
	 $(addprefix $(INSTALL_DIR)/opsdir/lib/, libtestbed.py) \
223 224
	 $(addprefix $(INSTALL_DIR)/opsdir/bin/, $(CTRLBIN_STUFF)) \
	 $(addprefix $(INSTALL_DIR)/opsdir/sbin/, $(CTRLSBIN_STUFF))\
225
	 $(addprefix $(INSTALL_DIR)/opsdir/sbin/, $(FSBIN_STUFF))
226 227

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

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

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

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

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

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

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

distclean:	subdir-distclean

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

346 347 348 349 350 351 352 353 354 355 356 357
# 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,,$@),' > $@

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

363 364 365 366 367
$(INSTALL_DIR)/opsdir/bin/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/bin
	$(INSTALL) $< $@

368 369 370 371
$(INSTALL_DIR)/opsdir/sbin/%: %
	@echo "Installing $<"
	-mkdir -p $(INSTALL_DIR)/opsdir/sbin
	$(INSTALL) $< $@
372 373 374 375 376

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