From 274acfeef621c24c8201007c6fb249fc89334370 Mon Sep 17 00:00:00 2001 From: Maxim Mamontov Date: Mon, 24 Aug 2015 16:02:22 +0300 Subject: [PATCH] Added checks for boost and yajl. --- projects/rlm_stg/Makefile | 2 +- projects/rlm_stg/build | 64 ++++++++++++++++++- projects/stargazer/build | 59 ++++++++++++++++- .../stargazer/plugins/other/radius/Makefile | 8 ++- 4 files changed, 127 insertions(+), 6 deletions(-) diff --git a/projects/rlm_stg/Makefile b/projects/rlm_stg/Makefile index 548232a8..72788bcb 100644 --- a/projects/rlm_stg/Makefile +++ b/projects/rlm_stg/Makefile @@ -14,7 +14,7 @@ SRCS = ./rlm_stg.c \ STGLIBS = crypto \ common \ - sgcp + json STGLIBS_INCS = $(addprefix -I ../../stglibs/,$(addsuffix .lib/include,$(STGLIBS))) STGLIBS_LIBS = $(addprefix -L ../../stglibs/,$(addsuffix .lib,$(STGLIBS))) diff --git a/projects/rlm_stg/build b/projects/rlm_stg/build index 4894491a..84d81aac 100755 --- a/projects/rlm_stg/build +++ b/projects/rlm_stg/build @@ -61,7 +61,7 @@ printf "######################################################################## printf " Building rlm_stg for $sys $release\n" printf "#############################################################################\n" -STG_LIBS="crypto.lib common.lib sgcp.lib" +STG_LIBS="crypto.lib common.lib json.lib" if [ "$OS" = "linux" ] then @@ -150,6 +150,68 @@ else fi rm -f fake +printf "Checking for -lyajl... " +pkg-config --version > /dev/null 2> /dev/null +if [ "$?" = "0" ] +then + pkg-config --atleast-version=2.0.0 yajl + if [ "$?" != "0" ] + then + CHECK_YAJL=no + printf "no\n" + exit; + else + CHECK_YAJL=yes + printf `pkg-config --modversion yajl`"\n" + fi +else + printf "#include \n" > build_check.c + printf "#include \n" >> build_check.c + printf "int main() { printf(\"%%d\", yajl_version()); return 0; }\n" >> build_check.c + $CC $CFLAGS $LDFLAGS build_check.c -lyajl -o fake > /dev/null 2> /dev/null + if [ $? != 0 ] + then + CHECK_YAJL=no + printf "no\n" + exit; + else + YAJL_VERSION=`./fake` + if [ $YAJL_VERSION -ge 20000 ] + then + CHECK_YAJL=yes + printf "${YAJL_VERSION}\n" + else + CHECK_YAJL=no + printf "no. Need at least version 2.0.0, existing version is ${YAJL_VERSION}\n" + exit; + fi + fi + rm -f fake +fi + +printf "Checking for boost::scoped_ptr... " +printf "#include \nint main() { boost::scoped_ptr test(new int(1)); return 0; }\n" > build_check.cpp +$CXX $CXXFLAGS $LDFLAGS build_check.cpp -o fake # > /dev/null 2> /dev/null +if [ $? != 0 ] +then + CHECK_BOOST_SCOPED_PTR=no + printf "no\n" + exit; +else + CHECK_BOOST_SCOPED_PTR=yes + printf "yes\n" +fi +rm -f fake + +rm -f build_check.c +rm -f build_check.cpp + +if [ "$CHECK_YAJL" = "yes" -a "$CHECK_BOOST_SCOPED_PTR" = "yes" ] +then + STG_LIBS="$STG_LIBS + json.lib" +fi + printf "OS=$OS\n" > $CONFFILE printf "STG_TIME=yes\n" >> $CONFFILE printf "DEBUG=$DEBUG\n" >> $CONFFILE diff --git a/projects/stargazer/build b/projects/stargazer/build index 80d17d00..a43e3e13 100755 --- a/projects/stargazer/build +++ b/projects/stargazer/build @@ -105,7 +105,6 @@ PLUGINS="authorization/ao configuration/sgconfig other/ping other/rscript - other/radius other/smux store/files capture/cap_nf" @@ -419,6 +418,55 @@ else fi rm -f fake +printf "Checking for -lyajl... " +pkg-config --version > /dev/null 2> /dev/null +if [ "$?" = "0" ] +then + pkg-config --atleast-version=2.0.0 yajl + if [ "$?" != "0" ] + then + CHECK_YAJL=no + printf "no\n" + else + CHECK_YAJL=yes + printf `pkg-config --modversion yajl`"\n" + fi +else + printf "#include \n" > build_check.c + printf "#include \n" >> build_check.c + printf "int main() { printf(\"%%d\", yajl_version()); return 0; }\n" >> build_check.c + $CC $CFLAGS $LDFLAGS build_check.c -lyajl -o fake > /dev/null 2> /dev/null + if [ $? != 0 ] + then + CHECK_YAJL=no + printf "no\n" + else + YAJL_VERSION=`./fake` + if [ $YAJL_VERSION -ge 20000 ] + then + CHECK_YAJL=yes + printf "${YAJL_VERSION}\n" + else + CHECK_YAJL=no + printf "no. Need at least version 2.0.0, existing version is ${YAJL_VERSION}\n" + fi + fi + rm -f fake +fi + +printf "Checking for boost::scoped_ptr... " +printf "#include \nint main() { boost::scoped_ptr test(new int(1)); return 0; }\n" > build_check.cpp +$CXX $CXXFLAGS $LDFLAGS build_check.cpp -o fake # > /dev/null 2> /dev/null +if [ $? != 0 ] +then + CHECK_BOOST_SCOPED_PTR=no + printf "no\n" +else + CHECK_BOOST_SCOPED_PTR=yes + printf "yes\n" +fi +rm -f fake + if [ "$OS" = "linux" ] then printf "Checking for linux/netfilter_ipv4/ip_queue.h... " @@ -441,6 +489,7 @@ then fi rm -f build_check.c +rm -f build_check.cpp if [ "$CHECK_EXPAT" != "yes" ] then @@ -480,6 +529,14 @@ then capture/nfqueue" fi +if [ "$CHECK_YAJL" = "yes" -a "$CHECK_BOOST_SCOPED_PTR" = "yes" ] +then + PLUGINS="$PLUGINS + other/radius" + STG_LIBS="$STG_LIBS + json.lib" +fi + printf "OS=$OS\n" > $CONFFILE printf "STG_TIME=yes\n" >> $CONFFILE printf "DEBUG=$DEBUG\n" >> $CONFFILE diff --git a/projects/stargazer/plugins/other/radius/Makefile b/projects/stargazer/plugins/other/radius/Makefile index dd736698..14428914 100644 --- a/projects/stargazer/plugins/other/radius/Makefile +++ b/projects/stargazer/plugins/other/radius/Makefile @@ -4,17 +4,19 @@ include ../../../../../Makefile.conf -LIBS += $(LIB_THREAD) +LIBS += $(LIB_THREAD) -lyajl PROG = mod_radius.so SRCS = radius.cpp \ - config.cpp + config.cpp \ + conn.cpp STGLIBS = common \ crypto \ logger \ - scriptexecuter + scriptexecuter \ + json include ../../Makefile.in -- 2.43.2