Merge commit 'v3.3.0' into upstream
[debian/gnuradio] / gr-howto-write-a-block / config / gr_standalone.m4
diff --git a/gr-howto-write-a-block/config/gr_standalone.m4 b/gr-howto-write-a-block/config/gr_standalone.m4
new file mode 100644 (file)
index 0000000..3f8ddf1
--- /dev/null
@@ -0,0 +1,135 @@
+dnl
+dnl Copyright 2008,2009 Free Software Foundation, Inc.
+dnl 
+dnl This file is part of GNU Radio
+dnl 
+dnl GNU Radio is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 3, or (at your option)
+dnl any later version.
+dnl 
+dnl GNU Radio is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl 
+dnl You should have received a copy of the GNU General Public License along
+dnl with this program; if not, write to the Free Software Foundation, Inc.,
+dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+dnl
+
+dnl
+dnl GR_STANDALONE([package],[version])
+dnl
+dnl Handles the bulk of the configure.ac work for an out-of-tree build
+dnl
+dnl N.B., this is an m4_define because if it were an AC_DEFUN it would
+dnl get called too late to be useful.
+
+m4_define([GR_STANDALONE],
+[
+  AC_CONFIG_SRCDIR([config/gr_standalone.m4])
+  AM_CONFIG_HEADER(config.h)
+
+  dnl Remember if the user explicity set CXXFLAGS
+  if test -n "${CXXFLAGS}"; then
+    user_set_cxxflags=yes
+  fi
+
+  LF_CONFIGURE_CC
+  LF_CONFIGURE_CXX
+  GR_LIB64             dnl check for lib64 suffix after choosing compilers
+
+  dnl The three macros above are known to override CXXFLAGS if the user
+  dnl didn't specify them.  Though I'm sure somebody thought this was
+  dnl a good idea, it makes it hard to use other than -g -O2 when compiling
+  dnl selected files.  Thus we "undo" the damage here...
+  dnl 
+  dnl If the user specified CXXFLAGS, we use them.  Otherwise when compiling
+  dnl the output of swig use use -O1 if we're using g++.
+  dnl See Makefile.common for the rest of the magic.
+  if test "$user_set_cxxflags" != yes; then
+    autoconf_default_CXXFLAGS="$CXXFLAGS"
+    if test "$GXX" = yes; then
+      case "$host_cpu" in
+       powerpc*)
+          dnl "-O1" is broken on the PPC for some reason
+          dnl (at least as of g++ 4.1.1)
+          swig_CXXFLAGS="-g1 -O2 -Wno-strict-aliasing -Wno-parentheses"
+       ;;
+       *) 
+       swig_CXXFLAGS="-g -O1 -Wno-strict-aliasing -Wno-parentheses"
+       ;;
+      esac
+    fi
+  fi
+  AC_SUBST(autoconf_default_CXXFLAGS)
+  AC_SUBST(swig_CXXFLAGS)
+
+  dnl add ${prefix}/lib${gr_libdir_suffix}/pkgconfig to the head of the PKG_CONFIG_PATH
+  if test x${PKG_CONFIG_PATH} = x; then
+      PKG_CONFIG_PATH=${prefix}/lib${gr_libdir_suffix}/pkgconfig
+  else
+      PKG_CONFIG_PATH=${prefix}/lib${gr_libdir_suffix}/pkgconfig:${PKG_CONFIG_PATH}
+  fi
+  export PKG_CONFIG_PATH
+
+  LF_SET_WARNINGS
+  GR_SET_GPROF
+  GR_SET_PROF
+  AM_PROG_AS
+  AC_PROG_LN_S
+  AC_PROG_MAKE_SET
+  AC_PROG_INSTALL
+  AC_PATH_PROG([RM_PROG], [rm])
+
+  AC_LIBTOOL_WIN32_DLL
+  AC_ENABLE_SHARED     dnl do build shared libraries
+  AC_DISABLE_STATIC    dnl don't build static libraries
+  m4_ifdef([LT_INIT],[LT_INIT],[AC_PROG_LIBTOOL])
+  dnl GR_FORTRAN
+
+  GR_NO_UNDEFINED      dnl do we need the -no-undefined linker flag
+  GR_SCRIPTING         dnl Locate python, SWIG, etc
+
+  dnl Checks for header files.
+  AC_HEADER_STDC
+
+  dnl Checks for typedefs, structures, and compiler characteristics.
+  AC_C_CONST
+  AC_C_INLINE
+  AC_TYPE_SIZE_T
+  AC_HEADER_TIME
+  AC_C_BIGENDIAN
+
+  dnl Check for Mingw support
+  GR_PWIN32
+
+  AC_CHECK_PROG([XMLTO],[xmlto],[yes],[])
+  AM_CONDITIONAL([HAS_XMLTO], [test x$XMLTO = xyes])
+
+  PKG_CHECK_MODULES(GNURADIO_CORE, gnuradio-core >= 3)
+  LIBS="$LIBS $GNURADIO_CORE_LIBS"
+
+  dnl Allow user to choose whether to generate SWIG/Python 
+  dnl Default is enabled
+  AC_ARG_ENABLE([python],
+    [AS_HELP_STRING([--enable-python],
+      [generate SWIG/Python components (default is yes)])],
+    [case "${enableval}" in
+       yes) enable_python=yes ;;
+       no) enable_python=no ;;
+       *) AC_MSG_ERROR([bad value ${enableval} for --enable-python]) ;;
+     esac],
+    [enable_python=yes]  
+  )
+  AM_CONDITIONAL([PYTHON], [test x$enable_python = xyes])
+
+  dnl Define where to look for cppunit includes and libs
+  dnl sets CPPUNIT_CFLAGS and CPPUNIT_LIBS
+  dnl Try using pkg-config first, then fall back to cppunit-config.
+  PKG_CHECK_EXISTS(cppunit,
+    [PKG_CHECK_MODULES(CPPUNIT, cppunit >= 1.9.14)],
+    [AM_PATH_CPPUNIT([1.9.14],[],
+                    [AC_MSG_ERROR([GNU Radio requires cppunit.  Stop])])])
+])