fix segfault on ci init
[enigma2.git] / acinclude.m4
index 63b14444e56eec17ac25e8da2542b6b56f694788..717cc51efd5a930a7103b13bfb1ff4372ec7da8c 100644 (file)
@@ -1,7 +1,8 @@
 AC_DEFUN(TUXBOX_APPS,[
-AM_CONFIG_HEADER(config.h)
 AM_MAINTAINER_MODE
 
+INSTALL="$INSTALL -p"
+
 AC_GNU_SOURCE
 AC_SYS_LARGEFILE
 
@@ -10,7 +11,7 @@ AC_ARG_WITH(target,
        [TARGET="$withval"],[TARGET="native"])
 
 AC_ARG_WITH(targetprefix,
-       [  --with-targetprefix=PATH  prefix relative to target root [[PREFIX[for native], /[for cdk]]]],
+       [  --with-targetprefix=PATH  prefix relative to target root (only applicable in cdk mode)],
        [targetprefix="$withval"],[targetprefix="NONE"])
 
 AC_ARG_WITH(debug,
@@ -22,7 +23,11 @@ if test "$DEBUG" = "yes"; then
        AC_DEFINE(DEBUG,1,[Enable debug messages])
 fi
 
+AC_MSG_CHECKING(target)
+
 if test "$TARGET" = "native"; then
+       AC_MSG_RESULT(native)
+
        if test "$CFLAGS" = "" -a "$CXXFLAGS" = ""; then
                CFLAGS="-Wall -O2 -pipe $DEBUG_CFLAGS"
                CXXFLAGS="-Wall -O2 -pipe $DEBUG_CFLAGS"
@@ -30,13 +35,10 @@ if test "$TARGET" = "native"; then
        if test "$prefix" = "NONE"; then
                prefix=/usr/local
        fi
-       if test "$targetprefix" = "NONE"; then
-               targetprefix="\${prefix}"
-               _targetprefix="${prefix}"
-       else
-               _targetprefix="$targetprefix"
-       fi
+       targetprefix=$prefix
 elif test "$TARGET" = "cdk"; then
+       AC_MSG_RESULT(cdk)
+
        if test "$CC" = "" -a "$CXX" = ""; then
                CC=powerpc-tuxbox-linux-gnu-gcc CXX=powerpc-tuxbox-linux-gnu-g++
        fi
@@ -45,124 +47,164 @@ elif test "$TARGET" = "cdk"; then
                CXXFLAGS="-Wall -Os -mcpu=823 -pipe $DEBUG_CFLAGS"
        fi
        if test "$prefix" = "NONE"; then
-               prefix=/dbox2/cdkroot
+               AC_MSG_ERROR(invalid prefix, you need to specify one in cdk mode)
        fi
        if test "$targetprefix" = "NONE"; then
                targetprefix=""
-               _targetprefix=""
-       else
-               _targetprefix="$targetprefix"
        fi
        if test "$host_alias" = ""; then
                cross_compiling=yes
                host_alias=powerpc-tuxbox-linux-gnu
        fi
 else
+       AC_MSG_RESULT(none)
        AC_MSG_ERROR([invalid target $TARGET, choose on from native,cdk]);
 fi
 
 AC_CANONICAL_BUILD
 AC_CANONICAL_HOST
 
-targetdatadir="\${targetprefix}/share"
-_targetdatadir="${_targetprefix}/share"
-targetsysconfdir="\${targetprefix}/etc"
-_targetsysconfdir="${_targetprefix}/etc"
-targetlocalstatedir="\${targetprefix}/var"
-_targetlocalstatedir="${_targetprefix}/var"
-targetlibdir="\${targetprefix}/lib"
-_targetlibdir="${_targetprefix}/lib"
-AC_SUBST(targetprefix)
-AC_SUBST(targetdatadir)
-AC_SUBST(targetsysconfdir)
-AC_SUBST(targetlocalstatedir)
-
 check_path () {
        return $(perl -e "if(\"$1\"=~m#^/usr/(local/)?bin#){print \"0\"}else{print \"1\";}")
 }
 
 ])
 
+AC_DEFUN(TUXBOX_APPS_DIRECTORY_ONE,[
+AC_ARG_WITH($1,[  $6$7 [[PREFIX$4$5]]],[
+       _$2=$withval
+       if test "$TARGET" = "cdk"; then
+               $2=`eval echo "${targetprefix}$withval"`
+       else
+               $2=$withval
+       fi
+],[
+       $2="\${$3}$5"
+       if test "$TARGET" = "cdk"; then
+               _$2=`eval echo "${target$3}$5"`
+       else
+               _$2=`eval echo "${$3}$5"`
+       fi
+])
+
+dnl automake <= 1.6 don't support this
+dnl AC_SUBST($2)
+AC_DEFINE_UNQUOTED($2,"$_$2",$7)
+])
+
 AC_DEFUN(TUXBOX_APPS_DIRECTORY,[
 AC_REQUIRE([TUXBOX_APPS])
 
-CONFIGDIR="\${localstatedir}/tuxbox/config"
-_CONFIGDIR="${_targetlocalstatedir}/tuxbox/config"
-AC_SUBST(CONFIGDIR)
-AC_DEFINE_UNQUOTED(CONFIGDIR,"$_CONFIGDIR",[where to find the config files])
+if test "$TARGET" = "cdk"; then
+       datadir="\${prefix}/share"
+       tuxboxdatadir="\${prefix}/share/tuxbox"
+       zoneinfodir="\${datadir}/zoneinfo"
+       sysconfdir="\${prefix}/etc"
+       localstatedir="\${prefix}/var"
+       localedir="\${prefix}/var"
+       libdir="\${prefix}/lib"
+       targetdatadir="\${targetprefix}/share"
+       targetsysconfdir="\${targetprefix}/etc"
+       targetlocalstatedir="\${targetprefix}/var"
+       targetlibdir="\${targetprefix}/lib"
+fi
 
-DATADIR="\${datadir}/tuxbox"
-_DATADIR="${_targetdatadir}/tuxbox"
-AC_SUBST(DATADIR)
-AC_DEFINE_UNQUOTED(DATADIR,"$_DATADIR",[where to find data like icons])
+TUXBOX_APPS_DIRECTORY_ONE(configdir,CONFIGDIR,sysconfdir,/etc,,
+       [--with-configdir=PATH   ],[where to find the config files])
 
-FONTDIR="\${datadir}/fonts"
-_FONTDIR="${_targetdatadir}/fonts"
-AC_SUBST(FONTDIR)
-AC_DEFINE_UNQUOTED(FONTDIR,"$_FONTDIR",[where to find the fonts])
+TUXBOX_APPS_DIRECTORY_ONE(datadir,DATADIR,datadir,/share,,
+       [--with-datadir=PATH     ],[where to find data])
 
-GAMESDIR="\${localstatedir}/tuxbox/games"
-_GAMESDIR="${_targetlocalstatedir}/tuxbox/games"
-AC_SUBST(GAMESDIR)
-AC_DEFINE_UNQUOTED(GAMESDIR,"$_GAMESDIR",[where games data is stored])
+TUXBOX_APPS_DIRECTORY_ONE(localedir,LOCALEDIR,datadir,/share,/locale,
+       [--with-localedir=PATH ],[where to find locales])
 
-LIBDIR="\${libdir}/tuxbox"
-_LIBDIR="${_targetlibdir}/tuxbox"
-AC_SUBST(LIBDIR)
-AC_SUBST(_LIBDIR)
-AC_DEFINE_UNQUOTED(LIBDIR,"$_LIBDIR",[where to find the internal libs])
+TUXBOX_APPS_DIRECTORY_ONE(fontdir,FONTDIR,datadir,/share,/fonts,
+       [--with-fontdir=PATH     ],[where to find the fonts])
 
-PLUGINDIR="\${libdir}/tuxbox/plugins"
-_PLUGINDIR="${_targetlibdir}/tuxbox/plugins"
-AC_SUBST(PLUGINDIR)
-AC_DEFINE_UNQUOTED(PLUGINDIR,"$_PLUGINDIR",[where to find the plugins])
+TUXBOX_APPS_DIRECTORY_ONE(gamesdir,GAMESDIR,localstatedir,/var,/tuxbox/games,
+       [--with-gamesdir=PATH    ],[where games data is stored])
 
-UCODEDIR="\${localstatedir}/tuxbox/ucodes"
-_UCODEDIR="${_targetlocalstatedir}/tuxbox/ucodes"
-AC_SUBST(UCODEDIR)
-AC_DEFINE_UNQUOTED(UCODEDIR,"$_UCODEDIR",[where to find the ucodes (firmware)])
+TUXBOX_APPS_DIRECTORY_ONE(libdir,LIBDIR,libdir,/lib,,
+       [--with-libdir=PATH      ],[where to find the internal libs])
+
+TUXBOX_APPS_DIRECTORY_ONE(plugindir,PLUGINDIR,libdir,/lib,/tuxbox/plugins,
+       [--with-plugindir=PATH   ],[where to find the plugins])
+
+TUXBOX_APPS_DIRECTORY_ONE(tuxboxdatadir,TUXBOXDATADIR,datadir,/share,,
+       [--with-tuxboxdatadir=PATH],[where to find tuxbox data])
+
+TUXBOX_APPS_DIRECTORY_ONE(zoneinfodir,ZONEINFODIR,datadir,/share,/zoneinfo,
+       [--with-zoneinfodir=PATH ],[where to find zoneinfo db])
 ])
 
+dnl automake <= 1.6 needs this specifications
+AC_SUBST(CONFIGDIR)
+AC_SUBST(DATADIR)
+AC_SUBST(ZONEINFODIR)
+AC_SUBST(FONTDIR)
+AC_SUBST(GAMESDIR)
+AC_SUBST(LIBDIR)
+AC_SUBST(LOCALEDIR)
+AC_SUBST(PLUGINDIR)
+AC_SUBST(TUXBOXDATADIR)
+dnl end workaround
+
 AC_DEFUN(TUXBOX_APPS_ENDIAN,[
 AC_CHECK_HEADERS(endian.h)
 AC_C_BIGENDIAN
 ])
 
 AC_DEFUN(TUXBOX_APPS_DRIVER,[
-AC_ARG_WITH(driver,
-       [  --with-driver=PATH      path for driver sources[[NONE]]],
-       [DRIVER="$withval"],[DRIVER=""])
-
-if test -z "$DRIVER"; then
-       AC_MSG_ERROR([can't find driver sources])
-fi
-CPPFLAGS="$CPPFLAGS -I$DRIVER/include"
-AC_SUBST(DRIVER)
+#AC_ARG_WITH(driver,
+#      [  --with-driver=PATH      path for driver sources [[NONE]]],
+#      [DRIVER="$withval"],[DRIVER=""])
+#
+#if test -d "$DRIVER/include"; then
+#      AC_DEFINE(HAVE_DBOX2_DRIVER,1,[Define to 1 if you have the dbox2 driver sources])
+#else
+#      AC_MSG_ERROR([can't find driver sources])
+#fi
+
+#AC_SUBST(DRIVER)
+
+#CPPFLAGS="$CPPFLAGS -I$DRIVER/include"
 ])
 
 AC_DEFUN([TUXBOX_APPS_DVB],[
 AC_ARG_WITH(dvbincludes,
-       [  --with-dvbincludes=PATH  path for dvb includes[[NONE]]],
+       [  --with-dvbincludes=PATH  path for dvb includes [[NONE]]],
        [DVBINCLUDES="$withval"],[DVBINCLUDES=""])
 
-orig_CPPFLAGS=$CPPFLAGS
 if test "$DVBINCLUDES"; then
-       CPPFLAGS="-I$DVBINCLUDES"
-else
-       CPPFLAGS=""
+       CPPFLAGS="$CPPFLAGS -I$DVBINCLUDES"
 fi
-AC_CHECK_HEADERS(linux/dvb/version.h,[DVB_VERSION_H="yes"])
-AC_CHECK_HEADERS(ost/dmx.h,[OST_DMX_H="yes"])
-if test "$DVB_VERSION_H"; then
-       AC_MSG_NOTICE([found dvb version 2 or later])
-elif test "$OST_DMX_H"; then
+
+AC_CHECK_HEADERS(ost/dmx.h,[
+       DVB_API_VERSION=1
        AC_MSG_NOTICE([found dvb version 1])
+])
+
+if test -z "$DVB_API_VERSION"; then
+AC_CHECK_HEADERS(linux/dvb/version.h,[
+       AC_LANG_PREPROC_REQUIRE()
+       AC_REQUIRE([AC_PROG_EGREP])
+       AC_LANG_CONFTEST([AC_LANG_SOURCE([[
+#include <linux/dvb/version.h>
+version DVB_API_VERSION
+       ]])])
+       DVB_API_VERSION=`(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | $EGREP "^version" | sed "s,version\ ,,"`
+       rm -f conftest*
+
+       AC_MSG_NOTICE([found dvb version $DVB_API_VERSION])
+])
+fi
+
+if test "$DVB_API_VERSION"; then
+       AC_DEFINE(HAVE_DVB,1,[Define to 1 if you have the dvb includes])
+       AC_DEFINE_UNQUOTED(HAVE_DVB_API_VERSION,$DVB_API_VERSION,[Define to the version of the dvb api])
 else
        AC_MSG_ERROR([can't find dvb headers])
 fi
-DVB_VERSION_H=
-OST_DMX_H=
-CPPFLAGS="$orig_CPPFLAGS -I$DVBINCLUDES"
 ])
 
 AC_DEFUN(_TUXBOX_APPS_LIB_CONFIG,[
@@ -199,16 +241,19 @@ fi
 ])
 
 AC_DEFUN(_TUXBOX_APPS_LIB_PKGCONFIG,[
-AC_REQUIRE([TUXBOX_APPS_PKGCONFIG])
-AC_MSG_CHECKING(for package $2)
-if PKG_CONFIG_PATH="${prefix}/lib/pkgconfig" $PKG_CONFIG --exists "$2" ; then
-       AC_MSG_RESULT(yes)
-       $1_CFLAGS=$(PKG_CONFIG_PATH="${prefix}/lib/pkgconfig" $PKG_CONFIG --cflags "$2")
-       $1_LIBS=$(PKG_CONFIG_PATH="${prefix}/lib/pkgconfig" $PKG_CONFIG --libs "$2")
+PKG_CHECK_MODULES($1,$2)
+AC_SUBST($1_CFLAGS)
+AC_SUBST($1_LIBS)
+])
+
+AC_DEFUN(_TUXBOX_APPS_LIB_PKGCONFIG_OPTIONAL,[
+PKG_CHECK_MODULES($1,$2,$3="yes",$3="no")
+if test "$$3" = "yes"; then
+       AC_DEFINE($3, 1, [$2 available])
 else
-       AC_MSG_RESULT(no)
+       $1_CFLAGS=""
+       $1_LIBS=""
 fi
-
 AC_SUBST($1_CFLAGS)
 AC_SUBST($1_LIBS)
 ])
@@ -335,8 +380,7 @@ AC_SUBST(DUMMYPOFILES)
 AC_SUBST(CATALOGS)
 ])
 
-
-
+dnl backward compatiblity
 AC_DEFUN([AC_GNU_SOURCE],
 [AH_VERBATIM([_GNU_SOURCE],
 [/* Enable GNU extensions on systems that have them.  */
@@ -348,3 +392,95 @@ AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
 AC_DEFINE([_GNU_SOURCE])
 ])
 
+AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+   [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])
+
+AC_DEFUN([AC_PYTHON_DEVEL],[
+       #
+       # should allow for checking of python version here...
+       #
+       if test $cross_compiling = "yes"; then
+               # Check for Python include path
+               AC_MSG_CHECKING([for Python include path])
+               
+               # FIXME: yes, this is wrong. sorry about that. (tmbinc)
+               cross_PYTHON_VERSION=$PYTHON_VERSION
+               python_path=
+               for i in $CPPFLAGS ; do
+                       p=`echo $i | sed "s,^-I,,"`
+                       if test -f "$p/python$cross_PYTHON_VERSION/Python.h"; then
+                               python_path="$p/python$cross_PYTHON_VERSION"
+                               break
+                       fi
+               done
+               AC_MSG_RESULT([$python_path])
+               if test -z "$python_path" ; then
+                                               AC_MSG_ERROR([cannot find Python include path])
+               fi
+               AC_SUBST([PYTHON_CPPFLAGS],[-I$python_path])
+
+               # Check for Python library path
+               AC_MSG_CHECKING([for Python library path])
+               python_path=
+               for i in $LDFLAGS; do
+                       l=`echo $i | sed "s,^-L,,"`
+                       python_path=`find $l -type f -name libpython$cross_PYTHON_VERSION.* -print | sed "1q"`
+                       if test -n "$python_path" ; then
+                               break
+                       fi
+               done
+               python_path=`echo $python_path | sed "s,/libpython.*$,,"`
+               AC_MSG_RESULT([$python_path])
+               if test -z "$python_path" ; then
+                                               AC_MSG_ERROR([cannot find Python library path])
+               fi
+               AC_SUBST([PYTHON_LDFLAGS],["-L$python_path -lpython$cross_PYTHON_VERSION"])
+               #
+               python_site=`echo $python_path | sed "s/config/site-packages/"`
+               AC_SUBST([PYTHON_SITE_PKG],[$python_site])
+       else
+               AC_REQUIRE([AM_PATH_PYTHON])
+
+               # Check for Python include path
+               AC_MSG_CHECKING([for Python include path])
+               python_path=`echo $PYTHON | sed "s,/bin.*$,,"`
+               for i in "$python_path/include/python$PYTHON_VERSION/" "$python_path/include/python/" "$python_path/" ; do
+                       python_path=`find $i -type f -name Python.h -print | sed "1q"`
+                       if test -n "$python_path" ; then
+                               break
+                       fi
+               done
+               python_path=`echo $python_path | sed "s,/Python.h$,,"`
+               AC_MSG_RESULT([$python_path])
+               if test -z "$python_path" ; then
+                       AC_MSG_ERROR([cannot find Python include path])
+               fi
+               AC_SUBST([PYTHON_CPPFLAGS],[-I$python_path])
+
+               # Check for Python library path
+               AC_MSG_CHECKING([for Python library path])
+               python_path=`echo $PYTHON | sed "s,/bin.*$,,"`
+               for i in "$python_path/lib/python$PYTHON_VERSION/config/" "$python_path/lib/python$PYTHON_VERSION/" "$python_path/lib/python/config/" "$python_path/lib/python/" "$python_path/" ; do
+                       python_path=`find $i -type f -name libpython$PYTHON_VERSION.* -print | sed "1q"`
+                       if test -n "$python_path" ; then
+                               break
+                       fi
+               done
+               python_path=`echo $python_path | sed "s,/libpython.*$,,"`
+               AC_MSG_RESULT([$python_path])
+               if test -z "$python_path" ; then
+                       AC_MSG_ERROR([cannot find Python library path])
+               fi
+               AC_SUBST([PYTHON_LDFLAGS],["-L$python_path -lpython$PYTHON_VERSION"])
+               #
+               python_site=`echo $python_path | sed "s/config/site-packages/"`
+               AC_SUBST([PYTHON_SITE_PKG],[$python_site])
+       fi
+])