# System requirements
* Java Development Kit (JDK): 21+
* Building system: Maven 4+

# Supporting
* Spice3 models except for "hicum2"
* Cider
* Xspice packages: "spice2poly", "analog", "xtradev", tlines".

# Building
The "com.ngspice" package contains the Jngspice sources.
"com.libxspice" contains the sources of the Xspice libraries.

Available libraries are defined in "share/ngspice/scripts/spinit".

> **Note:**
> Current java version does not load libraries from the "lib/ngspice/" directory.
> Packages "ngspice" and "libxspice" must be built as one jar file.
> See: com.ngspice.libspice.devices.Jdev#load_opus

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

Example for "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>;
}
~~~