1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/gmyth-upnp/INSTALL Fri Feb 01 22:17:33 2008 +0000
1.3 @@ -0,0 +1,236 @@
1.4 +Installation Instructions
1.5 +*************************
1.6 +
1.7 +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
1.8 +Software Foundation, Inc.
1.9 +
1.10 +This file is free documentation; the Free Software Foundation gives
1.11 +unlimited permission to copy, distribute and modify it.
1.12 +
1.13 +Basic Installation
1.14 +==================
1.15 +
1.16 +These are generic installation instructions.
1.17 +
1.18 + The `configure' shell script attempts to guess correct values for
1.19 +various system-dependent variables used during compilation. It uses
1.20 +those values to create a `Makefile' in each directory of the package.
1.21 +It may also create one or more `.h' files containing system-dependent
1.22 +definitions. Finally, it creates a shell script `config.status' that
1.23 +you can run in the future to recreate the current configuration, and a
1.24 +file `config.log' containing compiler output (useful mainly for
1.25 +debugging `configure').
1.26 +
1.27 + It can also use an optional file (typically called `config.cache'
1.28 +and enabled with `--cache-file=config.cache' or simply `-C') that saves
1.29 +the results of its tests to speed up reconfiguring. (Caching is
1.30 +disabled by default to prevent problems with accidental use of stale
1.31 +cache files.)
1.32 +
1.33 + If you need to do unusual things to compile the package, please try
1.34 +to figure out how `configure' could check whether to do them, and mail
1.35 +diffs or instructions to the address given in the `README' so they can
1.36 +be considered for the next release. If you are using the cache, and at
1.37 +some point `config.cache' contains results you don't want to keep, you
1.38 +may remove or edit it.
1.39 +
1.40 + The file `configure.ac' (or `configure.in') is used to create
1.41 +`configure' by a program called `autoconf'. You only need
1.42 +`configure.ac' if you want to change it or regenerate `configure' using
1.43 +a newer version of `autoconf'.
1.44 +
1.45 +The simplest way to compile this package is:
1.46 +
1.47 + 1. `cd' to the directory containing the package's source code and type
1.48 + `./configure' to configure the package for your system. If you're
1.49 + using `csh' on an old version of System V, you might need to type
1.50 + `sh ./configure' instead to prevent `csh' from trying to execute
1.51 + `configure' itself.
1.52 +
1.53 + Running `configure' takes awhile. While running, it prints some
1.54 + messages telling which features it is checking for.
1.55 +
1.56 + 2. Type `make' to compile the package.
1.57 +
1.58 + 3. Optionally, type `make check' to run any self-tests that come with
1.59 + the package.
1.60 +
1.61 + 4. Type `make install' to install the programs and any data files and
1.62 + documentation.
1.63 +
1.64 + 5. You can remove the program binaries and object files from the
1.65 + source code directory by typing `make clean'. To also remove the
1.66 + files that `configure' created (so you can compile the package for
1.67 + a different kind of computer), type `make distclean'. There is
1.68 + also a `make maintainer-clean' target, but that is intended mainly
1.69 + for the package's developers. If you use it, you may have to get
1.70 + all sorts of other programs in order to regenerate files that came
1.71 + with the distribution.
1.72 +
1.73 +Compilers and Options
1.74 +=====================
1.75 +
1.76 +Some systems require unusual options for compilation or linking that the
1.77 +`configure' script does not know about. Run `./configure --help' for
1.78 +details on some of the pertinent environment variables.
1.79 +
1.80 + You can give `configure' initial values for configuration parameters
1.81 +by setting variables in the command line or in the environment. Here
1.82 +is an example:
1.83 +
1.84 + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
1.85 +
1.86 + *Note Defining Variables::, for more details.
1.87 +
1.88 +Compiling For Multiple Architectures
1.89 +====================================
1.90 +
1.91 +You can compile the package for more than one kind of computer at the
1.92 +same time, by placing the object files for each architecture in their
1.93 +own directory. To do this, you must use a version of `make' that
1.94 +supports the `VPATH' variable, such as GNU `make'. `cd' to the
1.95 +directory where you want the object files and executables to go and run
1.96 +the `configure' script. `configure' automatically checks for the
1.97 +source code in the directory that `configure' is in and in `..'.
1.98 +
1.99 + If you have to use a `make' that does not support the `VPATH'
1.100 +variable, you have to compile the package for one architecture at a
1.101 +time in the source code directory. After you have installed the
1.102 +package for one architecture, use `make distclean' before reconfiguring
1.103 +for another architecture.
1.104 +
1.105 +Installation Names
1.106 +==================
1.107 +
1.108 +By default, `make install' installs the package's commands under
1.109 +`/usr/local/bin', include files under `/usr/local/include', etc. You
1.110 +can specify an installation prefix other than `/usr/local' by giving
1.111 +`configure' the option `--prefix=PREFIX'.
1.112 +
1.113 + You can specify separate installation prefixes for
1.114 +architecture-specific files and architecture-independent files. If you
1.115 +pass the option `--exec-prefix=PREFIX' to `configure', the package uses
1.116 +PREFIX as the prefix for installing programs and libraries.
1.117 +Documentation and other data files still use the regular prefix.
1.118 +
1.119 + In addition, if you use an unusual directory layout you can give
1.120 +options like `--bindir=DIR' to specify different values for particular
1.121 +kinds of files. Run `configure --help' for a list of the directories
1.122 +you can set and what kinds of files go in them.
1.123 +
1.124 + If the package supports it, you can cause programs to be installed
1.125 +with an extra prefix or suffix on their names by giving `configure' the
1.126 +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
1.127 +
1.128 +Optional Features
1.129 +=================
1.130 +
1.131 +Some packages pay attention to `--enable-FEATURE' options to
1.132 +`configure', where FEATURE indicates an optional part of the package.
1.133 +They may also pay attention to `--with-PACKAGE' options, where PACKAGE
1.134 +is something like `gnu-as' or `x' (for the X Window System). The
1.135 +`README' should mention any `--enable-' and `--with-' options that the
1.136 +package recognizes.
1.137 +
1.138 + For packages that use the X Window System, `configure' can usually
1.139 +find the X include and library files automatically, but if it doesn't,
1.140 +you can use the `configure' options `--x-includes=DIR' and
1.141 +`--x-libraries=DIR' to specify their locations.
1.142 +
1.143 +Specifying the System Type
1.144 +==========================
1.145 +
1.146 +There may be some features `configure' cannot figure out automatically,
1.147 +but needs to determine by the type of machine the package will run on.
1.148 +Usually, assuming the package is built to be run on the _same_
1.149 +architectures, `configure' can figure that out, but if it prints a
1.150 +message saying it cannot guess the machine type, give it the
1.151 +`--build=TYPE' option. TYPE can either be a short name for the system
1.152 +type, such as `sun4', or a canonical name which has the form:
1.153 +
1.154 + CPU-COMPANY-SYSTEM
1.155 +
1.156 +where SYSTEM can have one of these forms:
1.157 +
1.158 + OS KERNEL-OS
1.159 +
1.160 + See the file `config.sub' for the possible values of each field. If
1.161 +`config.sub' isn't included in this package, then this package doesn't
1.162 +need to know the machine type.
1.163 +
1.164 + If you are _building_ compiler tools for cross-compiling, you should
1.165 +use the option `--target=TYPE' to select the type of system they will
1.166 +produce code for.
1.167 +
1.168 + If you want to _use_ a cross compiler, that generates code for a
1.169 +platform different from the build platform, you should specify the
1.170 +"host" platform (i.e., that on which the generated programs will
1.171 +eventually be run) with `--host=TYPE'.
1.172 +
1.173 +Sharing Defaults
1.174 +================
1.175 +
1.176 +If you want to set default values for `configure' scripts to share, you
1.177 +can create a site shell script called `config.site' that gives default
1.178 +values for variables like `CC', `cache_file', and `prefix'.
1.179 +`configure' looks for `PREFIX/share/config.site' if it exists, then
1.180 +`PREFIX/etc/config.site' if it exists. Or, you can set the
1.181 +`CONFIG_SITE' environment variable to the location of the site script.
1.182 +A warning: not all `configure' scripts look for a site script.
1.183 +
1.184 +Defining Variables
1.185 +==================
1.186 +
1.187 +Variables not defined in a site shell script can be set in the
1.188 +environment passed to `configure'. However, some packages may run
1.189 +configure again during the build, and the customized values of these
1.190 +variables may be lost. In order to avoid this problem, you should set
1.191 +them in the `configure' command line, using `VAR=value'. For example:
1.192 +
1.193 + ./configure CC=/usr/local2/bin/gcc
1.194 +
1.195 +causes the specified `gcc' to be used as the C compiler (unless it is
1.196 +overridden in the site shell script). Here is a another example:
1.197 +
1.198 + /bin/bash ./configure CONFIG_SHELL=/bin/bash
1.199 +
1.200 +Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
1.201 +configuration-related scripts to be executed by `/bin/bash'.
1.202 +
1.203 +`configure' Invocation
1.204 +======================
1.205 +
1.206 +`configure' recognizes the following options to control how it operates.
1.207 +
1.208 +`--help'
1.209 +`-h'
1.210 + Print a summary of the options to `configure', and exit.
1.211 +
1.212 +`--version'
1.213 +`-V'
1.214 + Print the version of Autoconf used to generate the `configure'
1.215 + script, and exit.
1.216 +
1.217 +`--cache-file=FILE'
1.218 + Enable the cache: use and save the results of the tests in FILE,
1.219 + traditionally `config.cache'. FILE defaults to `/dev/null' to
1.220 + disable caching.
1.221 +
1.222 +`--config-cache'
1.223 +`-C'
1.224 + Alias for `--cache-file=config.cache'.
1.225 +
1.226 +`--quiet'
1.227 +`--silent'
1.228 +`-q'
1.229 + Do not print messages saying which checks are being made. To
1.230 + suppress all normal output, redirect it to `/dev/null' (any error
1.231 + messages will still be shown).
1.232 +
1.233 +`--srcdir=DIR'
1.234 + Look for the package's source code in directory DIR. Usually
1.235 + `configure' can determine that directory automatically.
1.236 +
1.237 +`configure' also accepts some other, not widely useful, options. Run
1.238 +`configure --help' for more details.
1.239 +
2.1 --- a/gmyth-upnp/Makefile.am Fri Feb 01 19:22:17 2008 +0000
2.2 +++ b/gmyth-upnp/Makefile.am Fri Feb 01 22:17:33 2008 +0000
2.3 @@ -1,4 +1,4 @@
2.4 -SUBDIRS= src
2.5 +SUBDIRS= src test
2.6
2.7 ### all of the standard pc files we need to generate
2.8 pcfiles = gmyth-upnp.pc
2.9 @@ -12,8 +12,6 @@
2.10 pkgconfigdir = $(libdir)/pkgconfig
2.11 pkgconfig_DATA = $(pcfiles)
2.12
2.13 -include aminclude.am
2.14 -
2.15 EXTRA_DIST = \
2.16 autogen.sh \
2.17 gmyth-upnp.pc.in \
3.1 --- a/gmyth-upnp/autogen.sh Fri Feb 01 19:22:17 2008 +0000
3.2 +++ b/gmyth-upnp/autogen.sh Fri Feb 01 22:17:33 2008 +0000
3.3 @@ -1,102 +1,21 @@
3.4 #!/bin/sh
3.5 # Run this to generate all the initial makefiles, etc.
3.6
3.7 -DIE=0
3.8 -package=gmyth-upnp
3.9 -srcfile=configure.ac
3.10 +srcdir=`dirname $0`
3.11 +test -z "$srcdir" && srcdir=.
3.12
3.13 -# a quick cvs co if necessary to alleviate the pain - may remove this
3.14 -# when developers get a clue ;)
3.15 -if test ! -d common;
3.16 -then
3.17 - echo "+ getting common/ from svn"
3.18 - svn co common
3.19 -fi
3.20 +PKG_NAME="mtv"
3.21
3.22 -# source helper functions
3.23 -if test ! -f common/autogen-helper.sh;
3.24 -then
3.25 - echo There is something wrong with your source tree.
3.26 - echo You are missing common/autogen-helper.sh
3.27 - exit 1
3.28 -fi
3.29 -. common/autogen-helper.sh
3.30 -
3.31 -CONFIGURE_DEF_OPT='--enable-maintainer-mode'
3.32 -# uncomment below to disable the UPnP features
3.33 -#CONFIGURE_DEF_OPT+=' --disable-upnp'
3.34 -CONFIGURE_EXT_OPT="$@"
3.35 -
3.36 -autogen_options
3.37 -
3.38 -echo -n "+ check for build tools"
3.39 -if test ! -z "$NOCHECK"; then echo " skipped"; else echo; fi
3.40 -version_check "autoconf" "$AUTOCONF autoconf autoconf-2.54 autoconf-2.53" \
3.41 - "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 53 || DIE=1
3.42 -version_check "automake" "$AUTOMAKE automake automake-1.9 automake-1.8 automake-1.7 automake-1.6" \
3.43 - "ftp://ftp.gnu.org/pub/gnu/automake/" 1 6 || DIE=1
3.44 -version_check "libtoolize" "$LIBTOOLIZE libtoolize" \
3.45 - "ftp://ftp.gnu.org/pub/gnu/libtool/" 1 5 0 || DIE=1
3.46 -version_check "pkg-config" "" \
3.47 - "http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1
3.48 -
3.49 -die_check $DIE
3.50 -
3.51 -aclocal_check || DIE=1
3.52 -autoheader_check || DIE=1
3.53 -
3.54 -die_check $DIE
3.55 -
3.56 -# if no arguments specified then this will be printed
3.57 -if test -z "$*"; then
3.58 - echo "+ checking for autogen.sh options"
3.59 - echo " This autogen script will automatically run ./configure as:"
3.60 - echo " ./configure $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT"
3.61 - echo " To pass any additional options, please specify them on the $0"
3.62 - echo " command line."
3.63 -fi
3.64 -
3.65 -toplevel_check $srcfile
3.66 -
3.67 -tool_run "$aclocal" "-I m4 $ACLOCAL_FLAGS"
3.68 -tool_run "$libtoolize" "--copy --force"
3.69 -tool_run "$autoheader"
3.70 -
3.71 -# touch the stamp-h.in build stamp so we don't re-run autoheader in maintainer mode -- wingo
3.72 -echo timestamp > stamp-h.in 2> /dev/null
3.73 -
3.74 -tool_run "$autoconf"
3.75 -tool_run "$automake" "-a -c"
3.76 -
3.77 -# if enable exists, add an -enable option for each of the lines in that file
3.78 -if test -f enable; then
3.79 - for a in `cat enable`; do
3.80 - CONFIGURE_FILE_OPT="--enable-$a"
3.81 - done
3.82 -fi
3.83 -
3.84 -# if disable exists, add an -disable option for each of the lines in that file
3.85 -if test -f disable; then
3.86 - for a in `cat disable`; do
3.87 - CONFIGURE_FILE_OPT="$CONFIGURE_FILE_OPT --disable-$a"
3.88 - done
3.89 -fi
3.90 -
3.91 -test -n "$NOCONFIGURE" && {
3.92 - echo "+ skipping configure stage for package $package, as requested."
3.93 - echo "+ autogen.sh done."
3.94 - exit 0
3.95 +(test -f $srcdir/configure.ac) || {
3.96 + echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
3.97 + echo " top-level $PKG_NAME directory"
3.98 + exit 1
3.99 }
3.100
3.101 -echo "+ running configure ... "
3.102 -test ! -z "$CONFIGURE_DEF_OPT" && echo " ./configure default flags: $CONFIGURE_DEF_OPT"
3.103 -test ! -z "$CONFIGURE_EXT_OPT" && echo " ./configure external flags: $CONFIGURE_EXT_OPT"
3.104 -test ! -z "$CONFIGURE_FILE_OPT" && echo " ./configure enable/disable flags: $CONFIGURE_FILE_OPT"
3.105 -echo
3.106 -
3.107 -./configure $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT $CONFIGURE_FILE_OPT || {
3.108 - echo " configure failed"
3.109 - exit 1
3.110 +which gnome-autogen.sh || {
3.111 + echo "You need to install gnome-common from the GNOME CVS"
3.112 + exit 1
3.113 }
3.114
3.115 -echo "Now type 'make' to compile $package."
3.116 +ACLOCAL_FLAGS="$ACLOCAL_FLAGS"
3.117 +REQUIRED_AUTOMAKE_VERSION=1.7 USE_GNOME2_MACROS=1 USE_COMMON_DOC_BUILD=yes . gnome-autogen.sh
4.1 --- a/gmyth-upnp/common/Makefile.am Fri Feb 01 19:22:17 2008 +0000
4.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
4.3 @@ -1,1 +0,0 @@
4.4 -EXTRA_DIST = autogen-helper.sh
5.1 --- a/gmyth-upnp/common/autogen-helper.sh Fri Feb 01 19:22:17 2008 +0000
5.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
5.3 @@ -1,302 +0,0 @@
5.4 -# a silly hack that generates autoregen.sh but it's handy
5.5 -echo "#!/bin/sh" > autoregen.sh
5.6 -echo "./autogen.sh $@ \$@" >> autoregen.sh
5.7 -chmod +x autoregen.sh
5.8 -
5.9 -# helper functions for autogen.sh
5.10 -
5.11 -debug ()
5.12 -# print out a debug message if DEBUG is a defined variable
5.13 -{
5.14 - if test ! -z "$DEBUG"
5.15 - then
5.16 - echo "DEBUG: $1"
5.17 - fi
5.18 -}
5.19 -
5.20 -version_check ()
5.21 -# check the version of a package
5.22 -# first argument : package name (executable)
5.23 -# second argument : optional path where to look for it instead
5.24 -# third argument : source download url
5.25 -# rest of arguments : major, minor, micro version
5.26 -# all consecutive ones : suggestions for binaries to use
5.27 -# (if not specified in second argument)
5.28 -{
5.29 - PACKAGE=$1
5.30 - PKG_PATH=$2
5.31 - URL=$3
5.32 - MAJOR=$4
5.33 - MINOR=$5
5.34 - MICRO=$6
5.35 -
5.36 - # for backwards compatibility, we let PKG_PATH=PACKAGE when PKG_PATH null
5.37 - if test -z "$PKG_PATH"; then PKG_PATH=$PACKAGE; fi
5.38 - debug "major $MAJOR minor $MINOR micro $MICRO"
5.39 - VERSION=$MAJOR
5.40 - if test ! -z "$MINOR"; then VERSION=$VERSION.$MINOR; else MINOR=0; fi
5.41 - if test ! -z "$MICRO"; then VERSION=$VERSION.$MICRO; else MICRO=0; fi
5.42 -
5.43 - debug "major $MAJOR minor $MINOR micro $MICRO"
5.44 -
5.45 - for SUGGESTION in $PKG_PATH; do
5.46 - COMMAND="$SUGGESTION"
5.47 -
5.48 - # don't check if asked not to
5.49 - test -z "$NOCHECK" && {
5.50 - echo -n " checking for $COMMAND >= $VERSION ... "
5.51 - } || {
5.52 - # we set a var with the same name as the package, but stripped of
5.53 - # unwanted chars
5.54 - VAR=`echo $PACKAGE | sed 's/-//g'`
5.55 - debug "setting $VAR"
5.56 - eval $VAR="$COMMAND"
5.57 - return 0
5.58 - }
5.59 -
5.60 - debug "checking version with $COMMAND"
5.61 - ($COMMAND --version) < /dev/null > /dev/null 2>&1 ||
5.62 - {
5.63 - echo "not found."
5.64 - continue
5.65 - }
5.66 - # strip everything that's not a digit, then use cut to get the first field
5.67 - pkg_version=`$COMMAND --version|head -n 1|sed 's/^[^0-9]*//'|cut -d' ' -f1`
5.68 - debug "pkg_version $pkg_version"
5.69 - # remove any non-digit characters from the version numbers to permit numeric
5.70 - # comparison
5.71 - pkg_major=`echo $pkg_version | cut -d. -f1 | sed s/[a-zA-Z\-].*//g`
5.72 - pkg_minor=`echo $pkg_version | cut -d. -f2 | sed s/[a-zA-Z\-].*//g`
5.73 - pkg_micro=`echo $pkg_version | cut -d. -f3 | sed s/[a-zA-Z\-].*//g`
5.74 - test -z "$pkg_major" && pkg_major=0
5.75 - test -z "$pkg_minor" && pkg_minor=0
5.76 - test -z "$pkg_micro" && pkg_micro=0
5.77 - debug "found major $pkg_major minor $pkg_minor micro $pkg_micro"
5.78 -
5.79 - #start checking the version
5.80 - debug "version check"
5.81 -
5.82 - # reset check
5.83 - WRONG=
5.84 -
5.85 - if [ ! "$pkg_major" -gt "$MAJOR" ]; then
5.86 - debug "major: $pkg_major <= $MAJOR"
5.87 - if [ "$pkg_major" -lt "$MAJOR" ]; then
5.88 - debug "major: $pkg_major < $MAJOR"
5.89 - WRONG=1
5.90 - elif [ ! "$pkg_minor" -gt "$MINOR" ]; then
5.91 - debug "minor: $pkg_minor <= $MINOR"
5.92 - if [ "$pkg_minor" -lt "$MINOR" ]; then
5.93 - debug "minor: $pkg_minor < $MINOR"
5.94 - WRONG=1
5.95 - elif [ "$pkg_micro" -lt "$MICRO" ]; then
5.96 - debug "micro: $pkg_micro < $MICRO"
5.97 - WRONG=1
5.98 - fi
5.99 - fi
5.100 - fi
5.101 -
5.102 - if test ! -z "$WRONG"; then
5.103 - echo "found $pkg_version, not ok !"
5.104 - continue
5.105 - else
5.106 - echo "found $pkg_version, ok."
5.107 - # we set a var with the same name as the package, but stripped of
5.108 - # unwanted chars
5.109 - VAR=`echo $PACKAGE | sed 's/-//g'`
5.110 - debug "setting $VAR"
5.111 - eval $VAR="$COMMAND"
5.112 - return 0
5.113 - fi
5.114 - done
5.115 -
5.116 - echo "not found !"
5.117 - echo "You must have $PACKAGE installed to compile $package."
5.118 - echo "Download the appropriate package for your distribution,"
5.119 - echo "or get the source tarball at $URL"
5.120 - return 1;
5.121 -}
5.122 -
5.123 -aclocal_check ()
5.124 -{
5.125 - # normally aclocal is part of automake
5.126 - # so we expect it to be in the same place as automake
5.127 - # so if a different automake is supplied, we need to adapt as well
5.128 - # so how's about replacing automake with aclocal in the set var,
5.129 - # and saving that in $aclocal ?
5.130 - # note, this will fail if the actual automake isn't called automake*
5.131 - # or if part of the path before it contains it
5.132 - if [ -z "$automake" ]; then
5.133 - echo "Error: no automake variable set !"
5.134 - return 1
5.135 - else
5.136 - aclocal=`echo $automake | sed s/automake/aclocal/`
5.137 - debug "aclocal: $aclocal"
5.138 - if [ "$aclocal" != "aclocal" ];
5.139 - then
5.140 - CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-aclocal=$aclocal"
5.141 - fi
5.142 - if [ ! -x `which $aclocal` ]; then
5.143 - echo "Error: cannot execute $aclocal !"
5.144 - return 1
5.145 - fi
5.146 - fi
5.147 -}
5.148 -
5.149 -autoheader_check ()
5.150 -{
5.151 - # same here - autoheader is part of autoconf
5.152 - # use the same voodoo
5.153 - if [ -z "$autoconf" ]; then
5.154 - echo "Error: no autoconf variable set !"
5.155 - return 1
5.156 - else
5.157 - autoheader=`echo $autoconf | sed s/autoconf/autoheader/`
5.158 - debug "autoheader: $autoheader"
5.159 - if [ "$autoheader" != "autoheader" ];
5.160 - then
5.161 - CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoheader=$autoheader"
5.162 - fi
5.163 - if [ ! -x `which $autoheader` ]; then
5.164 - echo "Error: cannot execute $autoheader !"
5.165 - return 1
5.166 - fi
5.167 - fi
5.168 -
5.169 -}
5.170 -
5.171 -autoconf_2_52d_check ()
5.172 -{
5.173 - # autoconf 2.52d has a weird issue involving a yes:no error
5.174 - # so don't allow it's use
5.175 - test -z "$NOCHECK" && {
5.176 - ac_version=`$autoconf --version|head -n 1|sed 's/^[a-zA-Z\.\ ()]*//;s/ .*$//'`
5.177 - if test "$ac_version" = "2.52d"; then
5.178 - echo "autoconf 2.52d has an issue with our current build."
5.179 - echo "We don't know who's to blame however. So until we do, get a"
5.180 - echo "regular version. RPM's of a working version are on the gstreamer site."
5.181 - exit 1
5.182 - fi
5.183 - }
5.184 - return 0
5.185 -}
5.186 -
5.187 -die_check ()
5.188 -{
5.189 - # call with $DIE
5.190 - # if set to 1, we need to print something helpful then die
5.191 - DIE=$1
5.192 - if test "x$DIE" = "x1";
5.193 - then
5.194 - echo
5.195 - echo "- Please get the right tools before proceeding."
5.196 - echo "- Alternatively, if you're sure we're wrong, run with --nocheck."
5.197 - exit 1
5.198 - fi
5.199 -}
5.200 -
5.201 -autogen_options ()
5.202 -{
5.203 - if test "x$1" = "x"; then
5.204 - return 0
5.205 - fi
5.206 -
5.207 - while test "x$1" != "x" ; do
5.208 - optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
5.209 - case "$1" in
5.210 - --noconfigure)
5.211 - NOCONFIGURE=defined
5.212 - AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure"
5.213 - echo "+ configure run disabled"
5.214 - shift
5.215 - ;;
5.216 - --nocheck)
5.217 - AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --nocheck"
5.218 - NOCHECK=defined
5.219 - echo "+ autotools version check disabled"
5.220 - shift
5.221 - ;;
5.222 - --debug)
5.223 - DEBUG=defined
5.224 - AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --debug"
5.225 - echo "+ debug output enabled"
5.226 - shift
5.227 - ;;
5.228 - --prefix=*)
5.229 - CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT --prefix=$optarg"
5.230 - echo "+ passing --prefix=$optarg to configure"
5.231 - shift
5.232 - ;;
5.233 - --prefix)
5.234 - shift
5.235 - echo "DEBUG: $1"
5.236 - CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT --prefix=$1"
5.237 - echo "+ passing --prefix=$1 to configure"
5.238 - shift
5.239 - ;;
5.240 - -h|--help)
5.241 - echo "autogen.sh (autogen options) -- (configure options)"
5.242 - echo "autogen.sh help options: "
5.243 - echo " --noconfigure don't run the configure script"
5.244 - echo " --nocheck don't do version checks"
5.245 - echo " --debug debug the autogen process"
5.246 - echo " --prefix will be passed on to configure"
5.247 - echo
5.248 - echo " --with-autoconf PATH use autoconf in PATH"
5.249 - echo " --with-automake PATH use automake in PATH"
5.250 - echo
5.251 - echo "to pass options to configure, put them as arguments after -- "
5.252 - exit 1
5.253 - ;;
5.254 - --with-automake=*)
5.255 - AUTOMAKE=$optarg
5.256 - echo "+ using alternate automake in $optarg"
5.257 - CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-automake=$AUTOMAKE"
5.258 - shift
5.259 - ;;
5.260 - --with-autoconf=*)
5.261 - AUTOCONF=$optarg
5.262 - echo "+ using alternate autoconf in $optarg"
5.263 - CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoconf=$AUTOCONF"
5.264 - shift
5.265 - ;;
5.266 - --disable*|--enable*|--with*)
5.267 - echo "+ passing option $1 to configure"
5.268 - CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $1"
5.269 - shift
5.270 - ;;
5.271 - --) shift ; break ;;
5.272 - *) echo "- ignoring unknown autogen.sh argument $1"; shift ;;
5.273 - esac
5.274 - done
5.275 -
5.276 - for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done
5.277 - if test ! -z "$CONFIGURE_EXT_OPT"
5.278 - then
5.279 - echo "+ options passed to configure: $CONFIGURE_EXT_OPT"
5.280 - fi
5.281 -}
5.282 -
5.283 -toplevel_check ()
5.284 -{
5.285 - srcfile=$1
5.286 - test -f $srcfile || {
5.287 - echo "You must run this script in the top-level $package directory"
5.288 - exit 1
5.289 - }
5.290 -}
5.291 -
5.292 -
5.293 -tool_run ()
5.294 -{
5.295 - tool=$1
5.296 - options=$2
5.297 - run_if_fail=$3
5.298 - echo "+ running $tool $options..."
5.299 - $tool $options || {
5.300 - echo
5.301 - echo $tool failed
5.302 - eval $run_if_fail
5.303 - exit 1
5.304 - }
5.305 -}
6.1 --- a/gmyth-upnp/configure.ac Fri Feb 01 19:22:17 2008 +0000
6.2 +++ b/gmyth-upnp/configure.ac Fri Feb 01 22:17:33 2008 +0000
6.3 @@ -3,17 +3,11 @@
6.4
6.5 AC_PREREQ(2.50)
6.6
6.7 -AC_INIT([gmyth-upnp],[0.1])
6.8 +AC_INIT([gmyth-upnp],[0.7])
6.9
6.10 AC_CONFIG_SRCDIR([src/gmyth_upnp.c])
6.11 AC_CONFIG_HEADER(config.h)
6.12
6.13 -dnl when going to/from release please set the nano (fourth number) right !
6.14 -dnl releases only do Wall, SVN and prerelease does Werror too
6.15 -AS_VERSION(gmyth-upnp, GMYTH_UPNP, 0, 1, 0, 3, GMYTH_UPNP_SVN="no", GMYTH_UPNP_SVN="yes")
6.16 -GMYTH_UPNP_MAJORMINOR=$GMYTH_UPNP_MAJOR_VERSION.$GMYTH_UPNP_MINOR_VERSION
6.17 -AC_SUBST(GMYTH_UPNP_MAJORMINOR)
6.18 -
6.19 dnl AM_MAINTAINER_MODE provides the option to enable maintainer mode
6.20 AM_MAINTAINER_MODE
6.21 dnl make aclocal work in maintainer mode
6.22 @@ -26,17 +20,6 @@
6.23 AC_PROG_CC
6.24 AC_PROG_LIBTOOL
6.25
6.26 -dnl Generate doxygen documentation
6.27 -DX_HTML_FEATURE(ON)
6.28 -DX_CHM_FEATURE(OFF)
6.29 -DX_CHI_FEATURE(OFF)
6.30 -DX_MAN_FEATURE(OFF)
6.31 -DX_RTF_FEATURE(OFF)
6.32 -DX_XML_FEATURE(OFF)
6.33 -DX_PDF_FEATURE(OFF)
6.34 -DX_PS_FEATURE(OFF)
6.35 -DX_INIT_DOXYGEN(gmyth-upnp, doxygen.cfg, docs)
6.36 -
6.37 # Checks for libraries.
6.38
6.39 # Check for pkgconfig
6.40 @@ -120,12 +103,12 @@
6.41 AC_SUBST(GOBJECT_CFLAGS)
6.42 AC_SUBST(GOBJECT_LIBS)
6.43
6.44 -## Check for gmyth-0.1
6.45 -PKG_CHECK_MODULES(LIBGMYTH, gmyth-0.1, HAVE_LIBGMYTH=yes,HAVE_LIBGMYTH=no)
6.46 +## Check for gmyth-0.7
6.47 +PKG_CHECK_MODULES(LIBGMYTH, gmyth >= 0.7, HAVE_LIBGMYTH=yes,HAVE_LIBGMYTH=no)
6.48
6.49 -# Give error and exit if we don't have gmyth-0.1
6.50 +# Give error and exit if we don't have gmyth-0.7
6.51 if test "x$HAVE_LIBGMYTH" = "xno"; then
6.52 - AC_MSG_ERROR([you need gmyth-0.1 installed])
6.53 + AC_MSG_ERROR([you need gmyth installed])
6.54 fi
6.55
6.56 # make LIBXML_CFLAGS and LIBXML_LIBS available
6.57 @@ -133,28 +116,24 @@
6.58 AC_SUBST(LIBGMYTH_LIBS)
6.59
6.60 dnl ========== Check for Cyberlink UPnP Libraries
6.61 -PKG_CHECK_MODULES(CYBERLINK, clinkc,
6.62 - HAVE_CYBERLINK=yes, HAVE_CYBERLINK=no)
6.63 +PKG_CHECK_MODULES(LIBUPNP, libupnp, HAVE_LIBUPNP=yes, HAVE_LIBUPNP=no)
6.64
6.65 -if test "x$HAVE_CYBERLINK" = "xno"; then
6.66 - AC_MSG_ERROR([you need clinkc installed])
6.67 +if test "x$HAVE_LIBUPNP" = "xno"; then
6.68 + AC_MSG_ERROR([you need libupnp installed])
6.69 fi
6.70
6.71 -dnl make CYBERLINK_CFLAGS and CYBERLINK_LIBS available
6.72 -AC_SUBST(CYBERLINK_CFLAGS)
6.73 -AC_SUBST(CYBERLINK_LIBS)
6.74 -
6.75 -#dnl Enable gtk-doc
6.76 -#GTK_DOC_CHECK(1.4)
6.77 +AC_SUBST(LIBUPNP_CFLAGS)
6.78 +AC_SUBST(LIBIPNP_LIBS)
6.79
6.80 AC_OUTPUT([
6.81 Makefile
6.82 src/Makefile
6.83 +test/Makefile
6.84 gmyth-upnp.pc])
6.85
6.86 if test "x$enable_debug" != "xno"; then
6.87 AC_MSG_NOTICE([Debug: Enabled])
6.88 else
6.89 AC_MSG_NOTICE([Debug: Disabled])
6.90 -fi
6.91 +fi
6.92
7.1 --- a/gmyth-upnp/m4/AUTHORS Fri Feb 01 19:22:17 2008 +0000
7.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
7.3 @@ -1,4 +0,0 @@
7.4 -Alexsandro Jose Virginio dos Santos <alexsandro.santos@indt.org.br>
7.5 -Hallyson Luiz de Morais Melo <hallyson.melo@indt.org.br>
7.6 -Leonardo Sobral Cunha <leonardo.cunha@indt.org.br>
7.7 -Rosfran Lins Borges <rosfran.borges@indt.org.br>
8.1 --- a/gmyth-upnp/m4/COPYING Fri Feb 01 19:22:17 2008 +0000
8.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
8.3 @@ -1,504 +0,0 @@
8.4 - GNU LESSER GENERAL PUBLIC LICENSE
8.5 - Version 2.1, February 1999
8.6 -
8.7 - Copyright (C) 1991, 1999 Free Software Foundation, Inc.
8.8 - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
8.9 - Everyone is permitted to copy and distribute verbatim copies
8.10 - of this license document, but changing it is not allowed.
8.11 -
8.12 -[This is the first released version of the Lesser GPL. It also counts
8.13 - as the successor of the GNU Library Public License, version 2, hence
8.14 - the version number 2.1.]
8.15 -
8.16 - Preamble
8.17 -
8.18 - The licenses for most software are designed to take away your
8.19 -freedom to share and change it. By contrast, the GNU General Public
8.20 -Licenses are intended to guarantee your freedom to share and change
8.21 -free software--to make sure the software is free for all its users.
8.22 -
8.23 - This license, the Lesser General Public License, applies to some
8.24 -specially designated software packages--typically libraries--of the
8.25 -Free Software Foundation and other authors who decide to use it. You
8.26 -can use it too, but we suggest you first think carefully about whether
8.27 -this license or the ordinary General Public License is the better
8.28 -strategy to use in any particular case, based on the explanations below.
8.29 -
8.30 - When we speak of free software, we are referring to freedom of use,
8.31 -not price. Our General Public Licenses are designed to make sure that
8.32 -you have the freedom to distribute copies of free software (and charge
8.33 -for this service if you wish); that you receive source code or can get
8.34 -it if you want it; that you can change the software and use pieces of
8.35 -it in new free programs; and that you are informed that you can do
8.36 -these things.
8.37 -
8.38 - To protect your rights, we need to make restrictions that forbid
8.39 -distributors to deny you these rights or to ask you to surrender these
8.40 -rights. These restrictions translate to certain responsibilities for
8.41 -you if you distribute copies of the library or if you modify it.
8.42 -
8.43 - For example, if you distribute copies of the library, whether gratis
8.44 -or for a fee, you must give the recipients all the rights that we gave
8.45 -you. You must make sure that they, too, receive or can get the source
8.46 -code. If you link other code with the library, you must provide
8.47 -complete object files to the recipients, so that they can relink them
8.48 -with the library after making changes to the library and recompiling
8.49 -it. And you must show them these terms so they know their rights.
8.50 -
8.51 - We protect your rights with a two-step method: (1) we copyright the
8.52 -library, and (2) we offer you this license, which gives you legal
8.53 -permission to copy, distribute and/or modify the library.
8.54 -
8.55 - To protect each distributor, we want to make it very clear that
8.56 -there is no warranty for the free library. Also, if the library is
8.57 -modified by someone else and passed on, the recipients should know
8.58 -that what they have is not the original version, so that the original
8.59 -author's reputation will not be affected by problems that might be
8.60 -introduced by others.
8.61 -
8.62 - Finally, software patents pose a constant threat to the existence of
8.63 -any free program. We wish to make sure that a company cannot
8.64 -effectively restrict the users of a free program by obtaining a
8.65 -restrictive license from a patent holder. Therefore, we insist that
8.66 -any patent license obtained for a version of the library must be
8.67 -consistent with the full freedom of use specified in this license.
8.68 -
8.69 - Most GNU software, including some libraries, is covered by the
8.70 -ordinary GNU General Public License. This license, the GNU Lesser
8.71 -General Public License, applies to certain designated libraries, and
8.72 -is quite different from the ordinary General Public License. We use
8.73 -this license for certain libraries in order to permit linking those
8.74 -libraries into non-free programs.
8.75 -
8.76 - When a program is linked with a library, whether statically or using
8.77 -a shared library, the combination of the two is legally speaking a
8.78 -combined work, a derivative of the original library. The ordinary
8.79 -General Public License therefore permits such linking only if the
8.80 -entire combination fits its criteria of freedom. The Lesser General
8.81 -Public License permits more lax criteria for linking other code with
8.82 -the library.
8.83 -
8.84 - We call this license the "Lesser" General Public License because it
8.85 -does Less to protect the user's freedom than the ordinary General
8.86 -Public License. It also provides other free software developers Less
8.87 -of an advantage over competing non-free programs. These disadvantages
8.88 -are the reason we use the ordinary General Public License for many
8.89 -libraries. However, the Lesser license provides advantages in certain
8.90 -special circumstances.
8.91 -
8.92 - For example, on rare occasions, there may be a special need to
8.93 -encourage the widest possible use of a certain library, so that it becomes
8.94 -a de-facto standard. To achieve this, non-free programs must be
8.95 -allowed to use the library. A more frequent case is that a free
8.96 -library does the same job as widely used non-free libraries. In this
8.97 -case, there is little to gain by limiting the free library to free
8.98 -software only, so we use the Lesser General Public License.
8.99 -
8.100 - In other cases, permission to use a particular library in non-free
8.101 -programs enables a greater number of people to use a large body of
8.102 -free software. For example, permission to use the GNU C Library in
8.103 -non-free programs enables many more people to use the whole GNU
8.104 -operating system, as well as its variant, the GNU/Linux operating
8.105 -system.
8.106 -
8.107 - Although the Lesser General Public License is Less protective of the
8.108 -users' freedom, it does ensure that the user of a program that is
8.109 -linked with the Library has the freedom and the wherewithal to run
8.110 -that program using a modified version of the Library.
8.111 -
8.112 - The precise terms and conditions for copying, distribution and
8.113 -modification follow. Pay close attention to the difference between a
8.114 -"work based on the library" and a "work that uses the library". The
8.115 -former contains code derived from the library, whereas the latter must
8.116 -be combined with the library in order to run.
8.117 -
8.118 - GNU LESSER GENERAL PUBLIC LICENSE
8.119 - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
8.120 -
8.121 - 0. This License Agreement applies to any software library or other
8.122 -program which contains a notice placed by the copyright holder or
8.123 -other authorized party saying it may be distributed under the terms of
8.124 -this Lesser General Public License (also called "this License").
8.125 -Each licensee is addressed as "you".
8.126 -
8.127 - A "library" means a collection of software functions and/or data
8.128 -prepared so as to be conveniently linked with application programs
8.129 -(which use some of those functions and data) to form executables.
8.130 -
8.131 - The "Library", below, refers to any such software library or work
8.132 -which has been distributed under these terms. A "work based on the
8.133 -Library" means either the Library or any derivative work under
8.134 -copyright law: that is to say, a work containing the Library or a
8.135 -portion of it, either verbatim or with modifications and/or translated
8.136 -straightforwardly into another language. (Hereinafter, translation is
8.137 -included without limitation in the term "modification".)
8.138 -
8.139 - "Source code" for a work means the preferred form of the work for
8.140 -making modifications to it. For a library, complete source code means
8.141 -all the source code for all modules it contains, plus any associated
8.142 -interface definition files, plus the scripts used to control compilation
8.143 -and installation of the library.
8.144 -
8.145 - Activities other than copying, distribution and modification are not
8.146 -covered by this License; they are outside its scope. The act of
8.147 -running a program using the Library is not restricted, and output from
8.148 -such a program is covered only if its contents constitute a work based
8.149 -on the Library (independent of the use of the Library in a tool for
8.150 -writing it). Whether that is true depends on what the Library does
8.151 -and what the program that uses the Library does.
8.152 -
8.153 - 1. You may copy and distribute verbatim copies of the Library's
8.154 -complete source code as you receive it, in any medium, provided that
8.155 -you conspicuously and appropriately publish on each copy an
8.156 -appropriate copyright notice and disclaimer of warranty; keep intact
8.157 -all the notices that refer to this License and to the absence of any
8.158 -warranty; and distribute a copy of this License along with the
8.159 -Library.
8.160 -
8.161 - You may charge a fee for the physical act of transferring a copy,
8.162 -and you may at your option offer warranty protection in exchange for a
8.163 -fee.
8.164 -
8.165 - 2. You may modify your copy or copies of the Library or any portion
8.166 -of it, thus forming a work based on the Library, and copy and
8.167 -distribute such modifications or work under the terms of Section 1
8.168 -above, provided that you also meet all of these conditions:
8.169 -
8.170 - a) The modified work must itself be a software library.
8.171 -
8.172 - b) You must cause the files modified to carry prominent notices
8.173 - stating that you changed the files and the date of any change.
8.174 -
8.175 - c) You must cause the whole of the work to be licensed at no
8.176 - charge to all third parties under the terms of this License.
8.177 -
8.178 - d) If a facility in the modified Library refers to a function or a
8.179 - table of data to be supplied by an application program that uses
8.180 - the facility, other than as an argument passed when the facility
8.181 - is invoked, then you must make a good faith effort to ensure that,
8.182 - in the event an application does not supply such function or
8.183 - table, the facility still operates, and performs whatever part of
8.184 - its purpose remains meaningful.
8.185 -
8.186 - (For example, a function in a library to compute square roots has
8.187 - a purpose that is entirely well-defined independent of the
8.188 - application. Therefore, Subsection 2d requires that any
8.189 - application-supplied function or table used by this function must
8.190 - be optional: if the application does not supply it, the square
8.191 - root function must still compute square roots.)
8.192 -
8.193 -These requirements apply to the modified work as a whole. If
8.194 -identifiable sections of that work are not derived from the Library,
8.195 -and can be reasonably considered independent and separate works in
8.196 -themselves, then this License, and its terms, do not apply to those
8.197 -sections when you distribute them as separate works. But when you
8.198 -distribute the same sections as part of a whole which is a work based
8.199 -on the Library, the distribution of the whole must be on the terms of
8.200 -this License, whose permissions for other licensees extend to the
8.201 -entire whole, and thus to each and every part regardless of who wrote
8.202 -it.
8.203 -
8.204 -Thus, it is not the intent of this section to claim rights or contest
8.205 -your rights to work written entirely by you; rather, the intent is to
8.206 -exercise the right to control the distribution of derivative or
8.207 -collective works based on the Library.
8.208 -
8.209 -In addition, mere aggregation of another work not based on the Library
8.210 -with the Library (or with a work based on the Library) on a volume of
8.211 -a storage or distribution medium does not bring the other work under
8.212 -the scope of this License.
8.213 -
8.214 - 3. You may opt to apply the terms of the ordinary GNU General Public
8.215 -License instead of this License to a given copy of the Library. To do
8.216 -this, you must alter all the notices that refer to this License, so
8.217 -that they refer to the ordinary GNU General Public License, version 2,
8.218 -instead of to this License. (If a newer version than version 2 of the
8.219 -ordinary GNU General Public License has appeared, then you can specify
8.220 -that version instead if you wish.) Do not make any other change in
8.221 -these notices.
8.222 -
8.223 - Once this change is made in a given copy, it is irreversible for
8.224 -that copy, so the ordinary GNU General Public License applies to all
8.225 -subsequent copies and derivative works made from that copy.
8.226 -
8.227 - This option is useful when you wish to copy part of the code of
8.228 -the Library into a program that is not a library.
8.229 -
8.230 - 4. You may copy and distribute the Library (or a portion or
8.231 -derivative of it, under Section 2) in object code or executable form
8.232 -under the terms of Sections 1 and 2 above provided that you accompany
8.233 -it with the complete corresponding machine-readable source code, which
8.234 -must be distributed under the terms of Sections 1 and 2 above on a
8.235 -medium customarily used for software interchange.
8.236 -
8.237 - If distribution of object code is made by offering access to copy
8.238 -from a designated place, then offering equivalent access to copy the
8.239 -source code from the same place satisfies the requirement to
8.240 -distribute the source code, even though third parties are not
8.241 -compelled to copy the source along with the object code.
8.242 -
8.243 - 5. A program that contains no derivative of any portion of the
8.244 -Library, but is designed to work with the Library by being compiled or
8.245 -linked with it, is called a "work that uses the Library". Such a
8.246 -work, in isolation, is not a derivative work of the Library, and
8.247 -therefore falls outside the scope of this License.
8.248 -
8.249 - However, linking a "work that uses the Library" with the Library
8.250 -creates an executable that is a derivative of the Library (because it
8.251 -contains portions of the Library), rather than a "work that uses the
8.252 -library". The executable is therefore covered by this License.
8.253 -Section 6 states terms for distribution of such executables.
8.254 -
8.255 - When a "work that uses the Library" uses material from a header file
8.256 -that is part of the Library, the object code for the work may be a
8.257 -derivative work of the Library even though the source code is not.
8.258 -Whether this is true is especially significant if the work can be
8.259 -linked without the Library, or if the work is itself a library. The
8.260 -threshold for this to be true is not precisely defined by law.
8.261 -
8.262 - If such an object file uses only numerical parameters, data
8.263 -structure layouts and accessors, and small macros and small inline
8.264 -functions (ten lines or less in length), then the use of the object
8.265 -file is unrestricted, regardless of whether it is legally a derivative
8.266 -work. (Executables containing this object code plus portions of the
8.267 -Library will still fall under Section 6.)
8.268 -
8.269 - Otherwise, if the work is a derivative of the Library, you may
8.270 -distribute the object code for the work under the terms of Section 6.
8.271 -Any executables containing that work also fall under Section 6,
8.272 -whether or not they are linked directly with the Library itself.
8.273 -
8.274 - 6. As an exception to the Sections above, you may also combine or
8.275 -link a "work that uses the Library" with the Library to produce a
8.276 -work containing portions of the Library, and distribute that work
8.277 -under terms of your choice, provided that the terms permit
8.278 -modification of the work for the customer's own use and reverse
8.279 -engineering for debugging such modifications.
8.280 -
8.281 - You must give prominent notice with each copy of the work that the
8.282 -Library is used in it and that the Library and its use are covered by
8.283 -this License. You must supply a copy of this License. If the work
8.284 -during execution displays copyright notices, you must include the
8.285 -copyright notice for the Library among them, as well as a reference
8.286 -directing the user to the copy of this License. Also, you must do one
8.287 -of these things:
8.288 -
8.289 - a) Accompany the work with the complete corresponding
8.290 - machine-readable source code for the Library including whatever
8.291 - changes were used in the work (which must be distributed under
8.292 - Sections 1 and 2 above); and, if the work is an executable linked
8.293 - with the Library, with the complete machine-readable "work that
8.294 - uses the Library", as object code and/or source code, so that the
8.295 - user can modify the Library and then relink to produce a modified
8.296 - executable containing the modified Library. (It is understood
8.297 - that the user who changes the contents of definitions files in the
8.298 - Library will not necessarily be able to recompile the application
8.299 - to use the modified definitions.)
8.300 -
8.301 - b) Use a suitable shared library mechanism for linking with the
8.302 - Library. A suitable mechanism is one that (1) uses at run time a
8.303 - copy of the library already present on the user's computer system,
8.304 - rather than copying library functions into the executable, and (2)
8.305 - will operate properly with a modified version of the library, if
8.306 - the user installs one, as long as the modified version is
8.307 - interface-compatible with the version that the work was made with.
8.308 -
8.309 - c) Accompany the work with a written offer, valid for at
8.310 - least three years, to give the same user the materials
8.311 - specified in Subsection 6a, above, for a charge no more
8.312 - than the cost of performing this distribution.
8.313 -
8.314 - d) If distribution of the work is made by offering access to copy
8.315 - from a designated place, offer equivalent access to copy the above
8.316 - specified materials from the same place.
8.317 -
8.318 - e) Verify that the user has already received a copy of these
8.319 - materials or that you have already sent this user a copy.
8.320 -
8.321 - For an executable, the required form of the "work that uses the
8.322 -Library" must include any data and utility programs needed for
8.323 -reproducing the executable from it. However, as a special exception,
8.324 -the materials to be distributed need not include anything that is
8.325 -normally distributed (in either source or binary form) with the major
8.326 -components (compiler, kernel, and so on) of the operating system on
8.327 -which the executable runs, unless that component itself accompanies
8.328 -the executable.
8.329 -
8.330 - It may happen that this requirement contradicts the license
8.331 -restrictions of other proprietary libraries that do not normally
8.332 -accompany the operating system. Such a contradiction means you cannot
8.333 -use both them and the Library together in an executable that you
8.334 -distribute.
8.335 -
8.336 - 7. You may place library facilities that are a work based on the
8.337 -Library side-by-side in a single library together with other library
8.338 -facilities not covered by this License, and distribute such a combined
8.339 -library, provided that the separate distribution of the work based on
8.340 -the Library and of the other library facilities is otherwise
8.341 -permitted, and provided that you do these two things:
8.342 -
8.343 - a) Accompany the combined library with a copy of the same work
8.344 - based on the Library, uncombined with any other library
8.345 - facilities. This must be distributed under the terms of the
8.346 - Sections above.
8.347 -
8.348 - b) Give prominent notice with the combined library of the fact
8.349 - that part of it is a work based on the Library, and explaining
8.350 - where to find the accompanying uncombined form of the same work.
8.351 -
8.352 - 8. You may not copy, modify, sublicense, link with, or distribute
8.353 -the Library except as expressly provided under this License. Any
8.354 -attempt otherwise to copy, modify, sublicense, link with, or
8.355 -distribute the Library is void, and will automatically terminate your
8.356 -rights under this License. However, parties who have received copies,
8.357 -or rights, from you under this License will not have their licenses
8.358 -terminated so long as such parties remain in full compliance.
8.359 -
8.360 - 9. You are not required to accept this License, since you have not
8.361 -signed it. However, nothing else grants you permission to modify or
8.362 -distribute the Library or its derivative works. These actions are
8.363 -prohibited by law if you do not accept this License. Therefore, by
8.364 -modifying or distributing the Library (or any work based on the
8.365 -Library), you indicate your acceptance of this License to do so, and
8.366 -all its terms and conditions for copying, distributing or modifying
8.367 -the Library or works based on it.
8.368 -
8.369 - 10. Each time you redistribute the Library (or any work based on the
8.370 -Library), the recipient automatically receives a license from the
8.371 -original licensor to copy, distribute, link with or modify the Library
8.372 -subject to these terms and conditions. You may not impose any further
8.373 -restrictions on the recipients' exercise of the rights granted herein.
8.374 -You are not responsible for enforcing compliance by third parties with
8.375 -this License.
8.376 -
8.377 - 11. If, as a consequence of a court judgment or allegation of patent
8.378 -infringement or for any other reason (not limited to patent issues),
8.379 -conditions are imposed on you (whether by court order, agreement or
8.380 -otherwise) that contradict the conditions of this License, they do not
8.381 -excuse you from the conditions of this License. If you cannot
8.382 -distribute so as to satisfy simultaneously your obligations under this
8.383 -License and any other pertinent obligations, then as a consequence you
8.384 -may not distribute the Library at all. For example, if a patent
8.385 -license would not permit royalty-free redistribution of the Library by
8.386 -all those who receive copies directly or indirectly through you, then
8.387 -the only way you could satisfy both it and this License would be to
8.388 -refrain entirely from distribution of the Library.
8.389 -
8.390 -If any portion of this section is held invalid or unenforceable under any
8.391 -particular circumstance, the balance of the section is intended to apply,
8.392 -and the section as a whole is intended to apply in other circumstances.
8.393 -
8.394 -It is not the purpose of this section to induce you to infringe any
8.395 -patents or other property right claims or to contest validity of any
8.396 -such claims; this section has the sole purpose of protecting the
8.397 -integrity of the free software distribution system which is
8.398 -implemented by public license practices. Many people have made
8.399 -generous contributions to the wide range of software distributed
8.400 -through that system in reliance on consistent application of that
8.401 -system; it is up to the author/donor to decide if he or she is willing
8.402 -to distribute software through any other system and a licensee cannot
8.403 -impose that choice.
8.404 -
8.405 -This section is intended to make thoroughly clear what is believed to
8.406 -be a consequence of the rest of this License.
8.407 -
8.408 - 12. If the distribution and/or use of the Library is restricted in
8.409 -certain countries either by patents or by copyrighted interfaces, the
8.410 -original copyright holder who places the Library under this License may add
8.411 -an explicit geographical distribution limitation excluding those countries,
8.412 -so that distribution is permitted only in or among countries not thus
8.413 -excluded. In such case, this License incorporates the limitation as if
8.414 -written in the body of this License.
8.415 -
8.416 - 13. The Free Software Foundation may publish revised and/or new
8.417 -versions of the Lesser General Public License from time to time.
8.418 -Such new versions will be similar in spirit to the present version,
8.419 -but may differ in detail to address new problems or concerns.
8.420 -
8.421 -Each version is given a distinguishing version number. If the Library
8.422 -specifies a version number of this License which applies to it and
8.423 -"any later version", you have the option of following the terms and
8.424 -conditions either of that version or of any later version published by
8.425 -the Free Software Foundation. If the Library does not specify a
8.426 -license version number, you may choose any version ever published by
8.427 -the Free Software Foundation.
8.428 -
8.429 - 14. If you wish to incorporate parts of the Library into other free
8.430 -programs whose distribution conditions are incompatible with these,
8.431 -write to the author to ask for permission. For software which is
8.432 -copyrighted by the Free Software Foundation, write to the Free
8.433 -Software Foundation; we sometimes make exceptions for this. Our
8.434 -decision will be guided by the two goals of preserving the free status
8.435 -of all derivatives of our free software and of promoting the sharing
8.436 -and reuse of software generally.
8.437 -
8.438 - NO WARRANTY
8.439 -
8.440 - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
8.441 -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
8.442 -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
8.443 -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
8.444 -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
8.445 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
8.446 -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
8.447 -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
8.448 -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
8.449 -
8.450 - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
8.451 -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
8.452 -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
8.453 -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
8.454 -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
8.455 -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
8.456 -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
8.457 -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
8.458 -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
8.459 -DAMAGES.
8.460 -
8.461 - END OF TERMS AND CONDITIONS
8.462 -
8.463 - How to Apply These Terms to Your New Libraries
8.464 -
8.465 - If you develop a new library, and you want it to be of the greatest
8.466 -possible use to the public, we recommend making it free software that
8.467 -everyone can redistribute and change. You can do so by permitting
8.468 -redistribution under these terms (or, alternatively, under the terms of the
8.469 -ordinary General Public License).
8.470 -
8.471 - To apply these terms, attach the following notices to the library. It is
8.472 -safest to attach them to the start of each source file to most effectively
8.473 -convey the exclusion of warranty; and each file should have at least the
8.474 -"copyright" line and a pointer to where the full notice is found.
8.475 -
8.476 - <one line to give the library's name and a brief idea of what it does.>
8.477 - Copyright (C) <year> <name of author>
8.478 -
8.479 - This library is free software; you can redistribute it and/or
8.480 - modify it under the terms of the GNU Lesser General Public
8.481 - License as published by the Free Software Foundation; either
8.482 - version 2.1 of the License, or (at your option) any later version.
8.483 -
8.484 - This library is distributed in the hope that it will be useful,
8.485 - but WITHOUT ANY WARRANTY; without even the implied warranty of
8.486 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
8.487 - Lesser General Public License for more details.
8.488 -
8.489 - You should have received a copy of the GNU Lesser General Public
8.490 - License along with this library; if not, write to the Free Software
8.491 - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
8.492 -
8.493 -Also add information on how to contact you by electronic and paper mail.
8.494 -
8.495 -You should also get your employer (if you work as a programmer) or your
8.496 -school, if any, to sign a "copyright disclaimer" for the library, if
8.497 -necessary. Here is a sample; alter the names:
8.498 -
8.499 - Yoyodyne, Inc., hereby disclaims all copyright interest in the
8.500 - library `Frob' (a library for tweaking knobs) written by James Random Hacker.
8.501 -
8.502 - <signature of Ty Coon>, 1 April 1990
8.503 - Ty Coon, President of Vice
8.504 -
8.505 -That's all there is to it!
8.506 -
8.507 -
9.1 --- a/gmyth-upnp/m4/ChangeLog Fri Feb 01 19:22:17 2008 +0000
9.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
9.3 @@ -1,24 +0,0 @@
9.4 -2006-08-17 Rosfran Borges <rosfran.borges@indt.org.br>
9.5 - * Added the correct gstreamer-base package (GSTBASE) at the configure.ac;
9.6 - GSTBASE_CFLAGS and GSTBASE_LIBS variables had the same values from
9.7 - the GST_CFLAGS/GST_LIBS.
9.8 -
9.9 -2006-08-16 Rosfran Borges <rosfran.borges@indt.org.br>
9.10 - * Fixed some installation issues, regarding lib-installing to the
9.11 - correct directory, and copying the header files to the destination
9.12 - dir (make install).
9.13 - * Put 'pkg-config' resource to the Maemo Myth library. The name of the
9.14 - PKG-CONFIG resource is 'maemo-myth', plus the minor and major version.
9.15 - Actually, the version is '0.1', so the library config file is:
9.16 - 'maemo-myth-0.1.pc'. You can type: 'pkg-config --cflags --libs
9.17 - maemo-myth-0.1'.
9.18 - * Many adjustments in the automake/autoconf configuration files
9.19 - (configure.ac, Makefile.am) - some autotools misusage fixed.
9.20 - * Added the MythURI structure, and the URI parsing utility functions
9.21 - (missing in the GLib).
9.22 - * Some functions were exported (myth_socket, mmyth_context), that's
9.23 - why many ther modules need to use them.
9.24 - * Fixed some library dependencies.
9.25 - * Prepared to be used inside the GStreamer (linking with the MythTV
9.26 - plug-in).
9.27 -
10.1 --- a/gmyth-upnp/m4/INSTALL Fri Feb 01 19:22:17 2008 +0000
10.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
10.3 @@ -1,236 +0,0 @@
10.4 -Installation Instructions
10.5 -*************************
10.6 -
10.7 -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
10.8 -Software Foundation, Inc.
10.9 -
10.10 -This file is free documentation; the Free Software Foundation gives
10.11 -unlimited permission to copy, distribute and modify it.
10.12 -
10.13 -Basic Installation
10.14 -==================
10.15 -
10.16 -These are generic installation instructions.
10.17 -
10.18 - The `configure' shell script attempts to guess correct values for
10.19 -various system-dependent variables used during compilation. It uses
10.20 -those values to create a `Makefile' in each directory of the package.
10.21 -It may also create one or more `.h' files containing system-dependent
10.22 -definitions. Finally, it creates a shell script `config.status' that
10.23 -you can run in the future to recreate the current configuration, and a
10.24 -file `config.log' containing compiler output (useful mainly for
10.25 -debugging `configure').
10.26 -
10.27 - It can also use an optional file (typically called `config.cache'
10.28 -and enabled with `--cache-file=config.cache' or simply `-C') that saves
10.29 -the results of its tests to speed up reconfiguring. (Caching is
10.30 -disabled by default to prevent problems with accidental use of stale
10.31 -cache files.)
10.32 -
10.33 - If you need to do unusual things to compile the package, please try
10.34 -to figure out how `configure' could check whether to do them, and mail
10.35 -diffs or instructions to the address given in the `README' so they can
10.36 -be considered for the next release. If you are using the cache, and at
10.37 -some point `config.cache' contains results you don't want to keep, you
10.38 -may remove or edit it.
10.39 -
10.40 - The file `configure.ac' (or `configure.in') is used to create
10.41 -`configure' by a program called `autoconf'. You only need
10.42 -`configure.ac' if you want to change it or regenerate `configure' using
10.43 -a newer version of `autoconf'.
10.44 -
10.45 -The simplest way to compile this package is:
10.46 -
10.47 - 1. `cd' to the directory containing the package's source code and type
10.48 - `./configure' to configure the package for your system. If you're
10.49 - using `csh' on an old version of System V, you might need to type
10.50 - `sh ./configure' instead to prevent `csh' from trying to execute
10.51 - `configure' itself.
10.52 -
10.53 - Running `configure' takes awhile. While running, it prints some
10.54 - messages telling which features it is checking for.
10.55 -
10.56 - 2. Type `make' to compile the package.
10.57 -
10.58 - 3. Optionally, type `make check' to run any self-tests that come with
10.59 - the package.
10.60 -
10.61 - 4. Type `make install' to install the programs and any data files and
10.62 - documentation.
10.63 -
10.64 - 5. You can remove the program binaries and object files from the
10.65 - source code directory by typing `make clean'. To also remove the
10.66 - files that `configure' created (so you can compile the package for
10.67 - a different kind of computer), type `make distclean'. There is
10.68 - also a `make maintainer-clean' target, but that is intended mainly
10.69 - for the package's developers. If you use it, you may have to get
10.70 - all sorts of other programs in order to regenerate files that came
10.71 - with the distribution.
10.72 -
10.73 -Compilers and Options
10.74 -=====================
10.75 -
10.76 -Some systems require unusual options for compilation or linking that the
10.77 -`configure' script does not know about. Run `./configure --help' for
10.78 -details on some of the pertinent environment variables.
10.79 -
10.80 - You can give `configure' initial values for configuration parameters
10.81 -by setting variables in the command line or in the environment. Here
10.82 -is an example:
10.83 -
10.84 - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
10.85 -
10.86 - *Note Defining Variables::, for more details.
10.87 -
10.88 -Compiling For Multiple Architectures
10.89 -====================================
10.90 -
10.91 -You can compile the package for more than one kind of computer at the
10.92 -same time, by placing the object files for each architecture in their
10.93 -own directory. To do this, you must use a version of `make' that
10.94 -supports the `VPATH' variable, such as GNU `make'. `cd' to the
10.95 -directory where you want the object files and executables to go and run
10.96 -the `configure' script. `configure' automatically checks for the
10.97 -source code in the directory that `configure' is in and in `..'.
10.98 -
10.99 - If you have to use a `make' that does not support the `VPATH'
10.100 -variable, you have to compile the package for one architecture at a
10.101 -time in the source code directory. After you have installed the
10.102 -package for one architecture, use `make distclean' before reconfiguring
10.103 -for another architecture.
10.104 -
10.105 -Installation Names
10.106 -==================
10.107 -
10.108 -By default, `make install' installs the package's commands under
10.109 -`/usr/local/bin', include files under `/usr/local/include', etc. You
10.110 -can specify an installation prefix other than `/usr/local' by giving
10.111 -`configure' the option `--prefix=PREFIX'.
10.112 -
10.113 - You can specify separate installation prefixes for
10.114 -architecture-specific files and architecture-independent files. If you
10.115 -pass the option `--exec-prefix=PREFIX' to `configure', the package uses
10.116 -PREFIX as the prefix for installing programs and libraries.
10.117 -Documentation and other data files still use the regular prefix.
10.118 -
10.119 - In addition, if you use an unusual directory layout you can give
10.120 -options like `--bindir=DIR' to specify different values for particular
10.121 -kinds of files. Run `configure --help' for a list of the directories
10.122 -you can set and what kinds of files go in them.
10.123 -
10.124 - If the package supports it, you can cause programs to be installed
10.125 -with an extra prefix or suffix on their names by giving `configure' the
10.126 -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
10.127 -
10.128 -Optional Features
10.129 -=================
10.130 -
10.131 -Some packages pay attention to `--enable-FEATURE' options to
10.132 -`configure', where FEATURE indicates an optional part of the package.
10.133 -They may also pay attention to `--with-PACKAGE' options, where PACKAGE
10.134 -is something like `gnu-as' or `x' (for the X Window System). The
10.135 -`README' should mention any `--enable-' and `--with-' options that the
10.136 -package recognizes.
10.137 -
10.138 - For packages that use the X Window System, `configure' can usually
10.139 -find the X include and library files automatically, but if it doesn't,
10.140 -you can use the `configure' options `--x-includes=DIR' and
10.141 -`--x-libraries=DIR' to specify their locations.
10.142 -
10.143 -Specifying the System Type
10.144 -==========================
10.145 -
10.146 -There may be some features `configure' cannot figure out automatically,
10.147 -but needs to determine by the type of machine the package will run on.
10.148 -Usually, assuming the package is built to be run on the _same_
10.149 -architectures, `configure' can figure that out, but if it prints a
10.150 -message saying it cannot guess the machine type, give it the
10.151 -`--build=TYPE' option. TYPE can either be a short name for the system
10.152 -type, such as `sun4', or a canonical name which has the form:
10.153 -
10.154 - CPU-COMPANY-SYSTEM
10.155 -
10.156 -where SYSTEM can have one of these forms:
10.157 -
10.158 - OS KERNEL-OS
10.159 -
10.160 - See the file `config.sub' for the possible values of each field. If
10.161 -`config.sub' isn't included in this package, then this package doesn't
10.162 -need to know the machine type.
10.163 -
10.164 - If you are _building_ compiler tools for cross-compiling, you should
10.165 -use the option `--target=TYPE' to select the type of system they will
10.166 -produce code for.
10.167 -
10.168 - If you want to _use_ a cross compiler, that generates code for a
10.169 -platform different from the build platform, you should specify the
10.170 -"host" platform (i.e., that on which the generated programs will
10.171 -eventually be run) with `--host=TYPE'.
10.172 -
10.173 -Sharing Defaults
10.174 -================
10.175 -
10.176 -If you want to set default values for `configure' scripts to share, you
10.177 -can create a site shell script called `config.site' that gives default
10.178 -values for variables like `CC', `cache_file', and `prefix'.
10.179 -`configure' looks for `PREFIX/share/config.site' if it exists, then
10.180 -`PREFIX/etc/config.site' if it exists. Or, you can set the
10.181 -`CONFIG_SITE' environment variable to the location of the site script.
10.182 -A warning: not all `configure' scripts look for a site script.
10.183 -
10.184 -Defining Variables
10.185 -==================
10.186 -
10.187 -Variables not defined in a site shell script can be set in the
10.188 -environment passed to `configure'. However, some packages may run
10.189 -configure again during the build, and the customized values of these
10.190 -variables may be lost. In order to avoid this problem, you should set
10.191 -them in the `configure' command line, using `VAR=value'. For example:
10.192 -
10.193 - ./configure CC=/usr/local2/bin/gcc
10.194 -
10.195 -causes the specified `gcc' to be used as the C compiler (unless it is
10.196 -overridden in the site shell script). Here is a another example:
10.197 -
10.198 - /bin/bash ./configure CONFIG_SHELL=/bin/bash
10.199 -
10.200 -Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
10.201 -configuration-related scripts to be executed by `/bin/bash'.
10.202 -
10.203 -`configure' Invocation
10.204 -======================
10.205 -
10.206 -`configure' recognizes the following options to control how it operates.
10.207 -
10.208 -`--help'
10.209 -`-h'
10.210 - Print a summary of the options to `configure', and exit.
10.211 -
10.212 -`--version'
10.213 -`-V'
10.214 - Print the version of Autoconf used to generate the `configure'
10.215 - script, and exit.
10.216 -
10.217 -`--cache-file=FILE'
10.218 - Enable the cache: use and save the results of the tests in FILE,
10.219 - traditionally `config.cache'. FILE defaults to `/dev/null' to
10.220 - disable caching.
10.221 -
10.222 -`--config-cache'
10.223 -`-C'
10.224 - Alias for `--cache-file=config.cache'.
10.225 -
10.226 -`--quiet'
10.227 -`--silent'
10.228 -`-q'
10.229 - Do not print messages saying which checks are being made. To
10.230 - suppress all normal output, redirect it to `/dev/null' (any error
10.231 - messages will still be shown).
10.232 -
10.233 -`--srcdir=DIR'
10.234 - Look for the package's source code in directory DIR. Usually
10.235 - `configure' can determine that directory automatically.
10.236 -
10.237 -`configure' also accepts some other, not widely useful, options. Run
10.238 -`configure --help' for more details.
10.239 -
11.1 --- a/gmyth-upnp/m4/Makefile.am Fri Feb 01 19:22:17 2008 +0000
11.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
11.3 @@ -1,10 +0,0 @@
11.4 -SUBDIRS= src pixmaps
11.5 -
11.6 -include aminclude.am
11.7 -
11.8 -EXTRA_DIST = \
11.9 - autogen.sh \
11.10 - AUTHORS \
11.11 - COPYING \
11.12 - README
11.13 -
12.1 --- a/gmyth-upnp/m4/ac_doxygen.m4 Fri Feb 01 19:22:17 2008 +0000
12.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
12.3 @@ -1,312 +0,0 @@
12.4 -# This file is part of Autoconf. -*- Autoconf -*-
12.5 -
12.6 -# Copyright (C) 2004 Oren Ben-Kiki
12.7 -# This file is distributed under the same terms as the Autoconf macro files.
12.8 -
12.9 -# Generate automatic documentation using Doxygen. Works in concert with the
12.10 -# aminclude.m4 file and a compatible doxygen configuration file. Defines the
12.11 -# following public macros:
12.12 -#
12.13 -# DX_???_FEATURE(ON|OFF) - control the default setting fo a Doxygen feature.
12.14 -# Supported features are 'DOXYGEN' itself, 'DOT' for generating graphics,
12.15 -# 'HTML' for plain HTML, 'CHM' for compressed HTML help (for MS users), 'CHI'
12.16 -# for generating a seperate .chi file by the .chm file, and 'MAN', 'RTF',
12.17 -# 'XML', 'PDF' and 'PS' for the appropriate output formats. The environment
12.18 -# variable DOXYGEN_PAPER_SIZE may be specified to override the default 'a4wide'
12.19 -# paper size.
12.20 -#
12.21 -# By default, HTML, PDF and PS documentation is generated as this seems to be
12.22 -# the most popular and portable combination. MAN pages created by Doxygen are
12.23 -# usually problematic, though by picking an appropriate subset and doing some
12.24 -# massaging they might be better than nothing. CHM and RTF are specific for MS
12.25 -# (note that you can't generate both HTML and CHM at the same time). The XML is
12.26 -# rather useless unless you apply specialized post-processing to it.
12.27 -#
12.28 -# The macro mainly controls the default state of the feature. The use can
12.29 -# override the default by specifying --enable or --disable. The macros ensure
12.30 -# that contradictory flags are not given (e.g., --enable-doxygen-html and
12.31 -# --enable-doxygen-chm, --enable-doxygen-anything with --disable-doxygen, etc.)
12.32 -# Finally, each feature will be automatically disabled (with a warning) if the
12.33 -# required programs are missing.
12.34 -#
12.35 -# Once all the feature defaults have been specified, call DX_INIT_DOXYGEN with
12.36 -# the following parameters: a one-word name for the project for use as a
12.37 -# filename base etc., an optional configuration file name (the default is
12.38 -# 'Doxyfile', the same as Doxygen's default), and an optional output directory
12.39 -# name (the default is 'doxygen-doc').
12.40 -
12.41 -## ----------##
12.42 -## Defaults. ##
12.43 -## ----------##
12.44 -
12.45 -DX_ENV=""
12.46 -AC_DEFUN([DX_FEATURE_doc], ON)
12.47 -AC_DEFUN([DX_FEATURE_dot], ON)
12.48 -AC_DEFUN([DX_FEATURE_man], OFF)
12.49 -AC_DEFUN([DX_FEATURE_html], ON)
12.50 -AC_DEFUN([DX_FEATURE_chm], OFF)
12.51 -AC_DEFUN([DX_FEATURE_chi], OFF)
12.52 -AC_DEFUN([DX_FEATURE_rtf], OFF)
12.53 -AC_DEFUN([DX_FEATURE_xml], OFF)
12.54 -AC_DEFUN([DX_FEATURE_pdf], ON)
12.55 -AC_DEFUN([DX_FEATURE_ps], ON)
12.56 -
12.57 -## --------------- ##
12.58 -## Private macros. ##
12.59 -## --------------- ##
12.60 -
12.61 -# DX_ENV_APPEND(VARIABLE, VALUE)
12.62 -# ------------------------------
12.63 -# Append VARIABLE="VALUE" to DX_ENV for invoking doxygen.
12.64 -AC_DEFUN([DX_ENV_APPEND], [AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])])
12.65 -
12.66 -# DX_DIRNAME_EXPR
12.67 -# ---------------
12.68 -# Expand into a shell expression prints the directory part of a path.
12.69 -AC_DEFUN([DX_DIRNAME_EXPR],
12.70 - [[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']])
12.71 -
12.72 -# DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF)
12.73 -# -------------------------------------
12.74 -# Expands according to the M4 (static) status of the feature.
12.75 -AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])])
12.76 -
12.77 -# DX_REQUIRE_PROG(VARIABLE, PROGRAM)
12.78 -# ----------------------------------
12.79 -# Require the specified program to be found for the DX_CURRENT_FEATURE to work.
12.80 -AC_DEFUN([DX_REQUIRE_PROG], [
12.81 -AC_PATH_TOOL([$1], [$2])
12.82 -if test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then
12.83 - AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION])
12.84 - AC_SUBST([DX_FLAG_[]DX_CURRENT_FEATURE], 0)
12.85 -fi
12.86 -])
12.87 -
12.88 -# DX_TEST_FEATURE(FEATURE)
12.89 -# ------------------------
12.90 -# Expand to a shell expression testing whether the feature is active.
12.91 -AC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1])
12.92 -
12.93 -# DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE)
12.94 -# -------------------------------------------------
12.95 -# Verify that a required features has the right state before trying to turn on
12.96 -# the DX_CURRENT_FEATURE.
12.97 -AC_DEFUN([DX_CHECK_DEPEND], [
12.98 -test "$DX_FLAG_$1" = "$2" \
12.99 -|| AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1,
12.100 - requires, contradicts) doxygen-DX_CURRENT_FEATURE])
12.101 -])
12.102 -
12.103 -# DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE)
12.104 -# ----------------------------------------------------------
12.105 -# Turn off the DX_CURRENT_FEATURE if the required feature is off.
12.106 -AC_DEFUN([DX_CLEAR_DEPEND], [
12.107 -test "$DX_FLAG_$1" = "$2" || AC_SUBST([DX_FLAG_[]DX_CURRENT_FEATURE], 0)
12.108 -])
12.109 -
12.110 -# DX_FEATURE_ARG(FEATURE, DESCRIPTION,
12.111 -# CHECK_DEPEND, CLEAR_DEPEND,
12.112 -# REQUIRE, DO-IF-ON, DO-IF-OFF)
12.113 -# --------------------------------------------
12.114 -# Parse the command-line option controlling a feature. CHECK_DEPEND is called
12.115 -# if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND),
12.116 -# otherwise CLEAR_DEPEND is called to turn off the default state if a required
12.117 -# feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional
12.118 -# requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and
12.119 -# DO-IF-ON or DO-IF-OFF are called according to the final state of the feature.
12.120 -AC_DEFUN([DX_ARG_ABLE], [
12.121 - AC_DEFUN([DX_CURRENT_FEATURE], [$1])
12.122 - AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2])
12.123 - AC_ARG_ENABLE(doxygen-$1,
12.124 - [AS_HELP_STRING(DX_IF_FEATURE([$1], [--disable-doxygen-$1],
12.125 - [--enable-doxygen-$1]),
12.126 - DX_IF_FEATURE([$1], [don't $2], [$2]))],
12.127 - [
12.128 -case "$enableval" in
12.129 -#(
12.130 -y|Y|yes|Yes|YES)
12.131 - AC_SUBST([DX_FLAG_$1], 1)
12.132 - $3
12.133 -;; #(
12.134 -n|N|no|No|NO)
12.135 - AC_SUBST([DX_FLAG_$1], 0)
12.136 -;; #(
12.137 -*)
12.138 - AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1])
12.139 -;;
12.140 -esac
12.141 -], [
12.142 -AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)])
12.143 -$4
12.144 -])
12.145 -if DX_TEST_FEATURE([$1]); then
12.146 - $5
12.147 - :
12.148 -fi
12.149 -if DX_TEST_FEATURE([$1]); then
12.150 - AM_CONDITIONAL(DX_COND_$1, :)
12.151 - $6
12.152 - :
12.153 -else
12.154 - AM_CONDITIONAL(DX_COND_$1, false)
12.155 - $7
12.156 - :
12.157 -fi
12.158 -])
12.159 -
12.160 -## -------------- ##
12.161 -## Public macros. ##
12.162 -## -------------- ##
12.163 -
12.164 -# DX_XXX_FEATURE(DEFAULT_STATE)
12.165 -# -----------------------------
12.166 -AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc], [$1])])
12.167 -AC_DEFUN([DX_MAN_FEATURE], [AC_DEFUN([DX_FEATURE_man], [$1])])
12.168 -AC_DEFUN([DX_HTML_FEATURE], [AC_DEFUN([DX_FEATURE_html], [$1])])
12.169 -AC_DEFUN([DX_CHM_FEATURE], [AC_DEFUN([DX_FEATURE_chm], [$1])])
12.170 -AC_DEFUN([DX_CHI_FEATURE], [AC_DEFUN([DX_FEATURE_chi], [$1])])
12.171 -AC_DEFUN([DX_RTF_FEATURE], [AC_DEFUN([DX_FEATURE_rtf], [$1])])
12.172 -AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])])
12.173 -AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])])
12.174 -AC_DEFUN([DX_PDF_FEATURE], [AC_DEFUN([DX_FEATURE_pdf], [$1])])
12.175 -AC_DEFUN([DX_PS_FEATURE], [AC_DEFUN([DX_FEATURE_ps], [$1])])
12.176 -
12.177 -# DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR])
12.178 -# ---------------------------------------------------------
12.179 -# PROJECT also serves as the base name for the documentation files.
12.180 -# The default CONFIG-FILE is "Doxyfile" and OUTPUT-DOC-DIR is "doxygen-doc".
12.181 -AC_DEFUN([DX_INIT_DOXYGEN], [
12.182 -
12.183 -# Files:
12.184 -AC_SUBST([DX_PROJECT], [$1])
12.185 -AC_SUBST([DX_CONFIG], [ifelse([$2], [], Doxyfile, [$2])])
12.186 -AC_SUBST([DX_DOCDIR], [ifelse([$3], [], doxygen-doc, [$3])])
12.187 -
12.188 -# Environment variables used inside doxygen.cfg:
12.189 -DX_ENV_APPEND(SRCDIR, $srcdir)
12.190 -DX_ENV_APPEND(PROJECT, $DX_PROJECT)
12.191 -DX_ENV_APPEND(DOCDIR, $DX_DOCDIR)
12.192 -DX_ENV_APPEND(VERSION, $PACKAGE_VERSION)
12.193 -
12.194 -# Doxygen itself:
12.195 -DX_ARG_ABLE(doc, [generate any doxygen documentation],
12.196 - [],
12.197 - [],
12.198 - [DX_REQUIRE_PROG([DX_DOXYGEN], doxygen)
12.199 - DX_REQUIRE_PROG([DX_PERL], perl)],
12.200 - [DX_ENV_APPEND(PERL_PATH, $DX_PERL)])
12.201 -
12.202 -# Dot for graphics:
12.203 -DX_ARG_ABLE(dot, [generate graphics for doxygen documentation],
12.204 - [DX_CHECK_DEPEND(doc, 1)],
12.205 - [DX_CLEAR_DEPEND(doc, 1)],
12.206 - [DX_REQUIRE_PROG([DX_DOT], dot)],
12.207 - [DX_ENV_APPEND(HAVE_DOT, YES)
12.208 - DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])],
12.209 - [DX_ENV_APPEND(HAVE_DOT, NO)])
12.210 -
12.211 -# Man pages generation:
12.212 -DX_ARG_ABLE(man, [generate doxygen manual pages],
12.213 - [DX_CHECK_DEPEND(doc, 1)],
12.214 - [DX_CLEAR_DEPEND(doc, 1)],
12.215 - [],
12.216 - [DX_ENV_APPEND(GENERATE_MAN, YES)],
12.217 - [DX_ENV_APPEND(GENERATE_MAN, NO)])
12.218 -
12.219 -# RTF file generation:
12.220 -DX_ARG_ABLE(rtf, [generate doxygen RTF documentation],
12.221 - [DX_CHECK_DEPEND(doc, 1)],
12.222 - [DX_CLEAR_DEPEND(doc, 1)],
12.223 - [],
12.224 - [DX_ENV_APPEND(GENERATE_RTF, YES)],
12.225 - [DX_ENV_APPEND(GENERATE_RTF, NO)])
12.226 -
12.227 -# XML file generation:
12.228 -DX_ARG_ABLE(xml, [generate doxygen XML documentation],
12.229 - [DX_CHECK_DEPEND(doc, 1)],
12.230 - [DX_CLEAR_DEPEND(doc, 1)],
12.231 - [],
12.232 - [DX_ENV_APPEND(GENERATE_XML, YES)],
12.233 - [DX_ENV_APPEND(GENERATE_XML, NO)])
12.234 -
12.235 -# (Compressed) HTML help generation:
12.236 -DX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation],
12.237 - [DX_CHECK_DEPEND(doc, 1)],
12.238 - [DX_CLEAR_DEPEND(doc, 1)],
12.239 - [DX_REQUIRE_PROG([DX_HHC], hhc)],
12.240 - [DX_ENV_APPEND(HHC_PATH, $DX_HHC)
12.241 - DX_ENV_APPEND(GENERATE_HTML, YES)
12.242 - DX_ENV_APPEND(GENERATE_HTMLHELP, YES)],
12.243 - [DX_ENV_APPEND(GENERATE_HTMLHELP, NO)])
12.244 -
12.245 -# Seperate CHI file generation.
12.246 -DX_ARG_ABLE(chi, [generate doxygen seperate compressed HTML help index file],
12.247 - [DX_CHECK_DEPEND(chm, 1)],
12.248 - [DX_CLEAR_DEPEND(chm, 1)],
12.249 - [],
12.250 - [DX_ENV_APPEND(GENERATE_CHI, YES)],
12.251 - [DX_ENV_APPEND(GENERATE_CHI, NO)])
12.252 -
12.253 -# Plain HTML pages generation:
12.254 -DX_ARG_ABLE(html, [generate doxygen plain HTML documentation],
12.255 - [DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)],
12.256 - [DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)],
12.257 - [],
12.258 - [DX_ENV_APPEND(GENERATE_HTML, YES)],
12.259 - [DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)])
12.260 -
12.261 -# PostScript file generation:
12.262 -DX_ARG_ABLE(ps, [generate doxygen PostScript documentation],
12.263 - [DX_CHECK_DEPEND(doc, 1)],
12.264 - [DX_CLEAR_DEPEND(doc, 1)],
12.265 - [DX_REQUIRE_PROG([DX_LATEX], latex)
12.266 - DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
12.267 - DX_REQUIRE_PROG([DX_DVIPS], dvips)
12.268 - DX_REQUIRE_PROG([DX_EGREP], egrep)])
12.269 -
12.270 -# PDF file generation:
12.271 -DX_ARG_ABLE(pdf, [generate doxygen PDF documentation],
12.272 - [DX_CHECK_DEPEND(doc, 1)],
12.273 - [DX_CLEAR_DEPEND(doc, 1)],
12.274 - [DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex)
12.275 - DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
12.276 - DX_REQUIRE_PROG([DX_EGREP], egrep)])
12.277 -
12.278 -# LaTeX generation for PS and/or PDF:
12.279 -if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then
12.280 - AM_CONDITIONAL(DX_COND_latex, :)
12.281 - DX_ENV_APPEND(GENERATE_LATEX, YES)
12.282 -else
12.283 - AM_CONDITIONAL(DX_COND_latex, false)
12.284 - DX_ENV_APPEND(GENERATE_LATEX, NO)
12.285 -fi
12.286 -
12.287 -# Paper size for PS and/or PDF:
12.288 -AC_ARG_VAR(DOXYGEN_PAPER_SIZE,
12.289 - [a4wide (default), a4, letter, legal or executive])
12.290 -case "$DOXYGEN_PAPER_SIZE" in
12.291 -#(
12.292 -"")
12.293 - AC_SUBST(DOXYGEN_PAPER_SIZE, "")
12.294 -;; #(
12.295 -a4wide|a4|letter|legal|executive)
12.296 - DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE)
12.297 -;; #(
12.298 -*)
12.299 - AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE'])
12.300 -;;
12.301 -esac
12.302 -
12.303 -#For debugging:
12.304 -#echo DX_FLAG_doc=$DX_FLAG_doc
12.305 -#echo DX_FLAG_dot=$DX_FLAG_dot
12.306 -#echo DX_FLAG_man=$DX_FLAG_man
12.307 -#echo DX_FLAG_html=$DX_FLAG_html
12.308 -#echo DX_FLAG_chm=$DX_FLAG_chm
12.309 -#echo DX_FLAG_chi=$DX_FLAG_chi
12.310 -#echo DX_FLAG_rtf=$DX_FLAG_rtf
12.311 -#echo DX_FLAG_xml=$DX_FLAG_xml
12.312 -#echo DX_FLAG_pdf=$DX_FLAG_pdf
12.313 -#echo DX_FLAG_ps=$DX_FLAG_ps
12.314 -#echo DX_ENV=$DX_ENV
12.315 -])
13.1 --- a/gmyth-upnp/m4/as-compiler-flag.m4 Fri Feb 01 19:22:17 2008 +0000
13.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
13.3 @@ -1,33 +0,0 @@
13.4 -dnl as-compiler-flag.m4 0.1.0
13.5 -
13.6 -dnl autostars m4 macro for detection of compiler flags
13.7 -
13.8 -dnl David Schleef <ds@schleef.org>
13.9 -
13.10 -dnl $Id: as-compiler-flag.m4,v 1.1.1.1 2005/08/26 00:42:44 andrunko Exp $
13.11 -
13.12 -dnl AS_COMPILER_FLAG(CFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED])
13.13 -dnl Tries to compile with the given CFLAGS.
13.14 -dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags,
13.15 -dnl and ACTION-IF-NOT-ACCEPTED otherwise.
13.16 -
13.17 -AC_DEFUN([AS_COMPILER_FLAG],
13.18 -[
13.19 - AC_MSG_CHECKING([to see if compiler understands $1])
13.20 -
13.21 - save_CFLAGS="$CFLAGS"
13.22 - CFLAGS="$CFLAGS $1"
13.23 -
13.24 - AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no])
13.25 - CFLAGS="$save_CFLAGS"
13.26 -
13.27 - if test "X$flag_ok" = Xyes ; then
13.28 - $2
13.29 - true
13.30 - else
13.31 - $3
13.32 - true
13.33 - fi
13.34 - AC_MSG_RESULT([$flag_ok])
13.35 -])
13.36 -
14.1 --- a/gmyth-upnp/m4/as-expand.m4 Fri Feb 01 19:22:17 2008 +0000
14.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
14.3 @@ -1,40 +0,0 @@
14.4 -dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR)
14.5 -dnl
14.6 -dnl example
14.7 -dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
14.8 -dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local
14.9 -
14.10 -AC_DEFUN([AS_AC_EXPAND],
14.11 -[
14.12 - EXP_VAR=[$1]
14.13 - FROM_VAR=[$2]
14.14 -
14.15 - dnl first expand prefix and exec_prefix if necessary
14.16 - prefix_save=$prefix
14.17 - exec_prefix_save=$exec_prefix
14.18 -
14.19 - dnl if no prefix given, then use /usr/local, the default prefix
14.20 - if test "x$prefix" = "xNONE"; then
14.21 - prefix=$ac_default_prefix
14.22 - fi
14.23 - dnl if no exec_prefix given, then use prefix
14.24 - if test "x$exec_prefix" = "xNONE"; then
14.25 - exec_prefix=$prefix
14.26 - fi
14.27 -
14.28 - full_var="$FROM_VAR"
14.29 - dnl loop until it doesn't change anymore
14.30 - while true; do
14.31 - new_full_var="`eval echo $full_var`"
14.32 - if test "x$new_full_var"="x$full_var"; then break; fi
14.33 - full_var=$new_full_var
14.34 - done
14.35 -
14.36 - dnl clean up
14.37 - full_var=$new_full_var
14.38 - AC_SUBST([$1], "$full_var")
14.39 -
14.40 - dnl restore prefix and exec_prefix
14.41 - prefix=$prefix_save
14.42 - exec_prefix=$exec_prefix_save
14.43 -])
15.1 --- a/gmyth-upnp/m4/as-version.m4 Fri Feb 01 19:22:17 2008 +0000
15.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
15.3 @@ -1,59 +0,0 @@
15.4 -dnl version.m4 0.0.5
15.5 -dnl autostars m4 macro for versioning
15.6 -dnl thomas@apestaart.org
15.7 -dnl
15.8 -dnl AS_VERSION(PACKAGE, PREFIX, MAJOR, MINOR, MICRO, NANO, ACTION_IF_NO_NANO, ACTION_IF_NANO)
15.9 -dnl example
15.10 -dnl AS_VERSION(gstreamer, GST_VERSION, 0, 3, 2,)
15.11 -dnl for a 0.3.2 release version
15.12 -dnl
15.13 -dnl this macro
15.14 -dnl - defines [$PREFIX]_MAJOR, MINOR and MICRO
15.15 -dnl - if NANO is empty, then we're in release mode, else in cvs/dev mode
15.16 -dnl - defines [$PREFIX], VERSION, and [$PREFIX]_RELEASE
15.17 -dnl - executes the relevant action
15.18 -dnl - AC_SUBST's PACKAGE, VERSION, [$PREFIX] and [$PREFIX]_RELEASE
15.19 -dnl as well as the little ones
15.20 -dnl - doesn't call AM_INIT_AUTOMAKE anymore because it prevents
15.21 -dnl maintainer mode from running ok
15.22 -dnl
15.23 -dnl don't forget to put #undef [$2] and [$2]_RELEASE in acconfig.h
15.24 -
15.25 -AC_DEFUN([AS_VERSION],
15.26 -[
15.27 - PACKAGE=[$1]
15.28 - [$2]_MAJOR_VERSION=[$3]
15.29 - [$2]_MINOR_VERSION=[$4]
15.30 - [$2]_MICRO_VERSION=[$5]
15.31 - NANO=[$6]
15.32 - [$2]_NANO_VERSION=$NANO
15.33 - if test "x$NANO" = "x" || test "x$NANO" = "x0";
15.34 - then
15.35 - AC_MSG_NOTICE(configuring [$1] for release)
15.36 - VERSION=[$3].[$4].[$5]
15.37 - [$2]_RELEASE=1
15.38 - dnl execute action
15.39 - ifelse([$7], , :, [$7])
15.40 - else
15.41 - AC_MSG_NOTICE(configuring [$1] for development with nano $NANO)
15.42 - VERSION=[$3].[$4].[$5].$NANO
15.43 - [$2]_RELEASE=`date +%Y%m%d_%H%M%S`
15.44 - dnl execute action
15.45 - ifelse([$8], , :, [$8])
15.46 - fi
15.47 -
15.48 - [$2]_VERSION=$VERSION
15.49 - AC_DEFINE_UNQUOTED([$2]_VERSION, "$[$2]_VERSION", [Define the version])
15.50 - AC_SUBST([$2]_VERSION)
15.51 -
15.52 - AC_SUBST([$2]_RELEASE)
15.53 -
15.54 - AC_SUBST([$2]_MAJOR_VERSION)
15.55 - AC_SUBST([$2]_MINOR_VERSION)
15.56 - AC_SUBST([$2]_MICRO_VERSION)
15.57 - AC_SUBST([$2]_NANO_VERSION)
15.58 - AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Define the package name])
15.59 - AC_SUBST(PACKAGE)
15.60 - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Define the version])
15.61 - AC_SUBST(VERSION)
15.62 -])
16.1 --- a/gmyth-upnp/m4/configure.ac Fri Feb 01 19:22:17 2008 +0000
16.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
16.3 @@ -1,234 +0,0 @@
16.4 -# -*- Autoconf -*-
16.5 -# Process this file with autoconf to produce a configure script.
16.6 -
16.7 -AC_PREREQ(2.50)
16.8 -
16.9 -AC_INIT([gmyth],[0.1])
16.10 -
16.11 -dnl AC_CONFIG_SRCDIR([src/mmyth_main.c])
16.12 -AC_CONFIG_HEADER(config.h)
16.13 -
16.14 -dnl when going to/from release please set the nano (fourth number) right !
16.15 -dnl releases only do Wall, SVN and prerelease does Werror too
16.16 -AS_VERSION(gmyth, GMYTH, 0, 1, 0, 3, GMYTH_SVN="no", GMYTH_SVN="yes")
16.17 -
16.18 -GMYTH_MAJORMINOR=$GMYTH_MAJOR_VERSION.$GMYTH_MINOR_VERSION
16.19 -
16.20 -AC_SUBST(GMYTH_MAJORMINOR)
16.21 -
16.22 -dnl AM_MAINTAINER_MODE provides the option to enable maintainer mode
16.23 -AM_MAINTAINER_MODE
16.24 -dnl make aclocal work in maintainer mode
16.25 -AC_SUBST(ACLOCAL_AMFLAGS, "-I m4")
16.26 -
16.27 -# Checks for programs.
16.28 -# check for tools
16.29 -# Make sure CFLAGS is defined to stop AC_PROC_CC adding -g
16.30 -CFLAGS="$CFLAGS -Wall"
16.31 -AC_PROG_CC
16.32 -AC_PROG_LIBTOOL
16.33 -
16.34 -dnl Generate doxygen documentation
16.35 -DX_HTML_FEATURE(ON)
16.36 -DX_CHM_FEATURE(OFF)
16.37 -DX_CHI_FEATURE(OFF)
16.38 -DX_MAN_FEATURE(OFF)
16.39 -DX_RTF_FEATURE(OFF)
16.40 -DX_XML_FEATURE(OFF)
16.41 -DX_PDF_FEATURE(OFF)
16.42 -DX_PS_FEATURE(OFF)
16.43 -DX_INIT_DOXYGEN(gmyth, doxygen.cfg, docs)
16.44 -
16.45 -
16.46 -# Checks for libraries.
16.47 -
16.48 -# Checks for header files.
16.49 -AC_HEADER_STDC
16.50 -AC_CHECK_HEADERS([fcntl.h stdint.h stdlib.h string.h sys/ioctl.h sys/socket.h unistd.h])
16.51 -
16.52 -# Checks for typedefs, structures, and compiler characteristics.
16.53 -AC_C_CONST
16.54 -AC_TYPE_PID_T
16.55 -AC_STRUCT_TM
16.56 -
16.57 -# Checks for library functions.
16.58 -AC_FUNC_FORK
16.59 -AC_PROG_GCC_TRADITIONAL
16.60 -AC_FUNC_MALLOC
16.61 -AC_FUNC_MKTIME
16.62 -AC_FUNC_VPRINTF
16.63 -AC_CHECK_FUNCS([memset socket stime strstr strtoul])
16.64 -
16.65 -AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
16.66 -
16.67 -# Checks required packages
16.68 -
16.69 -dnl Test if --disable-debug given
16.70 -AC_ARG_ENABLE(debug,
16.71 - [AC_HELP_STRING([--disable-debug], [disable debugging mode])],
16.72 - enable_debug="$enableval",
16.73 - enable_debug=yes)
16.74 -
16.75 -if test "x$enable_debug" = "xyes" ; then
16.76 - CFLAGS="$CFLAGS -g"
16.77 -else
16.78 - AC_DEFINE( NDEBUG, 1, [disable debug messages] )
16.79 - CFLAGS="$CFLAGS -O2 -DG_DISABLE_CHECKS -DNDEBUG"
16.80 -fi
16.81 -
16.82 -AM_CONDITIONAL( NDEBUG, test "x$enable_debug" = "xyes" )
16.83 -
16.84 -# Check for pkgconfig
16.85 -AC_CHECK_PROG(HAVE_PKGCONFIG, pkg-config, yes, no)
16.86 -# Give error and exit if we don't have pkgconfig
16.87 -if test "x$HAVE_PKGCONFIG" = "xno"; then
16.88 - AC_MSG_ERROR(you need to have pkgconfig installed !)
16.89 -fi
16.90 -
16.91 -# Check for Glib2.0
16.92 -PKG_CHECK_MODULES(GLIB, glib-2.0, HAVE_GLIB=yes,HAVE_GLIB=no)
16.93 -
16.94 -# Give error and exit if we don't have glib
16.95 -if test "x$HAVE_GLIB" = "xno"; then
16.96 - AC_MSG_ERROR(you need glib-2.0 installed)
16.97 -fi
16.98 -
16.99 -# make GLIB_CFLAGS and GLIB_LIBS available
16.100 -AC_SUBST(GLIB_CFLAGS)
16.101 -AC_SUBST(GLIB_LIBS)
16.102 -
16.103 -# Check for GObject2.0
16.104 -PKG_CHECK_MODULES(GOBJECT,
16.105 - gobject-2.0,
16.106 - HAVE_GOBJECT=yes, HAVE_GOBJECT=no)
16.107 -
16.108 -# Give error and exit if we don't have gobject
16.109 -if test "x$HAVE_GOBJECT" = "xno"; then
16.110 - AC_MSG_ERROR(you need gobject-2.0 installed)
16.111 -fi
16.112 -
16.113 -# make GOBJECT_CFLAGS and GOBJECT_LIBS available
16.114 -AC_SUBST(GOBJECT_CFLAGS)
16.115 -AC_SUBST(GOBJECT_LIBS)
16.116 -
16.117 -# Check for GTK+-2.0
16.118 -PKG_CHECK_MODULES(GTK, gtk+-2.0, HAVE_GTK=yes,HAVE_GTK=no)
16.119 -
16.120 -# Give error and exit if we don't have gtk
16.121 -if test "x$HAVE_GTK" = "xyes"; then
16.122 - AC_DEFINE(WITH_GTK, 1, [build with GTK+ related stuff])
16.123 - dnl AC_MSG_ERROR(you need gtk+-2.0 installed)
16.124 -else
16.125 - AC_MSG_RESULT(no)
16.126 -fi
16.127 -
16.128 -AM_CONDITIONAL(WITH_GTK, test "x$HAVE_GTK" = "xyes" )
16.129 -
16.130 -# make GTK_CFLAGS and GTK_LIBS available
16.131 -AC_SUBST(GTK_CFLAGS)
16.132 -AC_SUBST(GTK_LIBS)
16.133 -
16.134 -dnl ========== Check for Hildon Libraries
16.135 -PKG_CHECK_MODULES(HILDON,
16.136 - hildon-lgpl libosso hildon-status-bar-lib libhildonmenu hildon-base-lib hildon-control-panel hildon-libs,
16.137 - HAVE_HILDON=yes, HAVE_HILDON=no)
16.138 -
16.139 -if test "x$HAVE_HILDON" = "xyes"; then
16.140 - AC_DEFINE(MAEMO_PLATFORM, 1, [build with hildon libs])
16.141 - HILDON_CFLAGS="$HILDON_CFLAGS -DMAEMO_PLATFORM=1"
16.142 -else
16.143 - AC_MSG_RESULT(no)
16.144 -fi
16.145 -
16.146 -AM_CONDITIONAL(MAEMO_PLATFORM, test "x$HAVE_HILDON" = "xyes")
16.147 -
16.148 -dnl make HILDON_CFLAGS and HILDON_LIBS available
16.149 -AC_SUBST(HILDON_CFLAGS)
16.150 -AC_SUBST(HILDON_LIBS)
16.151 -
16.152 -# Check for libxml-2.0
16.153 -PKG_CHECK_MODULES(LIBXML, libxml-2.0, HAVE_LIBXML=yes,HAVE_LIBXML=no)
16.154 -
16.155 -# Give error and exit if we don't have libxml
16.156 -if test "x$HAVE_LIBXML" = "xno"; then
16.157 - AC_MSG_ERROR(you need libxml-2.0 installed)
16.158 -fi
16.159 -
16.160 -# make LIBXML_CFLAGS and LIBXML_LIBS available
16.161 -AC_SUBST(LIBXML_CFLAGS)
16.162 -AC_SUBST(LIBXML_LIBS)
16.163 -
16.164 -
16.165 -# check for gstreamer development files
16.166 -GST_REQUIRED=0.10
16.167 -GST_MAJORMINOR=0.10
16.168 -PKG_CHECK_MODULES(GST, \
16.169 - gstreamer-$GST_MAJORMINOR >= $GST_REQUIRED,
16.170 - HAVE_GST=yes, HAVE_GST=no)
16.171 -
16.172 -# Give error and exit if we don't have gstreamer
16.173 -if test "x$HAVE_GST" = "xno"; then
16.174 - AC_MSG_ERROR(you need gstreamer development packages installed !)
16.175 -fi
16.176 -
16.177 -# make GST_CFLAGS and GST_LIBS available
16.178 -AC_SUBST(GST_CFLAGS)
16.179 -AC_SUBST(GST_LIBS)
16.180 -
16.181 -# check for gstreamer-base plugins (xoverlay interface)
16.182 -GSTBASE_REQUIRED=0.10
16.183 -GSTBASE_MAJORMINOR=0.10
16.184 -PKG_CHECK_MODULES(GSTBASE, \
16.185 - gstreamer-base-$GSTBASE_MAJORMINOR >= $GSTBASE_REQUIRED,
16.186 - HAVE_GSTBASE=yes, HAVE_GSTBASE=no)
16.187 -
16.188 -# Give error and exit if we don't have gstreamer base libraries
16.189 -if test "x$HAVE_GSTBASE" = "xno"; then
16.190 - AC_MSG_ERROR(you need gstreamer base development packages installed !)
16.191 -fi
16.192 -
16.193 -# make GSTBASE_CFLAGS and GSTBASE_LIBS available
16.194 -AC_SUBST(GSTBASE_CFLAGS)
16.195 -AC_SUBST(GSTBASE_LIBS)
16.196 -
16.197 -
16.198 -# make GST_MAJORMINOR available in Makefile.am
16.199 -AC_SUBST(GST_MAJORMINOR)
16.200 -
16.201 -#
16.202 -# mysql libraries
16.203 -#
16.204 -AC_CHECK_PROG(MYSQL_CFLAGS,mysql_config,`mysql_config --cflags`)
16.205 -if test -z "$MYSQL_CFLAGS"; then
16.206 - AC_MSG_ERROR([Could not find mysql_config script. Make sure the mysql client libraries are installed])
16.207 -fi
16.208 -AC_SUBST(MYSQL_CFLAGS)
16.209 -
16.210 -
16.211 -AC_CHECK_PROG(MYSQL_LIBS,mysql_config,`mysql_config --libs`)
16.212 -if test -z "$MYSQL_LIBS"; then
16.213 - AC_MSG_ERROR([Could not find mysql_config script. Make sure the mysql client libraries are installed])
16.214 -fi
16.215 -AC_SUBST(MYSQL_LIBS)
16.216 -
16.217 -## Check for gmyth-0.1
16.218 -
16.219 -PKG_CHECK_MODULES(LIBGMYTH, gmyth-0.1, HAVE_LIBGMYTH=yes,HAVE_LIBGMYTH=no)
16.220 -
16.221 -# Give error and exit if we don't have gmyth-0.1
16.222 -if test "x$HAVE_LIBGMYTH" = "xno"; then
16.223 - AC_MSG_ERROR(you need gmyth-0.1 installed)
16.224 -fi
16.225 -
16.226 -# make LIBXML_CFLAGS and LIBXML_LIBS available
16.227 -AC_SUBST(LIBGMYTH_CFLAGS)
16.228 -AC_SUBST(LIBGMYTH_LIBS)
16.229 -
16.230 -#dnl Enable gtk-doc
16.231 -#GTK_DOC_CHECK(1.4)
16.232 -
16.233 -
16.234 -AC_CONFIG_FILES([Makefile
16.235 - src/Makefile
16.236 - pixmaps/Makefile])
16.237 -AC_OUTPUT
17.1 --- a/gmyth-upnp/src/Makefile.am Fri Feb 01 19:22:17 2008 +0000
17.2 +++ b/gmyth-upnp/src/Makefile.am Fri Feb 01 22:17:33 2008 +0000
17.3 @@ -27,12 +27,12 @@
17.4 libgmythupnp_la_CFLAGS = \
17.5 -DDATADIR=\"$(pkgdatadir)\" \
17.6 $(LIBGMYTH_CFLAGS) \
17.7 - $(CYBERLINK_CFLAGS)
17.8 + $(LIBUPNP_CFLAGS)
17.9
17.10 libgmythupnp_la_LDFLAGS = \
17.11 -export-dynamic \
17.12 $(LIBGMYTH_LIBS) \
17.13 - $(CYBERLINK_LIBS)
17.14 + $(LIBUPNP_LIBS)
17.15
17.16 libgmythupnp_includedir = \
17.17 $(pkgincludedir)
18.1 --- a/gmyth-upnp/src/gmyth_upnp.c Fri Feb 01 19:22:17 2008 +0000
18.2 +++ b/gmyth-upnp/src/gmyth_upnp.c Fri Feb 01 22:17:33 2008 +0000
18.3 @@ -30,64 +30,69 @@
18.4 #endif
18.5
18.6 #include "gmyth_upnp.h"
18.7 -#include "gmyth_upnp_marshal.h"
18.8
18.9 -#include <arpa/inet.h>
18.10 -#include <sys/types.h>
18.11 -#include <sys/socket.h>
18.12 -#include <netdb.h>
18.13 -#include <errno.h>
18.14 -#include <stdlib.h>
18.15 +#include <gmyth/gmyth.h>
18.16 +#include <upnp/upnp.h>
18.17 +#include <string.h>
18.18
18.19 -#include <gmyth/gmyth_backendinfo.h>
18.20 -#include <gmyth/gmyth_socket.h>
18.21 -#include <gmyth/gmyth_uri.h>
18.22 -#include <gmyth/gmyth_debug.h>
18.23
18.24 -/*
18.25 - * Maximum number of searches in the synchronized search
18.26 - */
18.27 -#define GMYTH_UPNP_MAX_SEARCHS 10
18.28 +#define UPNP_SEARCH_TIMEOUT 5
18.29 +#define UPNP_SERVICE_FILTER "urn:schemas-mythtv-org:service:MythTv:1"
18.30 +#define SERVER_ID "MythTV AV Media Server"
18.31 +
18.32 +typedef struct _GMythUPnPPrivate GMythUPnPPrivate;
18.33 +typedef struct _GMythUPnPIdleData GMythUPnPIdleData;
18.34
18.35 #define GMYTH_UPNP_GET_PRIVATE(obj) \
18.36 (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GMYTH_UPNP_TYPE, GMythUPnPPrivate))
18.37
18.38 +enum
18.39 +{
18.40 + DEVICE_FOUND,
18.41 + DEVICE_LOST,
18.42 + LAST_SIGNAL
18.43 +};
18.44 +
18.45 +struct _GMythUPnPIdleData
18.46 +{
18.47 + GMythUPnP *parent;
18.48 + GMythBackendInfo *server;
18.49 +};
18.50 +
18.51 struct _GMythUPnPPrivate {
18.52 - GHashTable *mythtv_servers;
18.53 + GHashTable *servers;
18.54 GMythUPnPDeviceStatus last_status;
18.55 gboolean upnp_dev_found;
18.56 gchar *udn;
18.57 GMutex *mutex;
18.58 + gint idle_count;
18.59 +
18.60 + /* upnp */
18.61 + UpnpClient_Handle client_id;
18.62 };
18.63
18.64 -static void gmyth_upnp_class_init(GMythUPnPClass * klass);
18.65 -static void gmyth_upnp_init(GMythUPnP * object);
18.66 +static void gmyth_upnp_class_init (GMythUPnPClass* klass);
18.67 +static void gmyth_upnp_init (GMythUPnP* object);
18.68 +static void gmyth_upnp_dispose (GObject* object);
18.69 +static void gmyth_upnp_finalize (GObject* object);
18.70 +static GObject* gmyth_upnp_constructor (GType type,
18.71 + guint n_construct_params,
18.72 + GObjectConstructParam *construct_params);
18.73
18.74 -static void gmyth_upnp_dispose(GObject * object);
18.75 -static void gmyth_upnp_finalize(GObject * object);
18.76
18.77 -static void _mythtv_device_found(GMythUPnP * gmyth_upnp,
18.78 - GMythUPnPDeviceStatus status,
18.79 - gchar * dev);
18.80 -static void _clinkc_mythtv_device_found(gchar * udn,
18.81 - GMythUPnPDeviceStatus status);
18.82 +static int _upnp_event_handler (Upnp_EventType e_type,
18.83 + void* e,
18.84 + void* data);
18.85
18.86 -static gboolean gmyth_upnp_initialize(GMythUPnP * gmyth_upnp,
18.87 - GMythBackendInfo *
18.88 - gmyth_backend_info,
18.89 - GMythUPnPDeviceListener listener);
18.90
18.91 -static gboolean gmyth_upnp_got_mythtv_service(CgUpnpControlPoint *
18.92 - controlPt, gchar ** udn,
18.93 - GHashTable **
18.94 - mythtv_servers_lst);
18.95 +static int signals[LAST_SIGNAL] = {0};
18.96
18.97 -G_DEFINE_TYPE(GMythUPnP, gmyth_upnp, G_TYPE_OBJECT)
18.98 +static GMythUPnP *singleton = NULL;
18.99
18.100 - static GMythUPnP *gmyth_upnp_static = NULL;
18.101 +G_DEFINE_TYPE(GMythUPnP, gmyth_upnp, G_TYPE_OBJECT);
18.102
18.103 - static void
18.104 - gmyth_upnp_class_init(GMythUPnPClass * klass)
18.105 +static void
18.106 +gmyth_upnp_class_init(GMythUPnPClass * klass)
18.107 {
18.108 GObjectClass *gobject_class;
18.109 GMythUPnPClass *gupnp_class;
18.110 @@ -97,347 +102,354 @@
18.111
18.112 gobject_class->dispose = gmyth_upnp_dispose;
18.113 gobject_class->finalize = gmyth_upnp_finalize;
18.114 + gobject_class->constructor = gmyth_upnp_constructor;
18.115
18.116 - g_type_class_add_private(gobject_class, sizeof(GMythUPnPPrivate));
18.117 + g_type_class_add_private (gobject_class, sizeof(GMythUPnPPrivate));
18.118
18.119 - gupnp_class->device_found_handler = _mythtv_device_found;
18.120
18.121 - gupnp_class->device_found_handler_signal_id =
18.122 - g_signal_new("device-found",
18.123 - G_TYPE_FROM_CLASS(gupnp_class),
18.124 - G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE |
18.125 - G_SIGNAL_NO_HOOKS, 0, NULL, NULL,
18.126 - gmyth_upnp_marshal_VOID__INT_STRING, G_TYPE_NONE, 2,
18.127 - G_TYPE_INT, G_TYPE_STRING);
18.128 +
18.129 + signals[DEVICE_FOUND] = g_signal_new("device-found",
18.130 + G_TYPE_FROM_CLASS(gupnp_class),
18.131 + G_SIGNAL_RUN_LAST,
18.132 + 0, NULL, NULL,
18.133 + g_cclosure_marshal_VOID__OBJECT,
18.134 + G_TYPE_NONE, 1,
18.135 + GMYTH_BACKEND_INFO_TYPE);
18.136 +
18.137 + signals[DEVICE_LOST] = g_signal_new("device-lost",
18.138 + G_TYPE_FROM_CLASS(gupnp_class),
18.139 + G_SIGNAL_RUN_LAST,
18.140 + 0, NULL, NULL,
18.141 + g_cclosure_marshal_VOID__OBJECT,
18.142 + G_TYPE_NONE, 1,
18.143 + GMYTH_BACKEND_INFO_TYPE);
18.144
18.145 }
18.146
18.147 static void
18.148 -gmyth_upnp_init(GMythUPnP * gmyth_upnp)
18.149 +gmyth_upnp_init(GMythUPnP* self)
18.150 {
18.151 + gint ret;
18.152 + GMythUPnPPrivate *priv;
18.153
18.154 - gmyth_upnp->backend_info = NULL;
18.155 + priv = GMYTH_UPNP_GET_PRIVATE (self);
18.156
18.157 - gmyth_upnp->control_point = NULL;
18.158 + priv->mutex = g_mutex_new ();
18.159 + priv->servers = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
18.160
18.161 - gmyth_upnp->priv = GMYTH_UPNP_GET_PRIVATE(gmyth_upnp);
18.162 - gmyth_upnp->priv->mutex = g_mutex_new();
18.163 - gmyth_upnp->priv->upnp_dev_found = FALSE;
18.164 + /* initalize upnp client */
18.165 + ret = UpnpInit (NULL, 0);
18.166 + if (ret != UPNP_E_SUCCESS)
18.167 + g_warning ("Fail to inilialize upnp SDK: %d", ret);
18.168 + else
18.169 + {
18.170 + ret = UpnpRegisterClient (_upnp_event_handler,
18.171 + &priv->client_id, &priv->client_id);
18.172
18.173 - g_signal_connect(G_OBJECT(gmyth_upnp), "device-found",
18.174 - (GCallback) (GMYTH_UPNP_GET_CLASS(gmyth_upnp)->
18.175 - device_found_handler), NULL);
18.176 -
18.177 - gmyth_upnp_static = gmyth_upnp;
18.178 -
18.179 + if (ret != UPNP_E_SUCCESS)
18.180 + g_warning ("Fail to start upnp client: %d", ret);
18.181 + }
18.182 }
18.183
18.184 -/** Creates a new instance of GMythUPnP.
18.185 - *
18.186 - * @return a new instance of GMythUPnP.
18.187 - */
18.188 -GMythUPnP *
18.189 -gmyth_upnp_new(GMythBackendInfo * gmyth_backend_info,
18.190 - GMythUPnPDeviceListener handler)
18.191 +static GObject*
18.192 +gmyth_upnp_constructor (GType type,
18.193 + guint n_construct_params,
18.194 + GObjectConstructParam *construct_params)
18.195 {
18.196 - GMythUPnP *gmyth_upnp =
18.197 - GMYTH_UPNP(g_object_new(GMYTH_UPNP_TYPE, NULL));
18.198 + GObject *object;
18.199
18.200 - g_object_ref(gmyth_backend_info);
18.201 + if (!singleton)
18.202 + {
18.203 + object = G_OBJECT_CLASS (gmyth_upnp_parent_class)->constructor (type,
18.204 + n_construct_params,
18.205 + construct_params);
18.206
18.207 - gmyth_upnp->backend_info = gmyth_backend_info;
18.208 + singleton = GMYTH_UPNP (object);
18.209 + }
18.210 + else
18.211 + object = g_object_ref (G_OBJECT (singleton));
18.212
18.213 - if (!gmyth_upnp_initialize(gmyth_upnp, gmyth_backend_info, handler)) {
18.214 - gmyth_debug("Error initializing the GMythUPnP!!!");
18.215 - }
18.216 -
18.217 - return gmyth_upnp;
18.218 + return object;
18.219 }
18.220
18.221 static void
18.222 gmyth_upnp_dispose(GObject * object)
18.223 {
18.224 - GMythUPnP *gmyth_upnp = GMYTH_UPNP(object);
18.225 -
18.226 - if (gmyth_upnp->control_point != NULL) {
18.227 - cg_upnp_controlpoint_stop(gmyth_upnp->control_point);
18.228 - cg_upnp_controlpoint_delete(gmyth_upnp->control_point);
18.229 - gmyth_upnp->control_point = NULL;
18.230 - }
18.231 -
18.232 - if (gmyth_upnp->priv->mythtv_servers != NULL) {
18.233 - g_hash_table_destroy(gmyth_upnp->priv->mythtv_servers);
18.234 - gmyth_upnp->priv->mythtv_servers = NULL;
18.235 - }
18.236 -
18.237 - if (gmyth_upnp->backend_info != NULL) {
18.238 - g_object_unref(gmyth_upnp->backend_info);
18.239 - gmyth_upnp->backend_info = NULL;
18.240 - }
18.241 -
18.242 + /* finalize upnp client */
18.243 + UpnpFinish ();
18.244 G_OBJECT_CLASS(gmyth_upnp_parent_class)->dispose(object);
18.245 }
18.246
18.247 static void
18.248 gmyth_upnp_finalize(GObject * object)
18.249 {
18.250 - g_signal_handlers_destroy(object);
18.251 -
18.252 G_OBJECT_CLASS(gmyth_upnp_parent_class)->finalize(object);
18.253 + singleton = NULL;
18.254 }
18.255
18.256 -gchar *
18.257 -gmyth_upnp_device_status_to_string(GMythUPnPDeviceStatus status)
18.258 +
18.259 +GMythUPnP*
18.260 +gmyth_upnp_get_instance (void)
18.261 {
18.262 - if (status == CgUpnpDeviceStatusAdded)
18.263 - return "Added";
18.264 - else if (status == CgUpnpDeviceStatusUpdated)
18.265 - return "Updated";
18.266 - else if (status == CgUpnpDeviceStatusInvalid)
18.267 - return "Invalid";
18.268 - else if (status == CgUpnpDeviceStatusRemoved)
18.269 - return "Removed";
18.270 -
18.271 - return "";
18.272 + return GMYTH_UPNP(g_object_new(GMYTH_UPNP_TYPE, NULL));
18.273 }
18.274
18.275 -/**
18.276 - * GObject's signal handler
18.277 - */
18.278 -static void
18.279 -_mythtv_device_found(GMythUPnP * gmyth_upnp, GMythUPnPDeviceStatus status,
18.280 - gchar * udn)
18.281 +
18.282 +void
18.283 +gmyth_upnp_search (GMythUPnP *self)
18.284 {
18.285 - g_debug("Device: [status = %s, UDN = %s]\n",
18.286 - gmyth_upnp_device_status_to_string(status), udn);
18.287 + int ret;
18.288 + GMythUPnPPrivate *priv;
18.289 +
18.290 + priv = GMYTH_UPNP_GET_PRIVATE (self);
18.291 +
18.292 + ret = UpnpSearchAsync (priv->client_id,
18.293 + UPNP_SEARCH_TIMEOUT,
18.294 + UPNP_SERVICE_FILTER,
18.295 + NULL);
18.296 +
18.297 + if (ret != UPNP_E_SUCCESS)
18.298 + g_warning ("Fail to start upnp listener: %d", ret);
18.299 }
18.300
18.301 -/**
18.302 - * GObject's signal handler
18.303 - */
18.304 -static void
18.305 -_clinkc_mythtv_device_found(gchar * udn, GMythUPnPDeviceStatus status)
18.306 +static gboolean
18.307 +_idle_emit_device_found_signal (gpointer data)
18.308 {
18.309 - if (gmyth_upnp_static != NULL && udn != NULL)
18.310 - g_signal_emit(gmyth_upnp_static, GMYTH_UPNP_GET_CLASS(gmyth_upnp_static)->device_found_handler_signal_id, 0, /* details
18.311 - */
18.312 - status, udn);
18.313 + GMythUPnPPrivate *priv;
18.314 + GMythUPnPIdleData *idle_data;
18.315 +
18.316 + idle_data = (GMythUPnPIdleData *) data;
18.317 + priv = GMYTH_UPNP_GET_PRIVATE (idle_data->parent);
18.318 +
18.319 + g_signal_emit (idle_data->parent, signals[DEVICE_FOUND], 0, idle_data->server);
18.320 +
18.321 + g_object_unref (idle_data->server);
18.322 + g_free (idle_data);
18.323 + priv->idle_count--;
18.324 +
18.325 + return FALSE;
18.326 }
18.327
18.328 -/**
18.329 - * Create a control point and start it.
18.330 - */
18.331 -static gboolean
18.332 -gmyth_upnp_initialize(GMythUPnP * gmyth_upnp,
18.333 - GMythBackendInfo * gmyth_backend_info,
18.334 - GMythUPnPDeviceListener device_found_handler)
18.335 +static gboolean
18.336 +_idle_emit_device_lost_signal (gpointer data)
18.337 {
18.338 - gboolean ret = TRUE;
18.339 + GMythUPnPPrivate *priv;
18.340 + GMythUPnPIdleData *idle_data;
18.341
18.342 - g_return_val_if_fail(gmyth_backend_info != NULL, FALSE);
18.343 + idle_data = (GMythUPnPIdleData *) data;
18.344 + priv = GMYTH_UPNP_GET_PRIVATE (idle_data->parent);
18.345
18.346 - /*
18.347 - * Create the cybergarage control point
18.348 - */
18.349 - gmyth_upnp->control_point = cg_upnp_controlpoint_new();
18.350 + g_signal_emit (idle_data->parent, signals[DEVICE_LOST], 0, idle_data->server);
18.351
18.352 - if (device_found_handler != NULL) {
18.353 - GMYTH_UPNP_GET_CLASS(gmyth_upnp)->device_found_handler =
18.354 - device_found_handler;
18.355 + g_object_unref (idle_data->server);
18.356 + g_free (idle_data);
18.357 + priv->idle_count--;
18.358
18.359 - cg_upnp_controlpoint_setdevicelistener(gmyth_upnp->control_point,
18.360 - _clinkc_mythtv_device_found);
18.361 + return FALSE;
18.362 +}
18.363 +
18.364 +static char*
18.365 +_xml_get_first_document_item (IXML_Document * doc,
18.366 + const gchar *item )
18.367 +{
18.368 + IXML_NodeList *node_list = NULL;
18.369 + IXML_Node *text_node = NULL;
18.370 + IXML_Node *tmp_node = NULL;
18.371 +
18.372 + gchar *ret = NULL;
18.373 +
18.374 + node_list = ixmlDocument_getElementsByTagName (doc,
18.375 + (char *) item);
18.376 +
18.377 + if (node_list)
18.378 + {
18.379 + if ((tmp_node = ixmlNodeList_item (node_list, 0)))
18.380 + {
18.381 + text_node = ixmlNode_getFirstChild (tmp_node);
18.382 +
18.383 + ret = strdup (ixmlNode_getNodeValue (text_node));
18.384 + }
18.385 }
18.386
18.387 - /*
18.388 - * Start the control point
18.389 - */
18.390 - if (cg_upnp_controlpoint_start(gmyth_upnp->control_point) == FALSE) {
18.391 - gmyth_debug("Unable to start UPnP control point!!!");
18.392 - ret = FALSE;
18.393 - goto done;
18.394 - } else {
18.395 - gmyth_debug("Control point started.");
18.396 - }
18.397 -
18.398 - done:
18.399 + if (node_list)
18.400 + ixmlNodeList_free (node_list);
18.401
18.402 return ret;
18.403 }
18.404
18.405 +
18.406 static void
18.407 -_gmyth_foreach_key_value(gchar * udn, gchar * dev,
18.408 - GList * upnp_servers_list)
18.409 +_append_mythtv_server_from_loation (GMythUPnP *self,
18.410 + const gchar *uuid,
18.411 + const gchar *location)
18.412 {
18.413 - GMythUPnPDevice *gmyth_upnp = g_malloc0(sizeof(GMythUPnPDevice));
18.414 + GMythUPnPPrivate *priv;
18.415 + gchar *base_url;
18.416 + gchar *end;
18.417
18.418 - GMythURI *uri = NULL;
18.419 - gmyth_upnp->uri = (gchar *) (dev);
18.420 - uri = gmyth_uri_new_with_value(gmyth_upnp->uri);
18.421 + priv = GMYTH_UPNP_GET_PRIVATE (self);
18.422
18.423 - gmyth_upnp->host = gmyth_uri_get_host(uri);
18.424 - gmyth_upnp->port = gmyth_uri_get_port(uri);
18.425 - gmyth_upnp->protocol = gmyth_uri_get_protocol(uri);
18.426 + base_url = g_strdup (location);
18.427 + end = g_strrstr (base_url, "/");
18.428 + if (end)
18.429 + {
18.430 + gint ret;
18.431 + IXML_Document *desc_doc;
18.432 + gchar *info_url;
18.433
18.434 - gmyth_debug("MythTV UPnP service [ %s, %d ].", gmyth_upnp->host,
18.435 - gmyth_upnp->port);
18.436 + end[0] = '\0';
18.437 + info_url = g_strconcat (base_url,
18.438 + "Myth/GetConnectionInfo",
18.439 + NULL);
18.440 + g_free (base_url);
18.441 + desc_doc = NULL;
18.442 + ret = UpnpDownloadXmlDoc (info_url, &desc_doc);
18.443 + if (ret != UPNP_E_SUCCESS)
18.444 + {
18.445 + g_warning ("Error obtaining device desc: %d", ret);
18.446 + }
18.447 + else
18.448 + {
18.449 + GMythBackendInfo *info;
18.450 + GMythUPnPIdleData *idle_data;
18.451
18.452 - upnp_servers_list = g_list_append(upnp_servers_list, gmyth_upnp);
18.453 + info = gmyth_backend_info_new_full (
18.454 + _xml_get_first_document_item (desc_doc, "Host"),
18.455 + _xml_get_first_document_item (desc_doc, "UserName"),
18.456 + _xml_get_first_document_item (desc_doc, "Password"),
18.457 + _xml_get_first_document_item (desc_doc, "Name"),
18.458 + // Current mythtv version not export port number
18.459 + 6543);
18.460
18.461 - if (uri != NULL) {
18.462 - g_object_unref(uri);
18.463 - uri = NULL;
18.464 + if (desc_doc)
18.465 + ixmlDocument_free (desc_doc);
18.466 +
18.467 + g_mutex_lock (priv->mutex);
18.468 + g_hash_table_insert (priv->servers,
18.469 + g_strdup (uuid),
18.470 + g_object_ref (info));
18.471 + g_mutex_unlock (priv->mutex);
18.472 + g_debug ("info url: %s", info_url);
18.473 + g_free (info_url);
18.474 +
18.475 + idle_data = g_new0 (GMythUPnPIdleData, 1);
18.476 + idle_data->parent = self;
18.477 + idle_data->server = g_object_ref (info);
18.478 +
18.479 + priv->idle_count++;
18.480 + g_idle_add (_idle_emit_device_found_signal, idle_data);
18.481 + }
18.482 }
18.483 +}
18.484 +
18.485 +static void
18.486 +_remove_mythtv_server (GMythUPnP *self,
18.487 + const gchar *uuid)
18.488 +{
18.489 + GMythUPnPPrivate *priv;
18.490 + GMythBackendInfo *info;
18.491 +
18.492 + priv = GMYTH_UPNP_GET_PRIVATE (self);
18.493 +
18.494 + g_mutex_lock (priv->mutex);
18.495 + info = g_hash_table_lookup (priv->servers, uuid);
18.496 + if (info)
18.497 + {
18.498 + GMythUPnPIdleData *idle_data;
18.499 +
18.500 + idle_data = g_new0 (GMythUPnPIdleData, 1);
18.501 + idle_data->parent = self;
18.502 + idle_data->server = g_object_ref (info);
18.503 +
18.504 + g_hash_table_remove (priv->servers, uuid);
18.505 +
18.506 + priv->idle_count++;
18.507 + g_idle_add (_idle_emit_device_lost_signal, idle_data);
18.508 + }
18.509 + g_mutex_unlock (priv->mutex);
18.510
18.511 }
18.512
18.513 -GList *
18.514 -gmyth_upnp_do_search_sync(GMythUPnP * gmyth_upnp)
18.515 +static GMythBackendInfo*
18.516 +_find_service_by_uuid (GMythUPnP *self,
18.517 + const gchar *uuid)
18.518 {
18.519 - GList *upnp_servers_list = NULL;
18.520 - guint iter_count = GMYTH_UPNP_MAX_SEARCHS;
18.521 - /*
18.522 - * gmyth_upnp->priv = GMYTH_UPNP_GET_PRIVATE( gmyth_upnp );
18.523 - */
18.524 + GMythUPnPPrivate *priv;
18.525 + GMythBackendInfo *info;
18.526
18.527 - while (gmyth_upnp->priv->upnp_dev_found == FALSE && (--iter_count > 0)) {
18.528 + priv = GMYTH_UPNP_GET_PRIVATE (self);
18.529 + info = NULL;
18.530
18.531 - gmyth_debug
18.532 - ("UPnP MythTV Client control point is searching MythTV AV Device server...\n");
18.533 + g_mutex_lock (priv->mutex);
18.534 + info = g_hash_table_lookup (priv->servers, uuid);
18.535 + g_mutex_unlock (priv->mutex);
18.536
18.537 - if (gmyth_upnp->control_point != NULL)
18.538 - cg_upnp_controlpoint_search(gmyth_upnp->control_point,
18.539 - "urn:schemas-upnp-org:service:ContentDirectory:1");
18.540 -
18.541 - /*
18.542 - * just to avoid clinkc pthread concurrency faults
18.543 - */
18.544 - cg_wait(1000);
18.545 -
18.546 - /*
18.547 - * discover if it was found
18.548 - */
18.549 - gmyth_upnp->priv->upnp_dev_found =
18.550 - gmyth_upnp_got_mythtv_service(gmyth_upnp->control_point,
18.551 - &gmyth_upnp->priv->udn,
18.552 - &gmyth_upnp->priv->
18.553 - mythtv_servers);
18.554 -
18.555 - } /* while */
18.556 -
18.557 - if (gmyth_upnp->priv->upnp_dev_found) {
18.558 -
18.559 - gmyth_debug("Found UPnP MythTV AV Device...\n");
18.560 -
18.561 - g_hash_table_foreach(gmyth_upnp->priv->mythtv_servers,
18.562 - (GHFunc) _gmyth_foreach_key_value,
18.563 - upnp_servers_list);
18.564 -
18.565 - }
18.566 - /*
18.567 - * if - found UPnP device
18.568 - */
18.569 - return upnp_servers_list;
18.570 + return info;
18.571 }
18.572
18.573 -/**
18.574 - * Checks if got the MythTV service in the Control Point's device list.
18.575 - */
18.576 -static gboolean
18.577 -gmyth_upnp_got_mythtv_service(CgUpnpControlPoint * controlPt, gchar ** udn,
18.578 - GHashTable ** mythtv_servers_lst)
18.579 +static int
18.580 +_upnp_event_handler (Upnp_EventType e_type,
18.581 + void* e,
18.582 + void* data)
18.583 {
18.584 + g_return_val_if_fail (singleton != NULL, 0);
18.585
18.586 - g_return_val_if_fail(mythtv_servers_lst != NULL, FALSE);
18.587 - g_return_val_if_fail(controlPt != NULL, FALSE);
18.588 + switch (e_type)
18.589 + {
18.590 + case UPNP_DISCOVERY_ADVERTISEMENT_ALIVE:
18.591 + case UPNP_DISCOVERY_SEARCH_RESULT:
18.592 + {
18.593 + struct Upnp_Discovery *d_event;
18.594
18.595 - *mythtv_servers_lst = g_hash_table_new(g_str_hash, g_str_equal);
18.596 + d_event = (struct Upnp_Discovery *) e;
18.597
18.598 - const gchar *mythtvFriendlyName = "Myth";
18.599 - /*
18.600 - * begin assertion about the size of discovered devices
18.601 - */
18.602 - gint numDevices =
18.603 - cg_upnp_controlpoint_getndevices(controlPt);
18.604 - gint cntDevs = 0;
18.605 - CgUpnpDevice *childDev;
18.606 - gchar *devName = NULL,
18.607 - *dev_url = NULL;
18.608 - gboolean upnp_dev_found = FALSE;
18.609 + g_debug ("TYPE: %s", d_event->ServiceType);
18.610
18.611 - gmyth_debug("UPnP MythTV AV Device list size = %d\n", numDevices);
18.612 + if (strcmp (d_event->ServiceType, UPNP_SERVICE_FILTER) != 0)
18.613 + {
18.614 + g_debug ("invalid device : %s", d_event->DeviceId);
18.615 + break;
18.616 + }
18.617
18.618 - for (childDev = cg_upnp_controlpoint_getdevices(controlPt);
18.619 - childDev != NULL; childDev = cg_upnp_device_next(childDev)) {
18.620 - devName = cg_upnp_device_getfriendlyname(childDev);
18.621 - dev_url = cg_upnp_device_getlocationfromssdppacket(childDev);
18.622 - gmyth_debug
18.623 - ("Device's friendly name = %s, and device's URL = %s\n",
18.624 - devName, dev_url);
18.625 - if ((g_strstr_len(devName, strlen(devName), mythtvFriendlyName) !=
18.626 - NULL) == TRUE) {
18.627 - upnp_dev_found = TRUE;
18.628 - /*
18.629 - * stores the last UDN number ID
18.630 - */
18.631 - *udn = cg_upnp_device_getudn(childDev);
18.632 - /*
18.633 - *mythtv_servers_lst = g_list_append( *mythtv_servers_lst, dev_url ); */
18.634 - g_hash_table_insert(*mythtv_servers_lst, (gpointer) * udn,
18.635 - (gpointer) dev_url);
18.636 +
18.637 + if (d_event->ErrCode != UPNP_E_SUCCESS)
18.638 + {
18.639 + g_warning ("Error in Discovery: %d", d_event->ErrCode);
18.640 + break;
18.641 + }
18.642 +
18.643 + if (_find_service_by_uuid (GMYTH_UPNP (singleton), d_event->DeviceId) == NULL)
18.644 + _append_mythtv_server_from_loation (singleton,
18.645 + d_event->DeviceId,
18.646 + d_event->Location);
18.647 +
18.648 +
18.649 + break;
18.650 }
18.651 - ++cntDevs;
18.652 + case UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE:
18.653 + {
18.654 + GMythUPnPPrivate *priv;
18.655 + struct Upnp_Discovery *d_event;
18.656 +
18.657 + d_event = (struct Upnp_Discovery *) e;
18.658 + if (d_event->ErrCode != UPNP_E_SUCCESS)
18.659 + {
18.660 + g_warning ("Error in Discovery: %d", d_event->ErrCode);
18.661 + break;
18.662 + }
18.663 +
18.664 + priv = GMYTH_UPNP_GET_PRIVATE (singleton);
18.665 + _remove_mythtv_server (singleton,
18.666 + d_event->DeviceId);
18.667 +
18.668 + break;
18.669 +
18.670 + }
18.671 + default:
18.672 + g_debug ("No handle event: %d", e_type);
18.673 + break;
18.674 }
18.675
18.676 - if (upnp_dev_found == TRUE) {
18.677 - gmyth_debug
18.678 - ("MythTV AV Device found, from a total of %d devices.\n",
18.679 - cntDevs);
18.680 - } else if (numDevices == cntDevs) {
18.681 - gmyth_debug
18.682 - ("MythTV AV Device not found, from a total of %d devices.\n",
18.683 - cntDevs);
18.684 - } else {
18.685 - gmyth_debug
18.686 - ("Control Point's MythTV AV Device count is wrong: iterated over %d devices, but there are %d registered devices.\n",
18.687 - cntDevs, numDevices);
18.688 - }
18.689 -
18.690 - return upnp_dev_found;
18.691 -
18.692 + return 0;
18.693 }
18.694
18.695 -/** Gets the UPnP AV devices server's list associated to this upnp.
18.696 - *
18.697 - * @return The GHashTable* containing all the URI values for each recognized UPnP device,
18.698 - * or NULL if it couldn't recognize any MythTV AV device.
18.699 - */
18.700 -GHashTable *
18.701 -gmyth_upnp_get_servers(GMythUPnP * gmyth_upnp)
18.702 -{
18.703 -
18.704 - if (NULL == gmyth_upnp || NULL == gmyth_upnp->priv->mythtv_servers) {
18.705 - gmyth_debug("[%s] GMythUPnP has no MythTV servers recognized.\n",
18.706 - __FUNCTION__);
18.707 - return NULL;
18.708 - }
18.709 -
18.710 - return gmyth_upnp->priv->mythtv_servers;
18.711 -}
18.712 -
18.713 -/** Gets the GMythBackendInfo object associated to this upnp.
18.714 - *
18.715 - * @return The GMythBackendInfo object currently valid or NULL if the settings
18.716 - * were not opened.
18.717 - */
18.718 -GMythBackendInfo *
18.719 -gmyth_upnp_get_backend_info(GMythUPnP * gmyth_upnp)
18.720 -{
18.721 -
18.722 - if (NULL == gmyth_upnp || NULL == gmyth_upnp->backend_info) {
18.723 - gmyth_debug("[%s] GMythUPnP not initialized\n", __FUNCTION__);
18.724 - return NULL;
18.725 - }
18.726 -
18.727 - return gmyth_upnp->backend_info;
18.728 -}
19.1 --- a/gmyth-upnp/src/gmyth_upnp.h Fri Feb 01 19:22:17 2008 +0000
19.2 +++ b/gmyth-upnp/src/gmyth_upnp.h Fri Feb 01 22:17:33 2008 +0000
19.3 @@ -35,7 +35,6 @@
19.4 #include <stdio.h>
19.5 #include <string.h>
19.6
19.7 -#include <cybergarage/upnp/cupnp.h>
19.8 #include <gmyth/gmyth_backendinfo.h>
19.9
19.10 G_BEGIN_DECLS
19.11 @@ -47,7 +46,7 @@
19.12 #define GMYTH_UPNP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GMYTH_UPNP_TYPE, GMythUPnPClass))
19.13 typedef struct _GMythUPnP GMythUPnP;
19.14 typedef struct _GMythUPnPClass GMythUPnPClass;
19.15 -typedef struct _GMythUPnPPrivate GMythUPnPPrivate;
19.16 +typedef struct _GMythUPnPDevice GMythUPnPDevice;
19.17
19.18 /****************************************
19.19 * Data Type
19.20 @@ -59,59 +58,25 @@
19.21 GMYTH_UPNP_DEVICE_REMOVED
19.22 } GMythUPnPDeviceStatus;
19.23
19.24 -typedef void (*GMythUPnPDeviceListener) (GMythUPnP * gmyth_upnp,
19.25 - GMythUPnPDeviceStatus status,
19.26 - gchar * dev);
19.27 +struct _GMythUPnPDevice {
19.28 + gchar *uri;
19.29 + gchar *host;
19.30 + gint port;
19.31 + gchar *protocol;
19.32 +};
19.33 +
19.34
19.35 struct _GMythUPnPClass {
19.36 GObjectClass parent_class;
19.37 -
19.38 - /*
19.39 - * callbacks
19.40 - */
19.41 - guint device_found_handler_signal_id;
19.42 -
19.43 - GMythUPnPDeviceListener device_found_handler;
19.44 -
19.45 - /*
19.46 - * no one for now
19.47 - */
19.48 };
19.49
19.50 -struct _GMythUPnPDevice {
19.51 - gchar *uri;
19.52 - gchar *host;
19.53 - gint port;
19.54 - gchar *protocol;
19.55 +struct _GMythUPnP {
19.56 + GObject parent;
19.57 };
19.58
19.59 -typedef struct _GMythUPnPDevice GMythUPnPDevice;
19.60 -
19.61 -struct _GMythUPnP {
19.62 -
19.63 - GObject parent;
19.64 - GMythUPnPPrivate *priv;
19.65 -
19.66 -
19.67 - CgUpnpControlPoint *control_point;
19.68 -
19.69 - gchar *udn;
19.70 -
19.71 - GMythBackendInfo *backend_info;
19.72 -
19.73 - gboolean upnp_dev_found;
19.74 -};
19.75 -
19.76 -GType gmyth_upnp_get_type(void);
19.77 -GMythUPnP *gmyth_upnp_new(GMythBackendInfo * gmyth_backend_info,
19.78 - GMythUPnPDeviceListener handler);
19.79 -
19.80 -GList *gmyth_upnp_do_search_sync(GMythUPnP * gmyth_upnp);
19.81 -
19.82 -GMythBackendInfo *gmyth_upnp_get_backend_info(GMythUPnP * gmyth_upnp);
19.83 -
19.84 -gchar *gmyth_upnp_device_status_to_string(GMythUPnPDeviceStatus
19.85 - status);
19.86 +GType gmyth_upnp_get_type (void);
19.87 +GMythUPnP* gmyth_upnp_get_instance (void);
19.88 +void gmyth_upnp_search (GMythUPnP * gmyth_upnp);
19.89
19.90 G_END_DECLS
19.91 #endif /* _GMYTH_UPNP_H_ */
20.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
20.2 +++ b/gmyth-upnp/test/Makefile.am Fri Feb 01 22:17:33 2008 +0000
20.3 @@ -0,0 +1,18 @@
20.4 +LDADD = \
20.5 + $(GLIB_LIBS) \
20.6 + $(LIBUPNP_LIBS) \
20.7 + $(top_srcdir)/src/.libs/libgmythupnp.la
20.8 +
20.9 +INCLUDES = \
20.10 + -I$(top_srcdir)/src \
20.11 + $(GLIB_CFLAGS) \
20.12 + $(GOBJECT_CFLAGS) \
20.13 + $(LIBUPNP_CFLAGS)
20.14 +
20.15 +bin_PROGRAMS = \
20.16 + test
20.17 +
20.18 +test_SOURCES = \
20.19 + main.c
20.20 +
20.21 +CLEANFILES = $(BUILT_SOURCES)
21.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
21.2 +++ b/gmyth-upnp/test/main.c Fri Feb 01 22:17:33 2008 +0000
21.3 @@ -0,0 +1,49 @@
21.4 +#include <glib.h>
21.5 +
21.6 +#include "gmyth_upnp.h"
21.7 +
21.8 +static void
21.9 +_device_found_cb (GMythUPnP *upnp,
21.10 + GMythBackendInfo *info,
21.11 + gpointer data)
21.12 +{
21.13 + g_debug ("BACKEND FOUND: %s", info->hostname);
21.14 +}
21.15 +
21.16 +static void
21.17 +_device_lost_cb (GMythUPnP *upnp,
21.18 + GMythBackendInfo *info,
21.19 + gpointer data)
21.20 +{
21.21 + g_debug ("BACKEND LOST: %s", info->hostname);
21.22 +}
21.23 +
21.24 +
21.25 +
21.26 +int main (int argc, char** argv)
21.27 +{
21.28 + GMythUPnP *o;
21.29 + GMainLoop *loop;
21.30 +
21.31 + g_type_init ();
21.32 + g_thread_init (NULL);
21.33 +
21.34 + o = gmyth_upnp_get_instance ();
21.35 + g_signal_connect (o,
21.36 + "device-found",
21.37 + G_CALLBACK (_device_found_cb),
21.38 + NULL);
21.39 + g_signal_connect (o,
21.40 + "device-lost",
21.41 + G_CALLBACK (_device_lost_cb),
21.42 + NULL);
21.43 +
21.44 +
21.45 + gmyth_upnp_search (o);
21.46 +
21.47 + loop = g_main_loop_new (NULL, FALSE);
21.48 + g_main_loop_run (loop);
21.49 + g_object_unref (o);
21.50 +
21.51 + return 0;
21.52 +}