Just a word of explaination about this build.xml...

Following the recent discussion,

 - We still have a 'bootstrapping' build in classlib/trunk/make that
compiles the circular dependencies in the core Java components,
sufficient to get a set of code that can run the individual component
builds,

- I've stolen the build.xml from the HARMONY-16 contribution :-) (which
used to build against a reference JDK) and hacked it to build the LUNI
component using the results the bootstrap build (and the IBM J9 VM).

The LUNI make/build.xml needs lots of tidy-up, but I checked it in to
show the idea and for discussion.  You can use the bootstrapped core
components to run the ant script and Eclipse compiler to rebuild
luni.jar and replace it in the target, and run JUnit to test the
results.  Of course, if you break luni.jar you may break the
self-hosting build and have to bootstrap again!

Regards,
Tim



-------- Original Message --------
Subject: svn commit: r365701 -
/incubator/harmony/enhanced/classlib/trunk/java-src/luni/make/build.xml
Date: Tue, 03 Jan 2006 18:10:13 -0000
From: [EMAIL PROTECTED]
Reply-To: harmony-dev@incubator.apache.org
To: [EMAIL PROTECTED]

Author: tellison
Date: Tue Jan  3 10:10:11 2006
New Revision: 365701

URL: http://svn.apache.org/viewcvs?rev=365701&view=rev
Log:
Quick hack to demo the componentized build idea.

Added:
    incubator/harmony/enhanced/classlib/trunk/java-src/luni/make/build.xml

