You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

build.xml 7.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <!-- ========================================================================= -->
  2. <!-- Copyright (c) 2003 Contributors. -->
  3. <!-- All rights reserved. -->
  4. <!-- This program and the accompanying materials are made available -->
  5. <!-- under the terms of the Eclipse Public License v 2.0 -->
  6. <!-- which accompanies this distribution and is available at -->
  7. <!-- https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt -->
  8. <!-- -->
  9. <!-- Contributors: -->
  10. <!-- Isberg initial implementation -->
  11. <!-- ========================================================================= -->
  12. <project name="build-aspectj-using-aspectj" default="all" basedir=".">
  13. <target name="info" >
  14. <echo>
  15. This script tests the AspectJ tools and runtime
  16. by building the AspectJ sources. When run, this should
  17. finish by emitting the ajc help message.
  18. Relevant targets:
  19. all build and test runtime and tools
  20. tools build output/aspectjtools.jar
  21. runtime build output/aspectjrt.jar
  22. build-tools-javac build using javac to output
  23. Setup:
  24. Variables ASPECTJ_HOME and ASPECTJ_MODULES refer to the
  25. base of an AspectJ install and the modules directory
  26. of the AspectJ source tree. By default they are
  27. ASPECTJ_MODULES: $${basedir}/../..
  28. ASPECTJ_HOME: $${basedir}/../../aj-build/dist/tools
  29. which assumes the tools dist is built and this
  30. runs from modules/tests/product/build-aspectj.
  31. To disable verbose mode, set iajc.verbose to false.
  32. You can also define the properties to run on any
  33. distribution from anywhere:
  34. ant -DASPECTJ_HOME=dev/tools/aj -DASPECTJ_MODULES=ec
  35. </echo>
  36. </target>
  37. <!-- ============================================================= -->
  38. <!-- setup and cleanup targets -->
  39. <!-- ============================================================= -->
  40. <target name="clean" depends="init"
  41. description="clean and create output dir">
  42. <delete quiet="on" dir="${output.dir}"/>
  43. <mkdir dir="${output.dir}"/>
  44. </target>
  45. <target name="init" depends="init.variables,init.taskdefs"/>
  46. <target name="init.variables"
  47. description="init variables">
  48. <property name="iajc.verbose" value="true"/>
  49. <!-- build.compiler value to pick up our CompilerAdapter for javac -->
  50. <property name="ajc.adapter"
  51. value="org.aspectj.tools.ant.taskdefs.Ajc11CompilerAdapter"/>
  52. <!-- required directories - run from examples or predefine -->
  53. <property name="ASPECTJ_MODULES"
  54. location="${basedir}/../../.."/>
  55. <property name="ASPECTJ_HOME"
  56. location="${basedir}/../../../aj-build/dist/tools"/>
  57. <property name="aspectj.lib.dir"
  58. location="${ASPECTJ_HOME}/lib"/>
  59. <!-- required libraries - install or predefine -->
  60. <property name="aspectjrt.jar"
  61. location="${aspectj.lib.dir}/aspectjrt.jar"/>
  62. <property name="aspectjtools.jar"
  63. location="${aspectj.lib.dir}/aspectjtools.jar"/>
  64. <!-- created directories -->
  65. <property name="output.dir"
  66. location="${basedir}/output"/>
  67. <mkdir dir="${output.dir}"/>
  68. <!-- checking required libraries -->
  69. <available file="${aspectjtools.jar}"
  70. property="aspectjtools.jar.available"/>
  71. <available file="${aspectjrt.jar}"
  72. property="aspectjrt.jar.available"/>
  73. <property name="aspectj.src"
  74. location="${ASPECTJ_MODULES}"/>
  75. <property name="output.aspectjtools"
  76. location="${output.dir}/aspectjtools.jar"/>
  77. <property name="output.aspectjrt"
  78. location="${output.dir}/aspectjrt.jar"/>
  79. <available file="${aspectj.src}"
  80. property="aspectj.src.available"/>
  81. <path id="runtime.roots">
  82. <pathelement path="${aspectj.src}/runtime/src"/>
  83. </path>
  84. <path id="tools.roots">
  85. <pathelement path="${aspectj.src}/ajde/src"/>
  86. <pathelement path="${aspectj.src}/asm/src"/>
  87. <pathelement path="${aspectj.src}/bridge/src"/>
  88. <pathelement path="${aspectj.src}/org.aspectj.ajdt.core/src"/>
  89. <pathelement path="${aspectj.src}/taskdefs/src"/>
  90. <pathelement path="${aspectj.src}/util/src"/>
  91. <pathelement path="${aspectj.src}/weaver/src"/>
  92. </path>
  93. <path id="tools.libs">
  94. <pathelement path="${aspectj.src}/lib/ant/lib/ant.jar"/>
  95. <pathelement path="${aspectj.src}/lib/bcel/bcel.jar"/>
  96. <pathelement path="${aspectj.src}/lib/jdtcore-aj/jdtcore-for-aspectj.jar"/>
  97. </path>
  98. </target>
  99. <target name="init.taskdefs" depends="init.variables,
  100. aspectjtools.jar.available,
  101. aspectjrt.jar.available,
  102. aspectj.src.available"
  103. unless="taskdefs.init">
  104. <taskdef resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties">
  105. <classpath>
  106. <pathelement path="${aspectjtools.jar}"/>
  107. </classpath>
  108. </taskdef>
  109. <property name="taskdefs.init" value="true"/>
  110. </target>
  111. <!-- targets to fail unless required libraries available -->
  112. <target name="aspectjrt.jar.available" depends="init.variables"
  113. unless="aspectjrt.jar.available" >
  114. <fail message="expecting aspectjrt.jar at ${aspectjrt.jar}"/>
  115. </target>
  116. <target name="aspectjtools.jar.available" depends="init.variables"
  117. unless="aspectjtools.jar.available" >
  118. <fail message="expecting aspectjtools.jar at ${aspectjtools.jar}"/>
  119. </target>
  120. <target name="aspectj.src.available" depends="init.variables"
  121. unless="aspectj.src.available" >
  122. <fail message="expecting aspectj sources at ${aspectj.src}"/>
  123. </target>
  124. <target name="all">
  125. <antcall target="clean" />
  126. <antcall target="runtime"/>
  127. <antcall target="tools"/>
  128. </target>
  129. <target name="runtime">
  130. <antcall target="build-runtime"/>
  131. <antcall target="test-runtime"/>
  132. </target>
  133. <target name="tools">
  134. <antcall target="build-tools"/>
  135. <antcall target="test-tools"/>
  136. </target>
  137. <target name="build-runtime" depends="init">
  138. <iajc outjar="${output.aspectjrt}"
  139. classpath="${aspectjrt.jar}"
  140. verbose="${iajc.verbose}"
  141. sourcerootsref="runtime.roots"/>
  142. </target>
  143. <target name="test-runtime" depends="init">
  144. <echo message="test-runtime not implemented"/>
  145. </target>
  146. <target name="build-tools" depends="init">
  147. <iajc outjar="${output.aspectjtools}"
  148. verbose="${iajc.verbose}"
  149. sourcerootsref="tools.roots"
  150. sourcerootcopyfilter="**/CVS/*,**/*.java,**/*.aj">
  151. <classpath>
  152. <pathelement path="${aspectjrt.jar}"/> <!-- bootstrap problem... -->
  153. <path refid="tools.libs"/>
  154. </classpath>
  155. </iajc>
  156. </target>
  157. <target name="test-tools" depends="init">
  158. <java classname="org.aspectj.tools.ajc.Main"
  159. failonerror="true">
  160. <classpath>
  161. <path refid="tools.libs"/>
  162. <pathelement path="${output.aspectjtools}"/>
  163. </classpath>
  164. <arg value="-help"/>
  165. <arg value="-noExit"/>
  166. </java>
  167. </target>
  168. <target name="build-tools-javac" depends="init">
  169. <javac verbose="${verbose}" includes="**/*.java"
  170. destdir="${output.dir}">
  171. <src>
  172. <path refid="tools.roots"/>
  173. </src>
  174. <classpath>
  175. <pathelement path="${aspectjrt.jar}"/>
  176. <path refid="tools.libs"/>
  177. </classpath>
  178. </javac>
  179. </target>
  180. </project>