## locks.? added files
##
## Makefile for YALB:
##

##
## which version my dear ?
##
V=0.1

##
## installation place :
##

LMANAGER = lmanager
RMANAGER = remote
LDAEMON_BASE = ldaemon
LDAEMONS = $(LDAEMON_BASE)-`uname -m`

DAEMONS = $(LMANAGER) $(RMANAGER) $(LDAEMONS)
BINS = rexec yalb_kill yalb_host_config yalb_system_config yalb_stats yalbinfo
LIBRARYS = libyalb.a
INCLUDES = system.h rexecbib.h lobalib.h remote.h
DSRCS = yalbinfo.c \
	yalb_host_config.c reconfig.c get_swap_server.c permission.c \
	yalb_stats.c yalb_stats_display.c \
	yalb_system_config.c \
	yalb_kill.c \
	$(LDAEMON_BASE).c children.c yalb_config_db.c \
	$(LMANAGER).c yalb_stats_db.c \
	lobalib.c rexecbib.c \
	$(RMANAGER).c match.c rexec.c
DHDRS = children.h yalb_config_db.h yalb_stats_db.h \
	yalb_stats_display.h reconfig.h
DATAS = yalb.config yalb.match
EXTRA = readme Makefile copyright
MAN1S = yalb_host_config.1 yalb_kill.1 yalb_stats.1 \
        yalb_system_config.1 yalbinfo.1 rexec.1
#MAN3S = libyalb.3
MAN5S = yalb.match.5 yalb.config.5 

prefix=/usr/local
YALB_DAEMON = $(prefix)/etc
YALB_BIN = $(prefix)/bin
YALB_DATA = $(prefix)/lib/yalb
YALB_LIBRARY = $(prefix)/lib
YALB_INCLUDE = $(prefix)/include/yalb
YALB_MAN = $(prefix)/man

##
## lib for the rpc-library:
## (remove if unused)
##
RLIB = -lrpcsvc

##
## how to build:
## (Ansi C-Compiler required)
##
CC = gcc

##
## Search /usr/include for header files instead of using GNUs
## own headerfiles. 
##
# CFLAGS =  $(DEFS) -I/usr/include
#changed on 9.8.99
# CFLAGS =  -O $(DEFS) -I/usr/include

#CFLAGS = -ansi -pedantic -O $(DEFS) -I/usr/include
#/usr/include changed on 14.8.99
CFLAGS = -g -ansi -pedantic -D__KERNEL__  -DMODULE -w -O $(DEFS) -I/usr/include
#CFLAGS = -g -ansi -pedantic -D__KERNEL__  -DMODULE -D__KERNEL_STRICT_NAMES -w -O $(DEFS) -I/usr/include
LDFLAGS =


HOST_CONFIG_OBJS = yalb_host_config.o reconfig.o get_swap_server.o permission.o
SYSTEM_CONFIG_OBJS = yalb_system_config.o reconfig.o permission.o
STATS_OBJS = yalb_stats.o yalb_stats_display.o permission.o
LIB_OBJS = lobalib.o rexecbib.o yalb_stats_db.o yalb_config_db.o

##
## define BROADCAST_MASK (defaults to class C subnet):
##
BROADCAST_MASK=0xffffff00

##
## pass installation path's and define ROOT_OWNER for a real version
## (you may leave it out for testing purposes; buggy and not recommended)
##
DEFS = -DYALB_DATA=\"$(YALB_DATA)\" \
       -DYALB_BIN=\"$(YALB_BIN)\" \
       -DYALB_DAEMON=\"$(YALB_DAEMON)\" \
       -DLMANAGER=\"$(LMANAGER)\" \
       -DRMANAGER=\"$(RMANAGER)\" \
       -DLDAEMON_BASE=\"$(LDAEMON_BASE)\" \
       -DROOT_OWNER \
       -DBROADCAST_MASK=$(BROADCAST_MASK)

#define _SVID_SOURCE --added on 13.8.99
#_SVID_SOURCE=1 
#define LINUX --added on 13.8.99
#LINUX=1

#kvm removed on 9.8.99
#LIBS = $(RLIB) -lm -lkvm -L. -lyalb 
LIBS = $(RLIB) -lm -lc -L. -lyalb

##
## now back to the real work:
##

all: build

build: 	$(LDAEMON_BASE) $(LMANAGER) $(RMANAGER) rexec \
	yalb_host_config yalb_system_config yalb_kill yalb_stats yalbinfo
		
yalbinfo: yalbinfo.c
	$(CC) $(CFLAGS) -DAVENRUN $(LDFLAGS) -o yalbinfo yalbinfo.c $(LIBS)

