1# Note: we include the additional tweaking of top_builddir, so that LIBTOOL
2# resolves to the correct place.
3top_builddir=@top_builddir@/../..
4top_srcdir=@top_srcdir@
5srcdir=@srcdir@
6
7include $(top_builddir)/Make.rules
8
9.SUFFIXES: .la .lo
10
11SHARED_CFLAGS=-DPR_SHARED_MODULE
12SHARED_LDFLAGS=-avoid-version -export-dynamic -module
13VPATH=@srcdir@
14
15MODULE_LIBS=@MODULE_LIBS@
16
17MODULE_NAME=mod_sftp
18MODULE_OBJS=mod_sftp.o msg.o packet.o cipher.o mac.o umac.o umac128.o \
19  compress.o kex.o keys.o crypto.o utf8.o session.o service.o kbdint.o \
20  auth-hostbased.o auth-kbdint.o auth-password.o auth-publickey.o auth.o \
21  disconnect.o rfc4716.o keystore.o channel.o blacklist.o agent.o \
22  interop.o tap.o fxp.o scp.o display.o misc.o date.o bcrypt.o
23SHARED_MODULE_OBJS=mod_sftp.lo msg.lo packet.lo cipher.lo mac.lo umac.lo \
24  umac128.lo compress.lo kex.lo keys.lo crypto.lo utf8.lo session.lo \
25  service.lo kbdint.lo auth-hostbased.lo auth-kbdint.lo auth-password.lo \
26  auth-publickey.lo auth.lo disconnect.lo rfc4716.lo keystore.lo channel.lo \
27  blacklist.lo agent.lo interop.lo tap.lo fxp.lo scp.lo display.lo misc.lo \
28  date.lo bcrypt.lo
29
30# Necessary redefinitions
31INCLUDES=-I. -I../.. -I../../include -I$(top_srcdir)/../../include @INCLUDES@
32CPPFLAGS=$(ADDL_CPPFLAGS) -DHAVE_CONFIG_H $(DEFAULT_PATHS) $(PLATFORM) $(INCLUDES)
33LDFLAGS=-L../../lib @LDFLAGS@
34
35# We special-case the building of umac128.o in order to use preprocessor
36# tricks to get the implementation, rather than making it be all in runtime.
37UMAC128_CPPFLAGS=-DUMAC_OUTPUT_LEN=16 -Dumac_alloc=umac128_alloc -Dumac_init=umac128_init -Dumac_new=umac128_new -Dumac_update=umac128_update -Dumac_final=umac128_final -Dumac_delete=umac128_delete -Dumac_reset=umac128_reset
38
39umac128.o: $(top_srcdir)/umac.c
40	$(CC) $(CPPFLAGS) $(CFLAGS) $(UMAC128_CPPFLAGS) -o umac128.o -c $(top_srcdir)/umac.c
41
42%.o: %.c
43	$(CC) $(CPPFLAGS) $(CFLAGS) -c $<
44
45umac128.lo: $(top_srcdir)/umac.c
46	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(CPPFLAGS) $(CFLAGS) $(SHARED_CFLAGS) $(UMAC128_CPPFLAGS) -o umac128.lo -c $(top_srcdir)/umac.c
47
48%.lo: %.c
49	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(CPPFLAGS) $(CFLAGS) $(SHARED_CFLAGS) -c $<
50
51shared: $(SHARED_MODULE_OBJS)
52	$(LIBTOOL) --mode=link --tag=CC $(CC) -o $(MODULE_NAME).la $(SHARED_MODULE_OBJS) -rpath $(LIBEXECDIR) $(LDFLAGS) $(SHARED_LDFLAGS) $(MODULE_LIBS) $(SHARED_MODULE_LIBS) `cat $(top_srcdir)/$(MODULE_NAME).c | grep '$$Libraries:' | sed -e 's/^.*\$$Libraries: \(.*\)\\$$/\1/'`
53
54static: $(MODULE_OBJS)
55	test -z "$(MODULE_LIBS)" || echo "$(MODULE_LIBS)" >> $(MODULE_LIBS_FILE)
56	$(AR) rc $(MODULE_NAME).a $(MODULE_OBJS)
57	$(RANLIB) $(MODULE_NAME).a
58
59install: install-headers install-misc
60	if [ -f $(MODULE_NAME).la ] ; then \
61		$(LIBTOOL) --mode=install --tag=CC $(INSTALL_BIN) $(MODULE_NAME).la $(DESTDIR)$(LIBEXECDIR) ; \
62	fi
63
64# BSD install -d doesn't work, so ...
65$(DESTDIR)$(includedir) $(DESTDIR)$(includedir)/proftpd:
66	@if [ ! -d $@ ]; then \
67		mkdir -p $@; \
68		chown $(INSTALL_USER):$(INSTALL_GROUP) $@; \
69		chmod 0755 $@; \
70	fi
71
72install-headers: $(DESTDIR)$(includedir)/proftpd
73	$(INSTALL_MAN) $(MODULE_NAME).h $(DESTDIR)$(includedir)/proftpd/$(MODULE_NAME).h
74
75install-misc:
76	$(INSTALL) -d -m 0755 $(DESTDIR)$(sysconfdir)/proftpd
77	$(INSTALL) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0644 $(top_srcdir)/dhparams.pem $(DESTDIR)$(sysconfdir)/proftpd/dhparams.pem.sample
78	$(INSTALL) -o $(INSTALL_USER) -g $(INSTALL_GROUP) -m 0644 $(top_srcdir)/blacklist.dat $(DESTDIR)$(sysconfdir)/proftpd/blacklist.dat.sample
79
80clean:
81	$(LIBTOOL) --mode=clean $(RM) $(MODULE_NAME).a $(MODULE_NAME).la *.o *.lo .libs/*.o
82
83distclean: clean
84	$(RM) Makefile $(MODULE_NAME).h config.status config.cache config.log *.gcda *.gcno
85	-$(RM) -r CVS/ RCS/
86