# # Testbed Makefile # SRCDIR = @srcdir@ OBJDIR = . SUBDIR = TESTBED_SRCDIR = @top_srcdir@ DISTCLEAN_FILES = @DISTCLEAN_FILES@ EVENTSYS = @EVENTSYS@ SYSTEM := $(shell uname -s) include Makeconf # # Ordering here matters! # Things with no dependencies go first: # assign db lib www # Things that may have dependencies go next: # @optional_subdirs@ (has event) # ipod os security sensors # 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: # SUBDIRS = lib db assign www @optional_subdirs@ ipod security sensors \ pxe tbsetup account tmcd utils tip capture ipod vis \ sensors os xmlrpc install/newnode_sshkeys mote tools/whol \ wiki all: all-subdirs install: @echo "Choose either boss-install (paper) or ops-install (plastic)" @echo "Choose tipserv-install for dedicated tip server machines." # # For installation on boss node (okay, paper). # boss-install: install-schemacheck install-sitevarscheck install-dbfillcheck \ install-subdirs install-mkdirs @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 @echo "DON'T FORGET TO RUN A POST-INSTALL AS ROOT" post-install: @$(MAKE) -C db post-install @$(MAKE) -C ipod post-install @$(MAKE) -C tbsetup post-install @$(MAKE) -C account post-install @$(MAKE) -C security post-install @$(MAKE) -C vis post-install @$(MAKE) -C www post-install ifeq ($(EVENTSYS),1) @$(MAKE) -C event post-install endif @$(MAKE) -C mote post-install @$(MAKE) -C tools post-install @$(MAKE) -C wiki post-install @$(MAKE) -C utils post-install # # For installation on the 'ops' or 'users' node (okay, plastic) # ops-install: @$(MAKE) -C tbsetup control-install @$(MAKE) -C security control-install @$(MAKE) -C tip control-install # @$(MAKE) -C os control-install @$(MAKE) -C db control-install @$(MAKE) -C tbsetup control-install @$(MAKE) -C utils control-install @$(MAKE) -C lib control-install ifeq ($(EVENTSYS),1) @$(MAKE) -C event control-install endif @$(MAKE) -C xmlrpc control-install @$(MAKE) -C tmcd control-install install-mkdirs: -mkdir -p $(INSTALL_TOPDIR)/opsdir -mkdir -p $(INSTALL_TOPDIR)/locks -mkdir -p $(INSTALL_TOPDIR)/log -mkdir -p $(INSTALL_TOPDIR)/log/mysql -mkdir -p $(INSTALL_TOPDIR)/log/exports -mkdir -p $(INSTALL_TOPDIR)/lists -mkdir -p $(INSTALL_TOPDIR)/backup -mkdir -p $(INSTALL_TOPDIR)/etc -mkdir -p $(INSTALL_TOPDIR)/expwork -mkdir -p $(INSTALL_TOPDIR)/batch -chmod 777 $(INSTALL_TOPDIR)/batch -mkdir -p $(INSTALL_TOPDIR)/expinfo -chmod 777 $(INSTALL_TOPDIR)/expinfo -mkdir -p $(INSTALL_TOPDIR)/images -chmod 775 $(INSTALL_TOPDIR)/images -ln -s /usr/testbed/bin/nse $(INSTALL_TOPDIR)/bin -mkdir -p $(INSTALL_TOPDIR)/ssl -chmod 770 $(INSTALL_TOPDIR)/ssl tipserv-install: -mkdir -p $(INSTALL_TOPDIR)/log/tiplogs -mkdir -p $(INSTALL_TOPDIR)/etc @$(MAKE) -C tip tipserv-install @$(MAKE) -C capture tipserv-install @$(MAKE) -C tbsetup tipserv-install client-mkdirs: -mkdir -p $(DESTDIR)$(CLIENT_BINDIR) client: @$(MAKE) -C lib/libtb client ifeq ($(EVENTSYS),1) @$(MAKE) -C event client endif @$(MAKE) -C os client ifneq ($(SYSTEM),CYGWIN_NT-5.1) @$(MAKE) -C capture client @$(MAKE) -C tip client endif @$(MAKE) -C sensors client @$(MAKE) -C tmcd client client-install: client client-mkdirs ifeq ($(EVENTSYS),1) @$(MAKE) -C event client-install endif @$(MAKE) -C os client-install ifneq ($(SYSTEM),CYGWIN_NT-5.1) @$(MAKE) -C capture client-install @$(MAKE) -C tip client-install endif @$(MAKE) -C sensors client-install @$(MAKE) -C tmcd client-install 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 MFS files on a FreeBSD system!"; \ false; \ fi mfs: mfsoscheck @$(MAKE) -C os mfs @$(MAKE) -C sensors mfs @$(MAKE) -C tmcd mfs mfs-install: destdircheck mfs client-mkdirs @$(MAKE) -C os mfs-install @$(MAKE) -C sensors mfs-install @$(MAKE) -C tmcd mfs-install 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 # # 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) SCHEMACHECK= cd $(OBJDIR)/db && perl schemacheck else SCHEMACHECK= @echo "Skipping schema check, since prefix isn't /usr/testbed" endif install-schemacheck: @echo "Checking DB schema..." $(SCHEMACHECK) 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) 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) clean: clean-subdirs distclean: distclean-subdirs rm -f Makeconf GNUmakefile config.h config.status config.cache config.log rm -f $(DISTCLEAN_FILES) 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) . # How to recursively descend into subdirectories to make general # targets such as `all'. %.MAKE: @$(MAKE) -C $(dir $@) $(basename $(notdir $@)) %-subdirs: $(addsuffix /%.MAKE,$(SUBDIRS)) ; # By default, make any target by descending into subdirectories. %: %-subdirs ; .PHONY: post-install install-mkdirs # Get rid of a bunch of nasty built-in implicit rules. .SUFFIXES: