GNUmakefile.in 6.68 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
SYSTEM	       := $(shell uname -s)

13
14
include Makeconf

15
16
17
#
# Ordering here matters!
# Things with no dependencies go first: 
18
#   assign db lib www
19
20
# Things that may have dependencies go next:
#   @optional_subdirs@ (has event)
21
#   ipod os security sensors 
22
23
24
25
# 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:
#
26
27
SUBDIRS = lib db assign www @optional_subdirs@ ipod security sensors \
		pxe tbsetup account tmcd utils tip capture ipod vis \
28
		sensors os xmlrpc install/newnode_sshkeys mote tools/whol \
29
		wiki bugdb collab
Christopher Alfeld's avatar
Christopher Alfeld committed
30

31
all:		all-subdirs 
32

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

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

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

50
post-install:
51
	@$(MAKE) -C db post-install
Mike Hibler's avatar
Mike Hibler committed
52
	@$(MAKE) -C ipod post-install
53
	@$(MAKE) -C tbsetup post-install
54
	@$(MAKE) -C account post-install
55
	@$(MAKE) -C security post-install
56
57
	@$(MAKE) -C vis post-install
	@$(MAKE) -C www post-install
58
ifeq ($(EVENTSYS),1)
59
	@$(MAKE) -C event post-install
60
endif
61
	@$(MAKE) -C mote post-install
62
	@$(MAKE) -C tools post-install
63
	@$(MAKE) -C wiki post-install
64
	@$(MAKE) -C bugdb post-install
65
	@$(MAKE) -C collab/mailman post-install
66
	@$(MAKE) -C utils post-install
67

68
#
69
# For installation on the 'ops' or 'users' node (okay, plastic)
70
# 
71
ops-install:
72
73
74
75
	-mkdir -p $(INSTALL_TOPDIR)/log
	-mkdir -p $(INSTALL_TOPDIR)/log/mysql
	-chmod 770 $(INSTALL_TOPDIR)/log/mysql
	-chown mysql.mysql $(INSTALL_TOPDIR)/log/mysql
76
77
	@$(MAKE) -C tbsetup control-install
	@$(MAKE) -C security control-install
78
	@$(MAKE) -C tip control-install
Leigh B. Stoller's avatar
Leigh B. Stoller committed
79
#	@$(MAKE) -C os control-install
80
81
	@$(MAKE) -C db control-install
	@$(MAKE) -C tbsetup control-install
Mac Newbold's avatar
Mac Newbold committed
82
	@$(MAKE) -C utils control-install
83
	@$(MAKE) -C lib control-install
84
ifeq ($(EVENTSYS),1)
85
	@$(MAKE) -C event control-install
86
endif
87
	@$(MAKE) -C sensors control-install
88
	@$(MAKE) -C xmlrpc control-install
89
	@$(MAKE) -C tmcd control-install
90
	@$(MAKE) -C accounts control-install
91

92
install-mkdirs:
93
	-mkdir -p $(INSTALL_TOPDIR)/opsdir
94
95
	-mkdir -p $(INSTALL_TOPDIR)/locks
	-mkdir -p $(INSTALL_TOPDIR)/log
96
97
	-mkdir -p $(INSTALL_TOPDIR)/log/mysql
	-mkdir -p $(INSTALL_TOPDIR)/log/exports
98
	-mkdir -p $(INSTALL_TOPDIR)/lists
99
	-mkdir -p $(INSTALL_TOPDIR)/backup
100
	-mkdir -p $(INSTALL_TOPDIR)/etc
101
	-mkdir -p $(INSTALL_TOPDIR)/expwork
102
103
	-mkdir -p $(INSTALL_TOPDIR)/batch
	-chmod 777 $(INSTALL_TOPDIR)/batch
104
105
	-mkdir -p $(INSTALL_TOPDIR)/expinfo
	-chmod 777 $(INSTALL_TOPDIR)/expinfo
106
107
	-mkdir -p $(INSTALL_TOPDIR)/images
	-chmod 775 $(INSTALL_TOPDIR)/images
108
	-ln -s /usr/testbed/bin/nse $(INSTALL_TOPDIR)/bin
109
110
	-mkdir -p $(INSTALL_TOPDIR)/ssl
	-chmod 770 $(INSTALL_TOPDIR)/ssl
111

112
113
tipserv-install:
	-mkdir -p $(INSTALL_TOPDIR)/log/tiplogs
