#CC = gcc -Wall
CC = gcc
#CC = cc -Xa
LDFLAGS = -Lglob -lglob
#LDFLAGS = glob/libglob.a -lsocket -lnsl
CFLAGS = -g
#CFLAGS = -g -DHAVE_SNPRINTF

OBJS_FTP = \
          ftp_cdup.o \
          ftp_cwd.o \
          ftp_list.o \
          ftp_quit.o \
          ftp_port.o \
          ftp_pass.o \
          ftp_pasv.o \
          ftp_pwd.o \
          ftp_retr.o \
          ftp_size.o \
          ftp_syst.o \
          ftp_type.o \
          ftp_user.o \
          not_done.o

OBJS_CLIENT = \
           client_add.o \
           client_del.o \
           client_reply.o \
           client_write.o

OBJS_SERVER = \
           server_accept.o \
           server_cfg.o \
           server_daemon.o \
           server_loop.o \
           server_open.o \
           yaftpd.o

OBJS_UTIL = \
           cmd.o \
           format.o \
           list.o \
           log.o \
           parsecmd.o \
           path_filter.o \
           readline.o \
           signals.o \
           snprintf.o \
           strerror.o

OBJS = $(OBJS_FTP) $(OBJS_CLIENT) $(OBJS_SERVER) $(OBJS_UTIL)

DRIVERS = server_loop ftp_list list server_cfg format log server_daemon \
          server_open ftp_port path_filter snprintf

all: glob/libglob.a yaftpd

glob/libglob.a:
	cd glob; $(MAKE) CC="$(CC)"

drivers: $(DRIVERS)

yaftpd: $(OBJS)
	$(CC) -o $@ $(CFLAGS) $(OBJS) $(LDFLAGS)

ftp_list: ftp_list.c list.o format.o log.o client_reply.o strerror.o \
          snprintf.o path_filter.o
	$(CC) -o $@ -DDRIVER $(CFLAGS) $@.c list.o format.o log.o snprintf.o \
       strerror.o client_reply.o path_filter.o glob/libglob.a
#	$(RM) $@.o

server_loop: server_loop.c client_write.o client_del.o client_add.o \
             client_reply.o strerror.o log.o snprintf.o
	$(CC) -o $@ -DDRIVER $(CFLAGS) $@.c client_write.o client_del.o \
        client_add.o client_reply.o strerror.o log.o snprintf.o ${LDFLAGS}
#	$(RM) $@.o

server_cfg: strerror.o server_cfg.c cmd.h cmd.o
	$(CC) -o $@ $(CFLAGS) -DDRIVER $@.c cmd.o strerror.o
#	$(RM) $@.o

list: list.c format.o snprintf.o log.o
	$(CC) -o $@ -DDRIVER $(CFLAGS) $@.c format.o log.o snprintf.o glob/libglob.a
#	$(RM) $@.o

log: log.c log.h snprintf.o
	$(CC) -o $@ -DDRIVER $(CFLAGS) $@.c snprintf.o
#	$(RM) $@.o

format: format.c snprintf.o
	$(CC) -o $@ -DDRIVER $(CFLAGS) $@.c snprintf.o
#	$(RM) $@.o

server_open: server_open.c
	$(CC) -o $@ -DDRIVER $(CFLAGS) $@.c $(LDFLAGS)
#	$(RM) $@.o

server_daemon: server_daemon.c
	$(CC) -o $@ -DDRIVER $(CFLAGS) $@.c
#	$(RM) $@.o

snprintf: snprintf.c
	$(CC) -o $@ -DDRIVER $(CFLAGS) $@.c
#	$(RM) $@.o

ftp_port: ftp_port.c
	$(CC) -o $@ -DDRIVER $(CFLAGS) $@.c $(LDFLAGS)
#	$(RM) $@.o

path_filter: path_filter.c
	$(CC) -o $@ -DDRIVER $(CFLAGS) $@.c $(LDFLAGS)
#	$(RM) $@.o

clean:
	$(RM) *.o core
	$(RM) yaftpd
	$(RM) glob/*.o glob/libglob.a
	$(RM) $(DRIVERS)
