port to meson

This commit is contained in:
Wim Taymans 2016-09-26 12:15:52 +02:00
parent 924824d0a3
commit 67dd3adb87
69 changed files with 1056 additions and 999 deletions

View file

@ -1,61 +0,0 @@
# This file is part of Pinos.
#
# Pinos is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Pinos is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Pinos; if not, see <http://www.gnu.org/licenses/>.
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = \
bootstrap.sh \
git-version-gen \
LICENSE \
GPL \
LGPL \
PROTOCOL \
README
SUBDIRS = pinos man po
DIST_SUBDIRS = pinos man po
MAINTAINERCLEANFILES =
noinst_DATA =
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = pkgconfig/libpinos-$(PINOS_MAJORMINOR).pc
DISTCLEANFILES = pkgconfig/libpinos-$(PINOS_MAJORMINOR).pc
eolspace:
find \( -name '*.c' -o -name '*.h' -o -name 'Makefile.am' \) -exec perl -i -pe 's/\s+\n$$/\1\n/;' \{\} \;
untabify:
find \( -name '*.c' -o -name '*.h' \) -exec perl -i -pe 's/\t/ /g;' \{\} \;
fedora-snapshot: dist
cp $(distdir).tar.gz $$HOME/git.fedora/pinos/$(distdir).tar.gz
dist-hook:
echo $(VERSION) > $(distdir)/.tarball-version
echo $(VERSION) > $(distdir)/.version
.PHONY: distcleancheck
# see git-version-gen
BUILT_SOURCES = $(top_srcdir)/.version
$(top_srcdir)/.version:
echo $(VERSION) > $@-t && mv $@-t $@
DISTCLEANFILES += \
po/.intltool-merge-cache

View file

@ -1,55 +0,0 @@
#!/usr/bin/env bash
# This file is part of Pinos
#
# Pinos is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Pinos is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Pinos; if not, see <http://www.gnu.org/licenses/>.
case $(uname) in
*Darwin*)
LIBTOOLIZE="glibtoolize"
;;
esac
test "x$LIBTOOLIZE" = "x" && LIBTOOLIZE=libtoolize
if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then
cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit && \
chmod +x .git/hooks/pre-commit && \
echo "Activated pre-commit hook."
fi
if [ -f .tarball-version ]; then
echo "Marking tarball version as modified."
echo -n `cat .tarball-version | sed 's/-rebootstrapped$//'`-rebootstrapped >.tarball-version
fi
# We check for this here, because if pkg-config is not found in the
# system, it's likely that the pkg.m4 macro file is also not present,
# which will make PKG_PROG_PKG_CONFIG be undefined and the generated
# configure file faulty.
if ! pkg-config --version &>/dev/null; then
echo "pkg-config is required to bootstrap this program" &>/dev/null
DIE=1
fi
# Other necessary programs
intltoolize --version >/dev/null || DIE=1
test "$DIE" = 1 && exit 1
autopoint --force
AUTOPOINT='intltoolize --automake --copy' autoreconf --force --install --verbose
if test "x$NOCONFIGURE" = "x"; then
CFLAGS="$CFLAGS -g -O0" ./configure --sysconfdir=/etc --localstatedir=/var --enable-force-preopen "$@"
make clean
fi

447
config.h.meson Normal file
View file

