# # EMULAB-COPYRIGHT # Copyright (c) 2000-2007 , 2008University of Utah and the Flux Group. # All rights reserved. # SRCDIR = @srcdir@ TESTBED_SRCDIR = @top_srcdir@ EVENTSYS = @EVENTSYS@ OBJDIR = .. SUBDIR = tmcd SYSTEM := $(shell $(TESTBED_SRCDIR)/utils/osstuff.sh -o) include $(OBJDIR)/Makeconf all: server fullclient client fullclient: tmcc client: tmcc-nossl findif dostype server: tmcd tmcd.restart include $(TESTBED_SRCDIR)/GNUmakerules CFLAGS += -O -g -Wall -DUDP \ -I${OBJDIR} -I/usr/local/include \ -I${TESTBED_SRCDIR}/lib/libtb -I${TESTBED_SRCDIR}/pxe TMLIBS = ${OBJDIR}/lib/libtb/libtb.a BOOTINFO = ${OBJDIR}/pxe/bootinfo.o ${OBJDIR}/pxe/bootinfo_mysql.o LDFLAGS += $(LDSTATIC) # # For SSL enabled tmcd/tmcc # CFLAGS += -DETCDIR='"$(INSTALL_ETCDIR)"' SSLFLAGS = -DWITHSSL TMLIBS += -lssl -lcrypto SSLOBJ = ssl.o ifeq ($(SYSTEM),Linux) ifneq ($(LDSTATIC),) NOKERB := $(shell nm /usr/lib/libssl.a | grep -q krb; echo $$?) else NOKERB := 1 endif ifeq ($(NOKERB),0) CFLAGS += `/usr/kerberos/bin/krb5-config --cflags` TMLIBS += `/usr/kerberos/bin/krb5-config --libs krb5` ifneq ($(wildcard /usr/lib/libkrb5support.a),) TMLIBS += -lkrb5support endif endif TMLIBS += -ldl endif # # Take care of historic naming fubars: # Redhat 7.x -> linux # Redhat 9.0 -> linux9 # Fedora 4/6 -> fedora # Stargate 1 -> linux-sg # FreeBSD 4.x -> freebsd # Windows XP -> cygwinxp # MDSUBDIR := $(shell $(TESTBED_SRCDIR)/utils/osstuff.sh -t) ifeq ($(SYSTEM),Linux) ifeq ($(MDSUBDIR),redhat7) MDSUBDIR = linux endif ifeq ($(MDSUBDIR),redhat9) MDSUBDIR = linux9 endif ifeq ($(findstring fedora,$(MDSUBDIR)),fedora) MDSUBDIR = fedora endif ifeq ($(findstring centos,$(MDSUBDIR)),centos) MDSUBDIR = fedora endif ifeq ($(MDSUBDIR),stargate1) MDSUBDIR = linux-sg endif endif ifeq ($(SYSTEM),FreeBSD) ifeq ($(MDSUBDIR),freebsd4) MDSUBDIR = freebsd endif ifeq ($(MDSUBDIR),freebsd8) MDSUBDIR = freebsd7 endif endif ifeq ($(SYSTEM),Cygwin) # Cygwin on Windows XP (a.k.a. NT 5.1) - resembles the Linux case. ifeq ($(MDSUBDIR),CYGWIN_NT-5.1) MDSUBDIR = cygwinxp TMSLIBS += -lminires endif endif ifeq ($(EVENTSYS),1) TMCDCFLAGS = -I$(TESTBED_SRCDIR)/event/lib -DEVENTSYS TMCDLIBS = ${OBJDIR}/event/lib/libevent.a ELVINFLAGS = -lm -L/usr/local/lib -lpubsub endif tmcd: tmcd.c ${TMCDLIBS} decls.h version.o $(SSLOBJ) $(BOOTINFO) $(CC) $(CFLAGS) $(SSLFLAGS) $(TMCDCFLAGS) -o tmcd $< \ version.o $(SSLOBJ) $(BOOTINFO) \ $(LFLAGS) -L/usr/local/lib/mysql -lmysqlclient \ $(ELVINFLAGS) $(TMCDLDFLAGS) $(TMCDLIBS) $(TMLIBS) tmcc: tmcc.c decls.h $(SSLOBJ) $(CC) $(CFLAGS) $(SSLFLAGS) $(LDSTATIC) -g -o tmcc $< $(SSLOBJ) \ $(LFLAGS) $(TMLIBS) tmcc-shared: tmcc.c decls.h $(SSLOBJ) $(CC) $(CFLAGS) $(SSLFLAGS) -g -o tmcc $< $(SSLOBJ) \ $(LFLAGS) $(TMLIBS) tmcc-nossl-debug: tmcc.c decls.h $(CC) $(CFLAGS) $(LDSTATIC) -g -o $@ $< $(LFLAGS) $(TMSLIBS) findif-debug: findif.o $(CC) $(CFLAGS) -g -o $@ findif.o $(LFLAGS) $(LDSTATIC) dostype-debug: dostype.o $(CC) $(CFLAGS) -g -o $@ dostype.o $(LFLAGS) ssl.o: ssl.c ssl.h decls.h version.c: tmcd.c echo >$@ "char build_info[] = \"Built `date +%d-%b-%Y` by `id -nu`@`hostname | sed 's/\..*//'`:`pwd`\";" install: all install: $(INSTALL_SBINDIR)/tmcd \ $(INSTALL_SBINDIR)/tmcd.restart \ $(INSTALL_SBINDIR)/findif $(INSTALL_PROGRAM) $(SRCDIR)/common/config/rc.mkelab \ $(INSTALL_ETCDIR)/rc.mkelab control-install: tmcc @$(MAKE) -C freebsd control-install client-install: client @$(MAKE) -C $(MDSUBDIR) install mfs: client mfs-install: mfs @$(MAKE) -C $(MDSUBDIR) mfs-install frisbee-mfs: client frisbee-mfs-install: frisbee-mfs @$(MAKE) -C $(MDSUBDIR) frisbee-mfs-install $(INSTALL_BINDIR)/tmcd/%: % @echo "Installing $<" -mkdir -p $(INSTALL_BINDIR)/tmcd $(INSTALL_PROGRAM) $< $@ # # Here so that the event system libraries, and libraries they depend upon, # can get made. # ${OBJDIR}/event/lib/%: cd ${OBJDIR}/event/lib && gmake $< ${OBJDIR}/lib/libtb/%: cd ${OBJDIR}/lib/tbdb && gmake $< clean: subdir-clean rm -f *.o core tmcd tmcc tmcc-nossl findif dostype *-debug version.c subdir-clean: @$(MAKE) -C $(MDSUBDIR) clean