GNUmakefile.in 4.31 KB
Newer Older
1
#
Mike Hibler's avatar
Mike Hibler committed
2
# Copyright (c) 2000-2017 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
MOBILESUPPORT   = @MOBILESUPPORT@
27
SUBDIR		= $(subst $(TESTBED_SRCDIR)/,,$(SRCDIR))
28
SYSTEM	       := $(shell uname -s)
29 30
ARCH	       := $(shell uname -p)
REL	       := $(shell $(SRCDIR)/tmcc/osstuff.sh -r)
31 32 33

include $(OBJDIR)/Makeconf

34
SUBDIRS         = lib tools os sensors protogeni
35 36 37
ifneq ($(EVENTSYS),0)
SUBDIRS += event
endif
38 39 40
ifeq ($(MOBILESUPPORT),1)
SUBDIRS += mobile
endif
41 42
# tmcc should be last as the freenas* install targets mess with the hierarchy
SUBDIRS += tmcc
43

Leigh B Stoller's avatar
Leigh B Stoller committed
44
ifeq ($(WITH_EMULAB),1)
45
all:	all-subdirs
46
install:all boss-install-subdirs
Leigh B Stoller's avatar
Leigh B Stoller committed
47 48
else
all:	client-subdirs
Leigh B Stoller's avatar
Leigh B Stoller committed
49 50 51 52
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
53
endif
54 55 56
include $(TESTBED_SRCDIR)/GNUmakerules

client:		client-subdirs
57
client-install: client client-mkdirs client-install-subdirs client-setversion
58
control-install: control-install-subdirs
59
fs-install:     fs-install-subdirs
Leigh B Stoller's avatar
Leigh B Stoller committed
60
subboss:	subboss-subdirs
61
subboss-install: client client-mkdirs subboss-install-subdirs
62
post-install:	post-install-subdirs
63 64
clean:		clean-subdirs
distclean:	distclean-subdirs
Mike Hibler's avatar
Mike Hibler committed
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87

destdircheck:
	@if [ -z "$(DESTDIR)" ]; then \
	    echo "You must define DESTDIR for this target!"; \
	    false; \
	fi
	@if [ "$(DESTDIR)" = "/" ]; then \
	    echo "DESTDIR is '/', really really bad idea!"; \
	    false; \
	fi

mfsoscheck:
	@if [ `uname -s` != "FreeBSD" ]; then \
	    echo "Must build CDROM/MFS files on a FreeBSD system!"; \
	    false; \
	fi

mfs:		mfsoscheck mfs-subdirs
mfs-install:	destdircheck mfs client-mkdirs mfs-install-subdirs
frisbee-mfs:	mfsoscheck frisbee-mfs-subdirs
frisbee-mfs-install:	destdircheck frisbee-mfs client-mkdirs frisbee-mfs-install-subdirs
newnode-mfs:	mfsoscheck newnode-mfs-subdirs
newnode-mfs-install:	destdircheck newnode-mfs client-mkdirs newnode-mfs-install-subdirs
Leigh B Stoller's avatar
Leigh B Stoller committed
88

89
TARBALLDESTDIR = /var/tmp/emulab-client
90
tarball-check:
91 92 93 94 95 96 97 98 99
	@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
100 101

client-tarball: tarball-check
102 103 104 105 106
	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
107 108 109
client-mkdirs:
	-mkdir -p $(DESTDIR)$(CLIENT_BINDIR)
	-mkdir -p $(DESTDIR)$(CLIENT_MANDIR)
110

111 112
freenas-os-check:
	@if [ "$(SYSTEM)" != "FreeBSD" -o "$(ARCH)" != "amd64" -o \
113 114
	      \( "$(REL)" != "9.2" -a "$(REL)" != "9.3" -a "$(REL)" != "8.3" \) ]; then \
	    echo "Must run on FreeBSD 8.3 or 9.2 or 9.3 amd64"; \
115 116 117 118 119 120 121 122 123
	    false; \
	fi

#
# XXX when we have a real freenas9 target, all the moving files around
# should be done there...
#
freenas-tarball: freenas-os-check tarball-check
	echo "Building and installing client-side in $(TARBALLDESTDIR)..."
124 125
	OSSTUFF="OS=FreeBSD DIST=FreeNAS REL=$(REL)" \
	    DESTDIR=$(TARBALLDESTDIR) $(MAKE) client-install
126 127 128
	echo "Creating tarball freenas-client.tar.gz..."
	tar czf freenas-client.tar.gz -C $(TARBALLDESTDIR) .

129 130 131 132 133 134 135
#
# Attempt to find a git commit hash and stash in /etc/emulab.
#
client-setversion: setversion
	@echo "Setting Version info"
	@perl setversion

136 137 138 139 140 141 142
# 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)