diff options
Diffstat (limited to 'environment.py')
-rw-r--r-- | environment.py | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/environment.py b/environment.py index ed98da2..90cfad3 100644 --- a/environment.py +++ b/environment.py @@ -387,7 +387,7 @@ class ObjCPPCompiler(CPPCompiler): raise EnvironmentException('Executables created by ObjC++ compiler %s are not runnable.' % self.name_string()) class JavaCompiler(): - def __init__(self, exelist, version, is_cross, exe_wrapper=None): + def __init__(self, exelist, version): if type(exelist) == type(''): self.exelist = [exelist] elif type(exelist) == type([]): @@ -398,11 +398,6 @@ class JavaCompiler(): self.language = 'java' self.default_suffix = 'java' self.id = 'unknown' - self.is_cross = is_cross - if isinstance(exe_wrapper, str): - self.exe_wrapper = [exe_wrapper] - else: - self.exe_wrapper = exe_wrapper self.javarunner = 'java' def get_always_flags(self): @@ -426,9 +421,6 @@ class JavaCompiler(): def get_dependency_gen_flags(self, outtarget, outfile): return [] - def get_depfile_suffix(self): - return 'd' - def get_language(self): return self.language @@ -488,12 +480,12 @@ class JavaCompiler(): def sanity_check(self, work_dir): src = 'SanityCheck.java' - obj = 'SanityCheck.class' + obj = 'SanityCheck' source_name = os.path.join(work_dir, src) ofile = open(source_name, 'w') ofile.write('''class SanityCheck { public static void main(String[] args) { - System.out.println("Java is working."); + int i; } } ''') @@ -1192,6 +1184,24 @@ class Environment(): return GnuObjCPPCompiler(exelist, version, is_cross, exe_wrap) raise EnvironmentException('Unknown compiler "' + ' '.join(exelist) + '"') + def detect_java_compiler(self): + exelist = ['javac'] + try: + p = subprocess.Popen(exelist + ['-version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except OSError: + raise EnvironmentException('Could not execute Java compiler "%s"' % ' '.join(exelist)) + (out, err) = p.communicate() + out = out.decode() + err = err.decode() + vmatch = re.search(Environment.version_regex, err) + if vmatch: + version = vmatch.group(0) + else: + version = 'unknown version' + if 'javac' in err: + return JavaCompiler(exelist, version) + raise EnvironmentException('Unknown compiler "' + ' '.join(exelist) + '"') + def detect_static_linker(self, compiler): if compiler.is_cross: linker = self.cross_info['ar'] |