From 04a10c145bb11d26960e78afda49c037216ff73d Mon Sep 17 00:00:00 2001
From: "Kevin P. Fleming" <kpfleming@digium.com>
Date: Wed, 2 Jan 2008 14:05:30 +0000
Subject: [PATCH] go back to including libresample in the main Asterisk binary,
 but this time including a small hack to ensure that it does get linked in
 (and also modify the strip_nonapi script to leave the resample_<foo> symbols
 alone)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@95816 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 build_tools/strip_nonapi                      |  3 +-
 codecs/Makefile                               |  2 +-
 codecs/codec_resample.c                       |  4 --
 main/Makefile                                 |  8 +++-
 {res => main}/libresample/LICENSE.txt         |  0
 {res => main}/libresample/Makefile.asterisk   |  0
 {res => main}/libresample/Makefile.in         |  0
 {res => main}/libresample/README.txt          |  0
 {res => main}/libresample/config.guess        |  0
 {res => main}/libresample/config.sub          |  0
 {res => main}/libresample/configure           |  0
 {res => main}/libresample/configure.in        |  0
 .../libresample/include/libresample.h         |  0
 {res => main}/libresample/install-sh          |  0
 .../libresample/src/configtemplate.h          |  0
 {res => main}/libresample/src/filterkit.c     |  0
 {res => main}/libresample/src/filterkit.h     |  0
 {res => main}/libresample/src/resample.c      | 16 +++----
 {res => main}/libresample/src/resample_defs.h |  0
 {res => main}/libresample/src/resamplesubs.c  |  0
 .../libresample/tests/compareresample.c       |  0
 .../libresample/tests/resample-sndfile.c      |  0
 .../libresample/tests/testresample.c          |  0
 {res => main}/libresample/win/libresample.dsp |  0
 .../libresample/win/libresample.vcproj        |  0
 main/translate.c                              |  6 +++
 res/Makefile                                  |  3 --
 res/res_resample.c                            | 44 -------------------
 28 files changed, 24 insertions(+), 62 deletions(-)
 rename {res => main}/libresample/LICENSE.txt (100%)
 rename {res => main}/libresample/Makefile.asterisk (100%)
 rename {res => main}/libresample/Makefile.in (100%)
 rename {res => main}/libresample/README.txt (100%)
 rename {res => main}/libresample/config.guess (100%)
 rename {res => main}/libresample/config.sub (100%)
 rename {res => main}/libresample/configure (100%)
 rename {res => main}/libresample/configure.in (100%)
 rename {res => main}/libresample/include/libresample.h (100%)
 rename {res => main}/libresample/install-sh (100%)
 rename {res => main}/libresample/src/configtemplate.h (100%)
 rename {res => main}/libresample/src/filterkit.c (100%)
 rename {res => main}/libresample/src/filterkit.h (100%)
 rename {res => main}/libresample/src/resample.c (98%)
 rename {res => main}/libresample/src/resample_defs.h (100%)
 rename {res => main}/libresample/src/resamplesubs.c (100%)
 rename {res => main}/libresample/tests/compareresample.c (100%)
 rename {res => main}/libresample/tests/resample-sndfile.c (100%)
 rename {res => main}/libresample/tests/testresample.c (100%)
 rename {res => main}/libresample/win/libresample.dsp (100%)
 rename {res => main}/libresample/win/libresample.vcproj (100%)
 delete mode 100644 res/res_resample.c

diff --git a/build_tools/strip_nonapi b/build_tools/strip_nonapi
index 5a52eef1e8..8a8d06fccb 100755
--- a/build_tools/strip_nonapi
+++ b/build_tools/strip_nonapi
@@ -14,8 +14,9 @@
 #	__ast_
 #	astman_
 #	pbx_
+#	resample_
 
-FILTER="${GREP} -v -e ^ast_ -e ^_ast_ -e ^__ast_ -e ^astman_ -e ^pbx_"
+FILTER="${GREP} -v -e ^ast_ -e ^_ast_ -e ^__ast_ -e ^astman_ -e ^pbx_ -e ^resample_"
 
 case "${OSARCH}" in
     linux-gnu|FreeBSD)
