diff --git a/.gitignore b/.gitignore index c48a95acb..0855f4f4a 100644 --- a/.gitignore +++ b/.gitignore @@ -23,5 +23,7 @@ lib/vnode_if_newproto.h lib/vnode_if_typedef.h app/nginx-1.11.10/objs/ app/nginx-1.11.10/Makefile +app/nginx-1.16.0/objs/ +app/nginx-1.16.0/Makefile dpdk/.ci/ dpdk/.travis.yml diff --git a/README.md b/README.md index 954acec07..9092c7c1e 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,10 @@ Currently, besides authorized DNS server of DNSPod, there are various products i ifconfig eth0 down python dpdk-devbind.py --bind=igb_uio eth0 # assuming that use 10GE NIC and eth0 + # install DPDK + cd ../x86_64-native-linuxapp-gcc + make install + # On Ubuntu, use gawk instead of the default mawk. #sudo apt-get install gawk # or execute `sudo update-alternatives --config awk` to choose gawk. @@ -75,6 +79,13 @@ Currently, besides authorized DNS server of DNSPod, there are various products i cd ../../lib/ make + # install F-STACK + # libfstack.a will be installed to /usr/local/lib + # ff_*.h will be installed to /usr/local/include + # start.sh will be installed to /usr/local/bin/ff_start + # config.ini will be installed to /etc/f-stack.conf + make install + #### Nginx cd app/nginx-1.11.10 diff --git a/app/micro_thread/Makefile b/app/micro_thread/Makefile index 315ca7f83..a8713672a 100644 --- a/app/micro_thread/Makefile +++ b/app/micro_thread/Makefile @@ -20,11 +20,13 @@ ########MAKEFILE########## ifeq ($(FF_PATH),) - $(error variable FF_PATH is not set) + FF_PATH=/usr/local + $(warning FF_PATH environment variable not defined, default FF_PATH=/usr/local) endif ifeq ($(FF_DPDK),) - FF_DPDK= $(FF_PATH)/dpdk/x86_64-native-linuxapp-gcc + FF_DPDK=/usr/local + $(warning FF_DPDK environment variable not defined, default FF_DPDK=/usr/local) endif DEBUG= -g diff --git a/app/nginx-1.11.10/auto/make b/app/nginx-1.11.10/auto/make index 3e9b8615d..930d8d573 100644 --- a/app/nginx-1.11.10/auto/make +++ b/app/nginx-1.11.10/auto/make @@ -19,13 +19,13 @@ ngx_use_pch=`echo $NGX_USE_PCH | sed -e "s/\//$ngx_regex_dirsep/g"` if [ ! $FF_PATH ]; then - echo "Please define FF_PATH environment variable" - exit 1 + FF_PATH=/usr/local + echo "FF_PATH environment variable not defined, default FF_PATH=$FF_PATH" fi if [ ! $FF_DPDK ]; then - FF_DPDK=$FF_PATH/dpdk/x86_64-native-linuxapp-gcc - echo "FF_DPDK environment variable not defined, default:$FF_DPDK" + FF_DPDK=/usr/local + echo "FF_DPDK environment variable not defined, default FF_DPDK=$FF_DPDK" fi CORE_LIBS="$CORE_LIBS -L$FF_PATH/lib -Wl,--whole-archive,-lfstack,--no-whole-archive" diff --git a/app/nginx-1.16.0/auto/make b/app/nginx-1.16.0/auto/make index ca86aa115..53eabc287 100644 --- a/app/nginx-1.16.0/auto/make +++ b/app/nginx-1.16.0/auto/make @@ -19,13 +19,13 @@ ngx_use_pch=`echo $NGX_USE_PCH | sed -e "s/\//$ngx_regex_dirsep/g"` if [ ! $FF_PATH ]; then - echo "Please define FF_PATH environment variable" - exit 1 + FF_PATH=/usr/local + echo "FF_PATH environment variable not defined, default FF_PATH=$FF_PATH" fi if [ ! $FF_DPDK ]; then - FF_DPDK=$FF_PATH/dpdk/x86_64-native-linuxapp-gcc - echo "FF_DPDK environment variable not defined, default:$FF_DPDK" + FF_DPDK=/usr/local + echo "FF_DPDK environment variable not defined, default FF_DPDK=$FF_DPDK" fi CORE_LIBS="$CORE_LIBS -L$FF_PATH/lib -Wl,--whole-archive,-lfstack,--no-whole-archive" diff --git a/app/redis-3.2.8/src/Makefile b/app/redis-3.2.8/src/Makefile index 69cd58d50..358747d2f 100644 --- a/app/redis-3.2.8/src/Makefile +++ b/app/redis-3.2.8/src/Makefile @@ -13,10 +13,13 @@ # Just use 'make dep', but this is only needed by developers. ifeq ($(FF_PATH),) - $(error variable FF_PATH is not set) + FF_PATH=/usr/local + $(warning FF_PATH environment variable not defined, default FF_PATH=/usr/local) endif + ifeq ($(FF_DPDK),) - FF_DPDK= $(FF_PATH)/dpdk/x86_64-native-linuxapp-gcc + FF_DPDK=/usr/local + $(warning FF_DPDK environment variable not defined, default FF_DPDK=/usr/local) endif release_hdr := $(shell sh -c './mkreleasehdr.sh') diff --git a/lib/Makefile b/lib/Makefile index 06dfa864b..3c69fb653 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -14,6 +14,12 @@ S=${TOPDIR}/freebsd MACHINE_INCLUDES_ROOT:=${CURDIR}/machine_include OVERRIDE_INCLUDES_ROOT:=${CURDIR}/include X86_INCLUDES=0 +PREFIX=/usr/local +PREFIX_LIB=${PREFIX}/lib +PREFIX_INCLUDE=/usr/local/include +PREFIX_BIN=/usr/local/bin +F-STACK_CONF=/etc/f-stack.conf +F-STACK_VERSION=1.20 HOST_OS:=$(shell uname -s) @@ -590,3 +596,34 @@ vnode_if_typedef.h: include ${TOPDIR}/mk/kern.mk +install: + rm -rf ${PREFIX_LIB}/libfstack.a.${F-STACK_VERSION} + rm -rf ${PREFIX_LIB}/libfstack.a + rm -rf ${PREFIX_INCLUDE}/ff_config.h + rm -rf ${PREFIX_INCLUDE}/ff_api.h + rm -rf ${PREFIX_INCLUDE}/ff_event.h + rm -rf ${PREFIX_INCLUDE}/ff_errno.h + rm -rf ${PREFIX_INCLUDE}/ff_epoll.h + rm -rf ${PREFIX_BIN}/ff_start + + cp -f libfstack.a ${PREFIX_LIB}/libfstack.a.${F-STACK_VERSION} + ln -sf ${PREFIX_LIB}/libfstack.a.${F-STACK_VERSION} ${PREFIX_LIB}/libfstack.a + cp -f ff_config.h ${PREFIX_INCLUDE}/ff_config.h + cp -f ff_api.h ${PREFIX_INCLUDE}/ff_api.h + cp -f ff_event.h ${PREFIX_INCLUDE}/ff_event.h + cp -f ff_errno.h ${PREFIX_INCLUDE}/ff_errno.h + cp -f ff_epoll.h ${PREFIX_INCLUDE}/ff_epoll.h + cp -f ${TOPDIR}/start.sh ${PREFIX_BIN}/ff_start + test -f '${F-STACK_CONF}' || cp -f ${TOPDIR}/config.ini ${F-STACK_CONF} + +uninstall: + rm -rf ${PREFIX_LIB}/libfstack.a.${F-STACK_VERSION} + rm -rf ${PREFIX_LIB}/libfstack.a + rm -rf ${PREFIX_INCLUDE}/ff_config.h + rm -rf ${PREFIX_INCLUDE}/ff_api.h + rm -rf ${PREFIX_INCLUDE}/ff_event.h + rm -rf ${PREFIX_INCLUDE}/ff_errno.h + rm -rf ${PREFIX_INCLUDE}/ff_epoll.h + rm -rf ${PREFIX_BIN}/ff_start + rm -rf ${F-STACK_CONF} + diff --git a/tools/Makefile b/tools/Makefile index ecf388b03..9f7a22313 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,7 +1,26 @@ SUBDIRS=compat libutil libmemstat libxo libnetgraph sysctl ifconfig route top netstat ngctl ipfw arp traffic +PREFIX_BIN=/usr/local/bin all: for d in $(SUBDIRS); do ( cd $$d; $(MAKE) all ) ; done clean: for d in $(SUBDIRS); do ( cd $$d; $(MAKE) clean ) ; done + +install: + rm -rf ${PREFIX_BIN}/f-stack + + cp -rf sbin/ ${PREFIX_BIN}/f-stack + ln -sf ${PREFIX_BIN}/f-stack/arp ${PREFIX_BIN}/ff_arp + ln -sf ${PREFIX_BIN}/f-stack/ifconfig ${PREFIX_BIN}/ff_ifconfig + ln -sf ${PREFIX_BIN}/f-stack/ipfw ${PREFIX_BIN}/ff_ipfw + ln -sf ${PREFIX_BIN}/f-stack/netstat ${PREFIX_BIN}/ff_netstat + ln -sf ${PREFIX_BIN}/f-stack/ngctl ${PREFIX_BIN}/ff_ngctl + ln -sf ${PREFIX_BIN}/f-stack/route ${PREFIX_BIN}/ff_route + ln -sf ${PREFIX_BIN}/f-stack/sysctl ${PREFIX_BIN}/ff_sysctl + ln -sf ${PREFIX_BIN}/f-stack/top ${PREFIX_BIN}/ff_top + ln -sf ${PREFIX_BIN}/f-stack/traffic ${PREFIX_BIN}/ff_traffic + +uninstall: + rm -rf ${PREFIX_BIN}/f-stack + rm -rf ${PREFIX_BIN}/ff_* diff --git a/tools/README.md b/tools/README.md index 866cb4ac2..1bb68fd00 100644 --- a/tools/README.md +++ b/tools/README.md @@ -1,5 +1,13 @@ # Introduction +Compile ff tools + + make + +Install ff tools, all ff tools will be installed to `/usr/local/bin/f-stack/`, and some soft link will be created in `/usr/local/bin`, such as `ff_top`,`ff_traffic`, etc. + + make install + Directory `compat` implements an ipc library using dpdk `rte_ring` and ports some source files compatible with FreeBSD and Linux. Directory `sbin` contains all the tools binary that compiled.