1# $Id: Makefile,v 2.14 2010/03/29 20:57:55 fknobbe Exp $
2#
3#
4# Makefile for snortsam
5#
6# To use automated OS detection just type "make".  Uncomment the macros below
7# if you want DEBUG and/or OPSEC support.
8#
9# Alternatively, the "make snortsam-<os>[-opsec]" target syntax may be used
10# (eg "make snortsam-linux" or "make snortsam-sunos-opsec").
11#
12
13# uncomment for debugging
14#DEBUG  = -DFWSAMDEBUG
15
16# uncomment for OPSEC support
17#OPSEC  = -opsec
18
19# OpenBSD only: Default is now the new pf2 plugin.
20# To build the old pf plugin uncomment PFPLUGIN
21#PFPLUGIN = -DUSE_SSP_PF
22
23# generic plugins for all builds
24SSP_GENERIC = ssp_fwexec.o ssp_ciscoacl.o ssp_cisco_nullroute.o ssp_email.o \
25	      ssp_opsec.o ssp_fwsam.o ssp_pix.o ssp_netscreen.o ssp_wgrd.o \
26              ssp_snmp_interface_down.o ssp_forward.o ssp_cisco_nullroute2.o
27
28# OS specific stuff compiles only on these platforms (need headers/libs)
29#SSP_OBSD    = ssp_ipf.o ssp_pf.o ssp_pf2.o
30SSP_OBSD    = ssp_pf.o ssp_pf2.o
31SSP_BSD     = ssp_ipf.o ssp_ipfw2.o ssp_pf2.o
32SSP_LINUX   = ssp_ipchains.o ssp_iptables.o ssp_ebtables.o
33SSP_SUNOS   = ssp_ipf.o
34
35
36OBJS    = snortsam.o twofish.o $(SSP_GENERIC)
37PROG    = snortsam
38SAMTOOL = samtool
39CFLAGS  = -O2 -D$(SYSTYPE) $(DEBUG)
40LDFLAGS =
41#SYSTYPE = `uname`
42SYSTYPE = FreeBSD
43
44# OS specific flags
45OBSD_CFLAGS   = -DBSD ${PFPLUGIN}
46OBSD_LDFLAGS  = -lpthread
47BSD_CFLAGS    = -DBSD
48BSD_LDFLAGS   = -lpthread
49SUNOS_CFLAGS  = -DSOLARIS
50SUNOS_LDFLAGS = -lpthread -lnsl -lsocket -lresolv
51LINUX_CFLAGS  =
52LINUX_LDFLAGS = -lpthread
53
54# OPSEC
55OPSEC_CFLAGS  = -Iopsec/include/opsec -DENABLE_OPSEC
56OPSEC_LDFLAGS = -lnsl
57OPSEC_SUNOS_CFLAGS  = -I/usr/local/pkg_rel/include -DENABLE_OPSEC
58OPSEC_SUNOS_LDFLAGS = -L/usr/local/pkg_rel/lib/release.dynamic -lopsec
59OPSEC_LIBS    = opsec/lib/release.static/libcpcert.a \
60		opsec/lib/release.static/libckpssl.a \
61		opsec/lib/release.static/libopsec.a \
62		opsec/lib/release.static/libckpssl.a \
63		opsec/lib/release.static/libasn1cpp.a \
64		opsec/lib/release.static/libcpopenssl.a \
65		opsec/lib/release.static/libDataStruct.a \
66		opsec/lib/release.static/libskey.a \
67		opsec/lib/release.static/libDataStruct.a \
68		opsec/lib/release.static/libcpcert.a \
69		opsec/lib/release.static/liblogfilter.a \
70		opsec/lib/release.static/libCPSrvIS.a \
71		opsec/lib/release.static/libEncode.a \
72		opsec/lib/release.static/libResolver.a \
73		opsec/lib/release.static/libAppUtils.a \
74		opsec/lib/release.static/libcpca.a \
75		opsec/lib/release.static/libCPMIBase501.a \
76		opsec/lib/release.static/libCPMIClient501.a \
77		opsec/lib/release.static/libcp_policy.a \
78		opsec/lib/release.static/libComUtils.a \
79		opsec/lib/release.static/libsicauth.a \
80		opsec/lib/release.static/libndb.a \
81		opsec/lib/release.static/libcpopenssl.a \
82		opsec/lib/release.static/libOS.a \
83		opsec/lib/release.static/libcpcryptutil.a \
84		opsec/lib/release.static/libcpbcrypt.a \
85		opsec/lib/release.static/libopsecext.a \
86		opsec/lib/release.static/libcpprod50.a \
87		opsec/lib/release.static/libckpssl.a \
88		opsec/lib/release.static/libEventUtils.a \
89		opsec/lib/release.static/libsic.a \
90		opsec/lib/release.static/libResolve.a \
91		opsec/lib/release.static/libcpprng.a \
92		opsec/lib/release.static/libobjlibclient.a \
93		opsec/lib/release.static/libasn1cpp.a \
94		opsec/lib/release.static/libopsec.a \
95		opsec/lib/release.static/libDataStruct.a \
96		opsec/lib/release.static/libcpbcrypt.a \
97		opsec/lib/release.static/libOS.a \
98		opsec/lib/release.static/libcpcert.a \
99		opsec/lib/release.static/libcpbcrypt.a \
100		opsec/lib/release.static/libComUtils.a \
101		opsec/lib/release.static/libOS.a \
102		opsec/lib/release.static/libcpca.a \
103		opsec/lib/release.static/libcpcert.a \
104		opsec/lib/release.static/libcpcryptutil.a \
105		opsec/lib/release.static/libskey.a \
106		opsec/lib/lib/static/libcpc++-3-libc6.1-2-2.10.0.a
107
108all:
109	case "$(SYSTYPE)" in \
110		OpenBSD*) what=obsd;; \
111		*BSD)     what=bsd;; \
112		Linux)    what=linux;; \
113		SunOS)    what=sunos;; \
114	esac && make snortsam-$$what$(OPSEC)
115
116$(PROG)-obsd:
117	make $(PROG) "CFLAGS=$(CFLAGS) $(OBSD_CFLAGS)" \
118	  "LDFLAGS=$(LDFLAGS) $(OBSD_LDFLAGS)" "OBJS=$(OBJS) $(SSP_OBSD)"
119$(PROG)-obsd-opsec:
120	make $(PROG) "CFLAGS=$(CFLAGS) $(OBSD_CFLAGS) $(OPSEC_CFLAGS)" \
121	  "LDFLAGS=$(LDFLAGS) $(OBSD_LDFLAGS) $(OPSEC_LDFLAGS)" \
122	  "OBJS=$(OBJS) $(SSP_OBSD) $(OPSEC_LIBS)"
123
124$(PROG)-bsd:
125	make $(PROG) "CFLAGS=$(CFLAGS) $(BSD_CFLAGS)" \
126	  "LDFLAGS=$(LDFLAGS) $(BSD_LDFLAGS)" "OBJS=$(OBJS) $(SSP_BSD)"
127$(PROG)-bsd-opsec:
128	make $(PROG) "CFLAGS=$(CFLAGS) $(BSD_CFLAGS) $(OPSEC_CFLAGS)" \
129	  "LDFLAGS=$(LDFLAGS) $(BSD_LDFLAGS) $(OPSEC_LDFLAGS)" \
130	  "OBJS=$(OBJS) $(SSP_BSD) $(OPSEC_LIBS)"
131
132$(PROG)-linux:
133	make $(PROG) "CFLAGS=$(CFLAGS) $(LINUX_CFLAGS)" \
134	  "LDFLAGS=$(LDFLAGS) $(LINUX_LDFLAGS)" "OBJS=$(OBJS) $(SSP_LINUX)"
135$(PROG)-linux-opsec:
136	make $(PROG) "CFLAGS=$(CFLAGS) $(LINUX_CFLAGS) $(OPSEC_CFLAGS)" \
137	  "LDFLAGS=$(LDFLAGS) $(LINUX_LDFLAGS) $(OPSEC_LDFLAGS)" \
138	  "OBJS=$(OBJS) $(SSP_LINUX) $(OPSEC_LIBS)"
139
140$(PROG)-sunos:
141	make $(PROG) "CFLAGS=$(CFLAGS) $(SUNOS_CFLAGS)" \
142	  "LDFLAGS=$(LDFLAGS) $(SUNOS_LDFLAGS)" "OBJS=$(OBJS) $(SSP_SUNOS)"
143$(PROG)-sunos-opsec:
144	make $(PROG) "CFLAGS=$(CFLAGS) $(SUNOS_CFLAGS) $(OPSEC_SUNOS_CFLAGS)" \
145	  "LDFLAGS=$(LDFLAGS) $(SUNOS_LDFLAGS) $(OPSEC_SUNOS_LDFLAGS)" \
146	  "OBJS=$(OBJS) $(SSP_SUNOS)"
147
148.SUFFIXES: .o .c
149
150.c.o:
151	$(CC) $(CFLAGS) -c $<
152
153$(PROG): $(OBJS)
154	$(CC) $(LDFLAGS) -o ../$(PROG) $(OBJS)
155
156clean:
157	rm -f ../$(PROG) ../${SAMTOOL} *.o
158
159$(SAMTOOL): samtool.o twofish.o
160	case "$(SYSTYPE)" in \
161                OpenBSD*) twhat=obsd;; \
162                *BSD)     twhat=bsd;; \
163                Linux)    twhat=linux;; \
164                SunOS)    twhat=sunos;; \
165	esac && make $(SAMTOOL)-$$twhat
166
167$(SAMTOOL)-obsd:
168	$(CC) $(LDFLAGS) $(OBSD_LDFLAGS) -o ../$(SAMTOOL) samtool.o twofish.o
169
170$(SAMTOOL)-bsd:
171	$(CC) $(LDFLAGS) $(BSD_LDFLAGS) -o ../$(SAMTOOL) samtool.o twofish.o
172
173$(SAMTOOL)-linux:
174	$(CC) $(LDFLAGS) $(LINUX_LDFLAGS) -o ../$(SAMTOOL) samtool.o twofish.o
175
176$(SAMTOOL)-sunos:
177	$(CC) $(LDFLAGS) $(SUNOS_LDFLAGS) -o ../$(SAMTOOL) samtool.o twofish.o
178
179
180