@ -0,0 +1,447 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define if building universal (internal helper macro) */
#mesondefine AC_APPLE_UNIVERSAL_BUILD
/* poll doesn't work on devices */
#mesondefine BROKEN_POLL
/* Define to 1 if translation of program messages to the user's native
language is requested. */
#mesondefine ENABLE_NLS
/* Subunit protocol result output */
#mesondefine ENABLE_SUBUNIT
/* gettext package name */
#mesondefine GETTEXT_PACKAGE
/* The GIO library directory. */
#mesondefine GIO_LIBDIR
/* The GIO modules directory. */
#mesondefine GIO_MODULE_DIR
/* GStreamer API Version */
#mesondefine GST_API_VERSION
/* data dir */
#mesondefine GST_DATADIR
/* Define if option parsing is disabled */
#mesondefine GST_DISABLE_OPTION_PARSING
/* Define if pipeline parsing code is disabled */
#mesondefine GST_DISABLE_PARSE
/* Extra platform specific plugin suffix */
#mesondefine GST_EXTRA_MODULE_SUFFIX
/* macro to use to show function name */
#mesondefine GST_FUNCTION
/* Defined if gcov is enabled to force a rebuild due to config.h changing */
#mesondefine GST_GCOV_ENABLED
/* Defined when registry scanning through fork is unsafe */
#mesondefine GST_HAVE_UNSAFE_FORK
/* Default errorlevel to use */
#mesondefine GST_LEVEL_DEFAULT
/* GStreamer license */
#mesondefine GST_LICENSE
/* package name in plugins */
#mesondefine GST_PACKAGE_NAME
/* package origin */
#mesondefine GST_PACKAGE_ORIGIN
/* GStreamer package release date/time for plugins as YYYY-MM-DD */
#mesondefine GST_PACKAGE_RELEASE_DATETIME
/* Define if static plugins should be built */
#mesondefine GST_PLUGIN_BUILD_STATIC
/* location of the installed gst-plugin-scanner */
#mesondefine GST_PLUGIN_SCANNER_INSTALLED
#mesondefine GST_PTP_HELPER_INSTALLED
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
#mesondefine HAVE_CFLOCALECOPYCURRENT
/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
the CoreFoundation framework. */
#mesondefine HAVE_CFPREFERENCESCOPYAPPVALUE
/* Define to 1 if you have the `clock_gettime' function. */
#mesondefine HAVE_CLOCK_GETTIME
/* Define if the target CPU is an Alpha */
#mesondefine HAVE_CPU_ALPHA
/* Define if the target CPU is an ARM */
#mesondefine HAVE_CPU_ARM
/* Define if the target CPU is a CRIS */
#mesondefine HAVE_CPU_CRIS
/* Define if the target CPU is a CRISv32 */
#mesondefine HAVE_CPU_CRISV32
/* Define if the target CPU is a HPPA */
#mesondefine HAVE_CPU_HPPA
/* Define if the target CPU is an x86 */
#mesondefine HAVE_CPU_I386
/* Define if the target CPU is a IA64 */
#mesondefine HAVE_CPU_IA64
/* Define if the target CPU is a M68K */
#mesondefine HAVE_CPU_M68K
/* Define if the target CPU is a MIPS */
#mesondefine HAVE_CPU_MIPS
/* Define if the target CPU is a PowerPC */
#mesondefine HAVE_CPU_PPC
/* Define if the target CPU is a 64 bit PowerPC */
#mesondefine HAVE_CPU_PPC64
/* Define if the target CPU is a S390 */
#mesondefine HAVE_CPU_S390
/* Define if the target CPU is a SPARC */
#mesondefine HAVE_CPU_SPARC
/* Define if the target CPU is a x86_64 */
#mesondefine HAVE_CPU_X86_64
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
#mesondefine HAVE_DCGETTEXT
/* Defined if we have dladdr () */
#mesondefine HAVE_DLADDR
/* Define to 1 if you have the <dlfcn.h> header file. */
#mesondefine HAVE_DLFCN_H
/* Define to 1 if you have the `fgetpos' function. */
#mesondefine HAVE_FGETPOS
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
#mesondefine HAVE_FSEEKO
/* Define to 1 if you have the `fsetpos' function. */
#mesondefine HAVE_FSETPOS
/* Define to 1 if you have the `ftello' function. */
#mesondefine HAVE_FTELLO
/* defined if the compiler implements __func__ */
#mesondefine HAVE_FUNC
/* defined if the compiler implements __FUNCTION__ */
#mesondefine HAVE_FUNCTION
/* Define to 1 if you have the `getpagesize' function. */
#mesondefine HAVE_GETPAGESIZE
/* Define if the GNU gettext() function is already present or preinstalled. */
#mesondefine HAVE_GETTEXT
/* Have GMP library */
#mesondefine HAVE_GMP
/* Define to 1 if you have the `gmtime_r' function. */
#mesondefine HAVE_GMTIME_R
/* Have GSL library */
#mesondefine HAVE_GSL
/* Define if you have the iconv() function and it works. */
#mesondefine HAVE_ICONV
/* Define to 1 if the system has the type `intmax_t'. */
#mesondefine HAVE_INTMAX_T
/* Define to 1 if you have the <inttypes.h> header file. */
#mesondefine HAVE_INTTYPES_H
/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
declares uintmax_t. */
#mesondefine HAVE_INTTYPES_H_WITH_UINTMAX
/* Define to 1 if you have the `localtime_r' function. */
#mesondefine HAVE_LOCALTIME_R
/* Define to 1 if the system has the type long long */
#mesondefine HAVE_LONG_LONG
/* Define to 1 if the system has the type `long long int'. */
#mesondefine HAVE_LONG_LONG_INT
/* Define to 1 if you have the <memory.h> header file. */
#mesondefine HAVE_MEMORY_H
/* Define to 1 if you have a working `mmap' system call. */
#mesondefine HAVE_MMAP
/* Have a monotonic clock */
#mesondefine HAVE_MONOTONIC_CLOCK
/* Defined if compiling for OSX */
#mesondefine HAVE_OSX
/* Define to 1 if you have the `poll' function. */
#mesondefine HAVE_POLL
/* Define to 1 if you have the <poll.h> header file. */
#mesondefine HAVE_POLL_H
/* Define to 1 if you have the `posix_memalign' function. */
#mesondefine HAVE_POSIX_MEMALIGN
/* Have posix timers */
#mesondefine HAVE_POSIX_TIMERS
/* Define to 1 if you have the `ppoll' function. */
#mesondefine HAVE_PPOLL
/* defined if the compiler implements __PRETTY_FUNCTION__ */
#mesondefine HAVE_PRETTY_FUNCTION
/* Define to 1 if you have the <process.h> header file. */
#mesondefine HAVE_PROCESS_H
/* Define to 1 if you have the `pselect' function. */
#mesondefine HAVE_PSELECT
/* Define if you have POSIX threads libraries and header files. */
#mesondefine HAVE_PTHREAD
/* Have PTHREAD_PRIO_INHERIT. */
#mesondefine HAVE_PTHREAD_PRIO_INHERIT
/* Define to 1 if the system has the type `ptrdiff_t'. */
#mesondefine HAVE_PTRDIFF_T
/* Define if RDTSC is available */
#mesondefine HAVE_RDTSC
/* Define to 1 if you have the `sigaction' function. */
#mesondefine HAVE_SIGACTION
/* Define to 1 if you have the <stdint.h> header file. */
#mesondefine HAVE_STDINT_H
/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
uintmax_t. */
#mesondefine HAVE_STDINT_H_WITH_UINTMAX
/* Define to 1 if you have the <stdio_ext.h> header file. */
#mesondefine HAVE_STDIO_EXT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#mesondefine HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#mesondefine HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#mesondefine HAVE_STRING_H
/* Define to 1 if you have the <sys/param.h> header file. */
#mesondefine HAVE_SYS_PARAM_H
/* Define to 1 if you have the <sys/poll.h> header file. */
#mesondefine HAVE_SYS_POLL_H
/* Define to 1 if you have the <sys/prctl.h> header file. */
#mesondefine HAVE_SYS_PRCTL_H
/* Define to 1 if you have the <sys/socket.h> header file. */
#mesondefine HAVE_SYS_SOCKET_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#mesondefine HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/times.h> header file. */
#mesondefine HAVE_SYS_TIMES_H
/* Define to 1 if you have the <sys/time.h> header file. */
#mesondefine HAVE_SYS_TIME_H
/* Define to 1 if you have the <sys/types.h> header file. */
#mesondefine HAVE_SYS_TYPES_H
/* Define to 1 if you have the <sys/utsname.h> header file. */
#mesondefine HAVE_SYS_UTSNAME_H
/* Define to 1 if you have the <sys/wait.h> header file. */
#mesondefine HAVE_SYS_WAIT_H
/* Have tm_gmtoff field in struct tm */
#mesondefine HAVE_TM_GMTOFF
/* Define to 1 if you have the <ucontext.h> header file. */
#mesondefine HAVE_UCONTEXT_H
/* Have __uint128_t type */
#mesondefine HAVE_UINT128_T
/* defined if unaligned memory access works correctly */
#mesondefine HAVE_UNALIGNED_ACCESS
/* Define to 1 if you have the <unistd.h> header file. */
#mesondefine HAVE_UNISTD_H
/* Define to 1 if the system has the type `unsigned long long int'. */
#mesondefine HAVE_UNSIGNED_LONG_LONG_INT
/* Define if valgrind should be used */
#mesondefine HAVE_VALGRIND
/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
#mesondefine HAVE_VALGRIND_VALGRIND_H
/* Defined if compiling for Windows */
#mesondefine HAVE_WIN32
/* Define to 1 if you have the <winsock2.h> header file. */
#mesondefine HAVE_WINSOCK2_H
/* the host CPU */
#mesondefine HOST_CPU
/* library dir */
#mesondefine LIBDIR
/* gettext locale dir */
#mesondefine LOCALEDIR
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#mesondefine LT_OBJDIR
/* Memory alignment to use */
#mesondefine MEMORY_ALIGNMENT
/* Memory alignment by malloc default */
#mesondefine MEMORY_ALIGNMENT_MALLOC
/* Memory alignment by pagesize */
#mesondefine MEMORY_ALIGNMENT_PAGESIZE
/* Name of package */
#mesondefine PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#mesondefine PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#mesondefine PACKAGE_NAME
/* Define to the full name and version of this package. */
#mesondefine PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#mesondefine PACKAGE_TARNAME
/* Define to the home page for this package. */
#mesondefine PACKAGE_URL
/* Define to the version of this package. */
#mesondefine PACKAGE_VERSION
/* directory where plugins are located */
#mesondefine PLUGINDIR
/* directory where plugins are located */
#mesondefine MODULEDIR
/* directory where config files are located */
#mesondefine PINOS_CONFIG_DIR
/* Define to necessary symbol if this constant uses a non-standard name on
your system. */
#mesondefine PTHREAD_CREATE_JOINABLE
/* The size of `char', as computed by sizeof. */
#mesondefine SIZEOF_CHAR
/* The size of `int', as computed by sizeof. */
#mesondefine SIZEOF_INT
/* The size of `long', as computed by sizeof. */
#mesondefine SIZEOF_LONG
/* The size of `short', as computed by sizeof. */
#mesondefine SIZEOF_SHORT
/* The size of `void*', as computed by sizeof. */
#mesondefine SIZEOF_VOIDP
/* Define to 1 if you have the ANSI C header files. */
#mesondefine STDC_HEADERS
/* the target CPU */
#mesondefine TARGET_CPU
/* Define if we should poison deallocated memory */
#mesondefine USE_POISONING
/* Version number of package */
#mesondefine VERSION
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
# if defined __BIG_ENDIAN__
# define WORDS_BIGENDIAN 1
# endif
#else
# ifndef WORDS_BIGENDIAN
# undef WORDS_BIGENDIAN
# endif
#endif
/* Enable large inode numbers on Mac OS X 10.5. */
#ifndef _DARWIN_USE_64_BIT_INODE
# define _DARWIN_USE_64_BIT_INODE 1
#endif
/* Number of bits in a file offset, on hosts where this is settable. */
#mesondefine _FILE_OFFSET_BITS
/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
#mesondefine _LARGEFILE_SOURCE
/* Define for large files, on AIX-style hosts. */
#mesondefine _LARGE_FILES
/* We need at least WinXP SP2 for __stat64 */
#mesondefine __MSVCRT_VERSION__
/* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
not define. */
#mesondefine intmax_t
/* Define to `unsigned int' if <sys/types.h> does not define. */
#mesondefine size_t
#mesondefine HAVE_GETPID
#mesondefine HAVE__GETPID
#mesondefine HAVE_DECL_STRDUP
#mesondefine HAVE__STRDUP
#mesondefine HAVE_MKSTEMP
#mesondefine HAVE_FORK
#mesondefine HAVE_ALARM
#mesondefine HAVE_DECL_LOCALTIME_R
#mesondefine HAVE_DECL_STRSIGNAL

View file

