From a7ddd8f0c2256c44ca3931012517cc1bc82e96c0 Mon Sep 17 00:00:00 2001 From: Dan Date: Thu, 25 Jul 2019 22:01:42 -0400 Subject: [PATCH] Autodetect -target and -source flags for javac based on JDK version. --- setup.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index ee9351e..b431200 100644 --- a/setup.py +++ b/setup.py @@ -14,6 +14,7 @@ except ImportError: import os from os import environ from os.path import dirname, join, exists, realpath +import re import sys from platform import machine from setup_sdist import SETUP_KWARGS @@ -91,8 +92,16 @@ def find_javac(possible_homes): def compile_native_invocation_handler(*possible_homes): '''Find javac and compile NativeInvocationHandler.java.''' javac = find_javac(possible_homes) + source_level = '1.6' + # We have to check what version of javac this is, because -target 1.6 is + # no longer supported on JDKs >= 12. + javac_version = subprocess.check_output([javac, '-version']) + for m in re.finditer(r'\d+', javac_version.decode('ascii')): + if int(m.group(0)) >= 12: + source_level = '1.7' + break subprocess.check_call([ - javac, '-target', '1.6', '-source', '1.6', + javac, '-target', source_level, '-source', source_level, join('jnius', 'src', 'org', 'jnius', 'NativeInvocationHandler.java') ])