# Delete "-DESD_SUPPORT" in CFLAGS_DAEMON  and "-lesd" in the cdredd rule if you don't want esound support.
CFLAGS :=  -Wall -Wstrict-prototypes -O2 
MODCFLAGS :=  $(CFLAGS) -fomit-frame-pointer -DMODULE -D__KERNEL__ -DLINUX  # -DCONFIG_MODVERSIONS -DDEBUG
CFLAGS_DAEMON :=  $(CFLAGS) -D_REENTRANT -DESD_SUPPORT

PREFIJO_RPC = cdred_rpc

all: cdred_server cdredd cdred_eject cdred_driver.o

$(PREFIJO_RPC).x: 
	rpcgen $(PREFIJO_RPC).x

$(PREFIJO_RPC).h: $(PREFIJO_RPC).x
	rpcgen -h $(PREFIJO_RPC).x -o $(PREFIJO_RPC).h

$(PREFIJO_RPC)_svc.c: $(PREFIJO_RPC).x
	rpcgen -m $(PREFIJO_RPC).x -o $(PREFIJO_RPC)_svc.c

$(PREFIJO_RPC)_xdr.c: $(PREFIJO_RPC).x
	rpcgen -c $(PREFIJO_RPC).x -o $(PREFIJO_RPC)_xdr.c

$(PREFIJO_RPC)_clnt.c: $(PREFIJO_RPC).x
	rpcgen -l $(PREFIJO_RPC).x -o $(PREFIJO_RPC)_clnt.c


$(PREFIJO_RPC)_svc.o: $(PREFIJO_RPC)_svc.c $(PREFIJO_RPC).x $(PREFIJO_RPC).h 
	$(CC) $(CFLAGS) -c $(PREFIJO_RPC)_svc.c

$(PREFIJO_RPC)_xdr.o: $(PREFIJO_RPC)_xdr.c $(PREFIJO_RPC).x $(PREFIJO_RPC).h
	$(CC) $(CFLAGS_DAEMON) -Wno-unused -c $(PREFIJO_RPC)_xdr.c

$(PREFIJO_RPC)_clnt.o: $(PREFIJO_RPC)_clnt.c $(PREFIJO_RPC).x $(PREFIJO_RPC).h 
	$(CC) $(CFLAGS_DAEMON) -c $(PREFIJO_RPC)_clnt.c


cdred_server: server.o $(PREFIJO_RPC)_svc.o $(PREFIJO_RPC)_xdr.o
	$(CC) $(CFLAGS) server.o $(PREFIJO_RPC)_svc.o $(PREFIJO_RPC)_xdr.o -o cdred_server 

server.o: server.c cdred.h  errors.h $(PREFIJO_RPC).h
	$(CC) $(CFLAGS) -c server.c


cdredd: daemon.o play.o sound.o $(PREFIJO_RPC)_clnt.o $(PREFIJO_RPC)_xdr.o 
	$(CC) $(CFLAGS_DAEMON) daemon.o sound.o play.o $(PREFIJO_RPC)_clnt.o $(PREFIJO_RPC)_xdr.o  -o cdredd -lpthread  -lesd 

daemon.o: daemon.c daemon.h driver.h orders.h errors.h play.h cdred.h sound.h $(PREFIJO_RPC).h
	$(CC) $(CFLAGS_DAEMON) -c daemon.c

sound.o: sound.c sound.h cdred.h daemon.h 
	$(CC) $(CFLAGS_DAEMON) -c sound.c

play.o: play.c play.h sound.h errors.h cdred.h daemon.h $(PREFIJO_RPC).h
	$(CC) $(CFLAGS_DAEMON) -c play.c


cdred_eject: eject.c
	$(CC) $(CFLAGS) eject.c -o cdred_eject 


cdred_driver.o: driver.c driver.h orders.h cdred.h errors.h
	$(CC) $(MODCFLAGS) -c driver.c -o cdred_driver.o


clean: 
	rm -f *~ cdredd cdred_server cdred_eject *.o core $(PREFIJO_RPC)_xdr.c $(PREFIJO_RPC)_clnt.c $(PREFIJO_RPC)_svc.c $(PREFIJO_RPC).h
