GNUmakefile.in 5.69 KB
Newer Older
1 2 3
#
# Testbed Makefile
#
4 5 6 7 8
SRCDIR		= @srcdir@
OBJDIR		= .
SUBDIR		= 
TESTBED_SRCDIR  = @top_srcdir@
DISTCLEAN_FILES = @DISTCLEAN_FILES@ 
9
EVENTSYS	= @EVENTSYS@
Christopher Alfeld's avatar
Christopher Alfeld committed
10

11 12
include Makeconf

13 14 15
#
# Ordering here matters!
# Things with no dependencies go first: 
16
#   assign db lib www
17 18
# Things that may have dependencies go next:
#   @optional_subdirs@ (has event)
19
#   ipod os security sensors 
20 21 22 23
# Then things that only depend on stuff we've done:
#   pxe tbsetup tmcd utils www tip capture vis
# Then things that depend on stuff we just did:
#
24 25
SUBDIRS = lib db assign www @optional_subdirs@ ipod security sensors \
		pxe tbsetup account tmcd utils tip capture ipod vis \
26
		sensors os xmlrpc install/newnode_sshkeys mote tools/whol
Christopher Alfeld's avatar
Christopher Alfeld committed
27

28
all:		all-subdirs 
29

30
install:	
31
	@echo "Choose either boss-install (paper) or ops-install (plastic)"
32
	@echo "Choose tipserv-install for dedicated tip server machines."
33 34

#
35
# For installation on boss node (okay, paper).
36
# 
37 38
boss-install:	install-schemacheck install-sitevarscheck install-dbfillcheck \
		install-subdirs install-mkdirs 
39 40 41 42 43 44
	@echo "DON'T FORGET TO RUN A POST-INSTALL AS ROOT"

#
# Same target, with the install-schemacheck dependency omitted
# 
boss-install-force:	install-subdirs install-mkdirs 
45
	@echo "DON'T FORGET TO RUN A POST-INSTALL AS ROOT"
46

47
post-install:
48
	@$(MAKE) -C db post-install
Mike Hibler's avatar
Mike Hibler committed
49
	@$(MAKE) -C ipod post-install
50
	@$(MAKE) -C tbsetup post-install
51
	@$(MAKE) -C account post-install
52
	@$(MAKE) -C security post-install
53 54
	@$(MAKE) -C vis post-install
	@$(MAKE) -C www post-install
55
ifeq ($(EVENTSYS),1)
56
	@$(MAKE) -C event post-install
57
endif
58
	@$(MAKE) -C mote post-install
59

60
#
61
# For installation on the 'ops' or 'users' node (okay, plastic)
62
# 
63
ops-install:
64 65
	@$(MAKE) -C tbsetup control-install
	@$(MAKE) -C security control-install
66
	@$(MAKE) -C tip control-install
Leigh B. Stoller's avatar
Leigh B. Stoller committed
67
#	@$(MAKE) -C os control-install
68 69
	@$(MAKE) -C db control-install
	@$(MAKE) -C tbsetup control-install
Mac Newbold's avatar
Mac Newbold committed
70
	@$(MAKE) -C utils control-install
71
	@$(MAKE) -C lib control-install
72
ifeq ($(EVENTSYS),1)
73
	@$(MAKE) -C event control-install
74
endif
75
	@$(MAKE) -C xmlrpc control-install
76
	@$(MAKE) -C tmcd control-install
77

78
install-mkdirs:
79
	-mkdir -p $(INSTALL_TOPDIR)/opsdir
80 81
	-mkdir -p $(INSTALL_TOPDIR)/locks
	-mkdir -p $(INSTALL_TOPDIR)/log
82 83
	-mkdir -p $(INSTALL_TOPDIR)/log/mysql
	-mkdir -p $(INSTALL_TOPDIR)/log/exports
84
	-mkdir -p $(INSTALL_TOPDIR)/lists
85
	-mkdir -p $(INSTALL_TOPDIR)/backup
86
	-mkdir -p $(INSTALL_TOPDIR)/etc
87
	-mkdir -p $(INSTALL_TOPDIR)/expwork
88 89
	-mkdir -p $(INSTALL_TOPDIR)/batch
	-chmod 777 $(INSTALL_TOPDIR)/batch
90 91
	-mkdir -p $(INSTALL_TOPDIR)/expinfo
	-chmod 777 $(INSTALL_TOPDIR)/expinfo
92 93
	-mkdir -p $(INSTALL_TOPDIR)/images
	-chmod 775 $(INSTALL_TOPDIR)/images
94
	-ln -s /usr/testbed/bin/nse $(INSTALL_TOPDIR)/bin
95 96
	-mkdir -p $(INSTALL_TOPDIR)/ssl
	-chmod 770 $(INSTALL_TOPDIR)/ssl
97

98 99
tipserv-install:
	-mkdir -p $(INSTALL_TOPDIR)/log/tiplogs
100
	-mkdir -p $(INSTALL_TOPDIR)/etc
