<!DOCTYPE project [ <!ENTITY jni-build SYSTEM "hyperic_jni/jni-build.xml"> ]> <project name="Sigar" default="build" basedir="."> <property file="version.properties"/> <property name="sigar.version" value="${version.major}.${version.minor}.${version.maint}.${version.build}"/> <property file="${user.home}/.sigar-build.properties"/> <property name="project.name" value="sigar"/> <property name="jni.define.name" value="SIGAR"/> <property name="sigar-bin" location="sigar-bin"/> <property name="sigar-bin-dir" location="${sigar-bin}"/> <property name="jni.bin" location="${sigar-bin}"/> <property name="jni.source.dir" location="../.."/> <property name="jni.src.java" value="hyperic_jni/src"/> <property name="jni.libprefix" value=""/> <!-- drop "java" prefix --> <property name="cpptasks.jar" location="hyperic_jni/lib/cpptasks.jar"/> &jni-build; <property name="src" location="src"/> <property name="build" location="build"/> <property name="build.javadoc" value="${build}/javadoc"/> <property name="dist.bin.name" value="hyperic-sigar-${sigar.version}"/> <property name="dist.src.name" value="${dist.bin.name}-src"/> <property name="dist.bin" location="${build}/${dist.bin.name}"/> <property name="dist.src" location="${build}/${dist.src.name}"/> <property name="perl" value="perl"/> <!-- trick TestFQDN into passing with: ant test -Dsigar.fdqn=foo.bar --> <property name="sigar.fqdn" value=""/> <path id="libjars"> <fileset dir="lib" includes="*.jar"/> </path> <path id="alljars"> <path refid="libjars"/> <fileset dir="${sigar-bin}/lib" includes="sigar.jar"/> </path> <target name="javadoc_check"> <uptodate property="javadoc.notrequired" targetfile="${build.javadoc}/packages.html" > <srcfiles dir="src" includes="**/*.java"/> </uptodate> </target> <path id="javadoc.path"> <pathelement path="src"/> <pathelement path="${build}/src"/> <pathelement path="${jni.src.java}"/> </path> <target name="javadoc" depends="javadoc_check"> <mkdir dir="${build.javadoc}"/> <javadoc packagenames="org.hyperic.sigar.*" excludepackagenames="org.hyperic.sigar.test.*,org.hyperic.jni.*,org.hyperic.sigar.pager.*,org.hyperic.sigar.jmx.*,org.hyperic.sigar.win32.test.*" useexternalfile="yes" sourcepathref="javadoc.path" destdir="${build.javadoc}" author="false" version="false" windowtitle="Sigar API" doctitle="Sigar"> <group title="Sigar" packages="org.hyperic.sigar" /> <classpath refid="libjars"/> <classpath><path path="${env.ANT_HOME}/lib/ant.jar"/></classpath> <bottom>Copyright © ${copyright.year} <![CDATA[<a target="_top" href="http://www.hyperic.com/">Hyperic</a>]]>. All Rights Reserved.</bottom> </javadoc> </target> <target name="compile"> <mkdir dir="${build}/classes"/> <javac destdir="${build}/classes" debug="true" classpathref="libjars"> <src path="${src}"/> <src path="${build}/src"/> <src path="${jni.src.java}"/> <include name="**/*.java"/> </javac> </target> <target name="version-file"> <property name="version.file.srcdir" value="."/> <property name="version.file.dstdir" value="."/> <property name="version.tofile" value="${build}/${version.file.dstdir}/${version.file}"/> <!-- regenerate if version.properties changes --> <copydep file="${version.file.srcdir}/${version.file}.in" tofile="${version.tofile}" depends="version.properties"/> <replace file="${version.tofile}"> <replacefilter token="@@BUILD_DATE@@" value="${BUILD_DATE}"/> <replacefilter token="@@VERSION_STRING@@" value="${sigar.version}"/> <replacefilter token="@@ARCHNAME@@" value="${jni.libarch}"/> <replacefilter token="@@ARCHLIB@@" value="${jni.libname.full}"/> <replacefilter token="@@BINNAME@@" value="${jni.project.archname}"/> <replacefilter token="@@VERSION_MAJOR@@" value="${version.major}"/> <replacefilter token="@@VERSION_MINOR@@" value="${version.minor}"/> <replacefilter token="@@VERSION_MAINT@@" value="${version.maint}"/> <replacefilter token="@@VERSION_BUILD@@" value="${version.build}"/> <replacefilter token="@@COPYRIGHT_YEAR@@" value="${copyright.year}"/> </replace> </target> <target name="sigar-version"> <tstamp> <format property="BUILD_DATE" pattern="MM/dd/yyyy hh:mm aa"/> </tstamp> <antcall target="version-file"> <param name="version.file" value="src/org/hyperic/sigar/SigarVersion.java"/> </antcall> <antcall target="version-file"> <param name="version.file.srcdir" value="../.."/> <param name="version.file" value="src/sigar_version.c"/> </antcall> <antcall target="version-file"> <param name="version.file.srcdir" value="../.."/> <param name="version.file" value="src/os/netware/sigar.def"/> <param name="version.tofile" value="${build}/src/sigar.def"/> </antcall> </target> <target name="prepare-src" depends="sigar-version"> <mkdir dir="${build}/src"/> <exec executable="${perl}" dir="."> <arg value="-Mlib=.."/> <arg value="-MSigarWrapper"/> <arg value="-e"/> <arg value="generate"/> <arg value="Java"/> <arg value="${build}/src"/> </exec> <condition property="win32.jni" value="jni/win32"> <isset property="win32"/> </condition> <condition property="vmware.jni" value="jni/vmware"> <or> <isset property="win32"/> <isset property="linux"/> </or> </condition> <!-- include sigar *.c files rather than link against libsigar --> <patternset id="jni.source.files"> <include name="src/*.c"/> <exclude name="src/sigar_main.c"/> <include name="src/os/${jni.src}/*.c"/> <include name="bindings/java/src/jni/*.c"/> <include name="bindings/java/src/${win32.jni}/*.cpp"/> <include name="bindings/java/src/${win32.jni}/*.c"/> <include name="bindings/java/src/${vmware.jni}/*.c"/> <include name="bindings/java/build/src/sigar_version.c"/> </patternset> <path id="jni.include.dirs"> <path location="../../include"/> <path location="../../src/os/${jni.src}"/> <path location="${build}/src"/> <path location="src/jni"/> </path> <!-- extra solaris libs --> <condition property="jni.libset.dir" value="/usr/lib"> <isset property="solaris"/> </condition> <condition property="jni.libset.libs" value="kstat"> <isset property="solaris"/> </condition> <!-- extra aix libs --> <condition property="jni.libset.dir" value="/usr/lib"> <isset property="aix"/> </condition> <condition property="jni.libset.libs" value="odm,cfg"> <isset property="aix"/> </condition> <copy toDir="${sigar-bin}/lib"> <fileset dir="lib"> <include name="pdh.dll"/> </fileset> </copy> </target> <target name="copy-includes"> <mkdir dir="${sigar-bin}/include"/> <copy toDir="${sigar-bin}/include" overwrite="true"> <fileset dir="../../include"> <include name="sigar.h"/> <include name="sigar_fileinfo.h"/> <include name="sigar_format.h"/> </fileset> </copy> </target> <target name="sigar-exe-cpptasks"> <cc outtype="executable" outfile="${jni.bin}/lib/${jni.libname}" objdir="${jni.objdir}"> <compiler name="${jni.compiler}" debug="${jni.debug}"/> <linker name="${jni.compiler}"> <libset dir="${jni.bin}/lib" libs="${jni.libname}"/> </linker> <includepath location="../../include"/> <fileset dir="${jni.source.dir}"> <include name="src/sigar_main.c"/> </fileset> </cc> </target> <target name="sigar-exe" if="jni.compiler.isgcc"> <exec executable="${jni.compiler}" dir="${jni.source.dir}" failonerror="true"> <arg value="-Wall"/> <arg value="-Werror"/> <arg value="-ldl"/> <arg value="-I./include"/> <arg value="src/sigar_main.c"/> <arg value="-o"/> <arg value="${jni.bin}/lib/${jni.libname}"/> </exec> <chmod perm="a+x"> <fileset dir="${jni.bin}/lib"> <include name="${jni.libname}"/> </fileset> </chmod> </target> <target name="build-jni" depends="jni-init,prepare-src,jni-compile,jni-lib-copy,copy-includes" if="jni.libarch"/> <target name="build-perfstat" depends="jni-init" if="aix"> <ant dir="../../src/os/aix/perfstat"/> <copy toDir="${sigar-bin}/lib" overwrite="true"> <fileset dir="${build}"> <include name="libsigar_aixperfstat.so"/> </fileset> </copy> </target> <target name="pack"> <jar jarfile="${sigar-bin}/lib/sigar.jar" basedir="${build}/classes"> <manifest> <attribute name="Main-Class" value="org.hyperic.sigar.cmd.Runner"/> </manifest> </jar> </target> <target name="build" depends="build-jni,build-perfstat,compile,pack"/> <target name="clean"> <delete dir="${build}"/> <delete dir="${sigar-bin}"/> </target> <target name="xtest"> <mkdir dir="${build}/testresults"/> <condition property="win32.test" value="win32/test"> <os family="windows"/> </condition> <junit printsummary="yes" fork="yes" haltonfailure="yes" showoutput="true"> <jvmarg value="-Dsigar.fqdn=${sigar.fqdn}"/> <classpath refid="alljars"/> <formatter type="plain"/> <batchtest fork="yes" todir="${build}/testresults"> <fileset dir="${src}"> <include name="org/hyperic/sigar/test/Test*.java"/> <include name="org/hyperic/sigar/${win32.test}/Test*.java"/> <exclude name="**/.java"/> <!-- slow; run by hand with bin/run_tests.sh Threads --> <exclude name="**/TestThreads*.java"/> </fileset> </batchtest> </junit> </target> <target name="test" depends="build,xtest"/> <target name="dist-pack" depends="dist-common"> <zip destfile="${dist}.zip" basedir="${build}" includes="${dist.name}/**/*"/> <!-- Stupid ant tar task, doesn't preserve file permissions without making you jump through some hoops --> <tar tarfile="${dist}.tar.gz" longfile="gnu" compression="gzip"> <tarfileset dir="${dist}/.." mode="755"> <include name="${dist.name}/**/bin/*"/> <include name="${dist.name}/**/*.sh"/> <include name="${dist.name}/**/*.bat"/> <include name="${dist.name}/**/*.cmd"/> <include name="${dist.name}/**/*.sl"/> </tarfileset> <tarfileset dir="${dist}/.."> <exclude name="${dist.name}/**/bin/*"/> <exclude name="${dist.name}/**/*.sh"/> <exclude name="${dist.name}/**/*.bat"/> <exclude name="${dist.name}/**/*.cmd"/> <exclude name="${dist.name}/**/*.sl"/> <include name="${dist.name}/**"/> </tarfileset> </tar> </target> <target name="dist-bin"> <!-- binaries --> <mkdir dir="${dist.bin}/sigar-bin"/> <copy toDir="${dist.bin}/sigar-bin"> <fileset dir="${sigar-bin-dir}"> <include name="lib/*.jar"/> <include name="lib/*.dll"/> <include name="lib/*.sl"/> <include name="lib/*.so"/> <include name="lib/*.dylib"/> <include name="lib/*.lib"/> </fileset> <fileset dir="."> <include name="lib/*.jar"/> </fileset> </copy> <!-- header files --> <copy toDir="${dist.bin}/sigar-bin"> <fileset dir="${sigar-bin}"> <include name="include/*.h"/> </fileset> </copy> <copy toDir="${dist.bin}/sigar-bin/lib"> <fileset dir="."> <include name=".sigar_shellrc"/> </fileset> </copy> <mkdir dir="${dist.bin}/bindings/java/examples"/> <copy toDir="${dist.bin}/bindings/java/examples"> <fileset dir="src/org/hyperic/sigar/cmd"> <include name="*.java"/> </fileset> </copy> </target> <target name="dist-bindings"> <!-- bindings --> <copy toDir="${dist}"> <fileset dir="../.."> <include name="bindings/java/examples/*.java"/> <include name="bindings/perl/Makefile.PL"/> <include name="bindings/perl/typemap"/> <include name="bindings/perl/*.xs"/> <include name="bindings/perl/**/*.pm"/> <include name="bindings/perl/examples/*.pl"/> <include name="bindings/csharp/default.build"/> <include name="bindings/csharp/**/*.cs"/> </fileset> </copy> <copy toDir="${dist}/bindings/perl"> <fileset dir="${build}/src"> <include name="Sigar_generated.xs"/> </fileset> </copy> </target> <target name="dist-common" depends="javadoc,dist-bindings"> <copy toDir="${dist}" overwrite="true"> <fileset dir="../.."> <include name="README"/> <include name="COPYING"/> <include name="LICENSES"/> <include name="ChangeLog"/> </fileset> </copy> <!-- docs --> <mkdir dir="${dist}/docs"/> <copy toDir="${dist}/docs"> <fileset dir="${build}"> <include name="javadoc/**"/> </fileset> </copy> </target> <target name="dist" depends="dist-bin"> <copy toDir="${dist.src}"> <fileset dir="../.."> <include name="include/*.h"/> <include name="src/**/*.h"/> <include name="src/**/*.c"/> <include name="src/**/*.in"/> <include name="bindings/java/hyperic_jni/**"/> <include name="bindings/java/**/*.java"/> <include name="bindings/java/**/*.java.in"/> <include name="bindings/java/**/*.c"/> <include name="bindings/java/**/*.h"/> <include name="bindings/java/**/*.pl"/> <include name="bindings/java/**/build.xml"/> <include name="bindings/java/version.properties"/> <include name="bindings/java/.classpath"/> <include name="bindings/java/.project"/> <include name="bindings/java/.sigar_shellrc"/> <include name="bindings/java/lib/*.jar"/> <include name="bindings/java/lib/*.dll"/> <exclude name="**/.svn/**"/> <exclude name="bindings/java/build/**"/> </fileset> </copy> <antcall target="dist-pack"> <param name="dist" value="${dist.bin}"/> <param name="dist.name" value="${dist.bin.name}"/> </antcall> <antcall target="dist-pack"> <param name="dist" value="${dist.src}"/> <param name="dist.name" value="${dist.src.name}"/> </antcall> </target> </project>