yalb_host_config: $(HOST_CONFIG_OBJS) libyalb.a
	$(CC) $(CFLAGS) $(LDFLAGS) -o yalb_host_config \
	$(HOST_CONFIG_OBJS) $(LIBS)

yalb_stats: $(STATS_OBJS) libyalb.a
	$(CC) $(CFLAGS) $(LDFLAGS) -o yalb_stats $(STATS_OBJS) $(LIBS)

yalb_system_config: $(SYSTEM_CONFIG_OBJS) libyalb.a
	$(CC) $(CFLAGS) $(LDFLAGS) -o yalb_system_config $(SYSTEM_CONFIG_OBJS) $(LIBS)

yalb_kill: yalb_kill.o permission.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o yalb_kill yalb_kill.o permission.o

$(LDAEMON_BASE):	$(LDAEMON_BASE).o system.h remote.h children.o \
		 reconfig.o libyalb.a
	$(CC) $(CFLAGS) $(LDFLAGS) -o $(LDAEMON_BASE)-`uname -m` \
		$(LDAEMON_BASE).o  children.o yalb_config_db.o reconfig.o \
		$(LIBS)

$(LMANAGER):	$(LMANAGER).o libyalb.a
	$(CC) $(CFLAGS) $(LDFLAGS) -o $(LMANAGER) $(LMANAGER).o \
		yalb_config_db.o yalb_stats_db.o $(LIBS)

###


libyalb.a: $(LIB_OBJS)
	ar ruv libyalb.a $(LIB_OBJS)
	ranlib libyalb.a

###

$(RMANAGER):	$(RMANAGER).o libyalb.a match.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o $(RMANAGER) $(RMANAGER).o match.o $(LIBS)

###

rexec:	rexec.o libyalb.a
	$(CC) $(CFLAGS) $(LDFLAGS) -o rexec rexec.o $(LIBS)

tags TAGS:
	etags *.[ch]

dist tar:
	rm -rf xyalb-$V
	mkdir xyalb-$V
	cp $(EXTRA) $(DSRCS) $(DHDRS) $(INCLUDES) $(DATAS) \
		$(MAN1S) $(MAN5S) \
		xyalb-$V
	gtar cvf xyalb-$V.tar xyalb-$V
	gzip -f -v -9 xyalb-$V.tar
	rm -rf xyalb-$V

clean:
	rm -f *.o ldaemon-`uname -m` \
		lmanager rexec remote \
		yalbinfo \
		yalb_host_config yalb_kill yalb_stats yalb_system_config \
		libyalb.a core *~ *.orig *.rej lmake.???

clobber realclean distclean:	clean
	rm -f xyalb*.tar* TAGS

install:
	-@for dir in $(YALB_DAEMON) $(YALB_BIN) $(YALB_DATA) \
		$(YALB_LIBRARY) $(YALB_INCLUDE) \
		$(YALB_MAN)/man1 $(YALB_MAN)/man3 $(YALB_MAN)/man5 ; do \
		if [ ! -d $$dir ]; then \
			echo mkdir -p $$dir ; \
			mkdir -p $$dir ; \
		fi ; \
	done
	-@for FILE in $(DAEMONS); do \
		echo cp $$FILE $(YALB_DAEMON); \
		rm -f $(YALB_DAEMON)/$$FILE ; \
		cp $$FILE $(YALB_DAEMON); \
	done
	-@for FILE in $(BINS); do \
		echo cp $$FILE $(YALB_BIN); \
		cp $$FILE $(YALB_BIN); \
	done
	-@for FILE in $(DATAS); do \
		echo touch $(YALB_DATA)/$$FILE; \
		touch $(YALB_DATA)/$$FILE; \
	done
	-@for FILE in $(LIBRARYS); do \
		echo cp $$FILE $(YALB_LIBRARY); \
		cp $$FILE $(YALB_LIBRARY); \
		echo ranlib  $(YALB_LIBRARY)/$$FILE; \
		ranlib  $(YALB_LIBRARY)/$$FILE; \
	done
	-@for FILE in $(INCLUDES); do \
		echo cp $$FILE $(YALB_INCLUDE); \
		cp $$FILE $(YALB_INCLUDE); \
	done
	-@for FILE in $(MAN1S); do \
		echo cp $$FILE $(YALB_MAN)/man1; \
		cp $$FILE $(YALB_MAN)/man1; \
	done
	-@for FILE in $(MAN3S); do \
		echo cp $$FILE $(YALB_MAN)/man3; \
		cp $$FILE $(YALB_MAN)/man3; \
	done
	-@for FILE in $(MAN5S); do \
		echo cp $$FILE $(YALB_MAN)/man5; \
		cp $$FILE $(YALB_MAN)/man5; \
	done

## end of Makefile
