==== Building
The "com.ngspice" package contains the Jngspice sources.
"com.libxspice" contains the sources of the XSPICE libraries.

Each package inside "com.libxspice" should be compiled as a separate JAR file.
The extension of these library JARs should be changed to ".cm",
and the files must be placed in the "lib/ngspice/" directory.
Available libraries are defined in "share/ngspice/scripts/spinit".

The build process is automated using the Maven "pom.xml".
All build artifacts are located in the "/target/" directory.

==== Obfuscation
Keep class, method, field names which use annotations @UsedByReflection, @Keep

proguard:
# MANDATORY: This allows ProGuard to read the annotations in your code
-keepattributes RuntimeVisibleAnnotations,AnnotationDefault,Signature

# GLOBAL SWITCH: This keeps parameter names for any method that is NOT renamed
# Note: This is required because ProGuard cannot do this selectively.
-keepparameternames

# 1. @Keep on Class: Keep only the class name
-keepnames @com.annotations.Keep class *

# 2. @Keep on Method: Keep the method name
-keepclassmembernames class * {
    @com.annotations.Keep <methods>;
}

# 3. @UsedByReflection on Class and Methods: Keep their names
-keepnames @com.annotations.UsedByReflection class *

-keepclassmembernames class * {
    @com.annotations.UsedByReflection <methods>;
}