Annotation of embedaddon/pimd/configure, revision 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>