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>