## Ant based build process and runtime settings

## A file named 'abcl.properties' controls settings for the ABCL
## build.  This is the prototype for its contents.

# Attempt to perform incremental compilation? 
abcl.build.incremental=true

## javac compiler options for ABCL build
# generate class files for this target JVM
#ant.build.javac.target=1.8
# specify Java source compatiblity level
#ant.build.javac.source=1.6

## Additional site specific startup code to be merged in 'system.lisp' at build time
#abcl.startup.file=${basedir}/startup.lisp

## java.options sets the invoking JVM options in the abcl wrapper script

# Base JVM settings that work on all supported platforms
# <> java.options 
java.options=-XshowSettings:vm -Dfile.encoding=UTF-8

## N.b. Ant properties can only be set once, so lines like
##    java.options=${java.options} further options
## will NOT work.  Instead one has to "manually" create lines

#<>
# <java/runtime> ( openjdk11, openjdk13, openjdk14 ) ;
#
#java.options=-XX:+UnlockExperimentalVMOptions -XX:+UseZGC -Xmx<size> -Xlog:gc

#<>
#  <java/runtime> openjdk11 ;
#  rdfs:seeAlso <https://blog.gceasy.io/2020/03/18/7-jvm-arguments-of-highly-effective-applications/> ;
#java.options=-XX:CompileThreshold=10

#<>
#  <java/runtime> openjdk8 ;
#java.options=-XX:+UseG1GC -XX:+AggressiveOpts -XX:CompileThreshold=10

#<> 
#  rdfs:comment "openjdk7 with 64bit optimizations" ;
#  <java/runtime> openjdk7 ;
#java.options=-d64 -XX:+UseG1GC 

#<>
#  rdfs:comment "openjdk6 is the minimum supported runtime"
#  <java/runtime> openjdk6 ;
#java.options=-d64 -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=1g -XX:+UseConcMarkSweepGC

# Comprehensive documentation for JVM options does not really exist:
# per the usual entropy of long projects, the only true source of
# truth is the source of the specific openjdk.
#
# As of 2020, decent online compendiums are
# <https://chriswhocodes.com/> and <http://jvm-options.tech.xebia.fr/#>
#
# ORCL's documentation <http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html>

## Various historical option settings

# Java7 on 64bit optimizations
#java.options=-d64 -Xmx16g -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=2g

# Set the JVM to use a maximum of 1GB of RAM (only works for 64bit JVMs)
#java.options=-d64 -Xmx1g

# Use the G1 garbage collector stablized with jdk1.7.0_04, printing GC details
#java.options=-d64 -Xmx4g -XX:+UseG1GC 

# Use a separate concurrent GC thread (java-1.6_14 or later)
#java.options=-d64 -Xmx8g -XX:+UseConcMarkSweepGC

# Verbose garbage collection
#java.options=-verbos:gc -XX:+PrintGCDetails

# Java 5 era (???) flag to GC class definitions
#java.options=-XX:+CMSPermGenSweepingEnabled

# The unloading of class definitions is a per jvm policy.  For 
# implementations which run out of permgen space, the following should
# help things out.
#java.options=-d64 -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=1g

# Enable assertions specified via the JVM contract
# TODO move all use of org.armedbear.lisp.Debug assertions to this interface.
#java.options=-ea

## ABCL Development

# skips the compilation of Lisp sources in Netbeans 
# (for debugging compiler-pass1.lisp and subsequent passes)
#abcl.compile.lisp.skip=true

# JVM option to execute when debugging the Lisp compilation via 'abcl.compile.lisp.debug'
# Debug the compilation by connecting a JVM debugger to localhost:6789 via JDWP.
#abcl.compile.lisp.debug.jvmarg=-agentlib:jdwp=transport=dt_socket,server=y,address=6789,suspend=y



