<!-- Copyright (C) [2004, 2005, 2006], Hyperic, Inc. This file is part of SIGAR. SIGAR is free software; you can redistribute it and/or modify it under the terms version 2 of the GNU General Public License as published by the Free Software Foundation. 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, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. --> <property environment="env"/> <property name="build" location="build"/> <property name="jni.bin" location="${build}"/> <property name="jni.define.name" value="JNI"/> <property name="jni.source.dir" value="src"/> <property name="jni.src.java" value="src"/> <property name="jni.libprefix" value="java"/> <property name="jni.libversion" value=""/> <property name="osx.min" value="-mmacosx-version-min=10.3"/> <property name="cpptasks.jar" location="lib/cpptasks.jar"/> <taskdef name="cc" classname="net.sf.antcontrib.cpptasks.CCTask"> <classpath location="${cpptasks.jar}"/> </taskdef> <target name="jni-init"> <mkdir dir="${build}/classes"/> <available property="libproc.h" file="/usr/include/libproc.h"/> <condition property="jni.debug" value="true"> <isset property="jni.dmalloc"/> </condition> <condition property="jni.optim" value="true"> <not> <istrue value="${jni.debug}"/> </not> </condition> <condition property="static.gcc"> <os arch="i386"/><!-- only for x86 solaris --> </condition> <condition property="jni.javahome" value="${env.JAVA_HOME}"> <isset property="env.JAVA_HOME"/> </condition> <condition property="jni.javahome" value="${java.home}"> <not> <isset property="jni.javahome"/> </not> </condition> <echo>java.home=${jni.javahome}</echo> <checksum file="${jni.javahome}/include/jni.h" property="jni.md5"/> <condition property="linux"> <equals arg1="${os.name}" arg2="Linux"/> </condition> <condition property="solaris"> <equals arg1="${os.name}" arg2="SunOS"/> </condition> <condition property="win32"> <os family="windows"/> </condition> <condition property="hpux"> <equals arg1="${os.name}" arg2="HP-UX"/> </condition> <condition property="aix"> <equals arg1="${os.name}" arg2="AIX"/> </condition> <condition property="darwin"> <equals arg1="${os.name}" arg2="Mac OS X"/> </condition> <condition property="freebsd"> <equals arg1="${os.name}" arg2="FreeBSD"/> </condition> <condition property="openbsd"> <equals arg1="${os.name}" arg2="OpenBSD"/> </condition> <condition property="netbsd"> <equals arg1="${os.name}" arg2="NetBSD"/> </condition> <condition property="osf1"> <equals arg1="${os.name}" arg2="OSF1"/> </condition> <condition property="jni.os" value="linux"> <isset property="linux"/> </condition> <condition property="jni.os" value="win32"> <isset property="win32"/> </condition> <condition property="jni.os" value="solaris"> <isset property="solaris"/> </condition> <condition property="jni.os" value="aix"> <isset property="aix"/> </condition> <condition property="jni.os" value="hpux"> <isset property="hpux"/> </condition> <condition property="jni.os" value="darwin"> <isset property="darwin"/> </condition> <condition property="jni.os" value="freebsd"> <isset property="freebsd"/> </condition> <condition property="jni.os" value="openbsd"> <isset property="openbsd"/> </condition> <condition property="jni.os" value="netbsd"> <isset property="netbsd"/> </condition> <!-- darwin and freebsd use the same source files --> <condition property="jni.src" value="darwin"> <isset property="freebsd"/> </condition> <condition property="jni.src" value="darwin"> <isset property="openbsd"/> </condition> <condition property="jni.src" value="darwin"> <isset property="netbsd"/> </condition> <condition property="jni.os" value="osf1"> <isset property="osf1"/> </condition> <condition property="jni.jdk.os" value="${jni.os}"> <and> <isfalse value="${hpux}"/> <isfalse value="${osf1}"/> </and> </condition> <condition property="jni.jdk.os" value="hp-ux"> <istrue value="${hpux}"/> </condition> <condition property="jni.jdk.os" value="alpha"> <istrue value="${osf1}"/> </condition> <condition property="jni.src" value="${jni.os}"> <isfalse value="${jni.src}"/> </condition> <echo message="jni.src=${jni.src}, jni.jdk.os=${jni.jdk.os}, ${sun.arch.data.model}-bit"/> <javac srcdir="${jni.src.java}" destdir="${build}/classes" debug="true" source="1.4" target="1.4" includes="org/hyperic/jni/*.java"/> <taskdef name="libarch" classname="org.hyperic.jni.ArchNameTask"> <classpath location="${build}/classes"/> </taskdef> <taskdef name="copydep" classname="org.hyperic.jni.CopyDependsTask"> <classpath location="${build}/classes"/> </taskdef> <libarch/> <property name="jni.project.archname" value="${project.name}-${jni.libarch}"/> <condition property="jni.libname" value="${jni.libprefix}${jni.project.archname}${jni.libversion}"> <isfalse value="${jni.libname}"/> </condition> <property name="jni.libname.full" value="${jni.libpre}${jni.libname}${jni.libext}"/> <property name="jni.objdir" value="${build}/obj/${jni.libarch}"/> <condition property="jni.cc" value="uni-cc"> <isset property="darwin"/> </condition> <property name="jni.cc" value="jni-cc"/> <condition property="cc.runtime" value="static"> <isset property="win32"/> </condition> <condition property="cc.runtime" value="dynamic"> <not> <isset property="win32"/> </not> </condition> </target> <target name="jni-lib-copy" if="jni.libarch"> <mkdir dir="${jni.bin}/lib"/> <copy toDir="${jni.bin}/lib" overwrite="true"> <fileset dir="${jni.objdir}/lib"/> </copy> <chmod perm="a+x"> <fileset dir="${jni.bin}/lib"> <include name="*.sl"/> </fileset> </chmod> </target> <target name="jni-compile" if="jni.libarch"> <antcall target="${jni.cc}" inheritRefs="true"/> </target> <!-- run jni-cc twice {ppc,i386}, then feed both to lipo to build a universal binary --> <target name="uni-cc" if="jni.libarch"> <property name="shlib" value="${jni.objdir}/lib/lib${jni.libname}.dylib"/> <!-- ppc --> <echo message="build 'ppc' arch"/> <antcall target="jni-cc" inheritRefs="true"> <param name="uni.arch" value="ppc"/> </antcall> <copy file="${shlib}" tofile="${shlib}.ppc"/> <!-- i386 --> <echo message="build 'i386' arch"/> <delete> <fileset dir="${jni.objdir}" includes="*.o"/> </delete> <antcall target="jni-cc" inheritRefs="true"> <param name="uni.arch" value="i386"/> </antcall> <copy file="${shlib}" tofile="${shlib}.i386"/> <echo message="lipo 'ppc'+'i386'"/> <exec executable="lipo"> <arg line="-create ${shlib}.ppc ${shlib}.i386 -output ${jni.objdir}/lib/lib${jni.libname}.dylib"/> </exec> <delete> <fileset dir="${jni.objdir}/lib" includes="*.ppc,*.i386"/> </delete> </target> <target name="jni-cc" if="jni.libarch"> <mkdir dir="${jni.objdir}/lib"/> <echo message="jni libname=${jni.libname}"/> <cc outtype="shared" outfile="${jni.objdir}/lib/${jni.libname}" objdir="${jni.objdir}" runtime="${cc.runtime}" relentless="false"> <!-- HPUX --> <compiler name="hp" if="hpux"> <compilerarg value="+Z"/> <defineset> <define name="${jni.define.name}_HPUX"/> <define name="_HPUX_SOURCE"/> <define name="_REENTRANT"/> </defineset> </compiler> <linker name="hp" if="hpux"> <libset if="jni.libset.libs" dir="${jni.libset.dir}" libs="${jni.libset.libs}"/> <syslibset libs="nsl"/> <syslibset libs="nm"/> </linker> <!-- Solaris --> <compiler name="gcc" if="solaris"> <compilerarg value="-O2" if="jni.optim"/> <compilerarg value="-g" if="jni.debug"/> <compilerarg value="-Wall"/> <compilerarg value="-Werror" if="jni.werror"/> <compilerarg value="-m64" if="jni.arch64"/> <defineset> <define name="${jni.define.name}_SOLARIS"/> <define name="_REENTRANT"/> <define name="_POSIX_PTHREAD_SEMANTICS"/> <define name="DMALLOC" if="jni.dmalloc"/> </defineset> </compiler> <linker name="gcc" if="solaris"> <!-- required for modern gcc to avoid libgcc_s.so dependency --> <!-- this arg is ignored by older gcc --> <linkerarg value="-static-libgcc"/> <linkerarg value="-m64" if="jni.arch64"/> <libset if="jni.libset.libs" dir="${jni.libset.dir}" libs="${jni.libset.libs}"/> <libset if="jni.dmalloc" dir="${jni.dmalloc}/lib" libs="dmallocth"/> </linker> <!-- Linux --> <compiler name="gcc" debug="${jni.debug}" if="linux"> <compilerarg value="-O2" if="jni.optim"/> <compilerarg value="-g" if="jni.debug"/> <compilerarg value="-Wall"/> <compilerarg value="-Werror" if="jni.werror"/> <compilerarg value="${jni.gccm}" if="jni.gccm"/> <defineset> <define name="${jni.define.name}_LINUX"/> <define name="_REENTRANT"/> <define name="DMALLOC" if="jni.dmalloc"/> </defineset> </compiler> <linker name="gcc" if="linux"> <libset if="jni.libset.libs" dir="${jni.libset.dir}" libs="${jni.libset.libs}"/> <libset if="jni.dmalloc" dir="${jni.dmalloc}/lib" libs="dmallocth"/> <linkerarg value="${jni.gccm}" if="jni.gccm"/> </linker> <!-- Darwin --> <compiler name="gcc" if="darwin"> <compilerarg value="-Wall"/> <compilerarg value="-Werror" if="jni.werror"/> <compilerarg value="-m64" if="jni.arch64"/> <compilerarg value="-O2" if="jni.optim"/> <compilerarg value="-g" if="jni.debug"/> <compilerarg value="-isysroot"/> <compilerarg value="${uni.sdk}"/> <compilerarg value="-arch"/> <compilerarg value="${uni.arch}"/> <compilerarg value="${osx.min}"/> <sysincludepath location="/Developer/Headers/FlatCarbon"/> <defineset> <define name="DARWIN"/> <define name="DARWIN_HAS_LIBPROC_H" if="libproc.h"/> </defineset> </compiler> <linker name="gcc" if="darwin"> <linkerarg value="-m64" if="jni.arch64"/> <linkerarg value="-Wl,-syslibroot,${uni.sdk}"/> <linkerarg value="-arch"/> <linkerarg value="${uni.arch}"/> <linkerarg value="${osx.min}"/> <!-- for Gestalt() --> <linkerarg value="-framework"/> <linkerarg value="CoreServices"/> <linkerarg value="-sectcreate,__TEXT,__info_plist,${jni.info.plist}" if="jni.info.plist"/> <libset if="jni.libset.libs" dir="${jni.libset.dir}" libs="${jni.libset.libs}"/> <syslibset libs="IOKit"/> </linker> <!-- Freebsd --> <compiler name="gcc" if="freebsd"> <compilerarg value="-O2" if="jni.optim"/> <compilerarg value="-g" if="jni.debug"/> <compilerarg value="-Wall"/> <compilerarg value="-Werror" if="jni.werror"/> <defineset> <define name="${jni.define.name}_FREEBSD"/> </defineset> </compiler> <linker name="gcc" if="freebsd"> <libset if="jni.libset.libs" dir="${jni.libset.dir}" libs="${jni.libset.libs}"/> <syslibset libs="kvm"/> </linker> <!-- OpenBSD --> <compiler name="gcc" if="openbsd"> <compilerarg value="-O2" if="jni.optim"/> <compilerarg value="-g" if="jni.debug"/> <compilerarg value="-Wall"/> <!-- <compilerarg value="-Werror" if="jni.werror"/> --> <defineset> <define name="${jni.define.name}_OPENBSD"/> </defineset> </compiler> <linker name="gcc" if="openbsd"> <libset if="jni.libset.libs" dir="${jni.libset.dir}" libs="${jni.libset.libs}"/> <syslibset libs="kvm"/> </linker> <!-- NetBSD --> <compiler name="gcc" if="netbsd"> <compilerarg value="-O2" if="jni.optim"/> <compilerarg value="-g" if="jni.debug"/> <compilerarg value="-Wall"/> <!-- <compilerarg value="-Werror" if="jni.werror"/> --> <defineset> <define name="${jni.define.name}_NETBSD"/> </defineset> </compiler> <linker name="gcc" if="netbsd"> <libset if="jni.libset.libs" dir="${jni.libset.dir}" libs="${jni.libset.libs}"/> <syslibset libs="kvm"/> </linker> <!-- AIX --> <compiler name="xlc_r" if="aix"> <compilerarg value="-q64" if="jni.arch64"/> <defineset> <define name="${jni.define.name}_AIX"/> <define name="_ALL_SOURCE"/> <define name="_ANSI_C_SOURCE"/> <define name="_POSIX_SOURCE"/> </defineset> </compiler> <linker name="xlc_r" if="aix"> <linkerarg value="-b64" if="jni.arch64"/> <libset if="jni.libset.libs" dir="${jni.libset.dir}" libs="${jni.libset.libs}"/> </linker> <!-- WIN32 --> <linker name="msvc" debug="${jni.debug}" if="win32"> <libset if="jni.libset.libs" dir="${jni.libset.dir}" libs="${jni.libset.libs}"/> <linkerarg value="/MACHINE:X64" if="jni.arch64"/> <linkerarg value="${jni.info.res}" if="jni.info.res"/> <syslibset libs="kernel32,user32,advapi32,ws2_32,netapi32,shell32,pdh,version"/> </linker> <compiler name="msvc" debug="${jni.debug}" if="win32"> <defineset> <define name="WIN32"/> <define name="_CRT_SECURE_NO_DEPRECATE"/> <!-- XXX 2008 MSC express/SDK does not include atl headers --> <define name="SIGAR_NO_ATL" if="jni.noatl"/> </defineset> </compiler> <!-- OSF1 --> <compiler name="gcc" if="osf1"> <compilerarg value="-Wall"/> <compilerarg value="-pthread"/> <defineset> <define name="${jni.define.name}_OSF1"/> </defineset> </compiler> <linker name="gcc" if="osf1"> <libset if="jni.libset.libs" dir="${jni.libset.dir}" libs="${jni.libset.libs}"/> <syslibset libs="mach"/> </linker> <!-- C sources --> <fileset dir="${jni.source.dir}"> <patternset refid="jni.source.files"/> </fileset> <includepath> <path refid="jni.include.dirs"/> </includepath> <sysincludepath location="${jni.javahome}/include"/> <sysincludepath location="${jni.javahome}/include/${jni.jdk.os}"/> <sysincludepath location="${jni.dmalloc}/include" if="jni.dmalloc"/> </cc> </target> <target name="jni-clean"> <delete dir="${jni.objdir}"/> </target>