Reworked installation and added Makefile
[unitool.git] / build.xml
blobe160b36dc2cc151def2fbede331ee42d3b3873b6
1 <project name="UniTool" default="all" basedir=".">
2     <property environment="env" />
4     <!-- user configurable locations -->
5     <property name="destdir"          value="" />
6     <property name="prefix"           value="${env.HOME}/.usr" />
7     <property name="libdir"           value="${prefix}/lib" />
8     <property name="datadir"          value="${prefix}/share" />
9     <property name="libexecdir"       value="${prefix}/libexec" />
10     <property name="sysconfdir"       value="${prefix}/etc" />
11     <property name="pkgconfigdir"     value="${libdir}/pkgconfig" />
12     <property name="java-runtime"     value="java" />
13     <property name="JMETUX_CLASSPATH" value="${env.JMETUX_CLASSPATH}" />
15     <property name="version"         value="0.1.2" />
17     <property name="src"             value="."              />
18     <property name="build"           value=".build"         />
19     <property name="build-lib"       value="${build}/lib"   />
20     <property name="build-tests"     value="${build}/tests" />
21     <property name="jarfile"         value="${build}/unitool.jar" />
22     <property name="pkgconfigfile"   value="jar.unitool.pc" />
24     <property name="metux-runtime"   value="${JMETUX_CLASSPATH}" />
25     <property name="unitool-runtime" value="${datadir}/unitool/unitool.jar" />
27     <property name="dest_unitool_dir"      value="${destdir}${libexecdir}/unitool" />
28     <property name="dest_run_unitool"      value="${dest_unitool_dir}/run-unitool" />
29     <property name="dest_run_libtool"      value="${dest_unitool_dir}/run-libtool" />
30     <property name="dest_pkg_config_fixup" value="${dest_unitool_dir}/pkg-config-fixup" />
32     <target name="compile-base">
33         <mkdir dir="${build-lib}" />
34         <javac destdir="${build-lib}" srcdir="${src}/base" debug="on" classpath="${JMETUX_CLASSPATH}:." includeantruntime="false">
35             <include name="CCompilerParam.java"/>
36             <include name="Command.java"/>
37             <include name="EInstallFailed.java"/>
38             <include name="EMissingDBFile.java"/>
39             <include name="EParameterInvalid.java"/>
40             <include name="EParameterMissing.java"/>
41             <include name="EPkgConfigBrokenVariableReference.java"/>
42             <include name="EPkgConfigError.java"/>
43             <include name="EPkgConfigMissingProperty.java"/>
44             <include name="EPkgConfigParseError.java"/>
45             <include name="EPkgConfigUnhandledProperty.java"/>
46             <include name="EUnhandledCompilerFlag.java"/>
47             <include name="EUnitoolError.java"/>
48             <include name="EVersionSyntaxError.java"/>
49 <!--            <include name="Hacks.java"/> -->
50             <include name="InstallerParam.java"/>
51             <include name="LibraryInfo.java"/>
52             <include name="LinkerParam.java"/>
53             <include name="ManualPageInfo.java"/>
54             <include name="ObjectInfo.java"/>
55             <include name="PackageInfo.java"/>
56             <include name="ToolConfig.java"/>
57             <include name="ToolParam.java"/>
58             <include name="ToolType.java"/>
59         </javac>
60     </target>
62     <target name="compile-db" depends="compile-base">
63         <mkdir dir="${build-lib}" />
64         <javac destdir="${build-lib}" srcdir="${src}/db" debug="on" classpath="${JMETUX_CLASSPATH}:${build-lib}:." includeantruntime="false">
65             <include name="LibraryInfo.java"/>
66             <include name="LoadLibtool.java"/>
67             <include name="LoadLibtoolArchive.java"/>
68             <include name="LoadLibtoolObject.java"/>
69             <include name="LoadPkgConfig.java"/>
70             <include name="ObjectInfo.java"/>
71             <include name="PackageInfo.java"/>
72             <include name="QueryPkgConfig.java"/>
73             <include name="StoreLibtool.java"/>
74             <include name="StoreLibtoolArchive.java"/>
75             <include name="StoreLibtoolObject.java"/>
76             <include name="StorePkgConfig.java"/>
77             <include name="UnitoolConf.java"/>
78         </javac>
79     </target>
81     <target name="compile-tools" depends="compile-base,compile-db">
82         <mkdir dir="${build-lib}" />
83         <javac destdir="${build-lib}" srcdir="${src}/tools" debug="on" classpath="${JMETUX_CLASSPATH}:${build-lib}:." includeantruntime="false">
84             <include name="CCompiler.java"/>
85             <include name="Gcc_cmdline.java"/>
86             <include name="LD_cmdline.java"/>
87             <include name="LTLibraryInstaller.java"/>
88             <include name="LinkExecutable.java"/>
89             <include name="LinkSharedLibrary.java"/>
90             <include name="LinkStaticLibrary.java"/>
91             <include name="LinkerBase.java"/>
92         </javac>
93     </target>
95     <target name="compile-unitool" depends="compile-base,compile-db">
96         <mkdir dir="${build-lib}" />
97         <javac destdir="${build-lib}" srcdir="${src}/unitool" debug="on" classpath="${JMETUX_CLASSPATH}:${build-lib}:." includeantruntime="false">
98             <include name="Build.java"/>
99             <include name="Install.java"/>
100             <include name="Main.java"/>
101 <!--            <include name="PIBuild.java"/> -->
102             <include name="PkgConfigFixup.java"/>
103             <include name="Query.java"/>
104             <include name="Unitool.java"/>
105         </javac>
106     </target>
108     <target name="compile-libtool" depends="compile-base,compile-db,compile-tools">
109         <mkdir dir="${build-lib}" />
110         <javac destdir="${build-lib}" srcdir="${src}/libtool" debug="on" classpath="${JMETUX_CLASSPATH}:${build-lib}:." includeantruntime="false">
111             <include name="CmdCompile.java"/>
112             <include name="CmdInstall.java"/>
113             <include name="CmdLink.java"/>
114             <include name="Main.java"/>
115         </javac>
116     </target>
118     <target name="${pkgconfigfile}">
119 <echo file="${pkgconfigfile}">
120 prefix=${prefix}
121 jarfile=${unitool-runtime}
122 classpath=${JMETUX_CLASSPATH}:${unitool-runtime}
124 Name: (jar) metux universal toolchain wrapper
125 Description: a platform-agnostic wrapper for calling toolchain commands
126 Version: ${version}
127 Libs:
128 Cflags:
129 </echo>
130     </target>
132     <target name="${jarfile}" depends="compile-base,compile-db,compile-tools,compile-unitool,compile-libtool">
133         <jar jarfile="${jarfile}" basedir="${build-lib}" />
134     </target>
136     <target name="compile" depends="${jarfile}" />
137     <target name="all"     depends="compile" />
139     <target name="clean">
140         <delete dir="${build-tests}" />
141         <delete dir="${build-lib}"   />
142         <delete dir="${build}"       />
143         <delete file="${jarfile}"    />
144         <delete file="${pkgconfigfile}" />
145     </target>
147     <target name="install" depends="compile,${pkgconfigfile}">
148         <mkdir dir="${destdir}${datadir}/unitool" />
149         <mkdir dir="${destdir}${libexecdir}/unitool" />
150         <copy file="${jarfile}"   todir="${destdir}${datadir}/unitool" />
152         <!-- install the pkg-config-fixup script -->
153         <delete file="${dest_pkg_config_fixup}" />
154         <echo file="${dest_pkg_config_fixup}">#!/bin/bash
155 UNITOOL_PREFIX="${prefix}"
156 UNITOOL_JVM="${java-runtime}"
157 UNITOOL_MAIN="org.de.metux.unitool.unitool.Main"
159 export CLASSPATH="$CLASSPATH:${JMETUX_CLASSPATH}:${unitool-runtime}"
161 if [ ! "$SYSROOT" ]; then
162     echo "$0: Missing \$SYSROOT"
163     exit;
166 for i in $* ; do 
167     echo "Processing: $i"
168     $UNITOOL_JVM $UNITOOL_MAIN          \
169         --pkgconfig-fixup               \
170         source "$i"                     \
171         output "$i.out"                 \
172         system-root "$SYSROOT"  &amp;&amp; mv "$i.out" "$i"
173 done
174         </echo>
175         <chmod file="${dest_pkg_config_fixup}" perm="u=rwx,go=rx" />
177         <!-- install the run-unitool script -->
178         <delete file="${dest_run_unitool}" />
179         <echo file="${dest_run_unitool}">#!/bin/bash
180 UNITOOL_PREFIX="${prefix}"
181 UNITOOL_JVM="${java-runtime}"
182 UNITOOL_MAIN="org.de.metux.unitool.unitool.Main"
184 export CLASSPATH="$CLASSPATH:${JMETUX_CLASSPATH}:${unitool-runtime}"
185 $UNITOOL_JVM $UNITOOL_MAIN "$@"
186         </echo>
187         <chmod file="${dest_run_unitool}" perm="u=rwx,go=rx" />
190         <!-- install the run-libtool script -->
191         <delete file="${dest_run_libtool}" />
192         <echo file="${dest_run_libtool}">#!/bin/bash
193 UNITOOL_PREFIX="${prefix}"
194 UNITOOL_JVM="${java-runtime}"
195 UNITOOL_MAIN="org.de.metux.unitool.libtool.Main"
197 export CLASSPATH="$CLASSPATH:${JMETUX_CLASSPATH}:${unitool-runtime}"
198 $UNITOOL_JVM $UNITOOL_MAIN "$@"
199         </echo>
200         <chmod file="${dest_run_libtool}" perm="u=rwx,go=rx" />
202         <!-- install the pkgconfig descriptor -->
203         <mkdir dir="${destdir}${pkgconfigdir}" />
204         <copy file="${pkgconfigfile}" todir="${destdir}${pkgconfigdir}" />
206     </target>
208 </project>