1dnl Copyright (C) 2009 Facebook 2dnl Copying and distribution of this file, with or without modification, 3dnl are permitted in any medium without royalty provided the copyright 4dnl notice and this notice are preserved. 5 6AC_DEFUN([FB_INITIALIZE], 7[ 8AM_INIT_AUTOMAKE([ foreign 1.9.5 no-define ]) 9if test "x$1" = "xlocalinstall"; then 10wdir=`pwd` 11# To use $wdir undef quote. 12# 13########## 14AC_PREFIX_DEFAULT([`pwd`/install]) 15echo 16fi 17AC_PROG_CC 18AC_PROG_CXX 19AC_PROG_RANLIB(RANLIB, ranlib) 20AC_PATH_PROGS(BASH, bash) 21AC_PATH_PROGS(PERL, perl) 22AC_PATH_PROGS(PYTHON, python) 23AC_PATH_PROGS(AR, ar) 24AC_PATH_PROGS(ANT, ant) 25PRODUCT_MK="" 26]) 27 28AC_DEFUN([FB_WITH_EXTERNAL_PATH], 29[ 30cdir=`pwd` 31AC_MSG_CHECKING([Checking EXTERNAL_PATH set to]) 32AC_ARG_WITH([externalpath], 33 [ --with-externalpath=DIR User specified path to external facebook components.], 34 [ 35 if test "x${EXTERNAL_PATH}" != "x"; then 36 echo "" 37 echo "ERROR: You have already set EXTERNAL_PATH in your environment" 38 echo "Cannot override it using --with-externalpath. Unset EXTERNAL_PATH to use this option" 39 exit 1 40 fi 41 EXTERNAL_PATH=$withval 42 ], 43 [ 44 if test "x${EXTERNAL_PATH}" = "x"; then 45 EXTERNAL_PATH=$1 46 fi 47 ] 48) 49if test "x${EXTERNAL_PATH}" = "x"; then 50 export EXTERNAL_PATH="$cdir/external" 51 GLOBAL_HEADER_MK="include ${EXTERNAL_PATH}/global_header.mk" 52 GLOBAL_FOOTER_MK="include ${EXTERNAL_PATH}/global_footer.mk" 53else 54 export EXTERNAL_PATH 55 GLOBAL_HEADER_MK="include ${EXTERNAL_PATH}/global_header.mk" 56 GLOBAL_FOOTER_MK="include ${EXTERNAL_PATH}/global_footer.mk" 57fi 58AC_MSG_RESULT($EXTERNAL_PATH) 59if test ! -d ${EXTERNAL_PATH}; then 60 echo "" 61 echo "ERROR: EXTERNAL_PATH set to an nonexistent directory ${EXTERNAL_PATH}" 62 exit 1 63fi 64AC_SUBST(EXTERNAL_PATH) 65AC_SUBST(GLOBAL_HEADER_MK) 66AC_SUBST(GLOBAL_FOOTER_MK) 67]) 68 69# Set option to enable shared mode. Set DEBUG and OPT for use in Makefile.am. 70AC_DEFUN([FB_ENABLE_DEFAULT_OPT_BUILD], 71[ 72AC_MSG_CHECKING([whether to enable optimized build]) 73AC_ARG_ENABLE([opt], 74 [ --disable-opt Set up debug mode.], 75 [ 76 ENABLED_OPT=$enableval 77 ], 78 [ 79 ENABLED_OPT="yes" 80 ] 81) 82if test "$ENABLED_OPT" = "yes" 83then 84 CFLAGS="-Wall -O3" 85 CXXFLAGS="-Wall -O3" 86else 87 CFLAGS="-Wall -g" 88 CXXFLAGS="-Wall -g" 89fi 90AC_MSG_RESULT($ENABLED_OPT) 91AM_CONDITIONAL([OPT], [test "$ENABLED_OPT" = yes]) 92AM_CONDITIONAL([DEBUG], [test "$ENABLED_OPT" = no]) 93]) 94 95# Set option to enable debug mode. Set DEBUG and OPT for use in Makefile.am. 96AC_DEFUN([FB_ENABLE_DEFAULT_DEBUG_BUILD], 97[ 98AC_MSG_CHECKING([whether to enable debug build]) 99AC_ARG_ENABLE([debug], 100 [ --disable-debug Set up opt mode.], 101 [ 102 ENABLED_DEBUG=$enableval 103 ], 104 [ 105 ENABLED_DEBUG="yes" 106 ] 107) 108if test "$ENABLED_DEBUG" = "yes" 109then 110 CFLAGS="-Wall -g" 111 CXXFLAGS="-Wall -g" 112else 113 CFLAGS="-Wall -O3" 114 CXXFLAGS="-Wall -O3" 115fi 116AC_MSG_RESULT($ENABLED_DEBUG) 117AM_CONDITIONAL([DEBUG], [test "$ENABLED_DEBUG" = yes]) 118AM_CONDITIONAL([OPT], [test "$ENABLED_DEBUG" = no]) 119]) 120 121# Set option to enable static libs. 122AC_DEFUN([FB_ENABLE_DEFAULT_STATIC], 123[ 124SHARED="" 125STATIC="" 126AC_MSG_CHECKING([whether to enable static mode]) 127AC_ARG_ENABLE([static], 128 [ --disable-static Set up shared mode.], 129 [ 130 ENABLED_STATIC=$enableval 131 ], 132 [ 133 ENABLED_STATIC="yes" 134 ] 135) 136if test "$ENABLED_STATIC" = "yes" 137then 138 LTYPE=".a" 139else 140 LTYPE=".so" 141 SHARED_CXXFLAGS="-fPIC" 142 SHARED_CFLAGS="-fPIC" 143 SHARED_LDFLAGS="-shared -fPIC" 144 AC_SUBST(SHARED_CXXFLAGS) 145 AC_SUBST(SHARED_CFLAGS) 146 AC_SUBST(SHARED_LDFLAGS) 147fi 148AC_MSG_RESULT($ENABLED_STATIC) 149AC_SUBST(LTYPE) 150AM_CONDITIONAL([STATIC], [test "$ENABLED_STATIC" = yes]) 151AM_CONDITIONAL([SHARED], [test "$ENABLED_STATIC" = no]) 152]) 153 154# Set option to enable shared libs. 155AC_DEFUN([FB_ENABLE_DEFAULT_SHARED], 156[ 157SHARED="" 158STATIC="" 159AC_MSG_CHECKING([whether to enable shared mode]) 160AC_ARG_ENABLE([shared], 161 [ --disable-shared Set up static mode.], 162 [ 163 ENABLED_SHARED=$enableval 164 ], 165 [ 166 ENABLED_SHARED="yes" 167 ] 168) 169if test "$ENABLED_SHARED" = "yes" 170then 171 LTYPE=".so" 172 SHARED_CXXFLAGS="-fPIC" 173 SHARED_CFLAGS="-fPIC" 174 SHARED_LDFLAGS="-shared -fPIC" 175 AC_SUBST(SHARED_CXXFLAGS) 176 AC_SUBST(SHARED_CFLAGS) 177 AC_SUBST(SHARED_LDFLAGS) 178else 179 LTYPE=".a" 180fi 181AC_MSG_RESULT($ENABLED_SHARED) 182AC_SUBST(LTYPE) 183AM_CONDITIONAL([SHARED], [test "$ENABLED_SHARED" = yes]) 184AM_CONDITIONAL([STATIC], [test "$ENABLED_SHARED" = no]) 185]) 186 187# Generates define flags and conditionals as specified by user. 188# This gets enabled *only* if user selects --enable-<FEATURE> otion. 189AC_DEFUN([FB_ENABLE_FEATURE], 190[ 191ENABLE="" 192flag="$1" 193value="$3" 194AC_MSG_CHECKING([whether to enable $1]) 195AC_ARG_ENABLE([$2], 196 [ --enable-$2 Enable $2.], 197 [ 198 ENABLE=$enableval 199 ], 200 [ 201 ENABLE="no" 202 ] 203) 204AM_CONDITIONAL([$1], [test "$ENABLE" = yes]) 205if test "$ENABLE" = "yes" 206then 207 if test "x${value}" = "x" 208 then 209 AC_DEFINE([$1]) 210 else 211 AC_DEFINE_UNQUOTED([$1], [$value]) 212 fi 213fi 214AC_MSG_RESULT($ENABLE) 215]) 216 217 218# can also use eval $2=$withval;AC_SUBST($2) 219AC_DEFUN([FB_WITH_PATH], 220[ 221USRFLAG="" 222USRFLAG=$1 223AC_MSG_CHECKING([Checking $1 set to]) 224AC_ARG_WITH([$2], 225 [ --with-$2=DIR User specified path.], 226 [ 227 LOC=$withval 228 eval $USRFLAG=$withval 229 ], 230 [ 231 LOC=$3 232 eval $USRFLAG=$3 233 ] 234) 235AC_SUBST([$1]) 236AC_MSG_RESULT($LOC) 237]) 238 239AC_DEFUN([FB_SET_FLAG_VALUE], 240[ 241SETFLAG="" 242AC_MSG_CHECKING([Checking $1 set to]) 243SETFLAG=$1 244eval $SETFLAG=\"$2\" 245AC_SUBST([$SETFLAG]) 246AC_MSG_RESULT($2) 247]) 248 249# NOTES 250# if using if else bourne stmt you must have more than a macro in it. 251# EX1 is not correct. EX2 is correct 252# EX1: if test "$XX" = "yes"; then 253# AC_SUBST(xx) 254# fi 255# EX2: if test "$XX" = "yes"; then 256# xx="foo" 257# AC_SUBST(xx) 258# fi 259