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