Annotation of embedaddon/pimd/configure, revision 1.1.1.1
1.1 misho 1: #!/bin/sh
2: #
3: # --enable-broken-crc:
4: # If your RP is buggy cisco PIM-SMv2 implementation that computes
5: # the PIM-Register checksum over the whole pkt instead only over
6: # the header, you need to define this. Otherwise, all your PIM-Register
7: # may be dropped by the cisco-RP.
8: #DEFS += -DBROKEN_CISCO_CHECKSUM
9: #
10: # --enable-kernel-encap:
11: # Register kernel encapsulation. Your kernel must support registers
12: # kernel encapsulation to be able to use it.
13: #DEFS += -DPIM_REG_KERNEL_ENCAP
14: #
15: # --enable-kernel-mfc:
16: # (*,G) kernel MFC support. Use it ONLY with (*,G) capable kernel
17: #DEFS += -DKERNEL_MFC_WC_G
18: #
19: # --enable-memory-save:
20: # Saves 4 bytes per unconfigured interface per routing entry. If set,
21: # configuring such interface will restart the daemon and will flush
22: # the routing table.
23: #DEFS += -DSAVE_MEMORY
24: #
25: # --enable-scoped-acls:
26: # Scoped access control list support in pimd.conf. If you want to
27: # install NUL OIF for the "scoped groups", use the following syntax:
28: # "phyint IFNAME [scoped <MCAST_ADDR> masklen <PREFIX_LEN>]", e.g.
29: # phyint fxp0 scoped "addr" masklen "len"
30: # Support contributed by Marian Stagarescu <marian@cidera.com>
31: #DEFS += -DSCOPED_ACL
32: #
33:
34: OS=`uname`
35: CFG=config.mk
36: TMP=`mktemp /tmp/XXXXXX`
37: BUGREPORT_URL="https://github.com/troglobit/pimd/issues"
38:
39: # Defaults
40: debug=0
41: disable_genid=0
42: embedded_libc=0
43:
44: print()
45: {
46: case $OS in
47: Linux)
48: /bin/echo -ne "$*"
49: ;;
50:
51: *)
52: printf "$*"
53: ;;
54: esac
55: }
56:
57: heading()
58: {
59: echo "# This makefile snippet is generated by the pimd configure script." > $CFG
60: echo >> $CFG
61: echo "# Initial definitions ..." >> $CFG
62: echo "# -D_GNU_SOURCE Use GNU extensions, where possible" >> $CFG
63: echo "# -D_BSD_SOURCE Use functions derived from 4.3 BSD Unix rather than POSIX.1" >> $CFG
64: echo "# In GLIBC >= v2.20 this is replaced with -D_DEFAULT_SOURCE " >> $CFG
65: echo "# -DPIM Enable PIM extensions in RSRR" >> $CFG
66: echo "DEFS = -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_GNU_SOURCE -DPIM" >> $CFG
67: echo "# EXTRA_OBJS = For locally provided objects missing on some platforms, e.g., strlcpy.o" >> $CFG
68: echo "# EXTRA_LIBS = For platform specific libraries, e.g., -lutil" >> $CFG
69: echo >> $CFG
70: echo "# $OS specific settings ..." >> $CFG
71: }
72:
73: usage()
74: {
75: print "Run this script to configure pimd for your system.\n"
76: print "\n"
77: print "Usage: configure [ARG]\n"
78: print "\n"
79: print " --debug Enable debuggable build, -g and -O0\n"
80: print " --prefix=PATH Base installation directory, default: /usr/local/\n"
81: print " --sysconfdir=PATH Path to pimd.conf, default: /etc/\n"
82: print " --embedded-libc Linux system with uClibc or musl libc. These two\n"
83: print " C libraries have strlcpy() and strlcat()"
84: print "\n"
85: print "By default 'make install' installs files to /usr/local/{sbin, share, man} and\n"
86: print "/etc/, this can be changed with the --prefix and --syconfdir options. On top of\n"
87: print "this you can also set DESTDIR when installing, to get another root directory.\n"
88: print "\n"
89: print " --enable-broken-crc Interop with older broken Cisco firmware that did\n"
90: print " checksum in PIM Register messages slightly wrong.\n"
91: print " Should not be needed anymore.\n"
92: print " --enable-kernel-encap Specialized kernels do PIM Register encapsulation\n"
93: print " by themselves, speeding up processing considerably.\n"
94: print " \e[1mNot on Linux/*BSD\e[0m, needs pimkern-PATCH_6!\n"
95: print " --enable-kernel-mfc Specialized kernels may have (*,G) MFC support.\n"
96: print " \e[1mNot on Linux/*BSD\e[0m, need pimkern-PATCH_7!\n"
97: print " --enable-memory-save Save 4 bytes/unconfigured interface/routing entry\n"
98: print " Must restart pimd and cause routing table to be\n"
99: print " flushed when configuring new interfaces.\n"
100: print " --enable-scoped-acls Scoped access control list support in pimd.conf\n"
101: print " phyint IFNAME [scoped <MCGROUP> masklen <LEN>]\n"
102: print " phyint fxp0 scoped 239.0.0.0 masklen 8\n"
103: print " --enable-rsrr Routing Support for Resource Reservations, defined in\n"
104: print " http://tools.ietf.org/html/draft-ietf-rsvp-routing-02\n"
105: print " currently used by RSVP. \e[1mEXPERIMENTAL\e[0m\n"
106: print "\n"
107: print " --disable-pim-genid Disable Generation ID in PIM Hello, RFC3973\n"
108: print " --disable-exit-on-error Do not exit on error messages (LOG_ERR)\n"
109: print " --disable-masklen-check Allow virtual tunctl VIFs with masklen 32\n"
110: print "\n"
111: print " --with-includes=PATH Use this if the multicast header files are not in\n"
112: print " a standard location on your system. E.g., /sys\n"
113: print " --with-max-vifs=MAXVIFS Kernel maximum number of allowed VIFs, default: 32\n"
114: print " \e[1mNote:\e[0m Try multiple routing tables instead!\n"
115: print "\n"
116: print "Report bugs to $BUGREPORT_URL\n"
117: print "\n"
118:
119: exit 1
120: }
121:
122: echo > $TMP
123: echo "# Configured settings/features ..." >> $TMP
124:
125: while [ "$*" != "" ]; do
126: opt=`expr -- "$1" : "--\([^=]*\)=.*"`
127: arg=`expr -- "$1" : "--[^=]*=\(.*\)"`
128: if [ -z "$opt" ]; then
129: opt=`expr -- "$1" : "--\(.*\)"`
130: if [ -z "$opt" ]; then
131: opt=`expr -- "$1" : "-\(.*\)"`
132: fi
133: fi
134: shift
135:
136: case $opt in
137: debug)
138: debug=1;
139: ;;
140:
141: prefix)
142: echo "prefix = $arg" >> $TMP
143: echo "sysconfdir += $arg/etc" >> $TMP
144: ;;
145:
146: sysconfdir)
147: echo "sysconfdir = $arg" >> $TMP
148: ;;
149:
150: embedded-libc)
151: embedded_libc=1
152: ;;
153:
154: enable-broken-crc)
155: echo "DEFS += -DBROKEN_CISCO_CHECKSUM" >> $TMP
156: ;;
157:
158: enable-kernel-encap)
159: echo "DEFS += -DPIM_REG_KERNEL_ENCAP" >> $TMP
160: ;;
161:
162: enable-kernel-mfc)
163: echo "DEFS += -DKERNEL_MFC_WC_G" >> $TMP
164: ;;
165:
166: enable-memory-save)
167: echo "DEFS += -DSAVE_MEMORY" >> $TMP
168: ;;
169:
170: enable-scoped-acls)
171: echo "DEFS += -DSCOPED_ACL" >> $TMP
172: ;;
173:
174: enable-rsrr)
175: echo "DEFS += -DRSRR" >> $TMP
176: echo "EXTRA_OBJS += rsrr.o" >> $TMP
177: ;;
178:
179: enable-pim-hello-genid)
180: echo "PIM Hello GenID is enabled by default."
181: ;;
182:
183: disable-pim-genid)
184: disable_genid=1
185: ;;
186:
187: disable-exit-on-error)
188: echo "DEFS += -DCONTINUE_ON_ERROR" >> $TMP
189: ;;
190:
191: disable-masklen-check)
192: echo "DEFS += -DDISABLE_MASKLEN_CHECK" >> $TMP
193: ;;
194:
195: with-includes)
196: echo "INCLUDES += -I$arg" >> $TMP
197: ;;
198:
199: with-max-vifs)
200: echo "DEFS += -DCUSTOM_MAX_VIFS=$arg" >> $TMP
201: ;;
202:
203: help | h)
204: usage
205: ;;
206:
207: *)
208: echo "Skipping unknown option: $opt"
209: ;;
210: esac
211: done
212:
213: echo "DEFS += -DPACKAGE_BUGREPORT=\\\"$BUGREPORT_URL\\\"" >> $TMP
214:
215: if [ $disable_genid -ne 1 ]; then
216: echo "DEFS += -DENABLE_PIM_HELLO_GENID" >> $TMP
217: fi
218:
219: ## BSDI -D__bsdi__ is defined by the OS
220: #INCLUDES = -Iinclude
221: #DEFS +=
222: #EXTRA_OBJS = strlcpy.o pidfile.o
223:
224: ## SunOS, OSF1, gcc
225: #INCLUDES = -Iinclude -Iinclude/sunos-gcc
226: #DEFS += -DSunOS=43
227: #EXTRA_OBJS = strlcpy.o pidfile.o
228:
229: ## SunOS, OSF1, cc
230: #INCLUDES = -Iinclude -Iinclude/sunos-cc
231: #DEFS += -DSunOS=43
232: #EXTRA_OBJS = strlcpy.o pidfile.o
233:
234: ## IRIX
235: #INCLUDES = -Iinclude
236: #DEFS += -D_BSD_SIGNALS -DIRIX
237: #EXTRA_OBJS = strlcpy.o pidfile.o
238:
239: ## Solaris 2.5, gcc
240: #INCLUDES = -Iinclude
241: #DEFS += -DSYSV -DSunOS=55
242: ## Solaris 2.5, cc
243: #INCLUDES = -Iinclude
244: #DEFS += -DSYSV -DSunOS=55
245: ## Solaris 2.6
246: #INCLUDES = -Iinclude
247: #DEFS += -DSYSV -DSunOS=56
248: ## Solaris 2.x
249: #EXTRA_OBJS = strlcpy.o pidfile.o
250: #EXTRA_LIBS = -L/usr/ucblib -lucb -L/usr/lib -lsocket -lnsl
251: case $OS in
252: Linux)
253: heading
254: echo "INCLUDES = -Iinclude" >> $CFG
255: echo "DEFS += -DRAW_OUTPUT_IS_RAW -DIOCTL_OK_ON_RAW_SOCKET" >> $CFG
256: echo "ROUTER_OBJS += netlink.o" >> $CFG
257: if [ $embedded_libc -ne 1 ]; then
258: echo "EXTRA_OBJS = libite/strlcpy.o libite/strlcat.o" >> $CFG
259: fi
260: echo "EXTRA_OBJS += libite/pidfile.o libite/strtonum.o" >> $CFG
261: echo "EXTRA_LIBS =" >> $CFG
262: ;;
263:
264: FreeBSD)
265: heading
266: echo "INCLUDES =" >> $CFG
267: echo "ROUTER_OBJS += routesock.o" >> $CFG
268: echo "EXTRA_OBJS = libite/pidfile.o" >> $CFG
269: echo "EXTRA_LIBS =" >> $CFG
270: ;;
271:
272: NetBSD)
273: heading
274: echo "INCLUDES =" >> $CFG
275: echo "ROUTER_OBJS += routesock.o" >> $CFG
276: echo "EXTRA_OBJS = libite/strtonum.o" >> $CFG
277: echo "EXTRA_LIBS = -lutil" >> $CFG
278: ;;
279:
280: OpenBSD)
281: heading
282: echo "INCLUDES =" >> $CFG
283: echo "ROUTER_OBJS += routesock.o" >> $CFG
284: echo "EXTRA_OBJS =" >> $CFG
285: echo "EXTRA_LIBS = -lutil" >> $CFG
286: ;;
287:
288: *)
289: rm $CFG
290: echo "$OS is currently unsupported. Help out at https://github.com/troglobit/pimd/"
291: exit 1
292: ;;
293: esac
294:
295: echo >> $CFG
296: echo "# Build specific settings ..." >> $CFG
297: if [ $debug -eq 1 ]; then
298: echo "CFLAGS += -O0 -g" >> $CFG
299: else
300: echo "CFLAGS += -O2" >> $CFG
301: fi
302:
303: cat $TMP >> $CFG
304: rm $TMP
305:
306: if [ ! -e libite/lite.h ]; then
307: print " FIXDEP libite/lite.h missing ... "
308: git submodule update --init >/dev/null
309: if [ $? -ne 0 ]; then
310: print "FAILED! No Internet access?"
311: exit 1
312: fi
313: print "OK\n"
314: fi
315:
316:
317: exit 0
318:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>