summaryrefslogtreecommitdiff
path: root/build.xml
diff options
context:
space:
mode:
Diffstat (limited to 'build.xml')
-rw-r--r--build.xml68
1 files changed, 62 insertions, 6 deletions
diff --git a/build.xml b/build.xml
index c385958f..ddfe5a79 100644
--- a/build.xml
+++ b/build.xml
@@ -12,9 +12,44 @@
<property name="jsrc" location="${src}/jvm"/>
<property name="cljsrc" location="${src}/clj"/>
<property name="build" location="classes"/>
- <property name="clojure_jar" location="clojure.jar"/>
- <property name="slim_jar" location="clojure-slim.jar"/>
- <property name="src_jar" location="clojure-sources.jar"/>
+
+ <!-- version related properties -->
+ <property file="${cljsrc}/clojure/version.properties"/>
+ <!-- ensures all version properties are present -->
+ <fail unless="clojure.version.major"/>
+ <fail unless="clojure.version.minor"/>
+ <fail unless="clojure.version.interim"/>
+
+ <condition property="clojure.version.incremental.label"
+ value=".${clojure.version.incremental}"
+ else="">
+ <length string="${clojure.version.incremental}" when="greater" length="0" />
+ </condition>
+ <condition property="clojure.version.qualifier.label"
+ value="-${clojure.version.qualifier}"
+ else="">
+ <length string="${clojure.version.qualifier}" when="greater" length="0" />
+ </condition>
+ <condition property="clojure.version.interim.label"
+ value="-SNAPSHOT"
+ else="">
+ <!-- We place -SNAPSHOT whenever interim is not set to false, not only
+ if interim is set to true (this is less typo prone in the worst case -->
+ <not><equals arg1="${clojure.version.interim}" arg2="false" trim="true"/></not>
+ </condition>
+
+ <property name="clojure.version.label"
+ value="${clojure.version.major}.${clojure.version.minor}${clojure.version.incremental.label}${clojure.version.qualifier.label}${clojure.version.interim.label}"/>
+
+ <!-- general filterset for use when clojure version must be copied -->
+ <filterset id="clojure-version-filterset">
+ <filter token="clojure-version" value="${clojure.version.label}"/>
+ </filterset>
+
+ <property name="clojure_jar" location="clojure-${clojure.version.label}.jar"/>
+ <property name="slim_jar" location="clojure-slim-${clojure.version.label}.jar"/>
+ <property name="src_jar" location="clojure-sources-${clojure.version.label}.jar"/>
+
<!-- These make sense for building on tapestry.formos.com -->
@@ -24,6 +59,17 @@
<target name="init" depends="clean">
<tstamp/>
<mkdir dir="${build}"/>
+ <antcall target="init-version"/>
+ </target>
+
+ <target name="init-version">
+ <copy file="pom-template.xml"
+ tofile="pom.xml">
+ <filterset refid="clojure-version-filterset"/>
+ </copy>
+ <!--prevents users from modifying accidentally the generated pom.xml
+ works only on linux.-->
+ <chmod file="pom.xml" perm="ugo-w"/>
</target>
<target name="compile-java" depends="init"
@@ -49,7 +95,10 @@
<target name="clojure" depends="compile-clojure"
description="Create clojure jar file.">
<jar jarfile="${clojure_jar}" basedir="${build}">
- <fileset dir="${cljsrc}" includes="**/*.clj"/>
+ <fileset dir="${cljsrc}">
+ <include name="**/*.clj"/>
+ <include name="clojure/version.properties"/>
+ </fileset>
<manifest>
<attribute name="Main-Class" value="clojure.main"/>
<attribute name="Class-Path" value="."/>
@@ -63,7 +112,10 @@
<fileset dir="${build}" includes="clojure/asm/**"/>
<fileset dir="${build}" includes="clojure/lang/**"/>
<fileset dir="${build}" includes="clojure/main.class"/>
- <fileset dir="${cljsrc}" includes="**/*.clj"/>
+ <fileset dir="${cljsrc}">
+ <include name="**/*.clj"/>
+ <include name="clojure/version.properties"/>
+ </fileset>
<manifest>
<attribute name="Main-Class" value="clojure.main"/>
<attribute name="Class-Path" value="."/>
@@ -73,7 +125,10 @@
<target name="clojure-sources" depends="init"
description="Create a JAR of Java sources.">
- <jar jarfile="${src_jar}" basedir="${jsrc}"/>
+ <jar jarfile="${src_jar}" basedir="${jsrc}" includes="**/*">
+ <fileset dir="${cljsrc}"
+ includes="clojure/version.properties"/>
+ </jar>
</target>
<target name="jar" depends="clojure"/>
@@ -83,6 +138,7 @@
<target name="clean"
description="Remove autogenerated files and directories.">
<delete dir="${build}"/>
+ <delete file="pom.xml"/>
</target>
<target name="-setup-maven">