101 102 103 104
	@$(MAKE) -C tip tipserv-install
	@$(MAKE) -C capture tipserv-install
	@$(MAKE) -C tbsetup tipserv-install

105 106 107 108
client-mkdirs:
	-mkdir -p $(DESTDIR)$(CLIENT_BINDIR)

client:
109
	@$(MAKE) -C lib/libtb client
110
ifeq ($(EVENTSYS),1)
111
	@$(MAKE) -C event client
112
endif
113 114 115 116 117
	@$(MAKE) -C os client
	@$(MAKE) -C sensors client
	@$(MAKE) -C tmcd client

client-install: client client-mkdirs
118
ifeq ($(EVENTSYS),1)
119
	@$(MAKE) -C event client-install
120
endif
121
	@$(MAKE) -C os client-install
122
	@$(MAKE) -C sensors client-install
123 124
	@$(MAKE) -C tmcd client-install

125 126 127 128
destdircheck:
	@if [ -z "$(DESTDIR)" ]; then \
	    echo "You must define DESTDIR for this target!"; \
	    false; \
129 130 131 132
	fi
	@if [ "$(DESTDIR)" = "/" ]; then \
	    echo "DESTDIR is '/', really really bad idea!"; \
	    false; \
133 134
	fi

135 136 137 138 139 140 141
mfsoscheck:
	@if [ `uname -s` != "FreeBSD" ]; then \
	    echo "Must build MFS files on a FreeBSD system!"; \
	    false; \
	fi

mfs: mfsoscheck
142 143 144 145
	@$(MAKE) -C os mfs
	@$(MAKE) -C sensors mfs
	@$(MAKE) -C tmcd mfs

146
mfs-install: destdircheck mfs client-mkdirs
147 148 149 150
	@$(MAKE) -C os mfs-install
	@$(MAKE) -C sensors mfs-install
	@$(MAKE) -C tmcd mfs-install

151 152 153 154 155 156 157 158 159 160
frisbee-mfs: mfsoscheck
	@$(MAKE) -C cdrom/groklilo client
	@$(MAKE) -C os frisbee-mfs
	@$(MAKE) -C tmcd frisbee-mfs

frisbee-mfs-install: destdircheck frisbee-mfs
	@CLIENT_BINDIR=/etc/testbed $(MAKE) -e -C cdrom/groklilo client-install
	@$(MAKE) -C os frisbee-mfs-install
	@$(MAKE) -C tmcd frisbee-mfs-install

161 162 163 164 165
#
# A check to see if this is a 'real' install. Kinda hacky, but as far as I can
# tell, you can't put ifeq()'s inside of targets
#
ifeq ($(TBROOT),/usr/testbed)
166
SCHEMACHECK= cd $(OBJDIR)/db && perl schemacheck
167 168 169 170 171 172 173
else
SCHEMACHECK= @echo "Skipping schema check, since prefix isn't /usr/testbed"
endif
install-schemacheck:
	@echo "Checking DB schema..."
	$(SCHEMACHECK)

174 175 176 177 178 179 180 181 182
ifeq ($(TBROOT),/usr/testbed)
SITEVARSCHECK= cd $(OBJDIR)/db && perl sitevarscheck
else
SITEVARSCHECK= @echo "Skipping sitevars check, since prefix isn't /usr/testbed"
endif
install-sitevarscheck:
	@echo "Checking Site variables..."
	$(SITEVARSCHECK)

183 184 185 186 187 188 189 190 191
ifeq ($(TBROOT),/usr/testbed)
DBFILLCHECK= cd $(OBJDIR)/db && perl dbfillcheck
else
DBFILLCHECK= @echo "Skipping DB fill check, since prefix isn't /usr/testbed"
endif
install-dbfillcheck:
	@echo "Checking Initial DB Fill ..."
	$(DBFILLCHECK)

192 193
clean:		clean-subdirs
distclean:	distclean-subdirs
Mike Hibler's avatar
Mike Hibler committed
194
	rm -f Makeconf GNUmakefile config.h config.status config.cache config.log
195
	rm -f $(DISTCLEAN_FILES)
196

197 198 199 200 201
elabinelab:
	-mkdir -p $(INSTALL_TOPDIR)/src
	rm -f $(INSTALL_TOPDIR)/src/emulab-src.tar.gz
	tar czf $(INSTALL_TOPDIR)/src/emulab-src.tar.gz -C $(SRCDIR) .

202 203 204 205 206
# How to recursively descend into subdirectories to make general
# targets such as `all'.
%.MAKE:
	@$(MAKE) -C $(dir $@) $(basename $(notdir $@))
%-subdirs: $(addsuffix /%.MAKE,$(SUBDIRS)) ;
207

208 209
# By default, make any target by descending into subdirectories.
%: %-subdirs ;
210

211
.PHONY: post-install install-mkdirs
212 213 214

# Get rid of a bunch of nasty built-in implicit rules.
.SUFFIXES: