summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArun Raghavan <arun.raghavan@collabora.co.uk>2010-10-19 09:59:45 +0530
committerArun Raghavan <arun.raghavan@collabora.co.uk>2011-02-01 11:51:46 +0530
commita9d824925d55191f2599dd85f21ee278b09eb02a (patch)
tree7d64833478c97e0e305764fa709cedbbb75cb423
parent548e1026e37d594fd71da405d37b7a058bf49c89 (diff)
build: Simplify Orc-related make rules
This greatly simplifies the Orc-related make rules. The old system of distributing generated files is gone, which means that anyone who wants to build with Orc support enabled needs to have the orcc compiler installed (presumably the orc 'devel' package in most distros).
-rw-r--r--orc.mak74
-rw-r--r--src/Makefile.am31
-rw-r--r--src/modules/echo-cancel/adrian-aec-orc-dist.c250
-rw-r--r--src/modules/echo-cancel/adrian-aec-orc-dist.h61
-rw-r--r--src/modules/echo-cancel/adrian-aec.c2
5 files changed, 47 insertions, 371 deletions
diff --git a/orc.mak b/orc.mak
index 90d403a5..5a6ff96b 100644
--- a/orc.mak
+++ b/orc.mak
@@ -1,35 +1,33 @@
#
-# This is a makefile.am fragment to build Orc code.
+# This is a Makefile.am fragment to build Orc code. It is based
+# on the orc.mak file distributed in the GStreamer common
+# repository.
#
-# Define ORC_SOURCE and then include this file, such as:
+# Include this file like this:
#
-# ORC_SOURCE=gstadderorc
-# include $(top_srcdir)/common/orc.mak
+# include $(top_srcdir)/orc.mak
#
-# This fragment will create tmp-orc.c and gstadderorc.h from
-# gstadderorc.orc.
+# For each Orc source file, append its name (without the extension)
+# to ORC_SOURCE:
#
-# When 'make dist' is run at the top level, or 'make orc-update'
-# in a directory including this fragment, the generated source
-# files will be copied to $(ORC_SOURCE)-dist.[ch]. These files
-# should be checked in to git, since they are used if Orc is
-# disabled.
+# ORC_SOURCE += gstadderorc
#
-# Note that this file defines BUILT_SOURCES, so any later usage
-# of BUILT_SOURCES in the Makefile.am that includes this file
-# must use '+='.
+# This will create gstadder-orc-gen.c and gstadder-orc-gen.h, which
+# you need to add to your nodist_module_SOURCES.
+#
+# Note that this file appends to BUILT_SOURCES and CLEANFILES, so
+# define them before including this file.
#
-EXTRA_DIST += $(ORC_SOURCE).orc
+EXTRA_DIST += $(addsuffix .orc,$(ORC_SOURCE))
-ORC_NODIST_SOURCES = tmp-orc.c $(ORC_SOURCE).h
-BUILT_SOURCES += tmp-orc.c $(ORC_SOURCE).h
+ORC_BUILT_SOURCE = $(addsuffix -orc-gen.c,$(ORC_SOURCE))
+ORC_BUILT_HEADER = $(addsuffix -orc-gen.h,$(ORC_SOURCE))
+BUILT_SOURCES += $(ORC_BUILT_SOURCE) $(ORC_BUILT_HEADER)
+CLEANFILES += $(BUILT_SOURCES)
-orc-update: tmp-orc.c $(ORC_SOURCE).h
- cp tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c
- cp $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h
orcc_v_gen = $(orcc_v_gen_$(V))
orcc_v_gen_ = $(orcc_v_gen_$(AM_DEFAULT_VERBOSITY))
@@ -39,34 +37,10 @@ cp_v_gen = $(cp_v_gen_$(V))
cp_v_gen_ = $(cp_v_gen_$(AM_DEFAULT_VERBOSITY))
cp_v_gen_0 = @echo " CP $@";
-if HAVE_ORC
-tmp-orc.c: $(srcdir)/$(ORC_SOURCE).orc
- $(orcc_v_gen)$(ORCC) --implementation -o $(builddir)/tmp-orc.c $(srcdir)/$(ORC_SOURCE).orc
-
-$(ORC_SOURCE).h: $(srcdir)/$(ORC_SOURCE).orc
- mkdir -p $$(dirname $(builddir)/$(ORC_SOURCE).h)
- $(orcc_v_gen)$(ORCC) --header -o $(builddir)/$(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE).orc
-else
-tmp-orc.c: $(srcdir)/$(ORC_SOURCE).orc
- $(cp_v_gen)cp $(srcdir)/$(ORC_SOURCE)-dist.c tmp-orc.c
-
-$(ORC_SOURCE).h: $(srcdir)/$(ORC_SOURCE).orc
- $(cp_v_gen)cp $(srcdir)/$(ORC_SOURCE)-dist.h $(ORC_SOURCE).h
-endif
-
-clean-local: clean-orc
-.PHONY: clean-orc
-clean-orc:
- rm -f tmp-orc.c $(ORC_SOURCE).h
+%-orc-gen.c: %.orc
+ @mkdir -p $(@D)
+ $(orcc_v_gen)$(ORCC) --implementation -o $@ $<
-dist-hook: dist-hook-orc
-.PHONY: dist-hook-orc
-dist-hook-orc: tmp-orc.c $(ORC_SOURCE).h
- rm -f tmp-orc.c~
- cmp -s tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c || \
- cp tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c
- cmp -s $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h || \
- cp $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h
- mkdir -p $$(dirname $(ORC_SOURCE))
- cp -p $(srcdir)/$(ORC_SOURCE)-dist.c $(distdir)/$$(dirname $(ORC_SOURCE))
- cp -p $(srcdir)/$(ORC_SOURCE)-dist.h $(distdir)/$$(dirname $(ORC_SOURCE))
+%-orc-gen.h: %.orc
+ @mkdir -p $(@D)
+ $(orcc_v_gen)$(ORCC) --header -o $@ $<
diff --git a/src/Makefile.am b/src/Makefile.am
index eeb34315..82bd653c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -125,6 +125,15 @@ xdgautostart_DATA = $(xdgautostart_in_files:.desktop.in=.desktop)
###################################
+# Includes #
+###################################
+
+BUILT_SOURCES =
+CLEANFILES =
+include $(top_srcdir)/orc.mak
+ORC_SOURCE =
+
+###################################
# Main daemon #
###################################
@@ -1293,7 +1302,7 @@ SYMDEF_FILES = \
module-virtual-source-symdef.h
EXTRA_DIST += $(SYMDEF_FILES)
-BUILT_SOURCES = $(SYMDEF_FILES) builddirs
+BUILT_SOURCES += $(SYMDEF_FILES) builddirs
$(SYMDEF_FILES): modules/module-defs.h.m4
$(AM_V_at)$(MKDIR_P) modules
@@ -1694,17 +1703,21 @@ module_suspend_on_idle_la_LIBADD = $(MODULE_LIBADD)
module_suspend_on_idle_la_CFLAGS = $(AM_CFLAGS)
# echo-cancel module
-ORC_SOURCE=modules/echo-cancel/adrian-aec-orc
-include $(top_srcdir)/orc.mak
module_echo_cancel_la_SOURCES = modules/echo-cancel/module-echo-cancel.c modules/echo-cancel/echo-cancel.h \
modules/echo-cancel/speex.c \
modules/echo-cancel/adrian-aec.c modules/echo-cancel/adrian-aec.h \
- modules/echo-cancel/adrian.c modules/echo-cancel/adrian.h \
- $(ORC_SOURCE).orc
-nodist_module_echo_cancel_la_SOURCES = $(ORC_NODIST_SOURCES)
+ modules/echo-cancel/adrian.c modules/echo-cancel/adrian.h
module_echo_cancel_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_echo_cancel_la_LIBADD = $(MODULE_LIBADD) $(LIBSPEEX_LIBS) $(ORC_LIBS)
-module_echo_cancel_la_CFLAGS = $(AM_CFLAGS) $(LIBSPEEX_CFLAGS) $(ORC_CFLAGS) -I$(top_builddir)/src/modules/echo-cancel
+module_echo_cancel_la_LIBADD = $(MODULE_LIBADD) $(LIBSPEEX_LIBS)
+module_echo_cancel_la_CFLAGS = $(AM_CFLAGS) $(LIBSPEEX_CFLAGS)
+if HAVE_ORC
+ORC_SOURCE += modules/echo-cancel/adrian-aec-orc
+nodist_module_echo_cancel_la_SOURCES = \
+ modules/echo-cancel/adrian-aec-orc-orc-gen.c \
+ modules/echo-cancel/adrian-aec-orc-orc-gen.h
+module_echo_cancel_la_LIBADD += $(ORC_LIBS)
+module_echo_cancel_la_CFLAGS += $(ORC_CFLAGS) -I$(top_builddir)/src/modules/echo-cancel
+endif
# RTP modules
module_rtp_send_la_SOURCES = modules/rtp/module-rtp-send.c
@@ -1826,7 +1839,7 @@ module_rygel_media_server_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
# Some minor stuff #
###################################
-CLEANFILES = esdcompat client.conf default.pa system.pa daemon.conf start-pulseaudio-x11 start-pulseaudio-kde daemon/pulseaudio.desktop daemon/pulseaudio-kde.desktop
+CLEANFILES += esdcompat client.conf default.pa system.pa daemon.conf start-pulseaudio-x11 start-pulseaudio-kde daemon/pulseaudio.desktop daemon/pulseaudio-kde.desktop
esdcompat: daemon/esdcompat.in Makefile
sed -e 's,@PACKAGE_VERSION\@,$(PACKAGE_VERSION),g' \
diff --git a/src/modules/echo-cancel/adrian-aec-orc-dist.c b/src/modules/echo-cancel/adrian-aec-orc-dist.c
deleted file mode 100644
index ea93d0b8..00000000
--- a/src/modules/echo-cancel/adrian-aec-orc-dist.c
+++ /dev/null
@@ -1,250 +0,0 @@
-
-/* autogenerated from adrian-aec-orc.orc */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#ifndef DISABLE_ORC
-#include <orc/orc.h>
-#endif
-
-#ifndef _ORC_INTEGER_TYPEDEFS_
-#define _ORC_INTEGER_TYPEDEFS_
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-#include <stdint.h>
-typedef int8_t orc_int8;
-typedef int16_t orc_int16;
-typedef int32_t orc_int32;
-typedef int64_t orc_int64;
-typedef uint8_t orc_uint8;
-typedef uint16_t orc_uint16;
-typedef uint32_t orc_uint32;
-typedef uint64_t orc_uint64;
-#elif defined(_MSC_VER)
-typedef signed __int8 orc_int8;
-typedef signed __int16 orc_int16;
-typedef signed __int32 orc_int32;
-typedef signed __int64 orc_int64;
-typedef unsigned __int8 orc_uint8;
-typedef unsigned __int16 orc_uint16;
-typedef unsigned __int32 orc_uint32;
-typedef unsigned __int64 orc_uint64;
-#else
-#include <limits.h>
-typedef signed char orc_int8;
-typedef short orc_int16;
-typedef int orc_int32;
-typedef unsigned char orc_uint8;
-typedef unsigned short orc_uint16;
-typedef unsigned int orc_uint32;
-#if INT_MAX == LONG_MAX
-typedef long long orc_int64;
-typedef unsigned long long orc_uint64;
-#else
-typedef long orc_int64;
-typedef unsigned long orc_uint64;
-#endif
-#endif
-typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16;
-typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32;
-typedef union { orc_int64 i; double f; orc_int32 x2[2]; orc_int16 x4[4]; } orc_union64;
-#endif
-
-void update_tap_weights (float * d1, const float * s1, float p1, int n);
-
-
-/* begin Orc C target preamble */
-#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
-#define ORC_ABS(a) ((a)<0 ? -(a) : (a))
-#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
-#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
-#define ORC_SB_MAX 127
-#define ORC_SB_MIN (-1-ORC_SB_MAX)
-#define ORC_UB_MAX 255
-#define ORC_UB_MIN 0
-#define ORC_SW_MAX 32767
-#define ORC_SW_MIN (-1-ORC_SW_MAX)
-#define ORC_UW_MAX 65535
-#define ORC_UW_MIN 0
-#define ORC_SL_MAX 2147483647
-#define ORC_SL_MIN (-1-ORC_SL_MAX)
-#define ORC_UL_MAX 4294967295U
-#define ORC_UL_MIN 0
-#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
-#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
-#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
-#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
-#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
-#define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
-#define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
-#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
-#define ORC_SWAP_Q(x) ((((x)&0xffULL)<<56) | (((x)&0xff00ULL)<<40) | (((x)&0xff0000ULL)<<24) | (((x)&0xff000000ULL)<<8) | (((x)&0xff00000000ULL)>>8) | (((x)&0xff0000000000ULL)>>24) | (((x)&0xff000000000000ULL)>>40) | (((x)&0xff00000000000000ULL)>>56))
-#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
-#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
-#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
-#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&0x7ff0000000000000ULL) == 0) ? 0xfff0000000000000ULL : 0xffffffffffffffffULL))
-#define ORC_ISNAN_DOUBLE(x) ((((x)&0x7ff0000000000000ULL) == 0x7ff0000000000000ULL) && (((x)&0x000fffffffffffffULL) != 0))
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-#define ORC_RESTRICT restrict
-#elif defined(__GNUC__) && __GNUC__ >= 4
-#define ORC_RESTRICT __restrict__
-#else
-#define ORC_RESTRICT
-#endif
-/* end Orc C target preamble */
-
-
-
-/* update_tap_weights */
-#ifdef DISABLE_ORC
-void
-update_tap_weights (float * d1, const float * s1, float p1, int n){
- int i;
- orc_union32 * ORC_RESTRICT ptr0;
- const orc_union32 * ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_union32 var34;
- orc_union32 var35;
- orc_union32 var36;
- orc_union32 var37;
-
- ptr0 = (orc_union32 *)d1;
- ptr4 = (orc_union32 *)s1;
-
- /* 0: loadpl */
- var33.i = p1;
-
- for (i = 0; i < n; i++) {
- /* 1: loadl */
- var34 = ptr4[i];
- /* 2: mulf */
- {
- orc_union32 _src1;
- orc_union32 _src2;
- orc_union32 _dest1;
- _src1.i = ORC_DENORMAL(var33.i);
- _src2.i = ORC_DENORMAL(var34.i);
- _dest1.f = _src1.f * _src2.f;
- var37.i = ORC_DENORMAL(_dest1.i);
- }
- /* 3: loadl */
- var35 = ptr0[i];
- /* 4: addf */
- {
- orc_union32 _src1;
- orc_union32 _src2;
- orc_union32 _dest1;
- _src1.i = ORC_DENORMAL(var35.i);
- _src2.i = ORC_DENORMAL(var37.i);
- _dest1.f = _src1.f + _src2.f;
- var36.i = ORC_DENORMAL(_dest1.i);
- }
- /* 5: storel */
- ptr0[i] = var36;
- }
-
-}
-
-#else
-static void
-_backup_update_tap_weights (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union32 * ORC_RESTRICT ptr0;
- const orc_union32 * ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_union32 var34;
- orc_union32 var35;
- orc_union32 var36;
- orc_union32 var37;
-
- ptr0 = (orc_union32 *)ex->arrays[0];
- ptr4 = (orc_union32 *)ex->arrays[4];
-
- /* 0: loadpl */
- var33.i = ex->params[24];
-
- for (i = 0; i < n; i++) {
- /* 1: loadl */
- var34 = ptr4[i];
- /* 2: mulf */
- {
- orc_union32 _src1;
- orc_union32 _src2;
- orc_union32 _dest1;
- _src1.i = ORC_DENORMAL(var33.i);
- _src2.i = ORC_DENORMAL(var34.i);
- _dest1.f = _src1.f * _src2.f;
- var37.i = ORC_DENORMAL(_dest1.i);
- }
- /* 3: loadl */
- var35 = ptr0[i];
- /* 4: addf */
- {
- orc_union32 _src1;
- orc_union32 _src2;
- orc_union32 _dest1;
- _src1.i = ORC_DENORMAL(var35.i);
- _src2.i = ORC_DENORMAL(var37.i);
- _dest1.f = _src1.f + _src2.f;
- var36.i = ORC_DENORMAL(_dest1.i);
- }
- /* 5: storel */
- ptr0[i] = var36;
- }
-
-}
-
-void
-update_tap_weights (float * d1, const float * s1, float p1, int n)
-{
- OrcExecutor _ex, *ex = &_ex;
- static int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
- OrcCompileResult result;
-
- p = orc_program_new ();
- orc_program_set_name (p, "update_tap_weights");
- orc_program_set_backup_function (p, _backup_update_tap_weights);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 4, "s1");
- orc_program_add_constant (p, 0, 0x00000000, "c1");
- orc_program_add_constant (p, 0, 0x00000000, "c2");
- orc_program_add_constant (p, 0, 0x00000000, "c3");
- orc_program_add_constant (p, 0, 0x00000000, "c4");
- orc_program_add_constant (p, 0, 0x00000000, "c5");
- orc_program_add_constant (p, 0, 0x00000000, "c6");
- orc_program_add_constant (p, 0, 0x00000000, "c7");
- orc_program_add_constant (p, 0, 0x00000000, "c8");
- orc_program_add_parameter_float (p, 4, "p1");
- orc_program_add_temporary (p, 4, "t1");
-
- orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_S1, ORC_VAR_D1);
- orc_program_append_2 (p, "addf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1);
-
- result = orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *)s1;
- {
- orc_union32 tmp;
- tmp.f = p1;
- ex->params[ORC_VAR_P1] = tmp.i;
- }
-
- func = p->code_exec;
- func (ex);
-}
-#endif
diff --git a/src/modules/echo-cancel/adrian-aec-orc-dist.h b/src/modules/echo-cancel/adrian-aec-orc-dist.h
deleted file mode 100644
index 00228c62..00000000
--- a/src/modules/echo-cancel/adrian-aec-orc-dist.h
+++ /dev/null
@@ -1,61 +0,0 @@
-
-/* autogenerated from adrian-aec-orc.orc */
-
-#ifndef ___MODULES_ECHO_CANCEL_ADRIAN_AEC_ORC_H_
-#define ___MODULES_ECHO_CANCEL_ADRIAN_AEC_ORC_H_
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#ifndef _ORC_INTEGER_TYPEDEFS_
-#define _ORC_INTEGER_TYPEDEFS_
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-#include <stdint.h>
-typedef int8_t orc_int8;
-typedef int16_t orc_int16;
-typedef int32_t orc_int32;
-typedef int64_t orc_int64;
-typedef uint8_t orc_uint8;
-typedef uint16_t orc_uint16;
-typedef uint32_t orc_uint32;
-typedef uint64_t orc_uint64;
-#elif defined(_MSC_VER)
-typedef signed __int8 orc_int8;
-typedef signed __int16 orc_int16;
-typedef signed __int32 orc_int32;
-typedef signed __int64 orc_int64;
-typedef unsigned __int8 orc_uint8;
-typedef unsigned __int16 orc_uint16;
-typedef unsigned __int32 orc_uint32;
-typedef unsigned __int64 orc_uint64;
-#else
-#include <limits.h>
-typedef signed char orc_int8;
-typedef short orc_int16;
-typedef int orc_int32;
-typedef unsigned char orc_uint8;
-typedef unsigned short orc_uint16;
-typedef unsigned int orc_uint32;
-#if INT_MAX == LONG_MAX
-typedef long long orc_int64;
-typedef unsigned long long orc_uint64;
-#else
-typedef long orc_int64;
-typedef unsigned long orc_uint64;
-#endif
-#endif
-typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16;
-typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32;
-typedef union { orc_int64 i; double f; orc_int32 x2[2]; orc_int16 x4[4]; } orc_union64;
-#endif
-void update_tap_weights (float * d1, const float * s1, float p1, int n);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/src/modules/echo-cancel/adrian-aec.c b/src/modules/echo-cancel/adrian-aec.c
index 269bd616..5a455914 100644
--- a/src/modules/echo-cancel/adrian-aec.c
+++ b/src/modules/echo-cancel/adrian-aec.c
@@ -18,7 +18,7 @@
#include "adrian-aec.h"
#ifndef DISABLE_ORC
-#include "adrian-aec-orc.h"
+#include "adrian-aec-orc-orc-gen.h"
#endif
#ifdef __SSE__