Annotation Type Platform


@Documented @Retention(RUNTIME) @Target({TYPE,METHOD}) public @interface Platform
Defines native properties for a top-level enclosing class as well as indicates classes and methods that should be generated or not, for specified platforms.

A class or method annotated with only value() or not() lets Generator know for which platforms it should generate code (or not). The strings are matched with String.startsWith(String). In particular, @Platform(value="") matches all platforms, while @Platform(not="") matches no platforms, providing a way to specify methods to skip or classes to ignore, as if they did not exist. Alternatively, regular expressions can also be used with @Platform(pattern="").

Classes annotated with at least one of the other values define a top-enclosing class as returned by Loader.getEnclosingClass(Class). By default, one native library gets created for each such class, but Builder recognizes more than one class with the same library() name and produces only one library in that case.

Further, with the Properties annotation, properties can be inherited from other classes, and different properties can be defined for each platform.

See Also:
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    A list of C header files to include at the top of the generated code.
    A list of options applied for the native compiler.
    A list of macros to #define at the top of the generated code, before include() and cinclude() header files.
    A list of C/C++ header files that should not be included in the generated code, even when they are inherited from an include list.
    Executables to bundle at build time and extract at runtime on load, instead of a library.
    A list of paths from which to copy executables from the executable() value.
    The platform extensions to attempt to load for this library.
    A list of frameworks the native compiler should build against.
    A list of framework paths passed to the native compiler for use at link time.
    A list of C++ header files to include at the top of the generated code.
    A list of include paths passed to the native compiler.
    A list of include resources passed to the native compiler.
    The native JNI library associated with this class that Builder should try to build and Loader should try to load.
    A list of libraries the native compiler should link with.
    A list of library paths passed to the native compiler for use at link time.
    A list of library resources passed to the native compiler for use at link time.
    The properties, class, or method do NOT apply to the named platforms.
    The properties, class, or method apply only to the named platforms.
    A list of pragma directives to list at the top of the generated code, before define() macros and any included header files.
    A list of libraries, in addition to link(), that should be extracted and preloaded, if possible.
    A list of paths from which to attempt preloading libraries from the link() and preload() lists.
    A list of resources from which to attempt preloading libraries from the link() and preload() lists.
    A list of resources, either files or directories, that can be copied and extracted.
    A list of paths from which to copy resources from the resource() list.
    The properties, class, or method apply only to the named platforms.
  • Element Details

    • value

      String[] value
      The properties, class, or method apply only to the named platforms. The strings are matched with String.startsWith(String)
      Default:
      {}
    • not

      String[] not
      The properties, class, or method do NOT apply to the named platforms. The strings are matched with String.startsWith(String)
      Default:
      {}
    • pattern

      String[] pattern
      The properties, class, or method apply only to the named platforms. The strings are matched as regular expressions with String.matches(String).
      Default:
      {}
    • pragma

      String[] pragma
      A list of pragma directives to list at the top of the generated code, before define() macros and any included header files.
      Default:
      {}
    • define

      String[] define
      A list of macros to #define at the top of the generated code, before include() and cinclude() header files.
      Default:
      {}
    • exclude

      String[] exclude
      A list of C/C++ header files that should not be included in the generated code, even when they are inherited from an include list.
      Default:
      {}
    • include

      String[] include
      A list of C++ header files to include at the top of the generated code.
      Default:
      {}
    • cinclude

      String[] cinclude
      A list of C header files to include at the top of the generated code. The #include directives will be generated in a extern "C" { } block.
      Default:
      {}
    • includepath

      String[] includepath
      A list of include paths passed to the native compiler.
      Default:
      {}
    • includeresource

      String[] includeresource
      A list of include resources passed to the native compiler.
      Default:
      {}
    • compiler

      String[] compiler
      A list of options applied for the native compiler. The options here refer to property names. The actual command line options of the native compiler are the values of these properties, which need to be defined elsewhere. On an empty array, the Builder uses the "platform.compiler.default" property.
      Default:
      {}
    • linkpath

      String[] linkpath
      A list of library paths passed to the native compiler for use at link time.
      Default:
      {}
    • linkresource

      String[] linkresource
      A list of library resources passed to the native compiler for use at link time.
      Default:
      {}
    • link

      String[] link
      A list of libraries the native compiler should link with. Accepts "@" + optional version tag and "#" + a second optional name used at extraction (or empty to prevent it).
      Default:
      {}
    • frameworkpath

      String[] frameworkpath
      A list of framework paths passed to the native compiler for use at link time.
      Default:
      {}
    • framework

      String[] framework
      A list of frameworks the native compiler should build against.
      Default:
      {}
    • preloadpath

      String[] preloadpath
      A list of paths from which to attempt preloading libraries from the link() and preload() lists.
      Default:
      {}
    • preloadresource

      String[] preloadresource
      A list of resources from which to attempt preloading libraries from the link() and preload() lists.
      Default:
      {}
    • preload

      String[] preload
      A list of libraries, in addition to link(), that should be extracted and preloaded, if possible. Accepts "@" + optional version tag and "#" + a second optional name used at extraction (or empty to prevent it).
      Default:
      {}
    • resourcepath

      String[] resourcepath
      A list of paths from which to copy resources from the resource() list.
      Default:
      {}
    • resource

      String[] resource
      A list of resources, either files or directories, that can be copied and extracted.
      Default:
      {}
    • extension

      String[] extension
      The platform extensions to attempt to load for this library. The names here are appended to the platform name and looked up in the class path.
      Default:
      {}
    • executablepath

      String[] executablepath
      A list of paths from which to copy executables from the executable() value.
      Default:
      {}
    • executable

      String[] executable
      Executables to bundle at build time and extract at runtime on load, instead of a library.
      Default:
      {}
    • library

      String library
      The native JNI library associated with this class that Builder should try to build and Loader should try to load. If left empty, this value defaults to "jni" + the name that Class.getSimpleName() returns for Properties.target() or Properties.global() class, or this class, if not given.
      Default:
      ""