aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Vincent <seb@jitsi.org>2010-05-28 16:58:47 +0000
committerSebastien Vincent <seb@jitsi.org>2010-05-28 16:58:47 +0000
commit07e0a1195a83f9eab99dc2be5d5e7cfb4db59df3 (patch)
tree5fbefff7ec22fe526dfa3607de42e4f23096477e
parent9bf100d22181de074c45db33ab9787575819bde3 (diff)
downloadjitsi-07e0a1195a83f9eab99dc2be5d5e7cfb4db59df3.zip
jitsi-07e0a1195a83f9eab99dc2be5d5e7cfb4db59df3.tar.gz
jitsi-07e0a1195a83f9eab99dc2be5d5e7cfb4db59df3.tar.bz2
Add ant script to build JNI libraries. Note that external libraries such as ffmpeg, x264, portaudio and speex must be compiled before trying to compile libffmpeg or libjportaudio.
-rw-r--r--build.xml3
-rw-r--r--lib/installer-exclude/cpptasks.jarbin0 -> 364138 bytes
-rw-r--r--src/native/build.xml586
3 files changed, 589 insertions, 0 deletions
diff --git a/build.xml b/build.xml
index b9480e0..f1ddcb1 100644
--- a/build.xml
+++ b/build.xml
@@ -260,6 +260,9 @@
<!-- Import installation build xml -->
<import file="${inst.resrc}/build.xml"/>
+ <!-- Import JNI build xml -->
+ <import file="${src}/native/build.xml"/>
+
<!-- default Ant target does nothing except print helpful options -->
<!-- Ant-external target will appear in -projecthelp output -->
<target name="ant-usage"
diff --git a/lib/installer-exclude/cpptasks.jar b/lib/installer-exclude/cpptasks.jar
new file mode 100644
index 0000000..99c4164
--- /dev/null
+++ b/lib/installer-exclude/cpptasks.jar
Binary files differ
diff --git a/src/native/build.xml b/src/native/build.xml
new file mode 100644
index 0000000..a606018
--- /dev/null
+++ b/src/native/build.xml
@@ -0,0 +1,586 @@
+<project name="sip-communicator-native" default="help-native">
+ <import file="../../build.xml"/>
+
+ <!-- additionnal property -->
+ <property name="obj" value="${src}/native/native_obj" />
+
+ <!-- load cpptasks jar to have <cc /> tag -->
+ <taskdef resource="cpptasks.tasks">
+ <!-- load cpptasks jar -->
+ <classpath>
+ <pathelement location="${sc.basedir}/lib/installer-exclude/cpptasks.jar"/>
+ </classpath>
+ </taskdef>
+
+ <!-- initialize destination directory -->
+ <condition property="native_install_dir" value="${native.libs}/windows">
+ <and>
+ <isset property="is.running.windows"/>
+ <or>
+ <os arch="x86" />
+ <os arch="i386" />
+ </or>
+ </and>
+ </condition>
+
+ <condition property="native_install_dir" value="${native.libs}/windows-64">
+ <and>
+ <isset property="is.running.windows"/>
+ <os arch="amd64" />
+ </and>
+ </condition>
+
+ <condition property="native_install_dir" value="${native.libs}/linux">
+ <and>
+ <isset property="is.running.linux"/>
+ <or>
+ <os arch="x86" />
+ <os arch="i386" />
+ </or>
+ </and>
+ </condition>
+
+ <condition property="native_install_dir" value="${native.libs}/linux-64">
+ <and>
+ <isset property="is.running.linux"/>
+ <os arch="amd64" />
+ </and>
+ </condition>
+
+ <condition property="native_install_dir" value="${native.libs}/mac">
+ <isset property="is.running.macos"/>
+ </condition>
+
+ <condition property="native_install_dir" value="${native.libs}/mac">
+ <isset property="is.running.macos"/>
+ </condition>
+
+ <!-- Cross compilation, this is mainly used for Linux (cross-compile 32-bit binaries
+ from 64-bit host. It is also used to compile ffmpeg for Mac OS X for each
+ architecture before create universal binary with lupo tool.
+ -->
+ <condition property="cross_32" value="y" >
+ <equals arg1="${arch}" arg2="32" />
+ </condition>
+
+ <condition property="cross_64" value="y" >
+ <equals arg1="${arch}" arg2="64" />
+ </condition>
+
+ <!-- Mac OS X only -->
+ <condition property="cross_ppc" value="y" >
+ <equals arg1="${arch}" arg2="ppc" />
+ </condition>
+
+ <!--
+ <echo message="ffmpeg library: ${ffmpeg}" />
+ <echo message="x264 library: ${x264}" />
+ <echo message="portaudio library: ${portaudio}" />
+ <echo message="speex library: ${speex}" />
+ <echo message="Install directory ${native_install_dir}" />
+ <echo message="arch: ${arch}" />
+ -->
+
+ <target name="init-native" description="Initialize native stuff">
+ <mkdir dir="${obj}" />
+ </target>
+
+ <!-- compile screencapture library -->
+ <target name="screencapture" description="Build screencapture shared library"
+ depends="init-native">
+ <cc outtype="shared" name="gcc" outfile="${native_install_dir}/screencapture" objdir="${obj}">
+ <!-- common compiler flags -->
+ <compilerarg value="-std=c99" />
+ <compilerarg value="-D_XOPEN_SOURCE=0x600" />
+ <compilerarg value="-Wall" />
+ <compilerarg value="-Wextra" />
+ <compilerarg value="-O3" />
+
+ <!-- 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" />
+ <linkerarg value="-lX11" location="end" if="is.running.linux" />
+
+ <!-- Mac OS X specific flags -->
+ <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/ApplicationServices.framework/Headers" 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="libscreencapture.jnilib" location="end" 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="-framework" if="is.running.macos" />
+ <linkerarg value="ApplicationServices" 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="-lgdi32" location="end" if="is.running.windows" />
+ <linkerarg value="-oscreencapture.dll" if="is.running.windows" />
+ <linkerarg value="-Wl,--kill-at" if="is.running.windows" />
+
+ <fileset dir="${src}/native/screencapture" includes="*.c"/>
+ </cc>
+ </target>
+
+ <!-- compile jawtrenderer library -->
+ <target name="jawtrenderer" description="Build jawtrenderer shared library" depends="init-native,jawtrenderer-windows"
+ unless="is.running.windows">
+ <cc outtype="shared" name="gcc" outfile="${native_install_dir}/jawtrenderer" objdir="${obj}">
+ <!-- common compiler flags -->
+ <compilerarg value="-std=c99" />
+ <compilerarg value="-Wall" />
+ <compilerarg value="-O2" />
+
+ <linkerarg value="-L${system.JAVA_HOME}/jre/lib/amd64" />
+ <linkerarg value="-L${system.JAVA_HOME}/jre/lib/x86" />
+ <linkerarg value="-ljawt" location="end" />
+
+ <!-- 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" />
+ <linkerarg value="-lXv" location="end" if="is.running.linux" />
+ <linkerarg value="-lX11" location="end" if="is.running.linux" />
+
+ <fileset dir="${src}/native/jawtrenderer" includes="net*.c JAWTRenderer_Linux.c" if="is.running.linux"/>
+
+ <!-- Mac OS X specific flags -->
+ <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="libjawtrenderer.jnilib" location="end" 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="-framework" if="is.running.macos" />
+ <linkerarg value="OpenGL" if="is.running.macos" />
+ <linkerarg value="-framework" if="is.running.macos" />
+ <linkerarg value="Foundation" if="is.running.macos" />
+ <linkerarg value="-framework" if="is.running.macos" />
+ <linkerarg value="AppKit" if="is.running.macos" />
+ <linkerarg value="-L/System/Library/Frameworks/JavaVM.framework/Libraries/" if="is.running.macos" />
+
+ <fileset dir="${src}/native/jawtrenderer" includes="net*.c JAWTRenderer_MacOSX.m" if="is.running.macos" />
+
+ </cc>
+ </target>
+
+ <!-- compile jawtrenderer library for Windows -->
+ <target name="jawtrenderer-windows" description="Build jawtrenderer shared library for Windows" depends="init-native"
+ if="is.running.windows">
+ <cc outtype="shared" name="msvc" outfile="${native_install_dir}/jawtrenderer" objdir="${obj}">
+ <compilerarg value="/O2" />
+ <compilerarg value="/IC:\Program Files\Microsoft DirectX SDK (February 2010)\Include" />
+ <compilerarg value="/IC:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\Include" />
+ <compilerarg value="-I${system.JAVA_HOME}/include" />
+ <compilerarg value="-I${system.JAVA_HOME}/include/win32" />
+
+ <!-- <linkerarg value="/LD" /> -->
+ <linkerarg value="/LIBPATH:C:\Program Files\Microsoft DirectX SDK (February 2010)\lib\x86" />
+ <linkerarg value="/LIBPATH:C:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\lib\x64" />
+ <linkerarg value="/LIBPATH:${system.JAVA_HOME}\\lib" />
+ <linkerarg value="d3d9.lib" location="end" />
+ <linkerarg value="user32.lib" location="end" />
+ <linkerarg value="jawt.lib" location="end" />
+
+ <fileset dir="${src}/native/jawtrenderer" includes="net*.c JAWTRenderer_Windows.cpp windows/*.cpp windows/*.c"/>
+ </cc>
+ </target>
+
+ <!-- compile ffmpeg library -->
+ <target name="ffmpeg" description="Build ffmpeg shared library" depends="init-native">
+
+ <fail message="ffmpeg repository not set!" unless="ffmpeg" />
+ <fail message="x264 repository not set!" unless="x264" />
+
+ <cc outtype="shared" name="gcc" outfile="${native_install_dir}/ffmpeg" objdir="${obj}">
+ <!-- common compiler flags -->
+ <compilerarg value="-std=c99" />
+ <compilerarg value="-Wall" />
+ <compilerarg value="-O2" />
+ <compilerarg value="-I${ffmpeg}" />
+ <compilerarg value="-DJNI_IMPLEMENTATION" />
+
+ <linkerarg value="-L${ffmpeg}/libavformat" />
+ <linkerarg value="-L${ffmpeg}/libavcodec" />
+ <linkerarg value="-L${ffmpeg}/libavutil" />
+ <linkerarg value="-L${ffmpeg}/libswscale" />
+ <linkerarg value="-L${x264}" />
+ <!-- static libraries MUST be at the end otherwise
+ they will not be added to shared library
+ -->
+ <linkerarg value="-lavformat" location="end" />
+ <linkerarg value="-lavcodec" location="end" />
+ <linkerarg value="-lavutil" location="end" />
+ <linkerarg value="-lswscale" location="end" />
+ <linkerarg value="-lx264" location="end" />
+
+ <!-- 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" />
+ <linkerarg value="-Wl,-Bsymbolic" if="is.running.linux" />
+
+ <!-- Mac OS X specific flags -->
+ <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" />
+
+ <!-- ffmpeg/x264 libraries cannot be built as universal binaries
+ so you have to setup and compile ffmpeg/x264 for each architecture separately.
+ Run this ant script with:
+ -Darch=32 (rename libffmpeg.dyld to libffmpeg.dyld.32)
+ -Darch=64 (rename libffmpeg.dyld to libffmpeg.dyld.64)
+ -Darch=ppc (rename libffmpeg.dyld to libffmpeg.dyld.ppc)
+
+ Finally create the universal binary with:
+ lipo -create libffmpeg.dyld.32 libffmpeg.dyld.64 libffmpeg.dyld.ppc -output libffmpeg.jnilib
+ -->
+ <linkerarg value="-o" location="end" if="is.running.macos" />
+ <linkerarg value="libffmpeg.jnilib" location="end" if="is.running.macos" />
+ <linkerarg value="-arch" if="cross_32" unless="is.running.linux" />
+ <linkerarg value="-i386" if="cross_32" unless="is.running.linux" />
+ <linkerarg value="-arch" if="cross_64" unless="is.running.linux" />
+ <linkerarg value="x86_64" if="cross_64" unless="is.running.linux" />
+ <linkerarg value="-arch" if="cross_ppc" unless="is.running.linux" />
+ <linkerarg value="ppc" if="cross_ppc" unless="is.running.linux" />
+ <linkerarg value="-dynamiclib" if="is.running.macos" />
+ <linkerarg value="-Wl,-read_only_relocs,suppress" 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="-offmpeg.dll" if="is.running.windows" />
+ <linkerarg value="-Wl,--kill-at" if="is.running.windows" />
+
+ <fileset dir="${src}/native/ffmpeg" includes="*.c"/>
+ </cc>
+ </target>
+
+ <!-- compile jportaudio library -->
+ <target name="portaudio" description="Build jportaudio shared library" depends="init-native">
+
+ <fail message="portaudio repository not set!" unless="portaudio" />
+ <fail message="speex repository not set!" unless="speex" />
+
+ <cc outtype="shared" name="gcc" outfile="${native_install_dir}/jportaudio" objdir="${obj}">
+ <!-- common compiler flags -->
+ <compilerarg value="-std=c99" />
+ <compilerarg value="-Wall" />
+ <compilerarg value="-O2" />
+ <compilerarg value="-I${portaudio}/include" />
+ <compilerarg value="-I${speex}/include" />
+ <compilerarg value="-DJNI_IMPLEMENTATION" />
+
+ <linkerarg value="-L${speex}/libspeex/.libs" />
+ <linkerarg value="-L${portaudio}/lib/.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="-lportaudio" location="end" if="is.running.linux" />
+ <linkerarg value="-lspeexdsp" location="end" if="is.running.linux" />
+ <linkerarg value="-Wl,-Bdynamic" location="end" if="is.running.linux" />
+ <linkerarg value="-lasound" location="end" if="is.running.linux" />
+ <linkerarg value="-lm" location="end" if="is.running.linux" />
+ <linkerarg value="-lpthread" location="end" if="is.running.linux" />
+
+ <!-- Mac OS X specific flags -->
+ <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="libjportaudio.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="-framework" location="end" if="is.running.macos" />
+ <linkerarg value="AudioToolbox" location="end" if="is.running.macos" />
+ <linkerarg value="-framework" location="end" if="is.running.macos" />
+ <linkerarg value="AudioUnit" location="end" if="is.running.macos" />
+ <linkerarg value="-framework" location="end" if="is.running.macos" />
+ <linkerarg value="CoreAudio" location="end" if="is.running.macos" />
+ <linkerarg value="-framework" location="end" if="is.running.macos" />
+ <linkerarg value="Carbon" location="end" if="is.running.macos" />
+ <linkerarg value="-lportaudio" location="end" if="is.running.macos" />
+ <linkerarg value="-lspeexdsp" location="end" if="is.running.macos" />
+ <linkerarg value="-dynamic" location="end" if="is.running.macos" />
+ <linkerarg value="-lpthread" 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="-ojportaudio.dll" 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="-lportaudio" location="end" if="is.running.windows" />
+ <linkerarg value="-lspeexdsp" location="end" if="is.running.windows" />
+ <linkerarg value="-lwinmm" location="end" if="is.running.windows" />
+ <linkerarg value="-lm" location="end" if="is.running.windows" />
+ <linkerarg value="-lstdc++" location="end" if="is.running.windows" />
+ <linkerarg value="-lole32" location="end" if="is.running.windows" />
+ <linkerarg value="-luuid" location="end" if="is.running.windows" />
+
+ <fileset dir="${src}/native/portaudio" includes="*.c"/>
+ </cc>
+ </target>
+
+ <!-- compile jvideo4linux2 library -->
+ <target name="video4linux2" description="Build jvideo4linux2 shared library" if="is.running.linux"
+ depends="init-native">
+ <cc outtype="shared" name="gcc" outfile="${native_install_dir}/video4linux2" objdir="${obj}">
+ <compilerarg value="-std=c99" />
+ <compilerarg value="-Wall" />
+ <compilerarg value="-O2" />
+ <compilerarg value="-I${system.JAVA_HOME}/include" />
+ <compilerarg value="-I${system.JAVA_HOME}/include/linux" />
+ <compilerarg value="-m32" if="cross_32" />
+ <compilerarg value="-m64" if="cross_64" />
+
+ <linkerarg value="-m32" if="cross_32" />
+ <linkerarg value="-m64" if="cross_64" />
+
+ <fileset dir="${src}/native/linux/video4linux2" includes="*.c"/>
+ </cc>
+ </target>
+
+ <!-- compile galagonotification library -->
+ <target name="galagonotification" description="Build galagonotification shared library" if="is.running.linux"
+ depends="init-native">
+ <cc outtype="shared" name="gcc" outfile="${native_install_dir}/galagonotification" objdir="${obj}">
+ <compilerarg value="-std=c99" />
+ <compilerarg value="-Wall" />
+ <compilerarg value="-O2" />
+ <compilerarg value="-I/usr/include/dbus-1.0" />
+ <compilerarg value="-I/usr/lib/dbus-1.0/include" />
+ <compilerarg value="-m32" if="cross_32" />
+ <compilerarg value="-m64" if="cross_64" />
+ <compilerarg value="-I${system.JAVA_HOME}/include" />
+ <compilerarg value="-I${system.JAVA_HOME}/include/linux" />
+
+ <linkerarg value="-m32" if="cross_32" />
+ <linkerarg value="-m64" if="cross_64" />
+ <linkerarg value="-ldbus-1" location="end" />
+
+ <fileset dir="${src}/native/linux/galagonotification" includes="*.c"/>
+ </cc>
+ </target>
+
+ <!-- compile LocalhostRetriever library -->
+ <target name="localhostretriever" description="Build LocalhostRetriever shared library" if="is.running.windows"
+ depends="init-native">
+ <cc outtype="shared" name="msvc" outfile="${native_install_dir}/LocalhostRetriever" objdir="${obj}">
+ <compilerarg value="/O2" />
+ <compilerarg value="-I${system.JAVA_HOME}/include" />
+ <compilerarg value="-I${system.JAVA_HOME}/include/win32" />
+
+ <linkerarg value="iphlpapi.lib" location="end" />
+
+ <fileset dir="${src}/native/windows/LocalhostRetriever" includes="*.c"/>
+ </cc>
+ </target>
+
+ <!-- compile jdirectshow library -->
+ <target name="directshow" description="Build jdirectshow shared library" if="is.running.windows"
+ depends="init-native">
+ <cc outtype="shared" name="msvc" outfile="${native_install_dir}/jdirectshow" objdir="${obj}">
+ <compilerarg value="/O2" />
+ <compilerarg value="/W4" />
+ <compilerarg value="/wd4996" />
+ <compilerarg value="/EHsc" />
+ <compilerarg value="-I${system.JAVA_HOME}/include" />
+ <compilerarg value="-I${system.JAVA_HOME}/include/win32" />
+
+ <linkerarg value="ole32.lib" location="end" />
+ <linkerarg value="oleaut32.lib" location="end" />
+ <linkerarg value="user32.lib" location="end" />
+
+ <fileset dir="${src}/native/windows/directshow" includes="*.cpp"/>
+ </cc>
+ </target>
+
+ <!-- compile AEGetURLEventHandler library for Mac OS X (32-bit/64-bit/ppc) -->
+ <target name="aegeturleventhandler" description="Build AEGetURLEventHandler shared library for Mac OS X" if="is.running.macos"
+ depends="init-native">
+ <cc outtype="shared" name="gcc" outfile="${native_install_dir}/AEGetURLEventHandler" objdir="${obj}">
+ <compilerarg value="-Wall" />
+ <compilerarg value="-O2" />
+ <compilerarg value="-arch" />
+ <compilerarg value="x86_64" />
+ <compilerarg value="-arch" />
+ <compilerarg value="i386" />
+ <compilerarg value="-arch" />
+ <compilerarg value="ppc" />
+ <compilerarg value="-I/System/Library/Frameworks/JavaVM.framework/Headers" />
+
+ <linkerarg value="-o" location="end" />
+ <linkerarg value="libAEGetURLEventHandlerAgent.jnilib" location="end" />
+ <linkerarg value="-arch" />
+ <linkerarg value="x86_64" />
+ <linkerarg value="-arch" />
+ <linkerarg value="i386" />
+ <linkerarg value="-arch" />
+ <linkerarg value="ppc" />
+ <linkerarg value="-framework" />
+ <linkerarg value="Foundation" />
+
+ <fileset dir="${src}/native/macosx/launcharghandler" includes="*.m"/>
+ </cc>
+ </target>
+
+ <!-- compile sparkle library for Mac OS X (32-bit/64-bit/ppc) -->
+ <target name="sparkle" description="Build sparkle shared library for Mac OS X" if="is.running.macos"
+ depends="init-native">
+ <cc outtype="shared" name="gcc" outfile="${native_install_dir}/sparkle_init" objdir="${obj}">
+ <compilerarg value="-Wall" />
+ <compilerarg value="-O2" />
+ <compilerarg value="-arch" />
+ <compilerarg value="x86_64" />
+ <compilerarg value="-arch" />
+ <compilerarg value="i386" />
+ <compilerarg value="-arch" />
+ <compilerarg value="ppc" />
+ <compilerarg value="-I/System/Library/Frameworks/JavaVM.framework/Headers" />
+
+ <linkerarg value="-arch" />
+ <linkerarg value="x86_64" />
+ <linkerarg value="-arch" />
+ <linkerarg value="i386" />
+ <linkerarg value="-arch" />
+ <linkerarg value="ppc" />
+ <linkerarg value="-framework" />
+ <linkerarg value="AppKit" />
+ <linkerarg value="-framework" />
+ <linkerarg value="Foundation" />
+ <linkerarg value="-framework" />
+ <linkerarg value="Sparkle" />
+
+ <fileset dir="${src}/native/macosx/sparkle" includes="*.m"/>
+ </cc>
+ </target>
+
+ <!-- compile jquicktime library for Mac OS X (32-bit/64-bit/ppc) -->
+ <target name="quicktime" description="Build jquicktime shared library for Mac OS X" if="is.running.macos"
+ depends="init-native">
+ <cc outtype="shared" name="gcc" outfile="${native_install_dir}/jquicktime" objdir="${obj}">
+ <compilerarg value="-Wall" />
+ <compilerarg value="-O2" />
+ <compilerarg value="-arch" />
+ <compilerarg value="x86_64" />
+ <compilerarg value="-arch" />
+ <compilerarg value="i386" />
+ <compilerarg value="-arch" />
+ <compilerarg value="ppc" />
+ <compilerarg value="-I/System/Library/Frameworks/JavaVM.framework/Headers" />
+
+ <linkerarg value="-o" location="end" />
+ <linkerarg value="libjquicktime.jnilib" location="end" />
+ <linkerarg value="-arch" />
+ <linkerarg value="x86_64" />
+ <linkerarg value="-arch" />
+ <linkerarg value="i386" />
+ <linkerarg value="-arch" />
+ <linkerarg value="ppc" />
+ <linkerarg value="-framework" />
+ <linkerarg value="QTKit" />
+ <linkerarg value="-framework" />
+ <linkerarg value="Quartz" />
+ <linkerarg value="-framework" />
+ <linkerarg value="Foundation" />
+
+ <fileset dir="${src}/native/macosx/quicktime" includes="*.c *.m"/>
+ </cc>
+ </target>
+
+ <!-- Cleanup object file and shared libraries -->
+ <target name="clean-native" description="Clean all object file and libraries.">
+ <delete failonerror="false" includeemptydirs="true">
+ <fileset dir="${obj}" />
+ <fileset dir="${src}/native/" includes="*.dll *.so *.dyld *.jnilib *.manifest *.o *.obj *.lib *.exp history.xml" />
+ <fileset dir="${sc.basedir}" includes="**.dll *.so *.dyld *.jnilib *.manifest *.o *.obj *.lib *.exp history.xml" />
+ </delete>
+ </target>
+
+ <!-- Help, print useful targets -->
+ <target name="help-native">
+ <echo message="Targets available:" />
+ <echo message="'ant screencapture' to compile screencapture shared library" />
+ <echo message="'ant jawtrenderer' to compile jawtrenderer shared library" />
+ <echo message="'ant ffmpeg' to compile ffmpeg shared library" />
+ <echo message="'ant portaudio' to compile jportaudio shared library" />
+ <echo message="'ant video4linux2 (Linux only)' to compile jvideo4linux2 shared library" />
+ <echo message="'ant galagonotification (Linux only)' to compile galagonotification shared library" />
+ <echo message="'ant localhostretriever (Windows only)' to compile LocalhostRetriever shared library" />
+ <echo message="'ant directshow (Windows only)' to compile jdirectshow shared library" />
+ <echo message="'ant aegeturleventhandler (Mac OS X only)' to compile AEGetURLEventHandler shared library" />
+ <echo message="'ant sparkle (Mac OS X only)' to compile sparkle shared library" />
+ <echo message="'ant quicktime (Mac OS X only)' to compile jquicktime shared library" />
+ <echo message="" />
+ <echo message="Please note that external libraries such as ffmpeg, x264, portaudio and speex have to be compiled" />
+ <echo message="(follow READMEs in relevant directory) before trying to compile libffmpeg and libjportaudio" />
+ <echo message="When compiling libffmpeg you have to tell ant script the directory of ffmpeg and x264 with" />
+ <echo message="-Dffmpeg=/path/to/ffmpeg and -Dx264=/path/to/x264" />
+ <echo message="When compiling libjportaudio you have to tell ant script the directory of portaudio and speex with" />
+ <echo message="-Dportaudio=/path/to/portaudio and -Dspeex=/path/to/speex" />
+ </target>
+</project>
+