GNUmakefile.in 2.83 KB
Newer Older
1
#
2
# Copyright (c) 2000-2012 University of Utah and the Flux Group.
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
# 
# {{{EMULAB-LICENSE
# 
# This file is part of the Emulab network testbed software.
# 
# This file is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or (at
# your option) any later version.
# 
# This file is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public
# License for more details.
# 
# You should have received a copy of the GNU Affero General Public License
# along with this file.  If not, see <http://www.gnu.org/licenses/>.
# 
# }}}
22 23 24 25
#
SRCDIR		= @srcdir@
TESTBED_SRCDIR	= @top_srcdir@
OBJDIR		= @top_builddir@
26
SUBDIR		= $(subst $(TESTBED_SRCDIR)/,,$(SRCDIR))
27 28 29 30
SYSTEM	       := $(shell uname -s)

include $(OBJDIR)/Makeconf

31
SUBDIRS         = lib event tools os sensors tmcc
32

Leigh B Stoller's avatar
Leigh B Stoller committed
33
ifeq ($(WITH_EMULAB),1)
34
all:	all-subdirs
35
install:all boss-install-subdirs
Leigh B Stoller's avatar
Leigh B Stoller committed
36 37
else
all:	client-subdirs
Leigh B Stoller's avatar
Leigh B Stoller committed
38 39 40 41
install:
	@echo "Choose an appropriate install target, and make sure you "
	@echo "you are on a node of that type. Basically, do not do a "
	@echo "client-install on boss, cause you will be hating life!"
Leigh B Stoller's avatar
Leigh B Stoller committed
42
endif
43 44 45
include $(TESTBED_SRCDIR)/GNUmakerules

client:		client-subdirs
46
client-install: client client-mkdirs client-install-subdirs client-setversion
47
control-install: control-install-subdirs
Leigh B Stoller's avatar
Leigh B Stoller committed
48 49
subboss:	subboss-subdirs
subboss-install: client subboss-install-subdirs
50
post-install:	post-install-subdirs
51 52
clean:		clean-subdirs
distclean:	distclean-subdirs
Leigh B Stoller's avatar
Leigh B Stoller committed
53
mfs:		mfs-subdirs
Leigh B Stoller's avatar
Leigh B Stoller committed
54
mfs-install:	client-mkdirs mfs-install-subdirs
Leigh B Stoller's avatar
Leigh B Stoller committed
55
frisbee-mfs:	frisbee-mfs-subdirs
Leigh B Stoller's avatar
Leigh B Stoller committed
56
frisbee-mfs-install:	client-mkdirs frisbee-mfs-install-subdirs
57 58
newnode-mfs:	newnode-mfs-subdirs
newnode-mfs-install:	client-mkdirs newnode-mfs-install-subdirs
Leigh B Stoller's avatar
Leigh B Stoller committed
59

60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
TARBALLDESTDIR = /var/tmp/emulab-client
client-tarball:
	@if [ `id -u` -ne 0 ]; then \
	    echo '*** Must run as root!'; \
	    false; \
	fi
	@if [ -d "$(TARBALLDESTDIR)" ]; then \
	    echo "$(TARBALLDESTDIR) already exists."; \
	    echo "Remove it and try again."; \
	    false; \
	fi
	echo "Building and installing client-side in $(TARBALLDESTDIR)..."
	DESTDIR=$(TARBALLDESTDIR) $(MAKE) client-install
	echo "Creating tarball..."
	tar czf emulab-client.tar.gz -C $(TARBALLDESTDIR) .

Leigh B Stoller's avatar
Leigh B Stoller committed
76 77 78
client-mkdirs:
	-mkdir -p $(DESTDIR)$(CLIENT_BINDIR)
	-mkdir -p $(DESTDIR)$(CLIENT_MANDIR)
79

80 81 82 83 84 85 86
#
# Attempt to find a git commit hash and stash in /etc/emulab.
#
client-setversion: setversion
	@echo "Setting Version info"
	@perl setversion

87 88 89 90 91 92 93
# How to recursively descend into subdirectories to make general
# targets such as `all'.
%.MAKE:
	@$(MAKE) -C $(dir $@) $(basename $(notdir $@))
%-subdirs: $(addsuffix /%.MAKE,$(SUBDIRS)) ;

.PHONY:	$(SUBDIRS)