| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| # |
| # Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. |
| # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| # |
| # This code is free software; you can redistribute it and/or modify it |
| # under the terms of the GNU General Public License version 2 only, as |
| # published by the Free Software Foundation. Oracle designates this |
| # particular file as subject to the "Classpath" exception as provided |
| # by Oracle in the LICENSE file that accompanied this code. |
| # |
| # This code 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 |
| # version 2 for more details (a copy is included in the LICENSE file that |
| # accompanied this code). |
| # |
| # You should have received a copy of the GNU General Public License version |
| # 2 along with this work; if not, write to the Free Software Foundation, |
| # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| # |
| # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| # or visit www.oracle.com if you need additional information or have any |
| # questions. |
| # |
| # |
| --> |
| <project name="JObjC" default="install" basedir="."> |
| <property environment="env"/> |
| <echoproperties/> |
| |
| <target name="installhdrs"> |
| <echo>Nothing to do for install-headers build phase</echo> |
| </target> |
| |
| <target name="installsrc"> |
| <echo>Nothing to do for install-source build phase</echo> |
| </target> |
| |
| <property name="redirection-target-defined" value="${env.PRODUCT_NAME}"/> |
| |
| <target name="install" description="Redirects to the target specified in $PRODUCT_NAME"> |
| <fail unless="env.PRODUCT_NAME" status="-1"> |
| This Ant build file depends on the native Xcode project to invoke |
| targets by defining $PRODUCT_NAME to specify the target. |
| </fail> |
| |
| <echo>--- Redirecting to target "${env.PRODUCT_NAME}"</echo> |
| <antcall target="${env.PRODUCT_NAME}"/> |
| </target> |
| |
| <property name="compile.debug" value="true"/> |
| |
| <!-- building from the command line / xcode b&i --> |
| <condition property="src" value="." else="${env.SRCROOT}"> |
| <not><isset property="env.SRCROOT"/></not> |
| </condition> |
| |
| <condition property="cfg" value="Debug" else="${env.CONFIGURATION}"> |
| <not><isset property="env.CONFIGURATION"/></not> |
| </condition> |
| |
| <condition property="obj" value="build/JObjC.build/${cfg}" else="${env.OBJROOT}"> |
| <not><isset property="env.OBJROOT"/></not> |
| </condition> |
| |
| <condition property="dst" value="build/${cfg}" else="${env.DSTROOT}/${cfg}"> |
| <not><isset property="env.DSTROOT"/></not> |
| </condition> |
| |
| <condition property="ARCHS" value="ppc i386 x86_64" else="${env.RC_ARCHS}"> |
| <not><isset property="env.RC_ARCHS"/></not> |
| </condition> |
| |
| <!-- -/- --> |
| |
| <property name="bin" location="${obj}/bin"/> |
| <property name="gendoc" location="${obj}/doc"/> |
| |
| <condition property="nativelib.dir" value="${dst}"> |
| <not><isset property="env.CONFIGURATION_BUILD_DIR"/></not> |
| </condition> |
| <condition property="nativelib.dir" value="${env.CONFIGURATION_BUILD_DIR}"> |
| <isset property="env.CONFIGURATION_BUILD_DIR"/> |
| </condition> |
| <property name="nativelib.file" location="${nativelib.dir}/libJObjC.dylib" /> |
| |
| <property name="jniheaders" location="${obj}/src/jni_headers"/> |
| |
| <property name="core.src" location="${src}/src/core/java"/> |
| <property name="core.bin" location="${bin}/core"/> |
| <property name="core.jniheaders" location="${jniheaders}/core"/> |
| <property name="core.nativelib.dir" location="${nativelib.dir}"/> |
| |
| <property name="generator.src" location="${src}/src/generator/java"/> |
| <property name="generator.bin" location="${bin}/generator"/> |
| |
| <property name="generated.src" location="${obj}/src/jobjc"/> |
| <property name="generated.bin" location="${bin}/generated"/> |
| |
| <property name="additions.src" location="${src}/src/runtime-additions"/> |
| <property name="additions.bin" location="${bin}/additions"/> |
| <property name="additions.jniheaders" location="${jniheaders}/additions"/> |
| <property name="additions.nativelib.dir" location="${nativelib.dir}"/> |
| |
| <property name="test.src" location="${src}/src/tests/java"/> |
| <property name="test.bin" location="${bin}/test"/> |
| <property name="test.jniheaders" location="${jniheaders}/test"/> |
| <property name="test.reports" location="${obj}/test-reports"/> |
| |
| <condition property="product.target_path" |
| value="/System/Library/Java/Extensions" |
| else="${env.INSTALL_PATH}"> |
| <not><isset property="env.INSTALL_PATH"/></not> |
| </condition> |
| |
| <echo message="(Settings :src '${src}' :cfg '${cfg}' :obj '${obj}' :dst '${dst}')"/> |
| |
| <path id="test.lib.path.id"> |
| <fileset dir="/usr/share/java"> |
| <include name="**/*.jar"/> |
| </fileset> |
| </path> |
| |
| <property name="product.jarfile.dir" location="${obj}"/> |
| <property name="product.jarfile.name" value="JObjC.jar"/> |
| <property name="product.jarfile" location="${product.jarfile.dir}/${product.jarfile.name}"/> |
| |
| <target name="gen-pcoder" description="Generate PrimitiveCoder.java"> |
| <exec executable="ruby" failonerror="true"> |
| <arg value="${src}/run-and-write-if-okay"/> |
| <arg value="${src}/src/core/PrimitiveCoder.hs"/> |
| <arg value="${src}/src/core/java/com/apple/jobjc/PrimitiveCoder.java"/> |
| </exec> |
| </target> |
| |
| <target name="build-core" depends="gen-pcoder" description="Compile the core runtime classes"> |
| <mkdir dir="${core.bin}" /> |
| <!-- Compile PrimitiveCoder first to work around javac bug. --> |
| <javac srcdir="${core.src}" destdir="${core.bin}" source="1.5" target="1.5" debug="${compile.debug}" |
| includes="**/PrimitiveCoder.java" |
| includeantruntime="false"> |
| <classpath> |
| <path location="${obj}/../langtools/dist/lib/classes.jar"/> |
| </classpath> |
| </javac> |
| <javac srcdir="${core.src}" destdir="${core.bin}" source="1.5" target="1.5" debug="${compile.debug}" includeantruntime="false"> |
| <classpath> |
| <path location="${obj}/../langtools/dist/lib/classes.jar"/> |
| </classpath> |
| </javac> |
| |
| <exec executable="/usr/bin/perl" outputproperty="core.classes" failonerror="true"> |
| <arg value="${src}/extract_classes.pl"/> |
| <arg path="${core.bin}"/> |
| </exec> |
| |
| <mkdir dir="${core.jniheaders}" /> |
| <javah destdir="${core.jniheaders}" class="${core.classes}"> |
| <classpath path="${core.bin}"/> |
| </javah> |
| </target> |
| |
| <target name="build-core-native" depends="build-core"> |
| <exec executable="xcodebuild" failonerror="true"> |
| <env key="CC" value=""/> |
| <env key="CXX" value=""/> |
| <arg value="-configuration"/> |
| <arg value="${cfg}"/> |
| <arg value="-target"/> |
| <arg value="build-core-native"/> |
| <arg value="SRCROOT=${src}"/> |
| <arg value="OBJROOT=${obj}"/> |
| <arg value="DSTROOT=${dst}"/> |
| <arg value="TARGET_TEMP_DIR=${env.DSTROOT}"/> |
| <arg value="PROJECT_TEMP_DIR=${env.DSTROOT}"/> |
| <arg value="BUILD_DIR=${env.DSTROOT}"/> |
| </exec> |
| </target> |
| |
| <!-- macosx jdk 7 puts jobjc core classes on the bootclasspath by default --> |
| <target name="build-generator" description="Compile and assemble the generator"> |
| <mkdir dir="${generator.bin}"/> |
| <javac srcdir="${generator.src}" destdir="${generator.bin}" source="1.5" target="1.5" debug="${compile.debug}" includeantruntime="false"> |
| <compilerarg value="-version"/> |
| <compilerarg value="-Xbootclasspath/p:${core.bin}"/> |
| </javac> |
| </target> |
| |
| <!-- Use this indirection hack to work around buildit lockup when |
| running the generator. --> |
| <target name="run-generator" depends="build-generator" description="Invoke the assembled generator"> |
| <mkdir dir="${generated.src}"/> |
| <exec executable="ruby" failonerror="true"> |
| <arg value="${src}/rungen"/> |
| <arg value="install"/> |
| <arg value="${product.jarfile.name}"/> |
| <arg value="${nativelib.dir}"/> |
| <arg value="${obj}"/> |
| <arg value="${ARCHS}"/> |
| <arg value="${env.STABLE_GEN_DIR}"/> |
| </exec> |
| </target> |
| |
| <target name="run-generator-old" depends="build-generator" description="Invoke the assembled generator"> |
| <mkdir dir="${generated.src}"/> |
| <java classname="com.apple.internal.jobjc.generator.Generator" fork="true" failonerror="true"> |
| <jvmarg value="-Xms128m" /> |
| <jvmarg value="-Xmx512m" /> |
| <assertions><enable/></assertions> |
| <classpath> |
| <path location="${core.bin}"/> |
| <path location="${generator.bin}"/> |
| </classpath> |
| <sysproperty key="java.library.path" value="${core.nativelib.dir}"/> |
| <arg value="dst=${generated.src}"/> |
| </java> |
| </target> |
| |
| <target name="build-generated" description="Build and assemble the JObjC core and all generated frameworks"> |
| <mkdir dir="${generated.bin}"/> |
| <javac srcdir="${generated.src}" destdir="${generated.bin}" source="1.5" target="1.5" fork="yes" memoryMaximumSize="512m" debug="${compile.debug}" includeantruntime="false"> |
| <classpath> |
| <path location="${core.bin}"/> |
| </classpath> |
| <compilerarg value="-version"/> |
| </javac> |
| </target> |
| |
| <target name="build-additions" depends="build-generated"> |
| <mkdir dir="${additions.bin}"/> |
| <javac srcdir="${additions.src}" destdir="${additions.bin}" source="1.5" target="1.5" debug="${compile.debug}" includeantruntime="false"> |
| <classpath> |
| <path location="${core.bin}"/> |
| <path location="${generated.bin}"/> |
| </classpath> |
| <compilerarg value="-version"/> |
| </javac> |
| |
| <exec executable="/usr/bin/perl" outputproperty="additions.classes" failonerror="true"> |
| <arg value="${src}/extract_classes.pl"/> |
| <arg path="${additions.bin}"/> |
| </exec> |
| |
| <mkdir dir="${additions.jniheaders}"/> |
| <javah destdir="${additions.jniheaders}" class="${additions.classes}"> |
| <classpath> |
| <path location="${core.bin}"/> |
| <path location="${generated.bin}"/> |
| <path location="${additions.bin}"/> |
| </classpath> |
| </javah> |
| </target> |
| |
| <target name="build-additions-native"> |
| <exec executable="xcodebuild" failonerror="true"> |
| <env key="CC" value=""/> |
| <env key="CXX" value=""/> |
| <arg value="-configuration"/> |
| <arg value="${cfg}"/> |
| <arg value="-target"/> |
| <arg value="build-additions-native"/> |
| <arg value="SRCROOT=${src}"/> |
| <arg value="OBJROOT=${obj}"/> |
| <arg value="DSTROOT=${dst}"/> |
| <arg value="TARGET_TEMP_DIR=${env.DSTROOT}"/> |
| <arg value="PROJECT_TEMP_DIR=${env.DSTROOT}"/> |
| <arg value="BUILD_DIR=${env.DSTROOT}"/> |
| </exec> |
| </target> |
| |
| <target name="assemble-product"> |
| <mkdir dir="${product.jarfile.dir}"/> |
| <jar jarfile="${product.jarfile}" level="9" index="true"> |
| <fileset dir="${core.bin}"/> |
| <fileset dir="${generated.bin}"/> |
| <fileset dir="${additions.bin}"/> |
| </jar> |
| |
| <mkdir dir="${dst}/${product.target_path}"/> |
| <copy file="${product.jarfile}" toDir="${dst}/${product.target_path}" failonerror="true" verbose="true"/> |
| <copy file="${nativelib.file}" toDir="${dst}/${product.target_path}" failonerror="true" verbose="true"/> |
| </target> |
| |
| <target name="doc-core"> |
| <mkdir dir="${gendoc}"/> |
| <javadoc destdir="${gendoc}" access="protected"> |
| <fileset dir="${src}/src" includes="**/*.java"/> |
| </javadoc> |
| </target> |
| |
| <target name="build-test" description="compile unit tests"> |
| <mkdir dir="${test.bin}"/> |
| <javac srcdir="${test.src}" destdir="${test.bin}" debug="false" includeantruntime="false"> |
| <classpath> |
| <pathelement location="${core.bin}"/> |
| <pathelement location="${generator.bin}"/> |
| <pathelement location="${generated.bin}"/> |
| <pathelement location="${additions.bin}"/> |
| </classpath> |
| <classpath refid="test.lib.path.id"/> |
| <compilerarg value="-version"/> |
| </javac> |
| |
| <exec executable="/usr/bin/perl" outputproperty="test.classes" failonerror="true"> |
| <arg value="${src}/extract_classes.pl"/> |
| <arg path="${test.bin}"/> |
| </exec> |
| |
| <mkdir dir="${test.jniheaders}"/> |
| <javah destdir="${test.jniheaders}" class="${test.classes}"> |
| <classpath> |
| <path location="${core.bin}"/> |
| <path location="${generated.bin}"/> |
| <path location="${additions.bin}"/> |
| <path location="${test.bin}"/> |
| </classpath> |
| <classpath refid="test.lib.path.id"/> |
| </javah> |
| </target> |
| |
| <target name="build-test-installed" description="compile unit tests"> |
| <mkdir dir="${test.bin}"/> |
| <javac srcdir="${test.src}" destdir="${test.bin}" debug="false" includeantruntime="false"> |
| <compilerarg value="-verbose"/> |
| <classpath> |
| <pathelement location="${generator.bin}"/> |
| <pathelement location="${generated.bin}"/> |
| <pathelement location="${additions.bin}"/> |
| </classpath> |
| <classpath refid="test.lib.path.id"/> |
| <compilerarg value="-version"/> |
| </javac> |
| |
| <exec executable="/usr/bin/perl" outputproperty="test.classes" failonerror="true"> |
| <arg value="${src}/extract_classes.pl"/> |
| <arg path="${test.bin}"/> |
| </exec> |
| |
| <mkdir dir="${test.jniheaders}"/> |
| <javah destdir="${test.jniheaders}" class="${test.classes}"> |
| <classpath> |
| <path location="${generated.bin}"/> |
| <path location="${additions.bin}"/> |
| <path location="${test.bin}"/> |
| </classpath> |
| <classpath refid="test.lib.path.id"/> |
| </javah> |
| </target> |
| |
| <target name="build-test-native" depends="build-test"> |
| <exec executable="xcodebuild" failonerror="true"> |
| <env key="CC" value=""/> |
| <env key="CXX" value=""/> |
| <arg value="-configuration"/> |
| <arg value="${cfg}"/> |
| <arg value="-target"/> |
| <arg value="build-test-native"/> |
| <arg value="SRCROOT=${src}"/> |
| <arg value="OBJROOT=${obj}"/> |
| <arg value="DSTROOT=${dst}"/> |
| <arg value="TARGET_TEMP_DIR=${env.DSTROOT}"/> |
| <arg value="PROJECT_TEMP_DIR=${env.DSTROOT}"/> |
| <arg value="BUILD_DIR=${env.DSTROOT}"/> |
| </exec> |
| </target> |
| |
| <target name="build-test-native-installed" depends="build-test-installed"> |
| <exec executable="xcodebuild" failonerror="true"> |
| <env key="CC" value=""/> |
| <env key="CXX" value=""/> |
| <arg value="-configuration"/> |
| <arg value="${cfg}"/> |
| <arg value="-target"/> |
| <arg value="build-test-native"/> |
| <arg value="SRCROOT=${src}"/> |
| <arg value="OBJROOT=${obj}"/> |
| <arg value="DSTROOT=${dst}"/> |
| <arg value="TARGET_TEMP_DIR=${env.DSTROOT}"/> |
| <arg value="PROJECT_TEMP_DIR=${env.DSTROOT}"/> |
| <arg value="BUILD_DIR=${env.DSTROOT}"/> |
| </exec> |
| </target> |
| |
| <target name="test" depends="build-test-native" description="run unit tests"> |
| <mkdir dir="${test.reports}"/> |
| <junit fork="yes" printsummary="yes"> |
| <assertions> |
| <enable/> |
| </assertions> |
| <jvmarg value="-server" /> |
| |
| <sysproperty key="java.library.path" value="${nativelib.dir}" /> |
| <classpath> |
| <pathelement location="${core.bin}"/> |
| <pathelement location="${generator.bin}"/> |
| <pathelement location="${generated.bin}"/> |
| <pathelement location="${additions.bin}"/> |
| <pathelement location="${test.bin}"/> |
| </classpath> |
| <classpath refid="test.lib.path.id"/> |
| |
| <formatter type="plain"/> |
| |
| <batchtest fork="yes" todir="${test.reports}"> |
| <fileset dir="${test.src}"> |
| <include name="**/*Test.java"/> |
| <exclude name="**/AllTests.java"/> |
| </fileset> |
| </batchtest> |
| </junit> |
| </target> |
| |
| <target name="test-installed" depends="build-test-native-installed" description="run unit tests"> |
| <mkdir dir="${test.reports}"/> |
| <junit fork="yes" printsummary="yes"> |
| <assertions> |
| <enable/> |
| </assertions> |
| <jvmarg value="-server" /> |
| |
| <sysproperty key="java.library.path" value="${nativelib.dir}" /> |
| <classpath> |
| <pathelement location="${generator.bin}"/> |
| <pathelement location="${generated.bin}"/> |
| <pathelement location="${additions.bin}"/> |
| <pathelement location="${test.bin}"/> |
| </classpath> |
| <classpath refid="test.lib.path.id"/> |
| |
| <formatter type="plain"/> |
| |
| <batchtest fork="yes" todir="${test.reports}"> |
| <fileset dir="${test.src}"> |
| <include name="**/*Test.java"/> |
| <exclude name="**/AllTests.java"/> |
| </fileset> |
| </batchtest> |
| </junit> |
| </target> |
| |
| |
| <condition property="bench_match" value="*" else="${env.BENCH_MATCH}"> |
| <not><isset property="env.BENCH_MATCH"/></not> |
| </condition> |
| |
| <target name="bench" depends="build-test-native" description="run benchmarks"> |
| <mkdir dir="${test.reports}"/> |
| <junit fork="yes" printsummary="yes"> |
| <sysproperty key="java.library.path" value="${nativelib.dir}" /> |
| <classpath> |
| <pathelement location="${core.bin}"/> |
| <pathelement location="${generator.bin}"/> |
| <pathelement location="${generated.bin}"/> |
| <pathelement location="${additions.bin}"/> |
| <pathelement location="${test.bin}"/> |
| </classpath> |
| <classpath refid="test.lib.path.id"/> |
| |
| <jvmarg value="-Xms256m" /> |
| <jvmarg value="-Xmx1024m" /> |
| <jvmarg value="-server" /> |
| |
| <formatter type="plain"/> |
| |
| <batchtest fork="yes" todir="${test.reports}"> |
| <fileset dir="${test.src}"> |
| <include name="**/Bench*${bench_match}*.java"/> |
| </fileset> |
| </batchtest> |
| </junit> |
| </target> |
| |
| <target name="bench-installed" depends="build-test-native-installed" description="run benchmarks"> |
| <mkdir dir="${test.reports}"/> |
| <junit fork="yes" printsummary="yes"> |
| <sysproperty key="java.library.path" value="${nativelib.dir}" /> |
| <classpath> |
| <pathelement location="${generator.bin}"/> |
| <pathelement location="${generated.bin}"/> |
| <pathelement location="${additions.bin}"/> |
| <pathelement location="${test.bin}"/> |
| </classpath> |
| <classpath refid="test.lib.path.id"/> |
| |
| <jvmarg value="-Xms256m" /> |
| <jvmarg value="-Xmx1024m" /> |
| <jvmarg value="-server" /> |
| |
| <formatter type="plain"/> |
| |
| <batchtest fork="yes" todir="${test.reports}"> |
| <fileset dir="${test.src}"> |
| <include name="**/Bench*${bench_match}*.java"/> |
| </fileset> |
| </batchtest> |
| </junit> |
| </target> |
| |
| <target name="clean"> |
| <delete dir="build"/> |
| <delete dir="${obj}"/> |
| <delete dir="${dst}"/> |
| <delete dir="${gendoc}"/> |
| <delete dir="${test.reports}"/> |
| </target> |
| |
| |
| <target name="clean-all" depends="clean,build-core,build-core-native,build-generator,run-generator,build-generated,build-additions,build-additions-native,assemble-product"> |
| </target> |
| <target name="all" depends="build-core,build-core-native,build-generator,run-generator,build-generated,build-additions,build-additions-native,assemble-product"> |
| </target> |
| <target name="all-test" depends="build-core,build-core-native,build-generator,run-generator,build-generated,build-additions,build-additions-native,assemble-product,test-installed"> |
| </target> |
| <target name="clean-all-test" depends="clean,build-core,build-core-native,build-generator,run-generator,build-generated,build-additions,build-additions-native,assemble-product,test-installed"> |
| </target> |
| <target name="all-but-gen" depends="clean,build-core,build-core-native,build-generator,build-generated,build-additions,build-additions-native,assemble-product"> |
| </target> |
| </project> |