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:
    Builder, Generator, Loader
    • Optional Element Summary

      Optional Elements 
      Modifier and Type Optional Element Description
      java.lang.String[] cinclude
      A list of C header files to include at the top of the generated code.
      java.lang.String[] compiler
      A list of options applied for the native compiler.
      java.lang.String[] define
      A list of macros to #define at the top of the generated code, before include() and cinclude() header files.
      java.lang.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.
      java.lang.String[] executable
      Executables to bundle at build time and extract at runtime on load, instead of a library.
      java.lang.String[] executablepath
      A list of paths from which to copy executables from the executable() value.
      java.lang.String[] extension
      The platform extensions to attempt to load for this library.
      java.lang.String[] framework
      A list of frameworks the native compiler should build against.
      java.lang.String[] frameworkpath
      A list of framework paths passed to the native compiler for use at link time.
      java.lang.String[] include
      A list of C++ header files to include at the top of the generated code.
      java.lang.String[] includepath
      A list of include paths passed to the native compiler.
      java.lang.String[] includeresource
      A list of include resources passed to the native compiler.
      java.lang.String library
      The native JNI library associated with this class that Builder should try to build and Loader should try to load.
      java.lang.String[] link
      A list of libraries the native compiler should link with.
      java.lang.String[] linkpath
      A list of library paths passed to the native compiler for use at link time.
      java.lang.String[] linkresource
      A list of library resources passed to the native compiler for use at link time.
      java.lang.String[] not
      The properties, class, or method do NOT apply to the named platforms.
      java.lang.String[] pattern
      The properties, class, or method apply only to the named platforms.
      java.lang.String[] pragma
      A list of pragma directives to list at the top of the generated code, before define() macros and any included header files.
      java.lang.String[] preload
      A list of libraries, in addition to link(), that should be extracted and preloaded, if possible.
      java.lang.String[] preloadpath
      A list of paths from which to attempt preloading libraries from the link() and preload() lists.
      java.lang.String[] preloadresource
      A list of resources from which to attempt preloading libraries from the link() and preload() lists.
      java.lang.String[] resource
      A list of resources, either files or directories, that can be copied and extracted.
      java.lang.String[] resourcepath
      A list of paths from which to copy resources from the resource() list.
      java.lang.String[] value
      The properties, class, or method apply only to the named platforms.
    • Element Detail

      • value

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

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

        java.lang.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

        java.lang.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

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

        java.lang.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

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

        java.lang.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

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

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

        java.lang.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

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

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

        java.lang.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

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

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

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

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

        java.lang.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

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

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

        java.lang.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

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

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

        java.lang.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:
        ""