1#
2# Copyright (c) 1990, 2010, Oracle and/or its affiliates. All rights reserved.
3#
4
5PROG=		in.ftpd ftpcount ftpshut ftprestart privatepw
6SCRIPTS=	ftpaddhost ftpconfig
7MANIFEST=	ftp.xml
8SVCMETHOD=	svc-ftp
9
10include		../../../Makefile.cmd
11
12COMMON_OBJS=	COPYRIGHT.o vers.o
13FTPD_OBJS=	$(COMMON_OBJS) ftpd.o ftpcmd.o glob.o logwtmp.o popen.o \
14		access.o extensions.o realpath.o acl.o private.o \
15		authenticate.o conversions.o rdservers.o paths.o hostacc.o \
16		routevector.o restrict.o domain.o wu_fnmatch.o timeout.o \
17		getpwnam.o inet.o xferlog.o gssutil.o privs.o
18FTPCOUNT_OBJS=	$(COMMON_OBJS) ftpcount.o rdservers.o inet.o
19FTPSHUT_OBJS=	$(COMMON_OBJS) ftpshut.o rdservers.o inet.o
20FTPREST_OBJS=	$(COMMON_OBJS) ftprestart.o rdservers.o inet.o
21CKCONFIG_OBJS=	$(COMMON_OBJS) ckconfig.o rdservers.o inet.o
22PRIVATE_OBJS=	$(COMMON_OBJS) privatepw.o
23OBJS=		$(FTPD_OBJS) ftpcount.o ftpshut.o ftprestart.o ckconfig.o \
24		privatepw.o
25SRCS=		$(OBJS:%.o=%.c)
26CONFIGFILES=	ftpaccess ftpconversions ftpgroups ftphosts ftpservers ftpusers
27ETCFTPDDIR=	$(ROOTETC)/ftpd
28ETCFTPDFILES=	$(CONFIGFILES:%=$(ETCFTPDDIR)/%)
29$(ETCFTPDFILES):=	FILEMODE= 0644
30ROOTUSRSBINSCRIPTS=	$(SCRIPTS:%=$(ROOTUSRSBIN)/%)
31ROOTFTPCOUNT=	$(ROOTUSRSBIN)/ftpcount
32ROOTFTPWHO=	$(ROOTUSRSBIN)/ftpwho
33
34ROOTMANIFESTDIR=	$(ROOTSVCNETWORK)
35
36# I18n
37POFILE=		in.ftpd_all.po
38POFILES=	$(SCRIPTS:%=%.po)
39
40# When building for Solaris 8 add to CPPFLAGS:
41# -Ddn_skipname=__dn_skipname -DSOLARIS_NO_AUDIT_FTPD_LOGOUT
42CLOBBERFILES +=	ckconfig ftpwho $(SCRIPTS)
43CPPFLAGS +=	-DBSD_COMP -D_FILE_OFFSET_BITS=64 -DINET6 -DSOLARIS_BSM_AUDIT \
44		-DSOLARIS_ETC_FTPUSERS -DSENDFILE -DCLOSEFROM -DUSE_GSS \
45		-DSOLARIS_GSS_USEROK -DSOLARIS_PRIVS
46LDLIBS +=	-lsocket -lnsl -lpam -lbsm -lsendfile -lgss
47YFLAGS +=	-d
48
49in.ftpd :=	LDFLAGS += $(MAPFILE.NGB:%=-M%)
50
51# tcov output relies on atexit(3C) registered functions being called, so stop
52# _exit() from being used. Passing -l to yacc stops it generating #line
53# directives which don't work with tcov.
54tcov :=		CFLAGS += -xa
55tcov :=		CPPFLAGS += -D_exit=exit
56tcov :=		YFLAGS += -l
57
58.KEEP_STATE:
59
60all tcov:	$(PROG) ckconfig ftpwho $(CONFIGFILES) $(SCRIPTS)
61
62in.ftpd:	$(FTPD_OBJS) $(MAPFILE.NGB)
63		$(LINK.c) $(FTPD_OBJS) -o $@ $(LDLIBS)
64		$(POST_PROCESS)
65
66ftpcount:	$(FTPCOUNT_OBJS)
67		$(LINK.c) $(FTPCOUNT_OBJS) -o $@ -lsocket -lnsl
68		$(POST_PROCESS)
69
70ftpwho:		ftpcount
71		$(RM) $@
72		$(LN) ftpcount $@
73
74ftpshut:	$(FTPSHUT_OBJS)
75		$(LINK.c) $(FTPSHUT_OBJS) -o $@ -lsocket -lnsl
76		$(POST_PROCESS)
77
78ftprestart:	$(FTPREST_OBJS)
79		$(LINK.c) $(FTPREST_OBJS) -o $@ -lsocket -lnsl
80		$(POST_PROCESS)
81
82ckconfig:	$(CKCONFIG_OBJS)
83		$(LINK.c) $(CKCONFIG_OBJS) -o $@ -lsocket -lnsl
84		$(POST_PROCESS)
85
86privatepw:	$(PRIVATE_OBJS)
87		$(LINK.c) $(PRIVATE_OBJS) -o $@
88		$(POST_PROCESS)
89
90# This causes y.tab.c to be renamed to ftpcmd.c, needed by tcov.
91ftpcmd.c:	ftpcmd.y
92
93$(ETCFTPDDIR)/%: %
94		$(INS.file)
95
96$(POFILE):	$(POFILES)
97		$(RM) $@
98		cat $(POFILES) >$@
99
100$(ROOTFTPWHO):	$(ROOTFTPCOUNT)
101		$(RM) $@
102		$(LN) $(ROOTFTPCOUNT) $@
103
104install:	all $(ROOTUSRSBINPROG) $(ROOTFTPWHO) $(ROOTUSRSBINSCRIPTS) \
105		$(ETCFTPDFILES) $(ROOTMANIFEST) $(ROOTSVCMETHOD)
106
107check:		$(CHKMANIFEST)
108
109clean:
110		$(RM) $(OBJS) *.d *.tcov y.tab.h y.tab.c ftpcmd.c
111
112lint:		lint_SRCS
113
114include		../../../Makefile.targ
115