Make Java bindings work with newer build envs (#1709)
authorAndres Noetzli <andres.noetzli@gmail.com>
Mon, 26 Mar 2018 19:09:33 +0000 (12:09 -0700)
committerGitHub <noreply@github.com>
Mon, 26 Mar 2018 19:09:33 +0000 (12:09 -0700)
commita4c2248a49506f60d555cbd7b99784b20ff02aef
tree93eac6b8b2c26954999bb6b392794f17164e1085
parent2126fcefd7bf593e949a7a5a71b1d56878f710db
Make Java bindings work with newer build envs (#1709)

Our current build scripts did not work with Automake 1.16. At configure
time, the .swig_deps target in src/bindings/Makefile.am was executed due
to the `@mk_include@ .swig_deps` (which is not the case with older
versions of Automake). This ultimately caused configure to fail because
SWIG was complaining about missing files (generated source files, such
as src/expr/expr.h). This commit fixes the issue by adding
`-ignoremissing` to the call to SWIG. With that option, SWIG is not
complaining about the missing files and the dependency generation
completes successfully.

Currently, the src/bindings/compat/java/create_impl.py script is not
compatible with Python 3, which leads to errors when building on systems
where `python` links to Python 3 (e.g. on Arch Linux). This commit makes
the script compatible with both Python 2 and 3.

Our build scripts were using old -source/-target versions when calling
`javac`. Those are not supported by newer Java versions (e.g.  Java 9).
This commit updates the version to 1.6, which is still fairly old, so
should be broadly supported.

Finally, some systems (e.g. Arch Linux' AUR package for SWIG 2) refer to
SWIG 2 as `swig-2`.  This commit adds support for detecting this at
configure time.
config/bindings.m4
src/bindings/Makefile.am
src/bindings/compat/java/Makefile.am
src/bindings/compat/java/create_impl.py