@ -1,313 +0,0 @@
AC_PREREQ(2.63)
AC_INIT(pinos, 0.1)
AC_CONFIG_SRCDIR([pinos/daemon/main.c])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability subdir-objects silent-rules color-tests dist-xz tar-ustar])
AS_IF([! test -n "$VERSION"], [
AC_MSG_ERROR([git-version-gen failed])
])
m4_define(pinos_major, `echo $VERSION | cut -d. -f1 | cut -d- -f1`)
m4_define(pinos_minor, `echo $VERSION | cut -d. -f2 | cut -d- -f1`)
AC_SUBST(PINOS_MAJOR, pinos_major)
AC_SUBST(PINOS_MINOR, pinos_minor)
AC_SUBST(PINOS_MAJORMINOR, pinos_major.pinos_minor)
AC_SUBST(PINOS_API_VERSION, 0)
AC_SUBST(PINOS_PROTOCOL_VERSION, 0)
# The stable ABI for client applications, for the version info x:y:z
# always will hold y=z
AC_SUBST(LIBPINOS_VERSION_INFO, [0:0:0])
dnl sets host_* variables
AC_CANONICAL_HOST
AC_DEFINE_UNQUOTED([CANONICAL_HOST], "$host", [Canonical host string.])
AC_CHECK_PROG([STOW], [stow], [yes], [no])
AS_IF([test "x$STOW" = "xyes" && test -d /usr/local/stow], [
AC_MSG_NOTICE([*** Found /usr/local/stow: default install prefix set to /usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION} ***])
ac_default_prefix="/usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION}"
])
AM_SILENT_RULES([yes])
#### Checks for programs. ####
# mkdir -p
AC_PROG_MKDIR_P
# ln -s
AC_PROG_LN_S
# CC
AC_PROG_CC
AC_PROG_CC_C99
AM_PROG_CC_C_O
# Only required if you want the WebRTC canceller -- no runtime dep on
# libstdc++ otherwise
AC_PROG_CXX
AC_PROG_GCC_TRADITIONAL
AC_USE_SYSTEM_EXTENSIONS
# M4
AC_CHECK_PROGS([M4], gm4 m4, no)
AS_IF([test "x$M4" = "xno"], AC_MSG_ERROR([m4 missing]))
# pkg-config
PKG_PROG_PKG_CONFIG
# gettext
if test "x$enable_nls" != "xno"; then
IT_PROG_INTLTOOL([0.35.0])
AM_GNU_GETTEXT_VERSION([0.18.1])
AM_GNU_GETTEXT([external])
GETTEXT_PACKAGE=pinos
AC_SUBST([GETTEXT_PACKAGE])
AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package])
pinoslocaledir='${prefix}/${DATADIRNAME}/locale'
AX_DEFINE_DIR(PINOS_LOCALEDIR, pinoslocaledir, [Gettext locale dir])
else
# workaround till an intltool m4 bug is fixed upstream
# (https://bugs.launchpad.net/intltool/+bug/904647)
USE_NLS=no
AC_SUBST(USE_NLS)
fi
AC_ARG_WITH([module-dir],
AS_HELP_STRING([--with-module-dir=PATH],
[Directory where modules are located (default is ${libdir}/pinos/modules]),
[moduledir=$withval],
[moduledir="${libdir}/pinos-${PINOS_MAJORMINOR}/modules"])
AC_SUBST(moduledir)
AX_DEFINE_DIR(MODULEDIR, moduledir, [Directory where modules are located])
#### Compiler flags ####
AX_APPEND_COMPILE_FLAGS(
[-Wall -W -Wextra -pipe -Wno-long-long -Wno-overlength-strings -Wunsafe-loop-optimizations -Wundef -Wformat=2 -Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs -Wformat-nonliteral -Wold-style-definition -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align -Wstrict-aliasing -Wwrite-strings -Wno-unused-parameter -ffast-math -fno-common -fdiagnostics-show-option -fdiagnostics-color=auto],
[], [-pedantic -Werror])
AS_CASE([" $CFLAGS "], [*" -O0 "*], [], [
# Don't append the flag if it already exists.
# Only enable fastpath asserts when doing a debug build, e.g. from bootstrap.sh.
AX_APPEND_FLAG([-DFASTPATH], [CPPFLAGS])
# Cannot use AX_APPEND_FLAG here, as it assumes no space inside the added flags.
# Cannot append flags with AX_APPEND_FLAG one by one, as this would destroy all fortifications
# if CPPFLAGS already contain -D_FORTIFY_SOURCE=2.
# Warnings to be aware of that appear with -D_FORTIFY_SOURCE=2 but without -U_FORTIFY_SOURCE:
# On Fedora 20 with -O0: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp]
# On Gentoo with -O2: "_FORTIFY_SOURCE" redefined [enabled by default]
AS_VAR_APPEND([CPPFLAGS],[" -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2"])
])
#### Linker flags ####
# Check whether the linker supports the -version-script option.
# The Make variable $(srcdir) needs to be in the LDFLAGS in that form,
# so that it is expanded the right way in every subdir.
AX_CHECK_LINK_FLAG(["-Wl,-version-script=${srcdir}/pinos/map-file"],
[VERSIONING_LDFLAGS='-Wl,-version-script=$(abs_top_srcdir)/pinos/map-file'])
AC_SUBST([VERSIONING_LDFLAGS])
# Use immediate (now) bindings; avoids the funky re-call in itself.
# The -z now syntax is lifted from Sun's linker and works with GNU's too, other linkers might be added later.
AX_APPEND_LINK_FLAGS([-Wl,-z,now], [IMMEDIATE_LDFLAGS])
AC_SUBST([IMMEDIATE_LDFLAGS])
# On ELF systems we don't want the libraries to be unloaded since we don't clean them up properly,
# so we request the nodelete flag to be enabled.
# On other systems, we don't really know how to do that, but it's welcome if somebody can tell.
AX_APPEND_LINK_FLAGS([-Wl,-z,nodelete], [NODELETE_LDFLAGS])
AC_SUBST([NODELETE_LDFLAGS])
# Check for the proper way to build libraries that have no undefined symbols
case $host in
# FreeBSD (et al.) does not complete linking for shared objects when pthreads
# are requested, as different implementations are present.
*-freebsd* | *-openbsd*) ;;
*)
for possible_flag in "-Wl,--no-undefined" "-Wl,-z,defs"; do
AX_CHECK_LINK_FLAG([$possible_flag], [NOUNDEFINED_LDFLAGS="$possible_flag"; break])
done
;;
esac
AC_SUBST([NOUNDEFINED_LDFLAGS])
#### libtool stuff ####
LT_PREREQ(2.4)
LT_INIT([dlopen win32-dll disable-static])
dnl As an extra safety device, check for lt_dladvise_init() which is
dnl only implemented in libtool 2.x, and refine as we go if we have
dnl refined requirements.
dnl
dnl Check the header files first since the system may have a
dnl libltdl.so for runtime, but no headers, and we want to bail out as
dnl soon as possible.
dnl
dnl We don't need any special variable for this though, since the user
dnl can give the proper place to find libltdl through the standard
dnl variables like LDFLAGS and CPPFLAGS.
AC_CHECK_HEADER([ltdl.h],
[AC_CHECK_LIB([ltdl], [lt_dladvise_init], [LIBLTDL=-lltdl], [LIBLTDL=])],
[LIBLTDL=])
AS_IF([test "x$LIBLTDL" = "x"],
[AC_MSG_ERROR([Unable to find libltdl version 2. Makes sure you have libtool 2.4 or later installed.])])
AC_SUBST([LIBLTDL])
#### Pinos runtime environment ####
AC_SUBST(pinosconfdir, ["${sysconfdir}/pinos"])
AX_DEFINE_DIR(PINOS_CONFIG_DIR, pinosconfdir, [Directory for configuration files])
###################################
# External libraries #
###################################
#### [lib]iconv ####
AM_ICONV
#### Valgrind (optional) ####
AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h])
#### GLib ####
PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.32, dummy=yes,
AC_MSG_ERROR(GLib >= 2.32 is required))
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
PKG_CHECK_MODULES(GIOUNIX, gio-unix-2.0 >= 2.32, dummy=yes,
AC_MSG_ERROR(GIO-Unix >= 2.32 is required))
GLIB_CFLAGS="$GLIB_CFLAGS $GIOUNIX_CFLAGS"
GLIB_LIBS="$GLIB_LIBS $GIOUNIX_LIBS"
PKG_CHECK_MODULES(GMODULE, gmodule-no-export-2.0 >= 2.32, dummy=yes,
AC_MSG_ERROR(GModule >= 2.32 is required))
GLIB_CFLAGS="$GLIB_CFLAGS $GMODULE_CFLAGS"
GLIB_LIBS="$GLIB_LIBS $GMODULE_LIBS"
AC_MSG_CHECKING([for glib-mkenums script])
GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
AS_IF([test "x$GLIB_MKENUMS" = "x"],
[AC_MSG_ERROR([glib-mkenums not listed in glib-2.0 pkg-config file])],
[AC_SUBST([GLIB_MKENUMS])
AC_MSG_RESULT([$GLIB_MKENUMS])])
AC_SUBST([GDBUS_CODEGEN], [`$PKG_CONFIG --variable gdbus_codegen gio-2.0`])
#### GStreamer ####
PKG_CHECK_MODULES(GST, gstreamer-1.0 >= 1.5.0, dummy=yes,
AC_MSG_ERROR(GStreamer >= 1.5.0 is required))
AC_SUBST(GST_CFLAGS)
AC_SUBST(GST_LIBS)
PKG_CHECK_MODULES(GSTBASE, gstreamer-base-1.0 >= 1.5.0, dummy=yes,
AC_MSG_ERROR(GStreamer Base>= 1.5.0 is required))
GST_CFLAGS="$GST_CFLAGS $GSTBASE_CFLAGS"
GST_LIBS="$GST_LIBS $GSTBASE_LIBS"
PKG_CHECK_MODULES(GSTPBASE, gstreamer-plugins-base-1.0 >= 1.5.0, dummy=yes,
AC_MSG_ERROR(GStreamer Plugins Base>= 1.5.0 is required))
GST_CFLAGS="$GST_CFLAGS $GSTPBASE_CFLAGS"
GST_LIBS="$GST_LIBS $GSTPBASE_LIBS"
PKG_CHECK_MODULES(GSTNET, gstreamer-net-1.0 >= 1.5.0, dummy=yes,
AC_MSG_ERROR(GStreamer Net>= 1.5.0 is required))
GST_CFLAGS="$GST_CFLAGS $GSTNET_CFLAGS"
GST_LIBS="$GST_LIBS $GSTNET_LIBS"
PKG_CHECK_MODULES(GSTALLOC, gstreamer-allocators-1.0 >= 1.5.0, dummy=yes,
AC_MSG_ERROR(GStreamer Allocators>= 1.5.0 is required))
GST_CFLAGS="$GST_CFLAGS $GSTALLOC_CFLAGS"
GST_LIBS="$GST_LIBS $GSTALLOC_LIBS"
#### ALSA ####
PKG_CHECK_MODULES(ALSA, alsa >= 0.9.1, dummy=yes,
AC_MSG_ERROR(ALSA >= 0.9.1 is required))
AC_SUBST(ALSA_CFLAGS)
AC_SUBST(ALSA_LIBS)
###################################
# Modules #
###################################
#### module-gst (Gstreamer module) ####
AC_ARG_ENABLE([module-gst],
AS_HELP_STRING([--disable-module-gst],[Disable building of GStreamer module]))
AM_CONDITIONAL([BUILD_MODULE_GST], [test "x$enable_module_gst" != "xno"])
AS_IF([test "x$enable_module_gst" != "xno"], ENABLE_MODULE_GST=yes, ENABLE_MODULE_GST=no)
#### module-spa (SPA module) ####
AC_ARG_ENABLE([module-spa],
AS_HELP_STRING([--disable-module-spa],[Disable building of SPA module]))
AM_CONDITIONAL([BUILD_MODULE_SPA], [test "x$enable_module_spa" != "xno"])
AS_IF([test "x$enable_module_spa" != "xno"], ENABLE_MODULE_SPA=yes, ENABLE_MODULE_SPA=no)
#### Build and Install man pages ####
AC_ARG_ENABLE([manpages],
AS_HELP_STRING([--disable-manpages],[Disable building and installation of man pages]))
AM_CONDITIONAL([BUILD_MANPAGES], [test "x$enable_manpages" != "xno"])
dnl *** output files ***
dnl keep this alphabetic per directory, please
AC_CONFIG_FILES([
Makefile
pinos/Makefile
pinos/daemon/pinos.conf
man/Makefile
man/pinos.1.xml
man/pinos-monitor.1.xml
pkgconfig/libpinos-$PINOS_MAJORMINOR.pc:pkgconfig/libpinos.pc.in
po/Makefile.in
])
AC_OUTPUT
echo "
Configuration
Version : ${VERSION}
Source code location : ${srcdir}
Prefix : ${prefix}
Moduledir : ${moduledir}
Compiler : ${CC}
Modules
module-gst : ${ENABLE_MODULE_GST}
module-spa : ${ENABLE_MODULE_SPA}
pinos configured. Type 'make' to build.
"

