1<?xml version="1.0" encoding="UTF-8"?> 2 3<!-- 4 build.xml 5 6 Author: Lasse Collin <[email protected]> 7 8 This file has been put into the public domain. 9 You can do whatever you want with this file. 10--> 11 12<project name="XZ" default="jar"> 13 14 <property file="build.properties"/> 15 16 <target name="clean" 17 description="Deletes generated files except 'extdoc'"> 18 <delete dir="${build_dir}"/> 19 </target> 20 21 <target name="distclean" depends="clean" 22 description="Deletes all generated files"> 23 <delete dir="extdoc"/> 24 </target> 25 26 <target name="dist" description="Creates a source package (.zip)"> 27 <mkdir dir="${dist_dir}"/> 28 <zip destfile="${dist_file}"> 29 <fileset dir="." includesfile="fileset-misc.txt"/> 30 <fileset dir="." includesfile="fileset-src.txt"/> 31 <fileset dir="." includesfile="fileset-src9.txt"/> 32 </zip> 33 </target> 34 35 <target name="doc" 36 description="Generates HTML documentation with javadoc"> 37 <mkdir dir="${doc_dir}"/> 38 <mkdir dir="${extdoc_dir}"/> 39 <!-- Ant 1.10.9 doesn't recognize element-list. To workaround this 40 we rename element-list to package-list when downloading. 41 javadoc from Java 15 seems to be fine with this hack. --> 42 <get src="${extdoc_url}/${extdoc_file}" 43 dest="${extdoc_dir}/package-list" skipexisting="true"/> 44 <javadoc sourcepath="${src_dir}" destdir="${doc_dir}" 45 packagenames="org.tukaani.xz" 46 windowtitle="XZ data compression" 47 nodeprecatedlist="true" nohelp="true" 48 linkoffline="${extdoc_url} ${extdoc_dir}"/> 49 </target> 50 51 <target name="compile" description="Compiles the classes"> 52 <mkdir dir="${classes_dir}"/> 53 <javac srcdir="." sourcepath="${src_dir}" destdir="${classes_dir}" 54 includeAntRuntime="false" debug="${debug}" 55 source="${sourcever}" target="${sourcever}" 56 release="${sourcever}" 57 includesfile="fileset-src.txt" 58 excludes="**/package-info.java"> 59 <compilerarg compiler="modern" line="-Xlint -Xlint:-options"/> 60 </javac> 61 62 <!-- Build Java 9 files only if sourcever9 is set: --> 63 <mkdir dir="${classes9_dir}"/> 64 <condition property="exclude_java9" value="**"> 65 <not><isset property="sourcever9"/></not> 66 </condition> 67 68 <!-- Regular Java 9 files excluding module-info.java: --> 69 <javac srcdir="." sourcepath="${src_dir}" 70 destdir="${classes9_dir}" 71 classpath="${classes_dir}" 72 includeAntRuntime="false" debug="${debug}" 73 release="${sourcever9}" 74 includesfile="fileset-src9.txt" 75 excludes="${exclude_java9} **/module-info.java"> 76 <compilerarg compiler="modern" line="-Xlint"/> 77 </javac> 78 79 <!-- module-info.java needs special treatment because it wants to 80 be on the source path and also see source files from the 81 package being exported. --> 82 <javac srcdir="." sourcepath="${src9_dir}:${src_dir}" 83 destdir="${classes9_dir}" 84 includeAntRuntime="false" debug="${debug}" 85 release="${sourcever9}" 86 includes="src9/module-info.java" 87 excludes="${exclude_java9}"> 88 <compilerarg compiler="modern" line="-Xlint"/> 89 </javac> 90 </target> 91 92 <target name="jar" depends="compile" 93 description="Creates JAR packages"> 94 <mkdir dir="${jar_dir}"/> 95 96 <jar destfile="${jar_dir}/xz.jar"> 97 <fileset dir="${classes_dir}" includes="org/tukaani/xz/**"/> 98 <zipfileset prefix="META-INF/versions/9/" dir="${classes9_dir}"/> 99 <manifest> 100 <attribute name="Implementation-Title" value="${title}"/> 101 <attribute name="Implementation-Version" value="${version}"/> 102 <attribute name="Implementation-URL" value="${homepage}"/> 103 <attribute name="Sealed" value="true"/> 104 <attribute name="Multi-Release" value="true"/> 105 <!-- Attributes required for OSGi bundles. --> 106 <attribute name="Bundle-ManifestVersion" value="2"/> 107 <attribute name="Bundle-SymbolicName" value="org.tukaani.xz"/> 108 <attribute name="Bundle-Version" value="${version}"/> 109 <attribute name="Export-Package" value="org.tukaani.xz"/> 110 <attribute name="Bundle-Name" value="${title}"/> 111 <attribute name="Bundle-DocURL" value="${homepage}"/> 112 </manifest> 113 </jar> 114 115 <jar destfile="${jar_dir}/TestAllocSpeed.jar" basedir="${classes_dir}" 116 includes="TestAllocSpeed.class"> 117 <manifest> 118 <attribute name="Main-Class" value="TestAllocSpeed"/> 119 <attribute name="Class-Path" value="xz.jar"/> 120 </manifest> 121 </jar> 122 123 <jar destfile="${jar_dir}/XZEncDemo.jar" basedir="${classes_dir}" 124 includes="XZEncDemo.class"> 125 <manifest> 126 <attribute name="Main-Class" value="XZEncDemo"/> 127 <attribute name="Class-Path" value="xz.jar"/> 128 </manifest> 129 </jar> 130 131 <jar destfile="${jar_dir}/XZDecDemo.jar" basedir="${classes_dir}" 132 includes="XZDecDemo.class"> 133 <manifest> 134 <attribute name="Main-Class" value="XZDecDemo"/> 135 <attribute name="Class-Path" value="xz.jar"/> 136 </manifest> 137 </jar> 138 139 <jar destfile="${jar_dir}/XZSeekEncDemo.jar" basedir="${classes_dir}" 140 includes="XZSeekEncDemo.class"> 141 <manifest> 142 <attribute name="Main-Class" value="XZSeekEncDemo"/> 143 <attribute name="Class-Path" value="xz.jar"/> 144 </manifest> 145 </jar> 146 147 <jar destfile="${jar_dir}/XZSeekDecDemo.jar" basedir="${classes_dir}" 148 includes="XZSeekDecDemo.class"> 149 <manifest> 150 <attribute name="Main-Class" value="XZSeekDecDemo"/> 151 <attribute name="Class-Path" value="xz.jar"/> 152 </manifest> 153 </jar> 154 155 <jar destfile="${jar_dir}/LZMAEncDemo.jar" basedir="${classes_dir}" 156 includes="LZMAEncDemo.class"> 157 <manifest> 158 <attribute name="Main-Class" value="LZMAEncDemo"/> 159 <attribute name="Class-Path" value="xz.jar"/> 160 </manifest> 161 </jar> 162 163 <jar destfile="${jar_dir}/LZMADecDemo.jar" basedir="${classes_dir}" 164 includes="LZMADecDemo.class"> 165 <manifest> 166 <attribute name="Main-Class" value="LZMADecDemo"/> 167 <attribute name="Class-Path" value="xz.jar"/> 168 </manifest> 169 </jar> 170 </target> 171 172 <!-- It's an ugly quick hack. Maybe some day there will be a cleaner 173 version (e.g. by using Maven). --> 174 <target name="maven" depends="dist, doc, jar" 175 description="Creates the files for a Maven repository"> 176 <mkdir dir="${maven_dir}"/> 177 178 <copy file="${pom_template}" tofile="${maven_dir}/xz-${version}.pom" 179 overwrite="true"> 180 <filterset> 181 <filter token="VERSION" value="${version}"/> 182 <filter token="TITLE" value="${title}"/> 183 <filter token="HOMEPAGE" value="${homepage}"/> 184 </filterset> 185 </copy> 186 187 <copy file="${jar_dir}/xz.jar" tofile="${maven_dir}/xz-${version}.jar" 188 preservelastmodified="true" overwrite="true"/> 189 190 <jar destfile="${maven_dir}/xz-${version}-javadoc.jar" 191 basedir="${doc_dir}"/> 192 193 <jar destfile="${maven_dir}/xz-${version}-sources.jar"> 194 <fileset dir="${src_dir}" includes="org/tukaani/xz/**"/> 195 <zipfileset prefix="META-INF/versions/9/" dir="${src9_dir}"/> 196 </jar> 197 </target> 198 199</project> 200