Added:
incubator/harmony/enhanced/classlib/trunk/java-src/luni/make/build.xml
URL:
http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/java-src/luni/make/build.xml?rev=365701&view=auto
==============================================================================
---
incubator/harmony/enhanced/classlib/trunk/java-src/luni/make/build.xml
(added)
+++
incubator/harmony/enhanced/classlib/trunk/java-src/luni/make/build.xml
Tue Jan  3 10:10:11 2006
@@ -0,0 +1,354 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+    Copyright 2005 The Apache Software Foundation or its licensors, as
applicable.
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<!-- THIS FILE IS WORK IN PROGRESS - BEWARE -->
+
+
+
+
+<project name="LUNI Build" default="dist" basedir="..">
+
+       <description>Build for LUNI component</description>
+
+       <!-- set global properties for this build. -->
+
+       <property name="build.compiler"
value="org.eclipse.jdt.core.JDTCompilerAdapter" />
+       <!--
+         You will need to add
+         the compiler's jars to the CLASSPATH and path to jni.h
+         to INCLUDE environment variables before build start.
+         For example:
+
+         set
CLASSPATH=%ECLIPSE_HOME%/plugins/org.eclipse.jdt.core_3.0.1/jdtCompilerAdapter.jar;
\
+
%ECLIPSE_HOME%/plugins/org.eclipse.jdt.core_3.0.1/jdtcore.jar;%CLASSPATH%
+
+         set INCLUDE=%MY_JVM%/include
+
+     -->
+
+       <property name="java.bin.main" location="./bin.main" />
+       <property name="java.bin.test" location="./bin.test" />
+       <property environment="env"/>
+
+
+       <condition property="if.win" value="true">
+               <os family="Windows" />
+       </condition>
+
+       <condition property="if.linux" value="true">
+               <and>
+                       <os name="linux" />
+                       <os family="unix" />
+               </and>
+       </condition>
+
+       <condition property="if.x86_64" value="true">
+               <contains string="${os.arch}" substring="x86_64"/>
+       </condition>
+
+       <condition property="if.x86" value="true">
+               <and>
+                       <contains string="${os.arch}" substring="86"/>
+                       <not>
+                               <isset property="if.x86_64"/>
+                       </not>
+               </and>
+       </condition>
+
+       <condition property="if.ipf" value="true">
+               <contains string="${os.arch}" substring="ia64"/>
+       </condition>
+
+
+       <!-- Platform dependency -->
+
+       <target name="timestamp" description="Set up a timestamp">
+               <tstamp>
+                       <format property="build-date" pattern="yyyyMMdd" 
locale="en" />
+               </tstamp>
+               <tstamp>
+                       <format property="build-time" pattern="yyyyMMdd_HHmm" />
+               </tstamp>
+               <echo message="build-date=${build-date}" />
+               <echo message="build-time=${build-time}" />
+               <echo message="on platform=${os.name} version=${os.version}
arch=${os.arch}" />
+       </target>
+
+       <target name="setname.win" if="if.win">
+               <property name="platform.name" value="win" />
+               <property name="libpr" value=""/>
+               <property name="libsf" value=".dll"/>
+       </target>
+
+       <target name="setname.linux" if="if.linux">
+               <property name="platform.name" value="lnx" />
+               <property name="libpr" value="lib"/>
+               <property name="libsf" value=".so"/>
+       </target>
+
+
+       <!-- INIT TARGETS -->
+
+       <target name="init" depends="timestamp, setname.win, setname.linux">
+
+               <echo message="platform name=${platform.name}" />
+
+               <property name="java.debug.option" value="on" />
+               <property name="native.debug.option" value="on" />
+
+               <property name="target" location="../../deploy" />
+               <property name="target.jre.bin" location="${target}/jre/bin" />
+               <property name="target.jre.lib.boot" location
="${target}/jre/lib/boot" />
+
+
+               <property name="src" location="${basedir}/src/main/java" />
+               <property name="src.main.java" 
location="${basedir}/src/main/java" />
+               <property name="src.common.native" 
location="${src}/common/other" />
+               <property name="src.win.native" location="${src}/windows/other" 
/>
+               <property name="src.win.java" location="${src}/windows/javasrc" 
/>
+               <property name="src.linux.native" location="${src}/linux/other" 
/>
+               <property name="src.linux.java" location="${src}/linux/javasrc" 
/>
+               <property name="src.windows.other"
location="${basedir}/src/windows/other/com/openintel/drl/nativelib/windows"
/>
+               <property name="src.linux.other"
location="${basedir}/src/linux/other/com/openintel/drl/nativelib/X11"/>
+
+               <property name="src.test.java" 
location="${basedir}/src/test/java" />
+               <property name="src.test.common" 
location="${src.test.java}/common" />
+
+               <property name="combined.path" value="deploy/jre"/>
+               <property name="build.lib.path"
location="${java.bin.main}/${combined.path}/lib" />
+               <property name="build.jars.path"
location="${java.bin.main}/${combined.path}/lib/boot" />
+               <property name="build.ext.path"
location="${java.bin.main}/${combined.path}/lib/ext" />
+               <property name="build.bin.path"
location="${java.bin.main}/${combined.path}/bin" />
+
+               <property name="tmp" location="${java.bin.main}/tmp" />
+               <property name="source.ver" value="1.4" />
+
+               <property name="native.lib.name" value="**/*"/>
+
+               <echo message="if.x86_64=${if.x86_64}"/>
+               <echo message="if.x86=${if.x86}"/>
+               <echo message="if.ipf=${if.ipf}"/>
+       </target>
+
+       <target name="init.java_home">
+
+               <property name="JAVA_HOME" value="${env.JAVA_HOME}" />
+               <property name="jni_h.path"    
location="${env.JAVA_HOME}/include"/>
+               <echo message="JAVA_HOME=${JAVA_HOME}"/>
+
+       </target>
+
+       <target name="init.win" depends="init, init.java_home" if="if.win">
+               <property name="cPath" value="${PATH};${env.Path}" />
+               <property name="cINCLUDE" value="${env.INCLUDE}" />
+               <property name="cLIB" value="${LIB};${env.lib};${env.LIB}" />
+               <property name="src.java" value="${src.win.java}" />
+               <property name="compile.native.tail" value="windows" />
+
+               <property name="src.tst.common.ps" 
value="${src.test.java}/windows" />
+
+               <property name="jni_md_h.path"
location="${env.JAVA_HOME}/include/win32"/>
+
+       </target>
+
+
+       <target name="init.linux" depends="init, init.java_home" if="if.linux">
+
+               <property name="cPath" value="${env.PATH}" />
+               <property name="cINCLUDE" value="${env.INCLUDE}" />
+               <property name="cLIB" value="${env.LIB}" />
+               <property name="src.java" value="${src.linux.java}" />
+               <property name="compile.native.tail" value="linux" />
+
+               <property name="src.tst.common.ps" 
value="${src.test.java}/linux" />
+
+               <property name="jni_md_h.path"
location="${env.JAVA_HOME}/include/linux"/>
+
+       </target>
+
+
+
+       <!-- SECURITY PACKAGES SETS -->
+
+       <patternset id="crypto">
+               <include name="javax/crypto/**"/>
+               <include name="com/openintel/drlx/crypto/**"/>
+       </patternset>
+
+
+       <patternset id="security">
+               <include name="java/security/**"/>
+               <include name="javax/security/**"/>
+               <include name="com/openintel/fortress/drl/security/**"/>
+               <include name="com/openintel/drl/security/**"/>
+               <include name="com/openintel/drlx/security/**"/>
+               <include name="com/openintel/drl/misc/Base64.*"/>
+               <include name="org/ietf/jgss/**"/>
+       </patternset>
+
+
+       <patternset id="x_net">
+               <include name="javax/net/**"/>
+       </patternset>
+
+
+       <patternset id="api.src.all">
+               <patternset refid="crypto"/>
+               <patternset refid="security"/>
+               <patternset refid="x_net"/>
+       </patternset>
+
+
+       <patternset id="unit.tests.src.all">
+               <include name="common/unit/com/openintel/drl/security/**"/>
+               <include name="common/unit/com/openintel/drlx/crypto/**"/>
+               <include name="common/unit/com/openintel/drlx/security/**"/>
+               <include 
name="common/unit/com/openintel/fortress/drl/security/**"/>
+               <include name="common/unit/java/security/**"/>
+               <include name="common/unit/javax/crypto/**"/>
+               <include name="common/unit/javax/net/**"/>
+               <include name="common/unit/javax/security/**"/>
+               <include name="common/unit/org/ietf/jgss/**"/>
+               <include name="linux/unit/com/openintel/drlx/security/**"/>
+               <include name="windows/unit/com/openintel/drlx/security/**"/>
+       </patternset>
+
+
+       <!-- SECURITY TARGETS -->
+
+
+       <target name="dist" depends="init, init.win, init.linux, compile.api,
build.jar, build.native, copy.resources"
+        description="Building Security binaries">
+               <!-- clean up -->
+               <delete dir="${tmp}"/>
+       </target>
+
+
+       <target name="tests" depends="dist, tests.compile"
+        description="Building Security tests">
+       </target>
+
+
+       <target name="tests.run" depends="tests, run"
+        description="Running Security tests">
+       </target>
+
+
+       <target name="clean">
+               <delete dir="${java.bin.main}"/>
+       </target>
+
+       <!-- SUPPORT TARGETS -->
+
+
+       <target name="build.jar">
+               <jar destfile="${target.jre.lib.boot}/luni.jar"
manifest="META-INF/MANIFEST.MF">
+                       <fileset dir="${java.bin.main}" />
+               </jar>
+       </target>
+
+
+       <target name="compile.api" description="Compile LUNI java code">
+               <mkdir dir="${java.bin.main}" />
+               <echo message="Compiling classes from ${src.main.java}" />
+               <javac sourcepath=""
+            destdir="${java.bin.main}"
+            source="${source.ver}"
+            debug="${java.debug.option}">
+                       <src>
+                               <pathelement location="${src.main.java}"/>
+                       </src>
+                       <bootclasspath>
+                               <fileset dir="${target.jre.lib.boot}">
+                                       <include name="*.jar" />
+                               </fileset>
+                       </bootclasspath>
+               </javac>
+       </target>
+
+
+       <target name="build.one.jar">
+               <property name="jar.name" value="${ref.id}.jar"/>
+               <jar destfile="${build.jar.path}/${jar.name}">
+                       <fileset dir="${java.bin.main}/classes">
+                               <patternset refid="${ref.id}"/>
+                       </fileset>
+               </jar>
+       </target>
+
+
+       <target name="build.native">
+
+       </target>
+
+
+       <target name="copy.resources">
+               <!-- Nothing for LUNI -->
+       </target>
+
+
+       <target name="tests.compile">
+               <echo message="Compiling LUNI tests from ${src.test.java}" />
+
+               <mkdir dir="${java.bin.test}" />
+
+               <javac srcdir="${src.test.java}"
+               destdir="${java.bin.test}"
+               sourcepath=""
+               classpath="${env.CLASSPATH}"
+               source="${source.ver}"
+               debug="${java.debug.option}">
+
+                       <src>
+                               <pathelement location="${src.test.java}"/>
+                       </src>
+                       <bootclasspath>
+                               <fileset dir="${target.jre.lib.boot}">
+                                       <include name="*.jar" />
+                               </fileset>
+                       </bootclasspath>
+               </javac>
+       </target>
+
+       <target name="run">
+               <mkdir dir="tests_report" />
+
+               <junit fork="yes"
+            forkmode="once"
+            printsummary="withOutAndErr"
+            errorproperty="test.error"
+            showoutput="on"
+            dir="${java.bin.test}"
+            jvm="${target.jre.bin}/java">
+
+                       <jvmarg value="-showversion"/>
+                       
+                       <classpath>
+                               <pathelement path="${java.bin.test}"/>
+                       </classpath>
+
+                       <test name="org.apache.harmony.tests.luni.AllTests"
+                               haltonfailure="no"
+                               todir="tests_report"
+                               outfile="result">
+                               <formatter type="plain" />
+                       </test>
+               </junit>
+       </target>
+
+</project>




-- 

Tim Ellison ([EMAIL PROTECTED])
IBM Java technology centre, UK.

Reply via email to