From 7d708eaa8cdab7fce06e7ad6e4184a48c8bb0fcf Mon Sep 17 00:00:00 2001
From: Damian Minkov <damencho@jitsi.org>
Date: Thu, 20 Sep 2012 08:27:01 +0000
Subject: [PATCH] Adds opus to build native xml.

---
 src/native/build.xml | 87 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 87 insertions(+)

diff --git a/src/native/build.xml b/src/native/build.xml
index 2046d8ed..7dc5213e 100644
--- a/src/native/build.xml
+++ b/src/native/build.xml
@@ -551,6 +551,93 @@
     </cc>
   </target>
 
+    <!-- compile opus
+        linux binaries are linked to the distribution binary (call ant -Dopus=)
+        while other os opus is added to shared library, to avoid
+        additional binaries
+        macosx and windows currently not tested.
+    -->
+    <target name="opus" description="Build opus shared library" depends="init-native">
+
+        <fail message="opus repository not set!" unless="opus"/>
+
+        <cc outtype="shared" name="gcc"
+            outfile="${native_install_dir}/opus" objdir="${obj}">
+            <!-- common compiler flags -->
+            <compilerarg value="-shared" />
+            <compilerarg value="-Wall" />
+            <compilerarg value="-fPIC"/>
+            <compilerarg value="-O2" />
+            <compilerarg value="-I${opus}/include" unless="is.running.linux"/>
+            <compilerarg value="-I/usr/include/opus" if="is.running.linux"/>
+            <compilerarg value="-D_JNI_IMPLEMENTATION_" />
+
+            <linkerarg value="-L${opus}/.libs" />
+
+            <!-- Linux specific flags -->
+            <compilerarg value="-m32" if="cross_32" unless="is.running.macos" />
+            <compilerarg value="-m64" if="cross_64" unless="is.running.macos" />
+            <compilerarg value="-I${system.JAVA_HOME}/include" if="is.running.linux" />
+            <compilerarg value="-I${system.JAVA_HOME}/include/linux" if="is.running.linux" />
+
+            <linkerarg value="-m32" if="cross_32" unless="is.running.macos" />
+            <linkerarg value="-m64" if="cross_64" unless="is.running.macos" />
+
+            <!-- static libraries MUST be at the end otherwise
+                they will not be added to shared library
+            -->
+            <!--<linkerarg value="-Wl,-Bstatic" location="end" if="is.running.linux" />-->
+            <linkerarg value="-lopus" location="end" if="is.running.linux" />
+            <!--<linkerarg value="-Wl,-Bdynamic" location="end" if="is.running.linux" />-->
+            <linkerarg value="-o" location="end" if="is.running.linux" />
+            <linkerarg value="libjnopus.so" location="end" if="is.running.linux" />
+
+            <!-- Mac OS X specific flags -->
+            <compilerarg value="-mmacosx-version-min=10.5" if="is.running.macos"/>
+            <compilerarg value="-arch"  if="is.running.macos" />
+            <compilerarg value="x86_64" if="is.running.macos" />
+            <compilerarg value="-arch" if="is.running.macos" />
+            <compilerarg value="i386" if="is.running.macos" />
+            <compilerarg value="-arch" if="is.running.macos" />
+            <compilerarg value="ppc" if="is.running.macos" />
+            <compilerarg value="-I/System/Library/Frameworks/JavaVM.framework/Headers" if="is.running.macos" />
+
+            <linkerarg value="-o" location="end" if="is.running.macos" />
+            <linkerarg value="libjnopus.jnilib" location="end" if="is.running.macos" />
+            <linkerarg value="-dynamiclib" if="is.running.macos" />
+            <linkerarg value="-arch" if="is.running.macos" />
+            <linkerarg value="x86_64" if="is.running.macos" />
+            <linkerarg value="-arch" if="is.running.macos" />
+            <linkerarg value="i386" if="is.running.macos" />
+            <linkerarg value="-arch" if="is.running.macos" />
+            <linkerarg value="ppc" if="is.running.macos" />
+            <linkerarg value="-lopus" location="end" if="is.running.macos" />
+
+            <!-- Windows specific flags -->
+            <compilerarg value="-I${system.JAVA_HOME}/include" if="is.running.windows" />
+            <compilerarg value="-I${system.JAVA_HOME}/include/win32" if="is.running.windows" />
+
+            <linkerarg value="-ojnopus.dll" if="is.running.windows" />
+            <linkerarg value="-Wl,--no-undefined" if="is.running.windows" />
+            <linkerarg value="-Wl,--kill-at" if="is.running.windows" />
+            <linkerarg value="-Wl,-Bstatic" location="end" if="is.running.windows" />
+            <linkerarg value="-lopus" location="end" if="is.running.windows" />
+
+            <fileset dir="${src}/native/opus" includes="*.c"/>
+
+            <!-- opus libraries cannot be built as universal binaries
+               so you have to setup and compile opus for each architecture separately.
+               Run this ant script with:
+               -Darch=32 (rename libjnopus.jnilib to libjnopus.jnilib-32)
+               -Darch=64 (rename libjnopus.jnilib to libjnopus.jnilib-64)
+
+               Finally create the universal binary with:
+               lipo -create libjnopus.jnilib-* -output libjnopus.jnilib
+               strip libjnopus.jnilib
+          -->
+        </cc>
+    </target>
+
   <!-- compile jnvideo4linux2 library -->
   <target name="video4linux2" description="Build jnvideo4linux2 shared library" if="is.running.linux"
     depends="init-native">
-- 
GitLab