|
23 | 23 |
|
24 | 24 | <!-- set properties for this build --> |
25 | 25 | <property name="src.dir" value="src/main/java/" /> |
| 26 | + <property name="src.java9.dir" value="src/java9/" /> |
26 | 27 | <property name="jni.dir" value="jni/include/" /> |
27 | 28 | <property name="lib.dir" value="lib/" /> |
28 | 29 | <property name="build.dir" value="build" /> |
|
48 | 49 |
|
49 | 50 | <property environment="env" /> |
50 | 51 |
|
| 52 | + <!-- Detect Java 9+ for module-info.java compilation --> |
| 53 | + <condition property="isJava9Plus"> |
| 54 | + <not> |
| 55 | + <or> |
| 56 | + <equals arg1="${ant.java.version}" arg2="1.5"/> |
| 57 | + <equals arg1="${ant.java.version}" arg2="1.6"/> |
| 58 | + <equals arg1="${ant.java.version}" arg2="1.7"/> |
| 59 | + <equals arg1="${ant.java.version}" arg2="1.8"/> |
| 60 | + </or> |
| 61 | + </not> |
| 62 | + </condition> |
| 63 | + |
51 | 64 | <!-- Detect if running on Windows host --> |
52 | 65 | <condition property="isWindows"> |
53 | 66 | <os family="windows" /> |
|
161 | 174 | </copy> |
162 | 175 | </target> |
163 | 176 |
|
| 177 | + <!-- Compile module-info.java for Java 9+ module support. |
| 178 | + Only runs when building with Java 9 or later. When building with |
| 179 | + Java 8 or earlier, this target is skipped and the resulting JAR |
| 180 | + will be a standard (non-modular) JAR file. --> |
| 181 | + <target name="compile-module-info" if="isJava9Plus" |
| 182 | + description="Compile module-info.java for Java 9+ (skipped on Java 8)"> |
| 183 | + <javac srcdir="${src.java9.dir}" |
| 184 | + destdir="${build.dir}" |
| 185 | + release="9" |
| 186 | + modulepath="${build.dir}" |
| 187 | + includeantruntime="false"> |
| 188 | + <include name="module-info.java"/> |
| 189 | + </javac> |
| 190 | + <echo message="Compiled module-info.java for Java 9+ module support"/> |
| 191 | + </target> |
| 192 | + |
164 | 193 | <!-- create JAR with ONLY JNI classes, not to be used with JCE --> |
165 | | - <target name="jar-jni" depends="compile-nativeheaderdir, compile-javah"> |
| 194 | + <target name="jar-jni" depends="compile-nativeheaderdir, compile-javah, compile-module-info"> |
166 | 195 | <jar jarfile="${lib.dir}/wolfcrypt-jni.jar"> |
167 | 196 | <manifest> |
168 | 197 | <attribute name="Implementation-Title" |
|
174 | 203 | </manifest> |
175 | 204 | <fileset dir="${build.dir}"> |
176 | 205 | <include name="com/wolfssl/wolfcrypt/*.class"/> |
| 206 | + <include name="module-info.class"/> |
177 | 207 | </fileset> |
178 | 208 | </jar> |
179 | 209 | </target> |
180 | 210 |
|
181 | 211 | <!-- create JAR with JNI and JCE classes, use this when wanting JCE --> |
182 | | - <target name="jar-jce" depends="compile-nativeheaderdir, compile-javah"> |
| 212 | + <target name="jar-jce" depends="compile-nativeheaderdir, compile-javah, compile-module-info"> |
183 | 213 | <jar jarfile="${lib.dir}/wolfcrypt-jni.jar" basedir="${build.dir}"> |
184 | 214 | <manifest> |
185 | 215 | <attribute name="Implementation-Title" |
|
0 commit comments