36
m4/.gitignore vendored
View file

@ -1,36 +0,0 @@
codeset.m4
fcntl-o.m4
gettext.m4
glibc*.m4
iconv.m4
intdiv0.m4
intl.m4
intldir.m4
intlmacosx.m4
intltool.m4
intmax.m4
inttypes-pri.m4
inttypes_h.m4
lcmessage.m4
lib-ld.m4
lib-link.m4
lib-prefix.m4
libtool.m4
lock.m4
longlong.m4
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
nls.m4
po.m4
printf-posix.m4
progtest.m4
size_max.m4
stdint_h.m4
threadlib.m4
uintmax_t.m4
visibility.m4
wchar_t.m4
wint_t.m4
xsize.m4

View file

@ -1,65 +0,0 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_append_compile_flags.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_APPEND_COMPILE_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS])
#
# DESCRIPTION
#
# For every FLAG1, FLAG2 it is checked whether the compiler works with the
# flag. If it does, the flag is added FLAGS-VARIABLE
#
# If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
# CFLAGS) is used. During the check the flag is always added to the
# current language's flags.
#
# If EXTRA-FLAGS is defined, it is added to the current language's default
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
# force the compiler to issue an error when a bad flag is given.
#
# NOTE: This macro depends on the AX_APPEND_FLAG and
# AX_CHECK_COMPILE_FLAG. Please keep this macro in sync with
# AX_APPEND_LINK_FLAGS.
#
# LICENSE
#
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 4
AC_DEFUN([AX_APPEND_COMPILE_FLAGS],
[AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
for flag in $1; do
AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3])
done
])dnl AX_APPEND_COMPILE_FLAGS

View file

@ -1,71 +0,0 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_append_flag.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
#
# DESCRIPTION
#
# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
# added in between.
#
# If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains
# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly
# FLAG.
#
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
#
# LICENSE
#
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 5
AC_DEFUN([AX_APPEND_FLAG],
[dnl
AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF
AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])
AS_VAR_SET_IF(FLAGS,[
AS_CASE([" AS_VAR_GET(FLAGS) "],
[*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])],
[
AS_VAR_APPEND(FLAGS," $1")
AC_RUN_LOG([: FLAGS="$FLAGS"])
])
],
[
AS_VAR_SET(FLAGS,[$1])
AC_RUN_LOG([: FLAGS="$FLAGS"])
])
AS_VAR_POPDEF([FLAGS])dnl
])dnl AX_APPEND_FLAG

View file

@ -1,63 +0,0 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_append_link_flags.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_APPEND_LINK_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS])
#
# DESCRIPTION
#
# For every FLAG1, FLAG2 it is checked whether the linker works with the
# flag. If it does, the flag is added FLAGS-VARIABLE
#
# If FLAGS-VARIABLE is not specified, the linker's flags (LDFLAGS) is
# used. During the check the flag is always added to the linker's flags.
#
# If EXTRA-FLAGS is defined, it is added to the linker's default flags
# when the check is done. The check is thus made with the flags: "LDFLAGS
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
# issue an error when a bad flag is given.
#
# NOTE: This macro depends on the AX_APPEND_FLAG and AX_CHECK_LINK_FLAG.
# Please keep this macro in sync with AX_APPEND_COMPILE_FLAGS.
#
# LICENSE
#
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 4
AC_DEFUN([AX_APPEND_LINK_FLAGS],
[AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
for flag in $1; do
AX_CHECK_LINK_FLAG([$flag], [AX_APPEND_FLAG([$flag], [m4_default([$2], [LDFLAGS])])], [], [$3])
done
])dnl AX_APPEND_LINK_FLAGS

View file

