java-bridge-0.9: java-bridge.cabal
name: java-bridge
version: 0.9
license: MIT
license-file: LICENSE
author: Julian Fleischer <julian.fleischer@fu-berlin.de>
maintainer: Julian Fleischer <julian.fleischer@fu-berlin.de>
stability: experimental
category: Foreign, Java, JVM, FFI Tools
cabal-version: >= 1.8
synopsis: Bindings to the JNI and a high level interface generator.
description: This package offers bindings to the
/Java Native Interface/ and a high level interface
generator.
.
[@low level bindings to the JNI@]
The low level bindings are located in
"Foreign.Java.JNI.Safe" and "Foreign.Java.JNI.Unsafe".
When using these bindings you will have to deal with
pointers and manage global references manually.
.
[@medium level interface@]
The medium level interface is located in
"Foreign.Java". It offers an abstraction over the JNI,
i.e. you will not have to deal with pointers
explicitly nor do you need to manually do conversions
between native types and Haskell types.
Also references will automatically be released by
the Haskell runtime when no longer needed. You will
still need to manually lookup classes and methods in
order to use them.
.
.
>>> INSTALLATION / USAGE
.
It should suffice to do @cabal install@ (or
@cabal install java-bridge@ when installing from
hackageDB). /You need to have a JDK installed prior to
installing this library/.
.
Setup will try to find the location of your java
installation automatically. This is needed in order to
load @libjvm@. Note that this library is loaded
dynamically, which means that linking errors might not
show up during installation.
.
You can specify the location of @libjvm@ manually using
the environment variable @FFIJNI_LIBJVM@. This
environment variable is consulted by @Setup.hs@ as well
as by the library each time @libjvm@ is loaded - which
means that you can override the path to @libjvm@ at any
time. The function @getCompiledLibjvmPath@ in
"Foreign.Java.JNI.Safe" will tell you what path to
@libjvm@ has been set during compilation of the library.
.
.
>>> FUN WITH (cabal-) FLAGS
.
The following cabal flags are available to you for
configuring your installation:
.
[@ONLY_CORE@]
Build only the Core Modules which offer a
direct binding to the Java Native Interface.
The core modules are "Foreign.Java.JNI",
"Foreign.Java.JNI.Safe",
and "Foreign.Java.JNI.Unsafe".
This implies @NO_TOOLS@.
Defaults to @False@.
.
[@DEBUG@]
Enable a debug build. Defaults to @False@.
.
[@OSX_GUI@]
Build the library with special support for
Cocoa on Mac OS X (you will not be able to
use AWT or Swing without). Defaults to @True@
on Darwin (OS X).
.
[@OSX_FRAMEWORK@]
Use the JavaVM framework on MacOS X instead
of loading the dynamic library. Defaults to
@False@. Enable this flag if building on your
OS X machine fails. Defaults to @False@.
.
Use for example
@cabal install -f OSX_FRAMEWORK -f EXAMPLES@
or @cabal configure -f DEBUG@.
build-type: Custom
extra-source-files: include/jni.h,
src/Foreign/Java/JNI/core.hs,
src/ffijni.h,
src/hfunction.h,
GetProperty.java,
HFunction.java,
ReadClass.java,
HACKING.txt,
ISSUES.txt,
README.md
flag ONLY_CORE
Description: Build only the Core Modules which offer a
direct binding to the Java Native Interface.
Default: False
flag DEBUG
Description: Enable a debug build.
Default: False
flag OSX_GUI
Description: Build the library with special support for
Cocoa on Mac OS X.
Default: True
flag OSX_FRAMEWORK
Description: Use the JavaVM framework on MacOS X instead
of loading the dynamic library.
Default: False
Library
cc-options: -DFFIJNI_BRIDGE_VERSION="1.0"
cpp-options: -DFFIJNI_BRIDGE_VERSION="1.0"
build-depends: base >= 4.5 && < 5
, directory >= 1.1.0.2
, filepath >= 1.3
hs-source-dirs: src
exposed-modules: Foreign.Java.JNI,
Foreign.Java.JNI.Safe,
Foreign.Java.JNI.Unsafe
other-modules: Foreign.Java.JNI.Types
if flag(ONLY_CORE)
cc-options: -DFFIJNI_ONLY_CORE
cpp-options: -DFFIJNI_ONLY_CORE
else
exposed-modules: Foreign.Java
, Foreign.Java.Bindings
, Foreign.Java.Utils
, Foreign.Java.Value
build-depends: cpphs >= 1.16
, strings >= 1.1
, mtl >= 2.1.1
, transformers >= 0.3
other-modules: Foreign.Java.Types
, Foreign.Java.JavaMonad
, Foreign.Java.Util
if flag(DEBUG)
cc-options: -DFFIJNI_DEBUG
cpp-options: -DFFIJNI_DEBUG
c-sources: src/ffijni.c
includes: src/ffijni.h
cc-options: -Wall --std=c99
if os(darwin)
buildable: True
cc-options: -Wno-deprecated-declarations -DFFIJNI_MACOSX
cpp-options: -DFFIJNI_MACOSX
build-depends: unix
if flag(OSX_GUI)
cc-options: -DFFIJNI_OSX_GUI
cpp-options: -DFFIJNI_OSX_GUI
frameworks: Cocoa
if flag(OSX_FRAMEWORK)
cc-options: -DFFIJNI_OSX_FRAMEWORK
cpp-options: -DFFIJNI_OSX_FRAMEWORK
frameworks: JavaVM
else
if os(linux)
buildable: True
cc-options: -DFFIJNI_LINUX
cpp-options: -DFFIJNI_LINUX
build-depends: unix
else
if os(windows)
buildable: True
cc-options: -DFFIJNI_WINDOWS
cpp-options: -DFFIJNI_WINDOWS
else
buildable: False