| <project name="buck" default="default"> |
| |
| <property name="src.dir" value="${basedir}/src" /> |
| <property name="aosp.src.dir" value="third-party/java/aosp/src" /> |
| <property name="test.dir" value="${basedir}/test" /> |
| <property name="plugin.dir" value="${basedir}/plugin" /> |
| <property name="lib.dir" value="${basedir}/lib" /> |
| <property name="third-party.dir" value="${basedir}/third-party" /> |
| <property name="build.dir" value="${basedir}/build" /> |
| <property name="testrunner.src.dir" value="${src.dir}/com/facebook/buck/junit/" /> |
| <property name="testrunner.classes.dir" value="${build.dir}/testrunner/classes" /> |
| <property name="abi_processor.src.dir" value="${src.dir}/com/facebook/buck/java/abi/" /> |
| <property name="abi_processor.classes.dir" value="${build.dir}/abi_processor/classes" /> |
| <property name="buck.path_to_buck_py" value="${basedir}/src/com/facebook/buck/parser/buck.py" /> |
| <property name="buck.path_to_emma_jar" |
| value="${basedir}/third-party/java/emma-2.0.5312/out/emma-2.0.5312.jar" |
| /> |
| <property name="classes.dir" value="${build.dir}/classes" /> |
| <property name="testclasses.dir" value="${build.dir}/testclasses" /> |
| <property name="javadoc.dir" value="${build.dir}/javadoc" /> |
| <property name="client.dir" value="third-party/nailgun" /> |
| |
| <fileset dir="${lib.dir}" id="buck.jars"> |
| <include name="args4j.jar" /> |
| <include name="ddmlib-r21.jar" /> |
| <include name="guava-15.0.jar" /> |
| <include name="ini4j-0.5.2.jar" /> |
| <include name="jackson-annotations-2.0.5.jar" /> |
| <include name="jackson-core-2.0.5.jar" /> |
| <include name="jackson-databind-2.0.5.jar" /> |
| <include name="jsr305.jar" /> |
| <include name="sdklib.jar" /> |
| <include name="nailgun-server-0.9.2-SNAPSHOT.jar" /> |
| </fileset> |
| |
| <fileset dir="${third-party.dir}" id="third-party.jars"> |
| <include name="java/asm/asm-debug-all-4.1.jar" /> |
| <include name="java/astyanax/astyanax-cassandra-1.56.38.jar" /> |
| <include name="java/astyanax/astyanax-cassandra-1.56.38-javadoc.jar" /> |
| <include name="java/astyanax/astyanax-cassandra-1.56.38-sources.jar" /> |
| <include name="java/astyanax/astyanax-core-1.56.38.jar" /> |
| <include name="java/astyanax/astyanax-thrift-1.56.38.jar" /> |
| <include name="java/astyanax/cassandra-1.2.3.jar" /> |
| <include name="java/astyanax/cassandra-thrift-1.2.3.jar" /> |
| <include name="java/astyanax/commons-cli-1.1.jar" /> |
| <include name="java/astyanax/commons-codec-1.2.jar" /> |
| <include name="java/astyanax/commons-lang-2.6.jar" /> |
| <include name="java/astyanax/high-scale-lib-1.1.2.jar" /> |
| <include name="java/astyanax/joda-time-2.2.jar" /> |
| <include name="java/astyanax/libthrift-0.7.0.jar" /> |
| <include name="java/astyanax/log4j-1.2.16.jar" /> |
| <include name="java/astyanax/slf4j-api-1.7.2.jar" /> |
| <include name="java/astyanax/slf4j-log4j12-1.7.2.jar" /> |
| <include name="java/jetty/jetty-all-9.0.4.v20130625.jar" /> |
| <include name="java/jetty/servlet-api.jar" /> |
| <include name="java/neo4j/geronimo-jta_1.1_spec-1.1.1.jar"/> |
| <include name="java/neo4j/lucene-core-3.6.2.jar"/> |
| <include name="java/neo4j/neo4j-kernel-2.0.0-M05.jar"/> |
| <include name="java/neo4j/neo4j-lucene-index-2.0.0-M05.jar"/> |
| <include name="java/xz-java-1.3/xz-1.3.jar" /> |
| </fileset> |
| |
| <path id="classpath"> |
| <fileset refid="buck.jars" /> |
| <fileset refid="third-party.jars" /> |
| <pathelement location="${classes.dir}" /> |
| <pathelement location="${src.dir}" /> |
| </path> |
| |
| <path id="junit"> |
| <pathelement location="${lib.dir}/junit-4.11.jar" /> |
| <pathelement location="${lib.dir}/hamcrest-core-1.3.jar" /> |
| <pathelement location="${lib.dir}/hamcrest-library-1.3.jar" /> |
| </path> |
| |
| <target name="clean" description="remove all generated files"> |
| <ant inheritAll="false" antfile="third-party/java/emma-2.0.5312/build.xml" target="clean" /> |
| <delete dir="${build.dir}" /> |
| </target> |
| |
| <!-- Default target so that a command line build can |
| do more than one thing. --> |
| <target name="default" depends="jar, client" /> |
| |
| <target name="checkversion"> |
| <!-- The nio Files class was only introduced in Java 7. --> |
| <available property="jdk7" classname="java.nio.file.Files"/> |
| <fail message="Require JDK 7 or higher" unless="jdk7"/> |
| </target> |
| |
| <target name="compile-testrunner" depends="checkversion"> |
| <mkdir dir="${testrunner.classes.dir}" /> |
| <javac srcdir="${testrunner.src.dir}" |
| destdir="${testrunner.classes.dir}" |
| classpathref="junit" |
| debug="on" |
| includeAntRuntime="no" |
| > |
| <compilerarg value="-Xlint:rawtypes" /> |
| <compilerarg value="-Xlint:unchecked" /> |
| </javac> |
| </target> |
| |
| <target name="compile-abi-processor" depends="checkversion"> |
| <mkdir dir="${abi_processor.classes.dir}" /> |
| <javac srcdir="${abi_processor.src.dir}" |
| destdir="${abi_processor.classes.dir}" |
| debug="on" |
| includeAntRuntime="no" |
| > |
| <compilerarg value="-Xlint:rawtypes" /> |
| <compilerarg value="-Xlint:unchecked" /> |
| </javac> |
| </target> |
| |
| <target name="compile" |
| depends="compile-testrunner, compile-abi-processor" |
| description="compile Java source code"> |
| <ant inheritAll="false" antfile="third-party/java/emma-2.0.5312/build.xml" target="core.package" /> |
| <mkdir dir="${classes.dir}" /> |
| <javac destdir="${classes.dir}" |
| classpathref="classpath" |
| debug="on" |
| deprecation="on" |
| includeAntRuntime="no" |
| > |
| <src path="${src.dir}" /> |
| <src path="${aosp.src.dir}" /> |
| <exclude name="com/facebook/buck/cli/quickstart/**" /> |
| <exclude name="com/facebook/buck/java/abi/**" /> |
| <exclude name="com/facebook/buck/junit/**" /> |
| <compilerarg value="-Xlint:rawtypes" /> |
| <compilerarg value="-Xlint:unchecked" /> |
| <!-- Suppress the warning from implicitly compiling files that are not |
| annotation processed. Not sure which files are the culprit --> |
| <compilerarg value="-implicit:class" /> |
| </javac> |
| </target> |
| |
| <target name="jar" |
| depends="compile" |
| description="build buck.jar" |
| > |
| <jar destfile="${build.dir}/buck.jar" update="true"> |
| <zipfileset refid="buck.jars" /> |
| <zipfileset refid="third-party.jars" /> |
| <fileset dir="${src.dir}" |
| excludes="**/*.java, **/BUCK" |
| /> |
| <fileset dir="${classes.dir}" /> |
| <manifest> |
| <attribute name="Main-Class" value="com.facebook.buck.cli.Main" /> |
| </manifest> |
| </jar> |
| </target> |
| |
| <path id="tests.classpath"> |
| <path refid="classpath" /> |
| <fileset dir="${lib.dir}" > |
| <include name="cglib-nodep-2.2.jar" /> |
| <include name="easymock-3.0.jar" /> |
| <include name="junit-4.11.jar" /> |
| <include name="hamcrest-core-1.3.jar" /> |
| <include name="hamcrest-library-1.3.jar" /> |
| <include name="objenesis-1.2.jar" /> |
| </fileset> |
| <pathelement location="${testclasses.dir}" /> |
| <pathelement location="${test.dir}" /> |
| <pathelement location="${abi_processor.classes.dir}" /> |
| <pathelement location="${testrunner.classes.dir}" /> |
| </path> |
| |
| <target name="compile-tests" |
| depends="compile" |
| > |
| <mkdir dir="${testclasses.dir}" /> |
| <javac srcdir="${test.dir}" |
| excludes="**/testdata/**" |
| destdir="${testclasses.dir}" |
| classpathref="tests.classpath" |
| debug="on" |
| deprecation="on" |
| includeAntRuntime="no" |
| > |
| <compilerarg value="-Xlint:rawtypes" /> |
| <compilerarg value="-Xlint:unchecked" /> |
| </javac> |
| </target> |
| |
| <target name="java-test" |
| depends="compile-tests" |
| description="runs the Java tests" |
| > |
| <junit failureproperty="hasFailingTests" |
| showoutput="true" |
| forkmode="perBatch"> |
| <sysproperty key="buck.path_to_emma_jar" value="${buck.path_to_emma_jar}" /> |
| <sysproperty key="buck.path_to_buck_py" value="${buck.path_to_buck_py}" /> |
| |
| <!-- See DEFS for details on why this property is needed. --> |
| <sysproperty key="sun.zip.disableMemoryMapping" value="true" /> |
| |
| <formatter type="plain" usefile="false" /> |
| |
| <batchtest fork="yes"> |
| <fileset dir="${test.dir}"> |
| <!-- |
| Do not exclude tests that start with "Abstract", as there are some tests for abstract |
| classes. |
| --> |
| <include name="**/*Test.java" /> |
| <exclude name="**/testdata/**" /> |
| </fileset> |
| </batchtest> |
| <classpath refid="tests.classpath" /> |
| </junit> |
| <fail if="hasFailingTests" /> |
| </target> |
| |
| <target name="py-test" description="runs the Python tests"> |
| <exec executable="python" failonerror="true"> |
| <arg value="src/com/facebook/buck/parser/buck_test.py" /> |
| </exec> |
| </target> |
| |
| <path id="pmd-classpath"> |
| <fileset dir="${basedir}/pmd" includes="*.jar" /> |
| </path> |
| |
| <target name="lint"> |
| <taskdef name="pmd" |
| classpathref="pmd-classpath" |
| classname="net.sourceforge.pmd.ant.PMDTask" |
| /> |
| <pmd failOnRuleViolation="true" rulesetfiles="pmd/rules.xml"> |
| <ruleset>buck</ruleset> |
| <fileset dir="${src.dir}"> |
| <include name="**/*.java"/> |
| </fileset> |
| <fileset dir="${test.dir}"> |
| <include name="**/*.java"/> |
| </fileset> |
| <fileset dir="${plugin.dir}"> |
| <include name="**/*.java"/> |
| </fileset> |
| </pmd> |
| </target> |
| |
| <target name="test" depends="java-test, py-test, lint" description="runs the unit tests" /> |
| |
| <target name="javadoc" description="generates HTML documentation for Java code" |
| depends="compile"> |
| <mkdir dir="${javadoc.dir}" /> |
| <javadoc destdir="${javadoc.dir}" |
| protected="true" |
| classpathref="tests.classpath" |
| windowtitle="Buck" |
| failonerror="true" |
| > |
| <fileset dir="${src.dir}"/> |
| <fileset dir="${test.dir}"> |
| <exclude name="**/testdata/**" /> |
| <exclude name="**/BUCK" /> |
| <exclude name="**/*.properties"/> |
| </fileset> |
| <link href="http://docs.oracle.com/javase/7/docs/api/" /> |
| <link href="http://docs.guava-libraries.googlecode.com/git-history/v15.0/javadoc/" /> |
| <!-- The latest version of the javadocs is only for 4.10 --> |
| <link href="http://junit-team.github.io/junit/javadoc/latest/" /> |
| </javadoc> |
| </target> |
| |
| <target name="client" description="install nailgun buckd c client"> |
| <mkdir dir="${build.dir}" /> |
| <exec dir="${basedir}" executable="gcc"> |
| <arg line="-Wall -pedantic -O3 -o ${build.dir}/ng ${client.dir}/nailgun-client/ng.c" /> |
| </exec> |
| </target> |
| |
| <target name="all" depends="jar, test, javadoc, client" /> |
| </project> |