114
	-mkdir -p $(INSTALL_TOPDIR)/etc
115
116
117
118
	@$(MAKE) -C tip tipserv-install
	@$(MAKE) -C capture tipserv-install
	@$(MAKE) -C tbsetup tipserv-install

119
120
121
122
client-mkdirs:
	-mkdir -p $(DESTDIR)$(CLIENT_BINDIR)

client:
123
	@$(MAKE) -C lib/libtb client
124
ifeq ($(EVENTSYS),1)
125
	@$(MAKE) -C event client
126
endif
127
	@$(MAKE) -C os client
128
ifneq ($(SYSTEM),CYGWIN_NT-5.1)
Timothy Stack's avatar
 
Timothy Stack committed
129
130
	@$(MAKE) -C capture client
	@$(MAKE) -C tip client
131
	@$(MAKE) -C tools client
132
endif
133
134
135
136
	@$(MAKE) -C sensors client
	@$(MAKE) -C tmcd client

client-install: client client-mkdirs
137
ifeq ($(EVENTSYS),1)
138
	@$(MAKE) -C event client-install
139
endif
140
	@$(MAKE) -C os client-install
141
ifneq ($(SYSTEM),CYGWIN_NT-5.1)
Timothy Stack's avatar
 
Timothy Stack committed
142
143
	@$(MAKE) -C capture client-install
	@$(MAKE) -C tip client-install
144
	@$(MAKE) -C tools client-install
145
endif
146
	@$(MAKE) -C sensors client-install
147
148
	@$(MAKE) -C tmcd client-install

149
150
151
152
destdircheck:
	@if [ -z "$(DESTDIR)" ]; then \
	    echo "You must define DESTDIR for this target!"; \
	    false; \
153
154
155
156
	fi
	@if [ "$(DESTDIR)" = "/" ]; then \
	    echo "DESTDIR is '/', really really bad idea!"; \
	    false; \
157
158
	fi

159
160
161
162
163
164
165
mfsoscheck:
	@if [ `uname -s` != "FreeBSD" ]; then \
	    echo "Must build MFS files on a FreeBSD system!"; \
	    false; \
	fi

mfs: mfsoscheck
166
167
168
169
	@$(MAKE) -C os mfs
	@$(MAKE) -C sensors mfs
	@$(MAKE) -C tmcd mfs

170
mfs-install: destdircheck mfs client-mkdirs
171
172
173
174
	@$(MAKE) -C os mfs-install
	@$(MAKE) -C sensors mfs-install
	@$(MAKE) -C tmcd mfs-install

175
176
177
178
179
180
181
182
183
184
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

185
186
187
188
189
#
# 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)
190
SCHEMACHECK= cd $(OBJDIR)/db && perl schemacheck
191
192
193
194
195
196
197
else
SCHEMACHECK= @echo "Skipping schema check, since prefix isn't /usr/testbed"
endif
install-schemacheck:
	@echo "Checking DB schema..."
	$(SCHEMACHECK)

Chad Barb's avatar
 
Chad Barb committed
198
199
200
201
202
203
204
205
206
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)

207
208
209
210
211
212
213
214
215
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)

216
217
218
219
220
221
222
223
224
ifeq ($(TBROOT),/usr/testbed)
SETBUILDINFO= cd $(OBJDIR)/utils && perl setbuildinfo
else
SETBUILDINFO= @echo "Skipping setbuildinfo, since prefix isn't /usr/testbed"
endif
install-setbuildinfo:
	@echo "Setting the Build and Version info"
	$(SETBUILDINFO)

225
226
clean:		clean-subdirs
distclean:	distclean-subdirs
Mike Hibler's avatar
Mike Hibler committed
227
	rm -f Makeconf GNUmakefile config.h config.status config.cache config.log
228
	rm -f $(DISTCLEAN_FILES)
229

230
231
232
233
234
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) .

235
236
237
238
239
# How to recursively descend into subdirectories to make general
# targets such as `all'.
%.MAKE:
	@$(MAKE) -C $(dir $@) $(basename $(notdir $@))
%-subdirs: $(addsuffix /%.MAKE,$(SUBDIRS)) ;
240

241
242
# By default, make any target by descending into subdirectories.
%: %-subdirs ;
243

244
.PHONY: post-install install-mkdirs
245
246
247

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