diff --git a/codecs/Makefile b/codecs/Makefile
index ef76962e5f..a09f67149e 100644
--- a/codecs/Makefile
+++ b/codecs/Makefile
@@ -55,4 +55,4 @@ $(LIBG722):
 
 $(if $(filter codec_g722,$(EMBEDDED_MODS)),modules.link,codec_g722.so): $(LIBG722)
 
-codec_resample.o: ASTCFLAGS+=-I$(ASTTOPDIR)/res/libresample/include
+codec_resample.o: ASTCFLAGS+=-I$(ASTTOPDIR)/main/libresample/include
diff --git a/codecs/codec_resample.c b/codecs/codec_resample.c
index 718ab88ae0..66d60169d9 100644
--- a/codecs/codec_resample.c
+++ b/codecs/codec_resample.c
@@ -24,10 +24,6 @@
  * \ingroup codecs
  */
 
-/*** MODULEINFO
-	<depend>res_resample</depend>
- ***/
-
 #include "asterisk.h"
 
 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
diff --git a/main/Makefile b/main/Makefile
index ffbd4bf7fa..304d48614a 100644
--- a/main/Makefile
+++ b/main/Makefile
@@ -111,6 +111,9 @@ editline/libedit.a: CHECK_SUBDIR
 db1-ast/libdb1.a: CHECK_SUBDIR
 	CFLAGS="$(ASTCFLAGS)" LDFLAGS="$(ASTLDFLAGS)" $(MAKE) -C db1-ast libdb1.a
 
+libresample/libresample.a: CHECK_SUBDIR
+	$(MAKE) -f Makefile.asterisk -C libresample libresample.a
+
 ast_expr2.c ast_expr2.h:
 	bison -o $@ -d --name-prefix=ast_yy ast_expr2.y
 
@@ -127,6 +130,8 @@ testexpr2: ast_expr2f.c ast_expr2.c ast_expr2.h
 
 channel.o: ASTCFLAGS+=$(ZAPTEL_INCLUDE)
 
+translate.o: ASTCFLAGS+=-Ilibresample/include
+
 AST_EMBED_LDSCRIPTS:=$(sort $(EMBED_LDSCRIPTS))
 AST_EMBED_LDFLAGS:=$(foreach dep,$(EMBED_LDFLAGS),$(value $(dep)))
 AST_EMBED_LIBS:=$(foreach dep,$(EMBED_LIBS),$(value $(dep)))
@@ -152,7 +157,7 @@ else
 MAIN_TGT:=asterisk
 endif
 
-$(MAIN_TGT): $(OBJS) editline/libedit.a db1-ast/libdb1.a minimime/libmmime.a $(AST_EMBED_LDSCRIPTS)
+$(MAIN_TGT): $(OBJS) editline/libedit.a db1-ast/libdb1.a minimime/libmmime.a $(AST_EMBED_LDSCRIPTS) libresample/libresample.a
 	@$(CC) -c -o buildinfo.o $(ASTCFLAGS) buildinfo.c
 	$(ECHO_PREFIX) echo "   [LD] $^ -> $@"
 ifneq ($(findstring chan_h323,$(MENUSELECT_CHANNELS)),)
@@ -169,3 +174,4 @@ clean::
 	@$(MAKE) -C db1-ast clean
 	@$(MAKE) -C stdtime clean
 	@$(MAKE) -C minimime clean
