| dnl Copyright (C) 2009 Facebook |
| dnl Copying and distribution of this file, with or without modification, |
| dnl are permitted in any medium without royalty provided the copyright |
| dnl notice and this notice are preserved. |
| |
| AC_DEFUN([FB_INITIALIZE], |
| [ |
| AM_INIT_AUTOMAKE([ foreign 1.9.5 no-define ]) |
| if test "x$1" = "xlocalinstall"; then |
| wdir=`pwd` |
| # To use $wdir undef quote. |
| # |
| ########## |
| AC_PREFIX_DEFAULT([`pwd`/install]) |
| echo |
| fi |
| AC_PROG_CC |
| AC_PROG_CXX |
| AC_PROG_RANLIB(RANLIB, ranlib) |
| AC_PATH_PROGS(BASH, bash) |
| AC_PATH_PROGS(PERL, perl) |
| AC_PATH_PROGS(PYTHON, python) |
| AC_PATH_PROGS(AR, ar) |
| AC_PATH_PROGS(ANT, ant) |
| PRODUCT_MK="" |
| ]) |
| |
| AC_DEFUN([FB_WITH_EXTERNAL_PATH], |
| [ |
| cdir=`pwd` |
| AC_MSG_CHECKING([Checking EXTERNAL_PATH set to]) |
| AC_ARG_WITH([externalpath], |
| [ --with-externalpath=DIR User specified path to external facebook components.], |
| [ |
| if test "x${EXTERNAL_PATH}" != "x"; then |
| echo "" |
| echo "ERROR: You have already set EXTERNAL_PATH in your environment" |
| echo "Cannot override it using --with-externalpath. Unset EXTERNAL_PATH to use this option" |
| exit 1 |
| fi |
| EXTERNAL_PATH=$withval |
| ], |
| [ |
| if test "x${EXTERNAL_PATH}" = "x"; then |
| EXTERNAL_PATH=$1 |
| fi |
| ] |
| ) |
| if test "x${EXTERNAL_PATH}" = "x"; then |
| export EXTERNAL_PATH="$cdir/external" |
| GLOBAL_HEADER_MK="include ${EXTERNAL_PATH}/global_header.mk" |
| GLOBAL_FOOTER_MK="include ${EXTERNAL_PATH}/global_footer.mk" |
| else |
| export EXTERNAL_PATH |
| GLOBAL_HEADER_MK="include ${EXTERNAL_PATH}/global_header.mk" |
| GLOBAL_FOOTER_MK="include ${EXTERNAL_PATH}/global_footer.mk" |
| fi |
| AC_MSG_RESULT($EXTERNAL_PATH) |
| if test ! -d ${EXTERNAL_PATH}; then |
| echo "" |
| echo "ERROR: EXTERNAL_PATH set to an nonexistent directory ${EXTERNAL_PATH}" |
| exit 1 |
| fi |
| AC_SUBST(EXTERNAL_PATH) |
| AC_SUBST(GLOBAL_HEADER_MK) |
| AC_SUBST(GLOBAL_FOOTER_MK) |
| ]) |
| |
| # Set option to enable shared mode. Set DEBUG and OPT for use in Makefile.am. |
| AC_DEFUN([FB_ENABLE_DEFAULT_OPT_BUILD], |
| [ |
| AC_MSG_CHECKING([whether to enable optimized build]) |
| AC_ARG_ENABLE([opt], |
| [ --disable-opt Set up debug mode.], |
| [ |
| ENABLED_OPT=$enableval |
| ], |
| [ |
| ENABLED_OPT="yes" |
| ] |
| ) |
| if test "$ENABLED_OPT" = "yes" |
| then |
| CFLAGS="-Wall -O3" |
| CXXFLAGS="-Wall -O3" |
| else |
| CFLAGS="-Wall -g" |
| CXXFLAGS="-Wall -g" |
| fi |
| AC_MSG_RESULT($ENABLED_OPT) |
| AM_CONDITIONAL([OPT], [test "$ENABLED_OPT" = yes]) |
| AM_CONDITIONAL([DEBUG], [test "$ENABLED_OPT" = no]) |
| ]) |
| |
| # Set option to enable debug mode. Set DEBUG and OPT for use in Makefile.am. |
| AC_DEFUN([FB_ENABLE_DEFAULT_DEBUG_BUILD], |
| [ |
| AC_MSG_CHECKING([whether to enable debug build]) |
| AC_ARG_ENABLE([debug], |
| [ --disable-debug Set up opt mode.], |
| [ |
| ENABLED_DEBUG=$enableval |
| ], |
| [ |
| ENABLED_DEBUG="yes" |
| ] |
| ) |
| if test "$ENABLED_DEBUG" = "yes" |
| then |
| CFLAGS="-Wall -g" |
| CXXFLAGS="-Wall -g" |
| else |
| CFLAGS="-Wall -O3" |
| CXXFLAGS="-Wall -O3" |
| fi |
| AC_MSG_RESULT($ENABLED_DEBUG) |
| AM_CONDITIONAL([DEBUG], [test "$ENABLED_DEBUG" = yes]) |
| AM_CONDITIONAL([OPT], [test "$ENABLED_DEBUG" = no]) |
| ]) |
| |
| # Set option to enable static libs. |
| AC_DEFUN([FB_ENABLE_DEFAULT_STATIC], |
| [ |
| SHARED="" |
| STATIC="" |
| AC_MSG_CHECKING([whether to enable static mode]) |
| AC_ARG_ENABLE([static], |
| [ --disable-static Set up shared mode.], |
| [ |
| ENABLED_STATIC=$enableval |
| ], |
| [ |
| ENABLED_STATIC="yes" |
| ] |
| ) |
| if test "$ENABLED_STATIC" = "yes" |
| then |
| LTYPE=".a" |
| else |
| LTYPE=".so" |
| SHARED_CXXFLAGS="-fPIC" |
| SHARED_CFLAGS="-fPIC" |
| SHARED_LDFLAGS="-shared -fPIC" |
| AC_SUBST(SHARED_CXXFLAGS) |
| AC_SUBST(SHARED_CFLAGS) |
| AC_SUBST(SHARED_LDFLAGS) |
| fi |
| AC_MSG_RESULT($ENABLED_STATIC) |
| AC_SUBST(LTYPE) |
| AM_CONDITIONAL([STATIC], [test "$ENABLED_STATIC" = yes]) |
| AM_CONDITIONAL([SHARED], [test "$ENABLED_STATIC" = no]) |
| ]) |
| |
| # Set option to enable shared libs. |
| AC_DEFUN([FB_ENABLE_DEFAULT_SHARED], |
| [ |
| SHARED="" |
| STATIC="" |
| AC_MSG_CHECKING([whether to enable shared mode]) |
| AC_ARG_ENABLE([shared], |
| [ --disable-shared Set up static mode.], |
| [ |
| ENABLED_SHARED=$enableval |
| ], |
| [ |
| ENABLED_SHARED="yes" |
| ] |
| ) |
| if test "$ENABLED_SHARED" = "yes" |
| then |
| LTYPE=".so" |
| SHARED_CXXFLAGS="-fPIC" |
| SHARED_CFLAGS="-fPIC" |
| SHARED_LDFLAGS="-shared -fPIC" |
| AC_SUBST(SHARED_CXXFLAGS) |
| AC_SUBST(SHARED_CFLAGS) |
| AC_SUBST(SHARED_LDFLAGS) |
| else |
| LTYPE=".a" |
| fi |
| AC_MSG_RESULT($ENABLED_SHARED) |
| AC_SUBST(LTYPE) |
| AM_CONDITIONAL([SHARED], [test "$ENABLED_SHARED" = yes]) |
| AM_CONDITIONAL([STATIC], [test "$ENABLED_SHARED" = no]) |
| ]) |
| |
| # Generates define flags and conditionals as specified by user. |
| # This gets enabled *only* if user selects --enable-<FEATURE> otion. |
| AC_DEFUN([FB_ENABLE_FEATURE], |
| [ |
| ENABLE="" |
| flag="$1" |
| value="$3" |
| AC_MSG_CHECKING([whether to enable $1]) |
| AC_ARG_ENABLE([$2], |
| [ --enable-$2 Enable $2.], |
| [ |
| ENABLE=$enableval |
| ], |
| [ |
| ENABLE="no" |
| ] |
| ) |
| AM_CONDITIONAL([$1], [test "$ENABLE" = yes]) |
| if test "$ENABLE" = "yes" |
| then |
| if test "x${value}" = "x" |
| then |
| AC_DEFINE([$1]) |
| else |
| AC_DEFINE_UNQUOTED([$1], [$value]) |
| fi |
| fi |
| AC_MSG_RESULT($ENABLE) |
| ]) |
| |
| |
| # can also use eval $2=$withval;AC_SUBST($2) |
| AC_DEFUN([FB_WITH_PATH], |
| [ |
| USRFLAG="" |
| USRFLAG=$1 |
| AC_MSG_CHECKING([Checking $1 set to]) |
| AC_ARG_WITH([$2], |
| [ --with-$2=DIR User specified path.], |
| [ |
| LOC=$withval |
| eval $USRFLAG=$withval |
| ], |
| [ |
| LOC=$3 |
| eval $USRFLAG=$3 |
| ] |
| ) |
| AC_SUBST([$1]) |
| AC_MSG_RESULT($LOC) |
| ]) |
| |
| AC_DEFUN([FB_SET_FLAG_VALUE], |
| [ |
| SETFLAG="" |
| AC_MSG_CHECKING([Checking $1 set to]) |
| SETFLAG=$1 |
| eval $SETFLAG=\"$2\" |
| AC_SUBST([$SETFLAG]) |
| AC_MSG_RESULT($2) |
| ]) |
| |
| # NOTES |
| # if using if else bourne stmt you must have more than a macro in it. |
| # EX1 is not correct. EX2 is correct |
| # EX1: if test "$XX" = "yes"; then |
| # AC_SUBST(xx) |
| # fi |
| # EX2: if test "$XX" = "yes"; then |
| # xx="foo" |
| # AC_SUBST(xx) |
| # fi |