xref: /aosp_15_r20/external/xz-java/build.xml (revision 21943e31f48dee19de75c78c0efeb8417c9a67d0)
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