+	@$(MAKE) -f Makefile.asterisk -C libresample clean
diff --git a/res/libresample/LICENSE.txt b/main/libresample/LICENSE.txt
similarity index 100%
rename from res/libresample/LICENSE.txt
rename to main/libresample/LICENSE.txt
diff --git a/res/libresample/Makefile.asterisk b/main/libresample/Makefile.asterisk
similarity index 100%
rename from res/libresample/Makefile.asterisk
rename to main/libresample/Makefile.asterisk
diff --git a/res/libresample/Makefile.in b/main/libresample/Makefile.in
similarity index 100%
rename from res/libresample/Makefile.in
rename to main/libresample/Makefile.in
diff --git a/res/libresample/README.txt b/main/libresample/README.txt
similarity index 100%
rename from res/libresample/README.txt
rename to main/libresample/README.txt
diff --git a/res/libresample/config.guess b/main/libresample/config.guess
similarity index 100%
rename from res/libresample/config.guess
rename to main/libresample/config.guess
diff --git a/res/libresample/config.sub b/main/libresample/config.sub
similarity index 100%
rename from res/libresample/config.sub
rename to main/libresample/config.sub
diff --git a/res/libresample/configure b/main/libresample/configure
similarity index 100%
rename from res/libresample/configure
rename to main/libresample/configure
diff --git a/res/libresample/configure.in b/main/libresample/configure.in
similarity index 100%
rename from res/libresample/configure.in
rename to main/libresample/configure.in
diff --git a/res/libresample/include/libresample.h b/main/libresample/include/libresample.h
similarity index 100%
rename from res/libresample/include/libresample.h
rename to main/libresample/include/libresample.h
diff --git a/res/libresample/install-sh b/main/libresample/install-sh
similarity index 100%
rename from res/libresample/install-sh
rename to main/libresample/install-sh
diff --git a/res/libresample/src/configtemplate.h b/main/libresample/src/configtemplate.h
similarity index 100%
rename from res/libresample/src/configtemplate.h
rename to main/libresample/src/configtemplate.h
diff --git a/res/libresample/src/filterkit.c b/main/libresample/src/filterkit.c
similarity index 100%
rename from res/libresample/src/filterkit.c
rename to main/libresample/src/filterkit.c
diff --git a/res/libresample/src/filterkit.h b/main/libresample/src/filterkit.h
similarity index 100%
rename from res/libresample/src/filterkit.h
rename to main/libresample/src/filterkit.h
diff --git a/res/libresample/src/resample.c b/main/libresample/src/resample.c
similarity index 98%
rename from res/libresample/src/resample.c
rename to main/libresample/src/resample.c
index 9dba5af961..85ff75f766 100644
--- a/res/libresample/src/resample.c
+++ b/main/libresample/src/resample.c
@@ -87,7 +87,7 @@ void *resample_open(int highQuality, double minFactor, double maxFactor)
 
    /* Just exit if we get invalid factors */
    if (minFactor <= 0.0 || maxFactor <= 0.0 || maxFactor < minFactor) {
-      #ifdef DEBUG
+      #if defined(DEBUG)
       fprintf(stderr,
               "libresample: "
               "minFactor and maxFactor must be positive real numbers,\n"
@@ -187,7 +187,7 @@ int resample_process(void   *handle,
    int Nx;
    int i, len;
 
-   #ifdef DEBUG
+   #if defined(DEBUG)
    fprintf(stderr, "resample_process: in=%d, out=%d lastFlag=%d\n",
            inBufferLen, outBufferLen, lastFlag);
    #endif
@@ -197,7 +197,7 @@ int resample_process(void   *handle,
    outSampleCount = 0;
 
    if (factor < hp->minFactor || factor > hp->maxFactor) {
-      #ifdef DEBUG
+      #if defined(DEBUG)
       fprintf(stderr,
               "libresample: factor %f is not between "
               "minFactor=%f and maxFactor=%f",
@@ -232,7 +232,7 @@ int resample_process(void   *handle,
       /* This is the maximum number of samples we can process
          per loop iteration */
 
-      #ifdef DEBUG
+      #if defined(DEBUG)
       printf("XSize: %d Xoff: %d Xread: %d Xp: %d lastFlag: %d\n",
              hp->XSize, hp->Xoff, hp->Xread, hp->Xp, lastFlag);
       #endif
@@ -260,7 +260,7 @@ int resample_process(void   *handle,
       else
          Nx = hp->Xread - 2 * hp->Xoff;
 
-      #ifdef DEBUG
+      #if defined(DEBUG)
       fprintf(stderr, "new len=%d Nx=%d\n", len, Nx);
       #endif
 
@@ -277,7 +277,7 @@ int resample_process(void   *handle,
                          Nwing, LpScl, Imp, ImpD, interpFilt);
       }
 
-      #ifdef DEBUG
+      #if defined(DEBUG)
       printf("Nout: %d\n", Nout);
       #endif
       
@@ -297,7 +297,7 @@ int resample_process(void   *handle,
       for (i=0; i<Nreuse; i++)
          hp->X[i] = hp->X[i + (hp->Xp - hp->Xoff)];
 
-      #ifdef DEBUG
+      #if defined(DEBUG)
       printf("New Xread=%d\n", Nreuse);
       #endif
 
@@ -306,7 +306,7 @@ int resample_process(void   *handle,
       
       /* Check to see if output buff overflowed (shouldn't happen!) */
       if (Nout > hp->YSize) {
-         #ifdef DEBUG
+         #if defined(DEBUG)
          printf("Nout: %d YSize: %d\n", Nout, hp->YSize);
          #endif
          fprintf(stderr, "libresample: Output array overflow!\n");
diff --git a/res/libresample/src/resample_defs.h b/main/libresample/src/resample_defs.h
similarity index 100%
rename from res/libresample/src/resample_defs.h
rename to main/libresample/src/resample_defs.h
diff --git a/res/libresample/src/resamplesubs.c b/main/libresample/src/resamplesubs.c
similarity index 100%
rename from res/libresample/src/resamplesubs.c
rename to main/libresample/src/resamplesubs.c
diff --git a/res/libresample/tests/compareresample.c b/main/libresample/tests/compareresample.c
similarity index 100%
rename from res/libresample/tests/compareresample.c
rename to main/libresample/tests/compareresample.c
diff --git a/res/libresample/tests/resample-sndfile.c b/main/libresample/tests/resample-sndfile.c
similarity index 100%
rename from res/libresample/tests/resample-sndfile.c
rename to main/libresample/tests/resample-sndfile.c
diff --git a/res/libresample/tests/testresample.c b/main/libresample/tests/testresample.c
similarity index 100%
rename from res/libresample/tests/testresample.c
rename to main/libresample/tests/testresample.c
diff --git a/res/libresample/win/libresample.dsp b/main/libresample/win/libresample.dsp
similarity index 100%
rename from res/libresample/win/libresample.dsp
rename to main/libresample/win/libresample.dsp
diff --git a/res/libresample/win/libresample.vcproj b/main/libresample/win/libresample.vcproj
similarity index 100%
rename from res/libresample/win/libresample.vcproj
rename to main/libresample/win/libresample.vcproj
diff --git a/main/translate.c b/main/translate.c
index d9270e9078..617e46552c 100644
--- a/main/translate.c
+++ b/main/translate.c
@@ -39,8 +39,14 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/cli.h"
 #include "asterisk/term.h"
 
+#include "libresample.h"
+
 #define MAX_RECALC 1000 /* max sample recalc */
 
+/* hack to ensure that the libresample code gets linked in */
+
+static attribute_unused void (*resample_hack)(void *) = resample_close;
+
 /*! \brief the list of translators */
 static AST_RWLIST_HEAD_STATIC(translators, ast_translator);
 
diff --git a/res/Makefile b/res/Makefile
index 496264f0b9..cfac3183a7 100644
--- a/res/Makefile
+++ b/res/Makefile
@@ -47,9 +47,6 @@ ael/ael.tab.c ael/ael.tab.h:
 
 ael/pval.o: ael/pval.c
 
-res_resample.so: libresample/src/resample.o libresample/src/resamplesubs.o libresample/src/filterkit.o
-
 clean::
 	rm -f snmp/*.o
 	rm -f ael/*.o
-	rm -f libresample/src/*.o
diff --git a/res/res_resample.c b/res/res_resample.c
deleted file mode 100644
index ac85c3f43a..0000000000
--- a/res/res_resample.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Asterisk -- A telephony toolkit for Linux.
- *
- * Copyright (C) 2007, Digium, Inc.
- *
- * Russell Bryant <russell@digium.com>
- *
- * See http://www.asterisk.org for more information about
- * the Asterisk project. Please do not directly contact
- * any of the maintainers of this project for assistance;
- * the project provides a web site, mailing lists and IRC
- * channels for your use.
- *
- * This program is free software, distributed under the terms of
- * the GNU General Public License Version 2. See the LICENSE file
- * at the top of the source tree.
- */
-
-/*!
- * \file
- *
- * \author Russell Bryant <russell@digium.com>
- */
-
-#include "asterisk.h"
-
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
-#include "asterisk/module.h"
-
-static int load_module(void)
-{
-	return 0;
-}
-
-static int unload_module(void)
-{
-	return -1;
-}
-
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Resampling Support via libresample",
-		.load = load_module,
-		.unload = unload_module,
-	       );
-- 
GitLab