@ -1,74 +0,0 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
#
# DESCRIPTION
#
# Check whether the given FLAG works with the current language's compiler
# or gives an error. (Warnings, however, are ignored)
#
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
# success/failure.
#
# If EXTRA-FLAGS is defined, it is added to the current language's default
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
# force the compiler to issue an error when a bad flag is given.
#
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
#
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
#
# LICENSE
#
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 4
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
[AS_VAR_SET(CACHEVAR,[yes])],
[AS_VAR_SET(CACHEVAR,[no])])
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
AS_VAR_IF(CACHEVAR,yes,
[m4_default([$2], :)],
[m4_default([$3], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_COMPILE_FLAGS

View file

@ -1,74 +0,0 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
#
# DESCRIPTION
#
# Check whether the given FLAG works with the linker or gives an error.
# (Warnings, however, are ignored)
#
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
# success/failure.
#
# If EXTRA-FLAGS is defined, it is added to the linker's default flags
# when the check is done. The check is thus made with the flags: "LDFLAGS
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
# issue an error when a bad flag is given.
#
# INPUT gives an alternative input source to AC_LINK_IFELSE.
#
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
#
# LICENSE
#
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 4
AC_DEFUN([AX_CHECK_LINK_FLAG],
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
ax_check_save_flags=$LDFLAGS
LDFLAGS="$LDFLAGS $4 $1"
AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
[AS_VAR_SET(CACHEVAR,[yes])],
[AS_VAR_SET(CACHEVAR,[no])])
LDFLAGS=$ax_check_save_flags])
AS_VAR_IF(CACHEVAR,yes,
[m4_default([$2], :)],
[m4_default([$3], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_LINK_FLAGS

View file

@ -1,49 +0,0 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_define_dir.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
#
# DESCRIPTION
#
# This macro sets VARNAME to the expansion of the DIR variable, taking
# care of fixing up ${prefix} and such.
#
# VARNAME is then offered as both an output variable and a C preprocessor
# symbol.
#
# Example:
#
# AX_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.])
#
# LICENSE
#
# Copyright (c) 2008 Stepan Kasal <kasal@ucw.cz>
# Copyright (c) 2008 Andreas Schwab <schwab@suse.de>
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
# Copyright (c) 2008 Alexandre Oliva
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 6
AU_ALIAS([AC_DEFINE_DIR], [AX_DEFINE_DIR])
AC_DEFUN([AX_DEFINE_DIR], [
prefix_NONE=
exec_prefix_NONE=
test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
dnl refers to ${prefix}. Thus we have to use `eval' twice.
eval ax_define_dir="\"[$]$2\""
eval ax_define_dir="\"$ax_define_dir\""
AC_SUBST($1, "$ax_define_dir")
AC_DEFINE_UNQUOTED($1, "$ax_define_dir", [$3])
test "$prefix_NONE" && prefix=NONE
test "$exec_prefix_NONE" && exec_prefix=NONE
])

View file

@ -1,37 +0,0 @@
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_require_defined.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_REQUIRE_DEFINED(MACRO)
#
# DESCRIPTION
#
# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
# been defined and thus are available for use. This avoids random issues
# where a macro isn't expanded. Instead the configure script emits a
# non-fatal:
#
# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
#
# It's like AC_REQUIRE except it doesn't expand the required macro.
#
# Here's an example:
#
# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
#
# LICENSE
#
# Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 1
AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
])dnl AX_REQUIRE_DEFINED

144
meson.build Normal file
View file

@ -0,0 +1,144 @@
project('pinos', 'c',
version : '0.0.1.1',
meson_version : '>= 0.33.0',
default_options : [ 'warning_level=1',
'c_std=gnu99',
'buildtype=debugoptimized' ])
pinos_version = meson.project_version()
version_arr = pinos_version.split('.')
pinos_version_major = version_arr[0]
pinos_version_minor = version_arr[1]
pinos_version_micro = version_arr[2]
if version_arr.length() == 4
pinos_version_nano = version_arr[3]
else
pinos_version_nano = 0
endif
apiversion = '1.0'
soversion = 0
libversion = '@0@.@1@.0'.format(soversion, pinos_version_minor.to_int() * 100 + pinos_version_micro.to_int())
prefix = get_option('prefix')
gnome = import('gnome')
cc = meson.get_compiler('c')
cdata = configuration_data()
cdata.set('PINOS_VERSION_MAJOR', pinos_version_major)
cdata.set('PINOS_VERSION_MINOR', pinos_version_minor)
cdata.set('PINOS_VERSION_MICRO', pinos_version_micro)
cdata.set('PINOS_VERSION_NANO', pinos_version_nano)
cdata.set('PINOS_API_VERSION', '"@0@"'.format(apiversion))
cdata.set('PINOS_DATADIR', '"@0@/@1@"'.format(prefix, get_option('datadir')))
cdata.set('LOCALEDIR', '"@0@/@1@"'.format(prefix, get_option('localedir')))
cdata.set('LIBDIR', '"@0@/@1@"'.format(prefix, get_option('libdir')))
cdata.set('PINOS_API_VERSION', '"0.1"')
cdata.set('GETTEXT_PACKAGE', '"pinos"')
cdata.set('PINOS_LICENSE', '"LGPL"')
cdata.set('PINOS_PACKAGE_ORIGIN', '"Unknown package origin"')
cdata.set('PINOS_PACKAGE_NAME', '"Pinos source release"')
cdata.set('PACKAGE', '"pinos"')
cdata.set('PACKAGE_NAME', '"Pinos"')
cdata.set('PACKAGE_STRING', '"Pinos @0@"'.format(pinos_version))
cdata.set('PACKAGE_TARNAME', '"pinos"')
cdata.set('PACKAGE_URL', '""')
cdata.set('PACKAGE_VERSION', '"@0@"'.format(pinos_version))
cdata.set('PLUGINDIR', '"@0@/@1@/pinos"'.format(get_option('prefix'),get_option('libdir')))
cdata.set('MODULEDIR', '"@0@/@1@/pinos"'.format(get_option('prefix'),get_option('libdir')))
cdata.set('PINOS_CONFIG_DIR', '"@0@/etc/pinos"'.format(get_option('prefix')))
cdata.set('VERSION', '"@0@"'.format(pinos_version))
# FIXME: --with-memory-alignment],[8,N,malloc,pagesize (default is 32)]) option
cdata.set('MEMORY_ALIGNMENT_MALLOC', 1)
check_headers = [['dlfcn.h','HAVE_DLFCN_H'],
['inttypes.h', 'HAVE_INTTYPES_H'],
['memory.h', 'HAVE_MEMORY_H'],
['poll.h', 'HAVE_POLL_H'],
['stdint.h', 'HAVE_STDINT_H'],
['stdio_ext.h', 'HAVE_STDIO_EXT_H'],
['strings.h', 'HAVE_STRINGS_H'],
['string.h', 'HAVE_STRING_H'],
['sys/param.h', 'HAVE_SYS_PARAM_H'],
['sys/poll.h', 'HAVE_SYS_POLL_H'],
['sys/prctl.h', 'HAVE_SYS_PRCTL_H'],
['sys/socket.h', 'HAVE_SYS_SOCKET_H'],
['sys/stat.h', 'HAVE_SYS_STAT_H'],
['sys/times.h', 'HAVE_SYS_TIMES_H'],
['sys/time.h', 'HAVE_SYS_TIME_H'],
['sys/types.h', 'HAVE_SYS_TYPES_H'],
['sys/utsname.h', 'HAVE_SYS_UTSNAME_H'],
['sys/wait.h', 'HAVE_SYS_WAIT_H'],
['ucontext.h', 'HAVE_UCONTEXT_H'],
['unistd.h', 'HAVE_UNISTD_H'],
['valgrind/valgrind.h', 'HAVE_VALGRIND_VALGRIND_H'],
]
foreach h : check_headers
if cc.has_header(h.get(0))
cdata.set(h.get(1), 1)
endif
endforeach
if cc.has_function('poll', prefix : '#include<poll.h>')
cdata.set('HAVE_POLL', 1)
endif
if cc.has_function('pselect', prefix : '#include<sys/select.h>')
cdata.set('HAVE_PSELECT', 1)
endif
cdata.set('HAVE_MMAP', 1)
if cc.has_function('posix_memalign', prefix : '#include<stdlib.h>')
cdata.set('HAVE_POSIX_MEMALIGN', 1)
endif
if cc.has_function('getpagesize', prefix : '#include<unistd.h>')
cdata.set('HAVE_GETPAGESIZE', 1)
endif
if cc.has_function('clock_gettime', prefix : '#include <time.h>')
cdata.set('HAVE_CLOCK_GETTIME', 1)
endif
if cc.has_type('ptrdiff_t')
cdata.set('HAVE_PTRDIFF_T')
endif
if cc.has_function('mkstemp', prefix : '#include <stdlib.h>')
cdata.set('HAVE_MKSTEMP', 1)
endif
configure_file(input : 'config.h.meson',
output : 'config.h',
configuration : cdata)
configinc = include_directories('.')
pinosinc = include_directories('pinos')
# Find dependencies
glib_dep = dependency('glib-2.0', version : '>=2.32.0')
gobject_dep = dependency('gobject-2.0')
gmodule_dep = dependency('gmodule-2.0')
gio_dep = [dependency('gio-2.0'), dependency('gio-unix-2.0')]
mathlib = cc.find_library('m', required : false)
rt_lib = cc.find_library('rt', required : false) # clock_gettime
dl_lib = cc.find_library('dl', required : false)
gst_dep = [dependency('gstreamer-1.0'),
dependency('gstreamer-plugins-base-1.0'),
dependency('gstreamer-video-1.0'),
dependency('gstreamer-audio-1.0'),
dependency('gstreamer-allocators-1.0'),]
subdir('spa')
subdir('pinos')
subdir('pkgconfig')
#gtkdoc = find_program('gtkdoc-scan', required : false)
#if gtkdoc.found()
# subdir('docs')
#else
# message('Not building documentation as gtk-doc was not found')
#endif

54
pinos/client/build_mkenum.py Executable file
View file

@ -0,0 +1,54 @@
#!/usr/bin/env python3
# This is in its own file rather than inside meson.build
# because a) mixing the two is ugly and b) trying to
# make special characters such as \n go through all
# backends is a fool's errand.
import sys, os, shutil, subprocess
h_array = ['--fhead',
"#ifndef __PINOS_ENUM_TYPES_H__\n#define __PINOS_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n",
'--fprod',
"\n/* enumerations from \"@filename@\" */\n",
'--vhead',
"GType @enum_name@_get_type (void);\n#define PINOS_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n",
'--ftail',
"G_END_DECLS\n\n#endif /* __PINOS_ENUM_TYPES_H__ */"]
c_array = [
'--fhead',
"#include \"pinos.h\"\n#define C_ENUM(v) ((gint) v)\n#define C_FLAGS(v) ((guint) v)\n ",
'--fprod',
"\n/* enumerations from \"@filename@\" */",
'--vhead',
"GType\n@enum_name@_get_type (void)\n{\n static gsize id = 0;\n static const G@Type@Value values[] = {",
'--vprod',
" { C_@TYPE@(@VALUENAME@), \"@VALUENAME@\", \"@valuenick@\" },",
'--vtail',
" { 0, NULL, NULL }\n };\n\n if (g_once_init_enter (&id)) {\n GType tmp = g_@type@_register_static (\"@EnumName@\", values);\n g_once_init_leave (&id, tmp);\n }\n\n return (GType) id;\n}"
]
cmd = []
argn = 1
# Find the full command needed to run glib-mkenums
# On UNIX-like, this is just the full path to glib-mkenums
# On Windows, this is the full path to interpreter + full path to glib-mkenums
for arg in sys.argv[1:]:
cmd.append(arg)
argn += 1
if arg.endswith('glib-mkenums'):
break
ofilename = sys.argv[argn]
headers = sys.argv[argn + 1:]
if ofilename.endswith('.h'):
arg_array = h_array
else:
arg_array = c_array
pc = subprocess.Popen(cmd + arg_array + headers, stdout=subprocess.PIPE)
(stdo, _) = pc.communicate()
if pc.returncode != 0:
sys.exit(pc.returncode)
open(ofilename, 'wb').write(stdo)

View file

@ -17,6 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
#include <pinos/client/pinos.h>
#include <pinos/client/format.h>
static SpaFormat *

View file

@ -17,6 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
#include "pinos.h"
#include "mainloop.h"
struct _PinosMainLoopPrivate

69
pinos/client/meson.build Normal file
View file

@ -0,0 +1,69 @@
pinos_headers = [
'context.h',
'format.h',
'introspect.h',
'mainloop.h',
'pinos.h',
'properties.h',
'stream.h',
'ringbuffer.h',
'subscribe.h',
]
pinos_sources = [
'context.c',
'format.c',
'introspect.c',
'mainloop.c',
'properties.c',
'stream.c',
'pinos.c',
'ringbuffer.c',
'subscribe.c',
]
install_headers(pinos_headers, subdir : 'pinos/client')
mkenums = find_program('build_mkenum.py')
glib_mkenums = find_program('glib-mkenums')
enumtypes_h = custom_target('enumtypes_h',
output : 'enumtypes.h',
input : pinos_headers,
install : true,
install_dir : 'include/pinos/client',
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
enumtypes_c = custom_target('enumtypes_c',
output : 'enumtypes.c',
input : pinos_headers,
depends : [enumtypes_h],
command : [mkenums, glib_mkenums, '@OUTPUT@', '@INPUT@'])
libpinos_c_args = [
'-DHAVE_CONFIG_H',
'-D_GNU_SOURCE',
'-DG_LOG_DOMAIN=g_log_domain_pinos',
]
pinos_gen_sources = [enumtypes_h]
libpinos = shared_library('pinos', pinos_sources,
enumtypes_h, enumtypes_c,
version : libversion,
soversion : soversion,
c_args : libpinos_c_args,
include_directories : [configinc, spa_inc],
link_with : spalib,
install : true,
dependencies : [gobject_dep, gmodule_dep, glib_dep, gio_dep, mathlib],
)
pinos_dep = declare_dependency(link_with : libpinos,
include_directories : [configinc, spa_inc],
dependencies : [glib_dep, gobject_dep, gmodule_dep],
# Everything that uses libpinos needs this built to compile
sources : pinos_gen_sources,
)

View file

@ -22,6 +22,8 @@
#include "pinos/client/pinos.h"
#include "spa/include/spa/memory.h"
const gchar g_log_domain_pinos[] = "Pinos";
GQuark
pinos_error_quark (void)
{

View file

@ -20,6 +20,8 @@
#ifndef __PINOS_H__
#define __PINOS_H__
extern const char g_log_domain_pinos[];
#include <pinos/client/context.h>
#include <pinos/client/enumtypes.h>
#include <pinos/client/introspect.h>

View file

@ -19,6 +19,7 @@
#include <glib-object.h>
#include "pinos/client/pinos.h"
#include "pinos/client/properties.h"
struct _PinosProperties {

View file

@ -17,8 +17,6 @@
* Boston, MA 02110-1301, USA.
*/
#define _GNU_SOURCE
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
@ -28,6 +26,7 @@
#include <gio/gio.h>
#include <glib-object.h>
#include <pinos/client/pinos.h>
#include <pinos/client/enumtypes.h>
#include <pinos/client/ringbuffer.h>

View file

@ -632,8 +632,10 @@ add_state_change (PinosStream *stream, SpaControlBuilder *builder, SpaNodeState
PinosStreamPrivate *priv = stream->priv;
SpaControlCmdNodeStateChange sc;
sc.state = priv->node_state = state;
spa_control_builder_add_cmd (builder, SPA_CONTROL_CMD_NODE_STATE_CHANGE, &sc);
if (priv->node_state != state) {
sc.state = priv->node_state = state;
spa_control_builder_add_cmd (builder, SPA_CONTROL_CMD_NODE_STATE_CHANGE, &sc);
}
}
static void
@ -1504,27 +1506,7 @@ pinos_stream_start (PinosStream *stream)
static gboolean
do_stop (PinosStream *stream)
{
PinosStreamPrivate *priv = stream->priv;
SpaControlBuilder builder;
SpaControl control;
SpaControlCmdNodeCommand cnc;
SpaNodeCommand nc;
control_builder_init (stream, &builder);
cnc.command = &nc;
nc.type = SPA_NODE_COMMAND_PAUSE;
nc.data = NULL;
nc.size = 0;
spa_control_builder_add_cmd (&builder, SPA_CONTROL_CMD_NODE_COMMAND, &cnc);
spa_control_builder_end (&builder, &control);
if (spa_control_write (&control, priv->fd) < 0)
g_warning ("stream %p: failed to write control", stream);
spa_control_clear (&control);
g_object_unref (stream);
return FALSE;
}

View file

@ -25,7 +25,8 @@
#include <glib.h>
#include <string.h>
#include <server/command.h>
#include <pinos/client/pinos.h>
#include <pinos/server/command.h>
#include "pinos/daemon/daemon-config.h"

View file

@ -25,7 +25,7 @@
G_BEGIN_DECLS
#include <server/daemon.h>
#include <pinos/server/daemon.h>
#define PINOS_TYPE_DAEMON_CONFIG (pinos_daemon_config_get_type ())

View file

@ -20,9 +20,9 @@
#include <gio/gio.h>
#include <glib.h>
#include <client/pinos.h>
#include <server/daemon.h>
#include <server/module.h>
#include <pinos/client/pinos.h>
#include <pinos/server/daemon.h>
#include <pinos/server/module.h>
#include <spa/include/spa/memory.h>
#include "daemon-config.h"

22
pinos/daemon/meson.build Normal file
View file

@ -0,0 +1,22 @@
pinos_sources = [
'main.c',
'daemon-config.c',
]
pinos_headers = [
'daemon-config.h',
]
pinos_c_args = [
'-DHAVE_CONFIG_H',
'-D_GNU_SOURCE',
'-DG_LOG_DOMAIN=g_log_domain_pinos',
]
executable('pinos',
pinos_sources,
install: true,
c_args : pinos_c_args,
include_directories : [configinc, spa_inc],
dependencies : [glib_dep, gobject_dep, gmodule_dep, pinos_dep, pinoscore_dep],
)

15
pinos/dbus/meson.build Normal file
View file

@ -0,0 +1,15 @@
gdbus_codegen = find_program('gdbus-codegen')
org_pinos_files = ['org-pinos.c', 'org-pinos.h']
gdbus_target = custom_target('org-pinos',
output : org_pinos_files,
input : 'org.pinos.xml',
command : [gdbus_codegen,
'--interface-prefix', 'org.pinos.',
'--generate-c-code', 'pinos/dbus/org-pinos',
'--c-namespace', 'Pinos',
'--c-generate-object-manager',
'@INPUT@'],
)

View file

@ -22,7 +22,7 @@
#include <gst/gst.h>
#include <client/pinos.h>
#include <pinos/client/pinos.h>
G_BEGIN_DECLS

View file

@ -28,7 +28,7 @@
#include "config.h"
#endif
#include <client/pinos.h>
#include <pinos/client/pinos.h>
#include <gst/gst.h>

View file

@ -22,7 +22,7 @@
#include <gst/gst.h>
#include <client/pinos.h>
#include <pinos/client/pinos.h>
G_BEGIN_DECLS

View file

@ -23,8 +23,8 @@
#include <gst/gst.h>
#include <gst/base/gstbasesink.h>
#include <client/pinos.h>
#include <gst/gstpinospool.h>
#include <pinos/client/pinos.h>
#include <pinos/gst/gstpinospool.h>
G_BEGIN_DECLS

View file

@ -23,7 +23,7 @@
#include <gst/gst.h>
#include <gst/base/gstpushsrc.h>
#include <client/pinos.h>
#include <pinos/client/pinos.h>
G_BEGIN_DECLS

31
pinos/gst/meson.build Normal file
View file

@ -0,0 +1,31 @@
pinos_gst_sources = [
'gstpinos.c',
'gstpinosclock.c',
'gstpinosdeviceprovider.c',
'gstpinosformat.c',
'gstpinospool.c',
'gstpinossink.c',
'gstpinossrc.c',
]
pinos_gst_headers = [
'gstpinosclock.h',
'gstpinosdeviceprovider.h',
'gstpinosformat.h',
'gstpinospool.h',
'gstpinossink.h',
'gstpinossrc.h',
]
pinos_gst_c_args = [
'-DHAVE_CONFIG_H',
]
pinos_gst = shared_library('gstpinos',
pinos_gst_sources,
c_args : pinos_gst_c_args,
include_directories : [configinc, spa_inc],
dependencies : [gobject_dep, glib_dep, gio_dep, gst_dep, pinos_dep, pinoscore_dep],
install : true,
install_dir : '@0@/gstreamer-1.0'.format(get_option('libdir')),
)

8
pinos/meson.build Normal file
View file

@ -0,0 +1,8 @@
subdir('dbus')
subdir('client')
subdir('server')
subdir('daemon')
subdir('tools')
subdir('modules')
subdir('gst')

View file

@ -0,0 +1,27 @@
pinos_module_spa_headers = [
'spa-alsa-monitor.h',
'spa-audiotestsrc.h',
'spa-v4l2-monitor.h',
'spa-videotestsrc.h',
]
pinos_module_spa_sources = [
'module.c',
'spa-alsa-monitor.c',
'spa-audiotestsrc.c',
'spa-v4l2-monitor.c',
'spa-videotestsrc.c',
]
pinos_module_spa_c_args = [
'-DHAVE_CONFIG_H',
'-D_GNU_SOURCE',
]
pinos_module_spa = shared_library('pinos-module-spa', pinos_module_spa_sources,
c_args : pinos_module_spa_c_args,
include_directories : [configinc, pinosinc, spa_inc],
link_with : spalib,
dependencies : [gobject_dep, gmodule_dep, glib_dep, gio_dep, mathlib, dl_lib, pinos_dep, pinoscore_dep],
)

View file

@ -0,0 +1,2 @@
#subdir('gst')
subdir('spa')

View file

@ -0,0 +1,29 @@
pinos_module_spa_headers = [
'spa-alsa-monitor.h',
'spa-audiotestsrc.h',
'spa-v4l2-monitor.h',
'spa-videotestsrc.h',
]
pinos_module_spa_sources = [
'module.c',
'spa-alsa-monitor.c',
'spa-audiotestsrc.c',
'spa-v4l2-monitor.c',
'spa-videotestsrc.c',
]
pinos_module_spa_c_args = [
'-DHAVE_CONFIG_H',
'-D_GNU_SOURCE',
]
pinos_module_spa = shared_library('pinos-module-spa', pinos_module_spa_sources,
c_args : pinos_module_spa_c_args,
include_directories : [configinc, pinosinc, spa_inc],
link_with : spalib,
install : true,
install_dir : '@0@/pinos-0.1'.format(get_option('libdir')),
dependencies : [gobject_dep, gmodule_dep, glib_dep, gio_dep, mathlib, dl_lib, pinos_dep, pinoscore_dep],
)

View file

@ -17,8 +17,6 @@
* Boston, MA 02110-1301, USA.
*/
#define _GNU_SOURCE
#include <dlfcn.h>
#include <errno.h>
#include <poll.h>

View file

@ -17,8 +17,6 @@
* Boston, MA 02110-1301, USA.
*/
#define _GNU_SOURCE
#include <dlfcn.h>
#include <errno.h>
#include <poll.h>

View file

@ -17,8 +17,6 @@
* Boston, MA 02110-1301, USA.
*/
#define _GNU_SOURCE
#include <dlfcn.h>
#include <spa/include/spa/node.h>

View file

@ -17,8 +17,6 @@
* Boston, MA 02110-1301, USA.
*/
#define _GNU_SOURCE
#include <string.h>
#include <sys/socket.h>
#include <errno.h>

View file

@ -21,7 +21,8 @@
#include <glib.h>
#include <string.h>
#include <server/module.h>
#include <pinos/client/pinos.h>
#include <pinos/server/module.h>
#include "command.h"

View file

@ -25,7 +25,7 @@
G_BEGIN_DECLS
#include <server/daemon.h>
#include <pinos/server/daemon.h>
typedef struct _PinosCommand PinosCommand;

View file

@ -554,11 +554,17 @@ do_start (PinosLink *this, SpaNodeState in_state, SpaNodeState out_state)
} else {
pinos_link_update_state (this, PINOS_LINK_STATE_PAUSED);
if (in_state == SPA_NODE_STATE_PAUSED)
if (in_state == SPA_NODE_STATE_PAUSED) {
pinos_node_set_state (this->input_node, PINOS_NODE_STATE_RUNNING);
if (pinos_node_get_state (this->input_node) != PINOS_NODE_STATE_RUNNING)
res = SPA_RESULT_RETURN_ASYNC (0);
}
if (out_state == SPA_NODE_STATE_PAUSED)
if (out_state == SPA_NODE_STATE_PAUSED) {
pinos_node_set_state (this->output_node, PINOS_NODE_STATE_RUNNING);
if (pinos_node_get_state (this->output_node) != PINOS_NODE_STATE_RUNNING)
res = SPA_RESULT_RETURN_ASYNC (0);
}
}
return res;
}

42
pinos/server/meson.build Normal file
View file

@ -0,0 +1,42 @@
pinoscore_headers = [
'client.h',
'client-node.h',
'command.h',
'daemon.h',
'link.h',
'module.h',
'node.h',
'node-factory.h',
]
pinoscore_sources = [
'client.c',
'client-node.c',
'command.c',
'daemon.c',
'link.c',
'module.c',
'node.c',
'node-factory.c',
]
libpinoscore_c_args = [
'-DHAVE_CONFIG_H',
'-D_GNU_SOURCE',
]
libpinoscore = shared_library('pinoscore', pinoscore_sources, gdbus_target,
version : libversion,
soversion : soversion,
c_args : libpinoscore_c_args,
include_directories : [configinc, spa_inc],
link_with : spalib,
install : true,
dependencies : [gobject_dep, gmodule_dep, glib_dep, gio_dep, mathlib, dl_lib, pinos_dep],
)
pinoscore_dep = declare_dependency(link_with : libpinoscore,
include_directories : [configinc, spa_inc],
dependencies : [glib_dep, gobject_dep, gmodule_dep, pinos_dep],
)

View file

@ -25,6 +25,7 @@
#include <glib.h>
#include <gmodule.h>
#include "pinos/client/pinos.h"
#include "pinos/server/module.h"
#define PINOS_SYMBOL_MODULE_INIT "pinos__module_init"

View file

@ -28,7 +28,7 @@ typedef struct _PinosNodeFactory PinosNodeFactory;
typedef struct _PinosNodeFactoryClass PinosNodeFactoryClass;
typedef struct _PinosNodeFactoryPrivate PinosNodeFactoryPrivate;
#include <server/daemon.h>
#include <pinos/server/daemon.h>
#define PINOS_TYPE_NODE_FACTORY (pinos_node_factory_get_type ())
#define PINOS_IS_NODE_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PINOS_TYPE_NODE_FACTORY))

View file

@ -80,6 +80,8 @@ struct _PinosNodePrivate
guint n_used_input_links;
SpaNodeEventAsyncComplete ac;
uint32_t pending_state_seq;
PinosNodeState pending_state;
};
G_DEFINE_TYPE (PinosNode, pinos_node, G_TYPE_OBJECT);
@ -359,13 +361,20 @@ start_node (PinosNode *this)
static SpaResult
suspend_node (PinosNode *this)
{
SpaResult res;
PinosNodePrivate *priv = this->priv;
SpaResult res = SPA_RESULT_OK;
guint i;
g_debug ("node %p: suspend node", this);
if ((res = spa_node_port_set_format (this->node, 0, 0, NULL)) < 0)
g_warning ("error unset format output: %d", res);
for (i = 0; i < priv->n_input_ports; i++) {
if ((res = spa_node_port_set_format (this->node, priv->input_port_ids[i], 0, NULL)) < 0)
g_warning ("error unset format output: %d", res);
}
for (i = 0; i < priv->n_output_ports; i++) {
if ((res = spa_node_port_set_format (this->node, priv->output_port_ids[i], 0, NULL)) < 0)
g_warning ("error unset format output: %d", res);
}
return res;
}
@ -404,6 +413,7 @@ static gboolean
node_set_state (PinosNode *this,
PinosNodeState state)
{
PinosNodePrivate *priv = this->priv;
SpaResult res = SPA_RESULT_OK;
g_debug ("node %p: set state %s", this, pinos_node_state_as_string (state));
@ -434,7 +444,12 @@ node_set_state (PinosNode *this,
if (SPA_RESULT_IS_ERROR (res))
return FALSE;
pinos_node_update_state (this, state);
if (SPA_RESULT_IS_ASYNC (res)) {
priv->pending_state_seq = SPA_RESULT_ASYNC_SEQ (res);
priv->pending_state = state;
} else {
pinos_node_update_state (this, state);
}
return TRUE;
}
@ -482,6 +497,9 @@ do_handle_async_complete (PinosNode *this)
init_complete (this);
priv->async_init = FALSE;
}
if (priv->pending_state_seq == ac->seq) {
pinos_node_update_state (this, priv->pending_state);
}
g_signal_emit (this, signals[SIGNAL_ASYNC_COMPLETE], 0, ac->seq, ac->res);
}
@ -1029,6 +1047,7 @@ pinos_node_init (PinosNode * node)
(GCallback) handle_remove,
node);
priv->state = PINOS_NODE_STATE_CREATING;
priv->pending_state_seq = SPA_ID_INVALID;
pinos_node1_set_state (priv->iface, priv->state);
priv->input_links = g_array_new (FALSE, TRUE, sizeof (NodeLink));

5
pinos/tools/meson.build Normal file
View file

@ -0,0 +1,5 @@
executable('pinos-monitor',
'pinos-monitor.c',
install: true,
dependencies : [glib_dep, gobject_dep, gmodule_dep, pinos_dep],
)

View file

@ -17,7 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
#include <client/pinos.h>
#include <pinos/client/pinos.h>
static GMainLoop *loop;

22
pkgconfig/meson.build Normal file
View file

@ -0,0 +1,22 @@
pkgconf = configuration_data()
pkgconf.set('prefix', get_option('prefix'))
pkgconf.set('exec_prefix', '${prefix}')
pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir')))
pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
pkgconf.set('PINOS_API_VERSION', apiversion)
pkgconf.set('VERSION', pinos_version)
pkg_install_dir = '@0@/pkgconfig'.format(get_option('libdir'))
pkg_files = ['libpinos',
]
foreach p : pkg_files
infile = p + '.pc.in'
outfile = p + '-0.1.pc'
configure_file(input : infile,
output : outfile,
configuration : pkgconf,
install_dir : pkg_install_dir)
endforeach

View file

@ -130,9 +130,10 @@ typedef struct {
/* SPA_CONTROL_CMD_SET_FORMAT */
typedef struct {
uint32_t seq;
uint32_t port_id;
SpaFormat *format;
uint32_t seq;
uint32_t port_id;
SpaPortFormatFlags flags;
SpaFormat *format;
} SpaControlCmdSetFormat;
/* SPA_CONTROL_CMD_SET_PROPERTY */

View file

@ -1,8 +1,22 @@
install_headers('buffer.h',
'command.h',
'defs.h',
'event.h',
'node.h',
'plugin.h',
'port.h',
'props.h')
spa_headers = [
'buffer.h',
'clock.h',
'control.h',
'debug.h',
'defs.h',
'dict.h',
'format.h',
'memory.h',
'monitor.h',
'node-command.h',
'node-event.h',
'node.h',
'plugin.h',
'poll.h',
'port.h',
'props.h',
'queue.h',
'ringbuffer.h'
]
install_headers(spa_headers, subdir : 'spa')

View file

@ -10,9 +10,13 @@ spalib_sources = ['audio-raw.c',
spalib = shared_library('spa-lib',
spalib_sources,
include_directories : inc,
install : true)
spalibs = static_library('spa-lib',
spalib_sources,
include_directories : inc,
include_directories : spa_inc,
install : true)
#spalibs = static_library('spa-lib',
# spalib_sources,
# include_directories : spa_inc,
# install : true)
spalib_dep = declare_dependency(link_with : spalib,
include_directories : spa_inc,
)

View file

@ -1,4 +1,4 @@
project('spa', 'c')
#project('spa', 'c')
alsa_dep = dependency('alsa')
v4l2_dep = dependency('libv4l2')
@ -16,7 +16,7 @@ cc = meson.get_compiler('c')
dl_lib = cc.find_library('dl', required : true)
pthread_lib = cc.find_library('pthread', required : true)
inc = include_directories('include')
spa_inc = include_directories('include')
subdir('include')
subdir('lib')

View file

@ -255,7 +255,7 @@ spa_alsa_monitor_set_event_callback (SpaMonitor *monitor,
return SPA_RESULT_ERROR;
udev_monitor_filter_add_match_subsystem_devtype (this->umonitor,
"video4linux",
"sound",
NULL);
udev_monitor_enable_receiving (this->umonitor);

View file

@ -1,12 +1,13 @@
alsa_sources = ['alsa.c',
spa_alsa_sources = ['alsa.c',
'alsa-monitor.c',
'alsa-sink.c',
'alsa-source.c',
'alsa-utils.c']
alsalib = shared_library('spa-alsa',
alsa_sources,
include_directories : inc,
dependencies : [ alsa_dep, libudev_dep ],
link_with : spalib,
install : true)
spa_alsa = shared_library('spa-alsa',
spa_alsa_sources,
include_directories : spa_inc,
dependencies : [ alsa_dep, libudev_dep ],
link_with : spalib,
install : true,
install_dir : '@0@/spa'.format(get_option('libdir')))

View file

@ -2,6 +2,7 @@ audiomixer_sources = ['audiomixer.c', 'plugin.c']
audiomixerlib = shared_library('spa-audiomixer',
audiomixer_sources,
include_directories : inc,
include_directories : spa_inc,
link_with : spalib,
install : true)
install : true,
install_dir : '@0@/spa'.format(get_option('libdir')))

View file

@ -2,6 +2,7 @@ audiotestsrc_sources = ['audiotestsrc.c', 'plugin.c']
audiotestsrclib = shared_library('spa-audiotestsrc',
audiotestsrc_sources,
include_directories : inc,
include_directories : spa_inc,
link_with : spalib,
install : true)
install : true,
install_dir : '@0@/spa'.format(get_option('libdir')))

View file

@ -4,7 +4,8 @@ ffmpeg_sources = ['ffmpeg.c',
ffmpeglib = shared_library('spa-ffmpeg',
ffmpeg_sources,
include_directories : inc,
include_directories : spa_inc,
dependencies : [ avcodec_dep, avformat_dep ],
link_with : spalib,
install : true)
install : true,
install_dir : '@0@/spa'.format(get_option('libdir')))

View file

@ -7,4 +7,5 @@ libvalib = shared_library('spa-libva',
include_directories : inc,
dependencies : libva_dep,
link_with : spalib,
install : true)
install : true,
install_dir : '@0@/spa'.format(get_option('libdir')))

View file

@ -2,6 +2,7 @@ remote_sources = ['proxy.c', 'plugin.c']
remotelib = shared_library('spa-remote',
remote_sources,
include_directories : inc,
include_directories : spa_inc,
link_with : spalib,
install : true)
install : true,
install_dir : '@0@/spa'.format(get_option('libdir')))

View file

@ -496,6 +496,7 @@ spa_proxy_node_port_set_format (SpaNode *node,
spa_control_builder_init_into (&builder, buf, sizeof (buf), NULL, 0);
sf.seq = this->seq++;
sf.port_id = port_id;
sf.flags = flags;
sf.format = (SpaFormat *) format;
spa_control_builder_add_cmd (&builder, SPA_CONTROL_CMD_SET_FORMAT, &sf);
spa_control_builder_end (&builder, &control);

View file

@ -4,7 +4,8 @@ v4l2_sources = ['v4l2.c',
v4l2lib = shared_library('spa-v4l2',
v4l2_sources,
include_directories : inc,
include_directories : spa_inc,
dependencies : [ v4l2_dep, libudev_dep ],
link_with : spalib,
install : true)
install : true,
install_dir : '@0@/spa'.format(get_option('libdir')))

View file

@ -2,7 +2,8 @@ videotestsrc_sources = ['videotestsrc.c', 'plugin.c']
videotestsrclib = shared_library('spa-videotestsrc',
videotestsrc_sources,
include_directories : inc,
include_directories : spa_inc,
dependencies : threads_dep,
link_with : spalib,
install : true)
install : true,
install_dir : '@0@/spa'.format(get_option('libdir')))

View file

@ -2,6 +2,7 @@ volume_sources = ['volume.c', 'plugin.c']
volumelib = shared_library('spa-volume',
volume_sources,
include_directories : inc,
include_directories : spa_inc,
link_with : spalib,
install : true)
install : true,
install_dir : '@0@/spa'.format(get_option('libdir')))

View file

@ -3,7 +3,8 @@ xv_sources = ['xv.c',
xvlib = shared_library('spa-xv',
xv_sources,
include_directories : inc,
include_directories : spa_inc,
dependencies : xv_dep,
link_with : spalib,
install : true)
install : true,
install_dir : '@0@/spa'.format(get_option('libdir')))

View file

@ -1,11 +1,11 @@
executable('test-mixer', 'test-mixer.c',
include_directories : inc,
include_directories : spa_inc,
dependencies : [dl_lib, pthread_lib],
link_with : spalib,
install : false)
executable('test-v4l2', 'test-v4l2.c',
include_directories : inc,
include_directories : spa_inc,
dependencies : [dl_lib, sdl_dep, pthread_lib],
link_with : spalib,
install : false)

View file

@ -1,11 +1,11 @@
executable('spa-inspect', 'spa-inspect.c',
include_directories : inc,
include_directories : spa_inc,
dependencies : [dl_lib],
link_with : spalib,
install : true)
executable('spa-monitor', 'spa-monitor.c',
include_directories : inc,
include_directories : spa_inc,
dependencies : [dl_lib],
link_with : spalib,
install : true)