1*de1e4e89SAndroid Build Coastguard Worker#! /bin/bash 2*de1e4e89SAndroid Build Coastguard Worker# This is not an autoconf generated configure 3*de1e4e89SAndroid Build Coastguard Worker# 4*de1e4e89SAndroid Build Coastguard WorkerINCLUDE=${1:-"$PWD/include"} 5*de1e4e89SAndroid Build Coastguard Worker 6*de1e4e89SAndroid Build Coastguard Worker# Output file which is input to Makefile 7*de1e4e89SAndroid Build Coastguard WorkerCONFIG=config.mk 8*de1e4e89SAndroid Build Coastguard Worker 9*de1e4e89SAndroid Build Coastguard Worker# Make a temp directory in build tree. 10*de1e4e89SAndroid Build Coastguard WorkerTMPDIR=$(mktemp -d config.XXXXXX) 11*de1e4e89SAndroid Build Coastguard Workertrap 'status=$?; rm -rf $TMPDIR; exit $status' EXIT HUP INT QUIT TERM 12*de1e4e89SAndroid Build Coastguard Worker 13*de1e4e89SAndroid Build Coastguard Workercheck_prog() 14*de1e4e89SAndroid Build Coastguard Worker{ 15*de1e4e89SAndroid Build Coastguard Worker echo -n "$2" 16*de1e4e89SAndroid Build Coastguard Worker command -v $1 >/dev/null 2>&1 && (echo "$3:=y" >> $CONFIG; echo "yes") || (echo "no"; return 1) 17*de1e4e89SAndroid Build Coastguard Worker} 18*de1e4e89SAndroid Build Coastguard Worker 19*de1e4e89SAndroid Build Coastguard Workercheck_docs() 20*de1e4e89SAndroid Build Coastguard Worker{ 21*de1e4e89SAndroid Build Coastguard Worker if check_prog latex " latex: " HAVE_LATEX; then 22*de1e4e89SAndroid Build Coastguard Worker check_prog pdflatex " pdflatex: " HAVE_PDFLATEX || echo " WARNING: no PDF docs can be built from LaTeX files" 23*de1e4e89SAndroid Build Coastguard Worker check_prog sgml2latex " sgml2latex: " HAVE_SGML2LATEX || echo " WARNING: no LaTeX files can be build from SGML files" 24*de1e4e89SAndroid Build Coastguard Worker else 25*de1e4e89SAndroid Build Coastguard Worker echo " WARNING: no docs can be built from LaTeX files" 26*de1e4e89SAndroid Build Coastguard Worker fi 27*de1e4e89SAndroid Build Coastguard Worker 28*de1e4e89SAndroid Build Coastguard Worker check_prog sgml2html " sgml2html: " HAVE_SGML2HTML || echo " WARNING: no HTML docs can be built from SGML" 29*de1e4e89SAndroid Build Coastguard Worker} 30*de1e4e89SAndroid Build Coastguard Worker 31*de1e4e89SAndroid Build Coastguard Workercheck_toolchain() 32*de1e4e89SAndroid Build Coastguard Worker{ 33*de1e4e89SAndroid Build Coastguard Worker : ${PKG_CONFIG:=pkg-config} 34*de1e4e89SAndroid Build Coastguard Worker : ${AR=ar} 35*de1e4e89SAndroid Build Coastguard Worker : ${CC=gcc} 36*de1e4e89SAndroid Build Coastguard Worker echo "PKG_CONFIG:=${PKG_CONFIG}" >>$CONFIG 37*de1e4e89SAndroid Build Coastguard Worker echo "AR:=${AR}" >>$CONFIG 38*de1e4e89SAndroid Build Coastguard Worker echo "CC:=${CC}" >>$CONFIG 39*de1e4e89SAndroid Build Coastguard Worker} 40*de1e4e89SAndroid Build Coastguard Worker 41*de1e4e89SAndroid Build Coastguard Workercheck_atm() 42*de1e4e89SAndroid Build Coastguard Worker{ 43*de1e4e89SAndroid Build Coastguard Worker cat >$TMPDIR/atmtest.c <<EOF 44*de1e4e89SAndroid Build Coastguard Worker#include <atm.h> 45*de1e4e89SAndroid Build Coastguard Workerint main(int argc, char **argv) { 46*de1e4e89SAndroid Build Coastguard Worker struct atm_qos qos; 47*de1e4e89SAndroid Build Coastguard Worker (void) text2qos("aal5,ubr:sdu=9180,rx:none",&qos,0); 48*de1e4e89SAndroid Build Coastguard Worker return 0; 49*de1e4e89SAndroid Build Coastguard Worker} 50*de1e4e89SAndroid Build Coastguard WorkerEOF 51*de1e4e89SAndroid Build Coastguard Worker 52*de1e4e89SAndroid Build Coastguard Worker $CC -I$INCLUDE -o $TMPDIR/atmtest $TMPDIR/atmtest.c -latm >/dev/null 2>&1 53*de1e4e89SAndroid Build Coastguard Worker if [ $? -eq 0 ] 54*de1e4e89SAndroid Build Coastguard Worker then 55*de1e4e89SAndroid Build Coastguard Worker echo "TC_CONFIG_ATM:=y" >>$CONFIG 56*de1e4e89SAndroid Build Coastguard Worker echo yes 57*de1e4e89SAndroid Build Coastguard Worker else 58*de1e4e89SAndroid Build Coastguard Worker echo no 59*de1e4e89SAndroid Build Coastguard Worker fi 60*de1e4e89SAndroid Build Coastguard Worker rm -f $TMPDIR/atmtest.c $TMPDIR/atmtest 61*de1e4e89SAndroid Build Coastguard Worker} 62*de1e4e89SAndroid Build Coastguard Worker 63*de1e4e89SAndroid Build Coastguard Workercheck_xtables() 64*de1e4e89SAndroid Build Coastguard Worker{ 65*de1e4e89SAndroid Build Coastguard Worker if ! ${PKG_CONFIG} xtables --exists 66*de1e4e89SAndroid Build Coastguard Worker then 67*de1e4e89SAndroid Build Coastguard Worker echo "TC_CONFIG_NO_XT:=y" >>$CONFIG 68*de1e4e89SAndroid Build Coastguard Worker fi 69*de1e4e89SAndroid Build Coastguard Worker} 70*de1e4e89SAndroid Build Coastguard Worker 71*de1e4e89SAndroid Build Coastguard Workercheck_xt() 72*de1e4e89SAndroid Build Coastguard Worker{ 73*de1e4e89SAndroid Build Coastguard Worker #check if we have xtables from iptables >= 1.4.5. 74*de1e4e89SAndroid Build Coastguard Worker cat >$TMPDIR/ipttest.c <<EOF 75*de1e4e89SAndroid Build Coastguard Worker#include <xtables.h> 76*de1e4e89SAndroid Build Coastguard Worker#include <linux/netfilter.h> 77*de1e4e89SAndroid Build Coastguard Workerstatic struct xtables_globals test_globals = { 78*de1e4e89SAndroid Build Coastguard Worker .option_offset = 0, 79*de1e4e89SAndroid Build Coastguard Worker .program_name = "tc-ipt", 80*de1e4e89SAndroid Build Coastguard Worker .program_version = XTABLES_VERSION, 81*de1e4e89SAndroid Build Coastguard Worker .orig_opts = NULL, 82*de1e4e89SAndroid Build Coastguard Worker .opts = NULL, 83*de1e4e89SAndroid Build Coastguard Worker .exit_err = NULL, 84*de1e4e89SAndroid Build Coastguard Worker}; 85*de1e4e89SAndroid Build Coastguard Worker 86*de1e4e89SAndroid Build Coastguard Workerint main(int argc, char **argv) 87*de1e4e89SAndroid Build Coastguard Worker{ 88*de1e4e89SAndroid Build Coastguard Worker xtables_init_all(&test_globals, NFPROTO_IPV4); 89*de1e4e89SAndroid Build Coastguard Worker return 0; 90*de1e4e89SAndroid Build Coastguard Worker} 91*de1e4e89SAndroid Build Coastguard WorkerEOF 92*de1e4e89SAndroid Build Coastguard Worker 93*de1e4e89SAndroid Build Coastguard Worker if $CC -I$INCLUDE $IPTC -o $TMPDIR/ipttest $TMPDIR/ipttest.c $IPTL \ 94*de1e4e89SAndroid Build Coastguard Worker $(${PKG_CONFIG} xtables --cflags --libs) -ldl >/dev/null 2>&1 95*de1e4e89SAndroid Build Coastguard Worker then 96*de1e4e89SAndroid Build Coastguard Worker echo "TC_CONFIG_XT:=y" >>$CONFIG 97*de1e4e89SAndroid Build Coastguard Worker echo "using xtables" 98*de1e4e89SAndroid Build Coastguard Worker fi 99*de1e4e89SAndroid Build Coastguard Worker rm -f $TMPDIR/ipttest.c $TMPDIR/ipttest 100*de1e4e89SAndroid Build Coastguard Worker} 101*de1e4e89SAndroid Build Coastguard Worker 102*de1e4e89SAndroid Build Coastguard Workercheck_xt_old() 103*de1e4e89SAndroid Build Coastguard Worker{ 104*de1e4e89SAndroid Build Coastguard Worker # bail if previous XT checks has already succeded. 105*de1e4e89SAndroid Build Coastguard Worker if grep -q TC_CONFIG_XT $CONFIG 106*de1e4e89SAndroid Build Coastguard Worker then 107*de1e4e89SAndroid Build Coastguard Worker return 108*de1e4e89SAndroid Build Coastguard Worker fi 109*de1e4e89SAndroid Build Coastguard Worker 110*de1e4e89SAndroid Build Coastguard Worker #check if we dont need our internal header .. 111*de1e4e89SAndroid Build Coastguard Worker cat >$TMPDIR/ipttest.c <<EOF 112*de1e4e89SAndroid Build Coastguard Worker#include <xtables.h> 113*de1e4e89SAndroid Build Coastguard Workerchar *lib_dir; 114*de1e4e89SAndroid Build Coastguard Workerunsigned int global_option_offset = 0; 115*de1e4e89SAndroid Build Coastguard Workerconst char *program_version = XTABLES_VERSION; 116*de1e4e89SAndroid Build Coastguard Workerconst char *program_name = "tc-ipt"; 117*de1e4e89SAndroid Build Coastguard Workerstruct afinfo afinfo = { 118*de1e4e89SAndroid Build Coastguard Worker .libprefix = "libxt_", 119*de1e4e89SAndroid Build Coastguard Worker}; 120*de1e4e89SAndroid Build Coastguard Worker 121*de1e4e89SAndroid Build Coastguard Workervoid exit_error(enum exittype status, const char *msg, ...) 122*de1e4e89SAndroid Build Coastguard Worker{ 123*de1e4e89SAndroid Build Coastguard Worker} 124*de1e4e89SAndroid Build Coastguard Worker 125*de1e4e89SAndroid Build Coastguard Workerint main(int argc, char **argv) { 126*de1e4e89SAndroid Build Coastguard Worker 127*de1e4e89SAndroid Build Coastguard Worker return 0; 128*de1e4e89SAndroid Build Coastguard Worker} 129*de1e4e89SAndroid Build Coastguard Worker 130*de1e4e89SAndroid Build Coastguard WorkerEOF 131*de1e4e89SAndroid Build Coastguard Worker 132*de1e4e89SAndroid Build Coastguard Worker $CC -I$INCLUDE $IPTC -o $TMPDIR/ipttest $TMPDIR/ipttest.c $IPTL -ldl >/dev/null 2>&1 133*de1e4e89SAndroid Build Coastguard Worker if [ $? -eq 0 ] 134*de1e4e89SAndroid Build Coastguard Worker then 135*de1e4e89SAndroid Build Coastguard Worker echo "TC_CONFIG_XT_OLD:=y" >>$CONFIG 136*de1e4e89SAndroid Build Coastguard Worker echo "using old xtables (no need for xt-internal.h)" 137*de1e4e89SAndroid Build Coastguard Worker fi 138*de1e4e89SAndroid Build Coastguard Worker rm -f $TMPDIR/ipttest.c $TMPDIR/ipttest 139*de1e4e89SAndroid Build Coastguard Worker} 140*de1e4e89SAndroid Build Coastguard Worker 141*de1e4e89SAndroid Build Coastguard Workercheck_xt_old_internal_h() 142*de1e4e89SAndroid Build Coastguard Worker{ 143*de1e4e89SAndroid Build Coastguard Worker # bail if previous XT checks has already succeded. 144*de1e4e89SAndroid Build Coastguard Worker if grep -q TC_CONFIG_XT $CONFIG 145*de1e4e89SAndroid Build Coastguard Worker then 146*de1e4e89SAndroid Build Coastguard Worker return 147*de1e4e89SAndroid Build Coastguard Worker fi 148*de1e4e89SAndroid Build Coastguard Worker 149*de1e4e89SAndroid Build Coastguard Worker #check if we need our own internal.h 150*de1e4e89SAndroid Build Coastguard Worker cat >$TMPDIR/ipttest.c <<EOF 151*de1e4e89SAndroid Build Coastguard Worker#include <xtables.h> 152*de1e4e89SAndroid Build Coastguard Worker#include "xt-internal.h" 153*de1e4e89SAndroid Build Coastguard Workerchar *lib_dir; 154*de1e4e89SAndroid Build Coastguard Workerunsigned int global_option_offset = 0; 155*de1e4e89SAndroid Build Coastguard Workerconst char *program_version = XTABLES_VERSION; 156*de1e4e89SAndroid Build Coastguard Workerconst char *program_name = "tc-ipt"; 157*de1e4e89SAndroid Build Coastguard Workerstruct afinfo afinfo = { 158*de1e4e89SAndroid Build Coastguard Worker .libprefix = "libxt_", 159*de1e4e89SAndroid Build Coastguard Worker}; 160*de1e4e89SAndroid Build Coastguard Worker 161*de1e4e89SAndroid Build Coastguard Workervoid exit_error(enum exittype status, const char *msg, ...) 162*de1e4e89SAndroid Build Coastguard Worker{ 163*de1e4e89SAndroid Build Coastguard Worker} 164*de1e4e89SAndroid Build Coastguard Worker 165*de1e4e89SAndroid Build Coastguard Workerint main(int argc, char **argv) { 166*de1e4e89SAndroid Build Coastguard Worker 167*de1e4e89SAndroid Build Coastguard Worker return 0; 168*de1e4e89SAndroid Build Coastguard Worker} 169*de1e4e89SAndroid Build Coastguard Worker 170*de1e4e89SAndroid Build Coastguard WorkerEOF 171*de1e4e89SAndroid Build Coastguard Worker $CC -I$INCLUDE $IPTC -o $TMPDIR/ipttest $TMPDIR/ipttest.c $IPTL -ldl >/dev/null 2>&1 172*de1e4e89SAndroid Build Coastguard Worker 173*de1e4e89SAndroid Build Coastguard Worker if [ $? -eq 0 ] 174*de1e4e89SAndroid Build Coastguard Worker then 175*de1e4e89SAndroid Build Coastguard Worker echo "using old xtables with xt-internal.h" 176*de1e4e89SAndroid Build Coastguard Worker echo "TC_CONFIG_XT_OLD_H:=y" >>$CONFIG 177*de1e4e89SAndroid Build Coastguard Worker fi 178*de1e4e89SAndroid Build Coastguard Worker rm -f $TMPDIR/ipttest.c $TMPDIR/ipttest 179*de1e4e89SAndroid Build Coastguard Worker} 180*de1e4e89SAndroid Build Coastguard Worker 181*de1e4e89SAndroid Build Coastguard Workercheck_ipt() 182*de1e4e89SAndroid Build Coastguard Worker{ 183*de1e4e89SAndroid Build Coastguard Worker if ! grep TC_CONFIG_XT $CONFIG > /dev/null 184*de1e4e89SAndroid Build Coastguard Worker then 185*de1e4e89SAndroid Build Coastguard Worker echo "using iptables" 186*de1e4e89SAndroid Build Coastguard Worker fi 187*de1e4e89SAndroid Build Coastguard Worker} 188*de1e4e89SAndroid Build Coastguard Worker 189*de1e4e89SAndroid Build Coastguard Workercheck_ipt_lib_dir() 190*de1e4e89SAndroid Build Coastguard Worker{ 191*de1e4e89SAndroid Build Coastguard Worker IPT_LIB_DIR=$(${PKG_CONFIG} --variable=xtlibdir xtables) 192*de1e4e89SAndroid Build Coastguard Worker if [ -n "$IPT_LIB_DIR" ]; then 193*de1e4e89SAndroid Build Coastguard Worker echo $IPT_LIB_DIR 194*de1e4e89SAndroid Build Coastguard Worker echo "IPT_LIB_DIR:=$IPT_LIB_DIR" >> $CONFIG 195*de1e4e89SAndroid Build Coastguard Worker return 196*de1e4e89SAndroid Build Coastguard Worker fi 197*de1e4e89SAndroid Build Coastguard Worker 198*de1e4e89SAndroid Build Coastguard Worker for dir in /lib /usr/lib /usr/local/lib 199*de1e4e89SAndroid Build Coastguard Worker do 200*de1e4e89SAndroid Build Coastguard Worker for file in $dir/{xtables,iptables}/lib*t_*so ; do 201*de1e4e89SAndroid Build Coastguard Worker if [ -f $file ]; then 202*de1e4e89SAndroid Build Coastguard Worker echo ${file%/*} 203*de1e4e89SAndroid Build Coastguard Worker echo "IPT_LIB_DIR:=${file%/*}" >> $CONFIG 204*de1e4e89SAndroid Build Coastguard Worker return 205*de1e4e89SAndroid Build Coastguard Worker fi 206*de1e4e89SAndroid Build Coastguard Worker done 207*de1e4e89SAndroid Build Coastguard Worker done 208*de1e4e89SAndroid Build Coastguard Worker echo "not found!" 209*de1e4e89SAndroid Build Coastguard Worker} 210*de1e4e89SAndroid Build Coastguard Worker 211*de1e4e89SAndroid Build Coastguard Workercheck_setns() 212*de1e4e89SAndroid Build Coastguard Worker{ 213*de1e4e89SAndroid Build Coastguard Worker cat >$TMPDIR/setnstest.c <<EOF 214*de1e4e89SAndroid Build Coastguard Worker#include <sched.h> 215*de1e4e89SAndroid Build Coastguard Workerint main(int argc, char **argv) 216*de1e4e89SAndroid Build Coastguard Worker{ 217*de1e4e89SAndroid Build Coastguard Worker (void)setns(0,0); 218*de1e4e89SAndroid Build Coastguard Worker return 0; 219*de1e4e89SAndroid Build Coastguard Worker} 220*de1e4e89SAndroid Build Coastguard WorkerEOF 221*de1e4e89SAndroid Build Coastguard Worker $CC -I$INCLUDE -o $TMPDIR/setnstest $TMPDIR/setnstest.c >/dev/null 2>&1 222*de1e4e89SAndroid Build Coastguard Worker if [ $? -eq 0 ] 223*de1e4e89SAndroid Build Coastguard Worker then 224*de1e4e89SAndroid Build Coastguard Worker echo "IP_CONFIG_SETNS:=y" >>$CONFIG 225*de1e4e89SAndroid Build Coastguard Worker echo "yes" 226*de1e4e89SAndroid Build Coastguard Worker echo "CFLAGS += -DHAVE_SETNS" >>$CONFIG 227*de1e4e89SAndroid Build Coastguard Worker else 228*de1e4e89SAndroid Build Coastguard Worker echo "no" 229*de1e4e89SAndroid Build Coastguard Worker fi 230*de1e4e89SAndroid Build Coastguard Worker rm -f $TMPDIR/setnstest.c $TMPDIR/setnstest 231*de1e4e89SAndroid Build Coastguard Worker} 232*de1e4e89SAndroid Build Coastguard Worker 233*de1e4e89SAndroid Build Coastguard Workercheck_ipset() 234*de1e4e89SAndroid Build Coastguard Worker{ 235*de1e4e89SAndroid Build Coastguard Worker cat >$TMPDIR/ipsettest.c <<EOF 236*de1e4e89SAndroid Build Coastguard Worker#include <linux/netfilter/ipset/ip_set.h> 237*de1e4e89SAndroid Build Coastguard Worker#ifndef IP_SET_INVALID 238*de1e4e89SAndroid Build Coastguard Worker#define IPSET_DIM_MAX 3 239*de1e4e89SAndroid Build Coastguard Workertypedef unsigned short ip_set_id_t; 240*de1e4e89SAndroid Build Coastguard Worker#endif 241*de1e4e89SAndroid Build Coastguard Worker#include <linux/netfilter/xt_set.h> 242*de1e4e89SAndroid Build Coastguard Worker 243*de1e4e89SAndroid Build Coastguard Workerstruct xt_set_info info; 244*de1e4e89SAndroid Build Coastguard Worker#if IPSET_PROTOCOL == 6 245*de1e4e89SAndroid Build Coastguard Workerint main(void) 246*de1e4e89SAndroid Build Coastguard Worker{ 247*de1e4e89SAndroid Build Coastguard Worker return IPSET_MAXNAMELEN; 248*de1e4e89SAndroid Build Coastguard Worker} 249*de1e4e89SAndroid Build Coastguard Worker#else 250*de1e4e89SAndroid Build Coastguard Worker#error unknown ipset version 251*de1e4e89SAndroid Build Coastguard Worker#endif 252*de1e4e89SAndroid Build Coastguard WorkerEOF 253*de1e4e89SAndroid Build Coastguard Worker 254*de1e4e89SAndroid Build Coastguard Worker if $CC -I$INCLUDE -o $TMPDIR/ipsettest $TMPDIR/ipsettest.c >/dev/null 2>&1 255*de1e4e89SAndroid Build Coastguard Worker then 256*de1e4e89SAndroid Build Coastguard Worker echo "TC_CONFIG_IPSET:=y" >>$CONFIG 257*de1e4e89SAndroid Build Coastguard Worker echo "yes" 258*de1e4e89SAndroid Build Coastguard Worker else 259*de1e4e89SAndroid Build Coastguard Worker echo "no" 260*de1e4e89SAndroid Build Coastguard Worker fi 261*de1e4e89SAndroid Build Coastguard Worker rm -f $TMPDIR/ipsettest.c $TMPDIR/ipsettest 262*de1e4e89SAndroid Build Coastguard Worker} 263*de1e4e89SAndroid Build Coastguard Worker 264*de1e4e89SAndroid Build Coastguard Workercheck_elf() 265*de1e4e89SAndroid Build Coastguard Worker{ 266*de1e4e89SAndroid Build Coastguard Worker if ${PKG_CONFIG} libelf --exists 267*de1e4e89SAndroid Build Coastguard Worker then 268*de1e4e89SAndroid Build Coastguard Worker echo "HAVE_ELF:=y" >>$CONFIG 269*de1e4e89SAndroid Build Coastguard Worker echo "yes" 270*de1e4e89SAndroid Build Coastguard Worker 271*de1e4e89SAndroid Build Coastguard Worker echo 'CFLAGS += -DHAVE_ELF' `${PKG_CONFIG} libelf --cflags` >> $CONFIG 272*de1e4e89SAndroid Build Coastguard Worker echo 'LDLIBS += ' `${PKG_CONFIG} libelf --libs` >>$CONFIG 273*de1e4e89SAndroid Build Coastguard Worker else 274*de1e4e89SAndroid Build Coastguard Worker echo "no" 275*de1e4e89SAndroid Build Coastguard Worker fi 276*de1e4e89SAndroid Build Coastguard Worker} 277*de1e4e89SAndroid Build Coastguard Worker 278*de1e4e89SAndroid Build Coastguard Workercheck_selinux() 279*de1e4e89SAndroid Build Coastguard Worker# SELinux is a compile time option in the ss utility 280*de1e4e89SAndroid Build Coastguard Worker{ 281*de1e4e89SAndroid Build Coastguard Worker if ${PKG_CONFIG} libselinux --exists 282*de1e4e89SAndroid Build Coastguard Worker then 283*de1e4e89SAndroid Build Coastguard Worker echo "HAVE_SELINUX:=y" >>$CONFIG 284*de1e4e89SAndroid Build Coastguard Worker echo "yes" 285*de1e4e89SAndroid Build Coastguard Worker 286*de1e4e89SAndroid Build Coastguard Worker echo 'LDLIBS +=' `${PKG_CONFIG} --libs libselinux` >>$CONFIG 287*de1e4e89SAndroid Build Coastguard Worker echo 'CFLAGS += -DHAVE_SELINUX' `${PKG_CONFIG} --cflags libselinux` >>$CONFIG 288*de1e4e89SAndroid Build Coastguard Worker else 289*de1e4e89SAndroid Build Coastguard Worker echo "no" 290*de1e4e89SAndroid Build Coastguard Worker fi 291*de1e4e89SAndroid Build Coastguard Worker} 292*de1e4e89SAndroid Build Coastguard Worker 293*de1e4e89SAndroid Build Coastguard Workercheck_mnl() 294*de1e4e89SAndroid Build Coastguard Worker{ 295*de1e4e89SAndroid Build Coastguard Worker if ${PKG_CONFIG} libmnl --exists 296*de1e4e89SAndroid Build Coastguard Worker then 297*de1e4e89SAndroid Build Coastguard Worker echo "HAVE_MNL:=y" >>$CONFIG 298*de1e4e89SAndroid Build Coastguard Worker echo "yes" 299*de1e4e89SAndroid Build Coastguard Worker 300*de1e4e89SAndroid Build Coastguard Worker echo 'CFLAGS += -DHAVE_LIBMNL' `${PKG_CONFIG} libmnl --cflags` >>$CONFIG 301*de1e4e89SAndroid Build Coastguard Worker echo 'LDLIBS +=' `${PKG_CONFIG} libmnl --libs` >> $CONFIG 302*de1e4e89SAndroid Build Coastguard Worker else 303*de1e4e89SAndroid Build Coastguard Worker echo "no" 304*de1e4e89SAndroid Build Coastguard Worker fi 305*de1e4e89SAndroid Build Coastguard Worker} 306*de1e4e89SAndroid Build Coastguard Worker 307*de1e4e89SAndroid Build Coastguard Workercheck_berkeley_db() 308*de1e4e89SAndroid Build Coastguard Worker{ 309*de1e4e89SAndroid Build Coastguard Worker cat >$TMPDIR/dbtest.c <<EOF 310*de1e4e89SAndroid Build Coastguard Worker#include <fcntl.h> 311*de1e4e89SAndroid Build Coastguard Worker#include <stdlib.h> 312*de1e4e89SAndroid Build Coastguard Worker#include <db_185.h> 313*de1e4e89SAndroid Build Coastguard Workerint main(int argc, char **argv) { 314*de1e4e89SAndroid Build Coastguard Worker dbopen("/tmp/xxx_test_db.db", O_CREAT|O_RDWR, 0644, DB_HASH, NULL); 315*de1e4e89SAndroid Build Coastguard Worker return 0; 316*de1e4e89SAndroid Build Coastguard Worker} 317*de1e4e89SAndroid Build Coastguard WorkerEOF 318*de1e4e89SAndroid Build Coastguard Worker $CC -I$INCLUDE -o $TMPDIR/dbtest $TMPDIR/dbtest.c -ldb >/dev/null 2>&1 319*de1e4e89SAndroid Build Coastguard Worker if [ $? -eq 0 ] 320*de1e4e89SAndroid Build Coastguard Worker then 321*de1e4e89SAndroid Build Coastguard Worker echo "HAVE_BERKELEY_DB:=y" >>$CONFIG 322*de1e4e89SAndroid Build Coastguard Worker echo "yes" 323*de1e4e89SAndroid Build Coastguard Worker else 324*de1e4e89SAndroid Build Coastguard Worker echo "no" 325*de1e4e89SAndroid Build Coastguard Worker fi 326*de1e4e89SAndroid Build Coastguard Worker rm -f $TMPDIR/dbtest.c $TMPDIR/dbtest 327*de1e4e89SAndroid Build Coastguard Worker} 328*de1e4e89SAndroid Build Coastguard Worker 329*de1e4e89SAndroid Build Coastguard Workercheck_strlcpy() 330*de1e4e89SAndroid Build Coastguard Worker{ 331*de1e4e89SAndroid Build Coastguard Worker cat >$TMPDIR/strtest.c <<EOF 332*de1e4e89SAndroid Build Coastguard Worker#include <string.h> 333*de1e4e89SAndroid Build Coastguard Workerint main(int argc, char **argv) { 334*de1e4e89SAndroid Build Coastguard Worker char dst[10]; 335*de1e4e89SAndroid Build Coastguard Worker strlcpy(dst, "test", sizeof(dst)); 336*de1e4e89SAndroid Build Coastguard Worker return 0; 337*de1e4e89SAndroid Build Coastguard Worker} 338*de1e4e89SAndroid Build Coastguard WorkerEOF 339*de1e4e89SAndroid Build Coastguard Worker $CC -I$INCLUDE -o $TMPDIR/strtest $TMPDIR/strtest.c >/dev/null 2>&1 340*de1e4e89SAndroid Build Coastguard Worker if [ $? -eq 0 ] 341*de1e4e89SAndroid Build Coastguard Worker then 342*de1e4e89SAndroid Build Coastguard Worker echo "no" 343*de1e4e89SAndroid Build Coastguard Worker else 344*de1e4e89SAndroid Build Coastguard Worker echo 'CFLAGS += -DNEED_STRLCPY' >>$CONFIG 345*de1e4e89SAndroid Build Coastguard Worker echo "yes" 346*de1e4e89SAndroid Build Coastguard Worker fi 347*de1e4e89SAndroid Build Coastguard Worker rm -f $TMPDIR/strtest.c $TMPDIR/strtest 348*de1e4e89SAndroid Build Coastguard Worker} 349*de1e4e89SAndroid Build Coastguard Worker 350*de1e4e89SAndroid Build Coastguard Workerquiet_config() 351*de1e4e89SAndroid Build Coastguard Worker{ 352*de1e4e89SAndroid Build Coastguard Worker cat <<EOF 353*de1e4e89SAndroid Build Coastguard Worker# user can control verbosity similar to kernel builds (e.g., V=1) 354*de1e4e89SAndroid Build Coastguard Workerifeq ("\$(origin V)", "command line") 355*de1e4e89SAndroid Build Coastguard Worker VERBOSE = \$(V) 356*de1e4e89SAndroid Build Coastguard Workerendif 357*de1e4e89SAndroid Build Coastguard Workerifndef VERBOSE 358*de1e4e89SAndroid Build Coastguard Worker VERBOSE = 0 359*de1e4e89SAndroid Build Coastguard Workerendif 360*de1e4e89SAndroid Build Coastguard Workerifeq (\$(VERBOSE),1) 361*de1e4e89SAndroid Build Coastguard Worker Q = 362*de1e4e89SAndroid Build Coastguard Workerelse 363*de1e4e89SAndroid Build Coastguard Worker Q = @ 364*de1e4e89SAndroid Build Coastguard Workerendif 365*de1e4e89SAndroid Build Coastguard Worker 366*de1e4e89SAndroid Build Coastguard Workerifeq (\$(VERBOSE), 0) 367*de1e4e89SAndroid Build Coastguard Worker QUIET_CC = @echo ' CC '\$@; 368*de1e4e89SAndroid Build Coastguard Worker QUIET_AR = @echo ' AR '\$@; 369*de1e4e89SAndroid Build Coastguard Worker QUIET_LINK = @echo ' LINK '\$@; 370*de1e4e89SAndroid Build Coastguard Worker QUIET_YACC = @echo ' YACC '\$@; 371*de1e4e89SAndroid Build Coastguard Worker QUIET_LEX = @echo ' LEX '\$@; 372*de1e4e89SAndroid Build Coastguard Workerendif 373*de1e4e89SAndroid Build Coastguard WorkerEOF 374*de1e4e89SAndroid Build Coastguard Worker} 375*de1e4e89SAndroid Build Coastguard Worker 376*de1e4e89SAndroid Build Coastguard Workerecho "# Generated config based on" $INCLUDE >$CONFIG 377*de1e4e89SAndroid Build Coastguard Workerquiet_config >> $CONFIG 378*de1e4e89SAndroid Build Coastguard Worker 379*de1e4e89SAndroid Build Coastguard Workercheck_toolchain 380*de1e4e89SAndroid Build Coastguard Worker 381*de1e4e89SAndroid Build Coastguard Workerecho "TC schedulers" 382*de1e4e89SAndroid Build Coastguard Worker 383*de1e4e89SAndroid Build Coastguard Workerecho -n " ATM " 384*de1e4e89SAndroid Build Coastguard Workercheck_atm 385*de1e4e89SAndroid Build Coastguard Worker 386*de1e4e89SAndroid Build Coastguard Workercheck_xtables 387*de1e4e89SAndroid Build Coastguard Workerif ! grep -q TC_CONFIG_NO_XT $CONFIG 388*de1e4e89SAndroid Build Coastguard Workerthen 389*de1e4e89SAndroid Build Coastguard Worker echo -n " IPT " 390*de1e4e89SAndroid Build Coastguard Worker check_xt 391*de1e4e89SAndroid Build Coastguard Worker check_xt_old 392*de1e4e89SAndroid Build Coastguard Worker check_xt_old_internal_h 393*de1e4e89SAndroid Build Coastguard Worker check_ipt 394*de1e4e89SAndroid Build Coastguard Worker 395*de1e4e89SAndroid Build Coastguard Worker echo -n " IPSET " 396*de1e4e89SAndroid Build Coastguard Worker check_ipset 397*de1e4e89SAndroid Build Coastguard Workerfi 398*de1e4e89SAndroid Build Coastguard Worker 399*de1e4e89SAndroid Build Coastguard Workerecho 400*de1e4e89SAndroid Build Coastguard Workerif ! grep -q TC_CONFIG_NO_XT $CONFIG 401*de1e4e89SAndroid Build Coastguard Workerthen 402*de1e4e89SAndroid Build Coastguard Worker echo -n "iptables modules directory: " 403*de1e4e89SAndroid Build Coastguard Worker check_ipt_lib_dir 404*de1e4e89SAndroid Build Coastguard Workerfi 405*de1e4e89SAndroid Build Coastguard Worker 406*de1e4e89SAndroid Build Coastguard Workerecho -n "libc has setns: " 407*de1e4e89SAndroid Build Coastguard Workercheck_setns 408*de1e4e89SAndroid Build Coastguard Worker 409*de1e4e89SAndroid Build Coastguard Workerecho -n "SELinux support: " 410*de1e4e89SAndroid Build Coastguard Workercheck_selinux 411*de1e4e89SAndroid Build Coastguard Worker 412*de1e4e89SAndroid Build Coastguard Workerecho -n "ELF support: " 413*de1e4e89SAndroid Build Coastguard Workercheck_elf 414*de1e4e89SAndroid Build Coastguard Worker 415*de1e4e89SAndroid Build Coastguard Workerecho -n "libmnl support: " 416*de1e4e89SAndroid Build Coastguard Workercheck_mnl 417*de1e4e89SAndroid Build Coastguard Worker 418*de1e4e89SAndroid Build Coastguard Workerecho -n "Berkeley DB: " 419*de1e4e89SAndroid Build Coastguard Workercheck_berkeley_db 420*de1e4e89SAndroid Build Coastguard Worker 421*de1e4e89SAndroid Build Coastguard Workerecho -n "need for strlcpy: " 422*de1e4e89SAndroid Build Coastguard Workercheck_strlcpy 423*de1e4e89SAndroid Build Coastguard Worker 424*de1e4e89SAndroid Build Coastguard Workerecho 425*de1e4e89SAndroid Build Coastguard Workerecho -n "docs:" 426*de1e4e89SAndroid Build Coastguard Workercheck_docs 427*de1e4e89SAndroid Build Coastguard Workerecho 428*de1e4e89SAndroid Build Coastguard Worker 429*de1e4e89SAndroid Build Coastguard Workerecho >> $CONFIG 430*de1e4e89SAndroid Build Coastguard Workerecho "%.o: %.c" >> $CONFIG 431*de1e4e89SAndroid Build Coastguard Workerecho ' $(QUIET_CC)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<' >> $CONFIG 432