| 1 | ## Ant based build process and runtime settings |
|---|
| 2 | |
|---|
| 3 | ## A file named 'abcl.properties' controls settings for the ABCL |
|---|
| 4 | ## build. This is the prototype for its contents. |
|---|
| 5 | |
|---|
| 6 | # Attempt to perform incremental compilation? |
|---|
| 7 | abcl.build.incremental=true |
|---|
| 8 | |
|---|
| 9 | ## javac compiler options for ABCL build |
|---|
| 10 | # generate class files for this target JVM |
|---|
| 11 | abcl.javac.target=1.8 |
|---|
| 12 | # specify Java source compatiblity level |
|---|
| 13 | abcl.javac.source=1.6 |
|---|
| 14 | |
|---|
| 15 | ## Additional site specific startup code to be merged in 'system.lisp' at build time |
|---|
| 16 | #abcl.startup.file=${basedir}/startup.lisp |
|---|
| 17 | |
|---|
| 18 | ## java.options sets the invoking JVM options in the abcl wrapper script |
|---|
| 19 | |
|---|
| 20 | # Base JVM settings that work on all supported platforms |
|---|
| 21 | # <> java.options |
|---|
| 22 | java.options=-XshowSettings:vm -Dfile.encoding=UTF-8 |
|---|
| 23 | |
|---|
| 24 | ## N.b. Ant properties can only be set once, so lines like |
|---|
| 25 | ## java.options=${java.options} further options |
|---|
| 26 | ## will NOT work. Instead one has to "manually" create lines |
|---|
| 27 | |
|---|
| 28 | #<> |
|---|
| 29 | # <java/runtime> ( openjdk11, openjdk13, openjdk14 ) ; |
|---|
| 30 | # |
|---|
| 31 | #java.options=-XX:+UnlockExperimentalVMOptions -XX:+UseZGC -Xmx<size> -Xlog:gc |
|---|
| 32 | |
|---|
| 33 | #<> |
|---|
| 34 | # <java/runtime> openjdk11 ; |
|---|
| 35 | # rdfs:seeAlso <https://blog.gceasy.io/2020/03/18/7-jvm-arguments-of-highly-effective-applications/> ; |
|---|
| 36 | #java.options=-XX:CompileThreshold=10 |
|---|
| 37 | |
|---|
| 38 | #<> |
|---|
| 39 | # <java/runtime> openjdk8 ; |
|---|
| 40 | #java.options=-XX:+UseG1GC -XX:+AggressiveOpts -XX:CompileThreshold=10 |
|---|
| 41 | |
|---|
| 42 | #<> |
|---|
| 43 | # rdfs:comment "openjdk7 with 64bit optimizations" ; |
|---|
| 44 | # <java/runtime> openjdk7 ; |
|---|
| 45 | #java.options=-d64 -XX:+UseG1GC |
|---|
| 46 | |
|---|
| 47 | #<> |
|---|
| 48 | # rdfs:comment "openjdk6 is the minimum supported runtime" |
|---|
| 49 | # <java/runtime> openjdk6 ; |
|---|
| 50 | #java.options=-d64 -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=1g -XX:+UseConcMarkSweepGC |
|---|
| 51 | |
|---|
| 52 | # Comprehensive documentation for JVM options does not really exist: |
|---|
| 53 | # per the usual entropy of long projects, the only true source of |
|---|
| 54 | # truth is the source of the specific openjdk. |
|---|
| 55 | # |
|---|
| 56 | # As of 2020, decent online compendiums are |
|---|
| 57 | # <https://chriswhocodes.com/> and <http://jvm-options.tech.xebia.fr/#> |
|---|
| 58 | # |
|---|
| 59 | # ORCL's documentation <http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html> |
|---|
| 60 | |
|---|
| 61 | ## Various historical option settings |
|---|
| 62 | |
|---|
| 63 | # Java7 on 64bit optimizations |
|---|
| 64 | #java.options=-d64 -Xmx16g -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=2g |
|---|
| 65 | |
|---|
| 66 | # Set the JVM to use a maximum of 1GB of RAM (only works for 64bit JVMs) |
|---|
| 67 | #java.options=-d64 -Xmx1g |
|---|
| 68 | |
|---|
| 69 | # Use the G1 garbage collector stablized with jdk1.7.0_04, printing GC details |
|---|
| 70 | #java.options=-d64 -Xmx4g -XX:+UseG1GC |
|---|
| 71 | |
|---|
| 72 | # Use a separate concurrent GC thread (java-1.6_14 or later) |
|---|
| 73 | #java.options=-d64 -Xmx8g -XX:+UseConcMarkSweepGC |
|---|
| 74 | |
|---|
| 75 | # Verbose garbage collection |
|---|
| 76 | #java.options=-verbos:gc -XX:+PrintGCDetails |
|---|
| 77 | |
|---|
| 78 | # Java 5 era (???) flag to GC class definitions |
|---|
| 79 | #java.options=-XX:+CMSPermGenSweepingEnabled |
|---|
| 80 | |
|---|
| 81 | # The unloading of class definitions is a per jvm policy. For |
|---|
| 82 | # implementations which run out of permgen space, the following should |
|---|
| 83 | # help things out. |
|---|
| 84 | #java.options=-d64 -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=1g |
|---|
| 85 | |
|---|
| 86 | # Enable assertions specified via the JVM contract |
|---|
| 87 | # TODO move all use of org.armedbear.lisp.Debug assertions to this interface. |
|---|
| 88 | #java.options=-ea |
|---|
| 89 | |
|---|
| 90 | ## ABCL Development |
|---|
| 91 | |
|---|
| 92 | # skips the compilation of Lisp sources in Netbeans |
|---|
| 93 | # (for debugging compiler-pass1.lisp and subsequent passes) |
|---|
| 94 | #abcl.compile.lisp.skip=true |
|---|
| 95 | |
|---|
| 96 | # JVM option to execute when debugging the Lisp compilation via 'abcl.compile.lisp.debug' |
|---|
| 97 | # Debug the compilation by connecting a JVM debugger to localhost:6789 via JDWP. |
|---|
| 98 | #abcl.compile.lisp.debug.jvmarg=-agentlib:jdwp=transport=dt_socket,server=y,address=6789,suspend=y |
|---|
| 99 | |
|---|
| 100 | |
|---|
| 101 | |
|---|