aboutsummaryrefslogtreecommitdiff
path: root/environment.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2014-03-10 22:49:29 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2014-03-10 22:49:29 +0200
commit11f21062280cb5267a3a9c4054a62ff5a2898101 (patch)
treeb418dcb2ce70287617bdecdfe40eee7aec75a24d /environment.py
parente321345f41d554a52d055f14f79992bac46161b3 (diff)
downloadmeson-11f21062280cb5267a3a9c4054a62ff5a2898101.zip
meson-11f21062280cb5267a3a9c4054a62ff5a2898101.tar.gz
meson-11f21062280cb5267a3a9c4054a62ff5a2898101.tar.bz2
Now can detect Java compiler.
Diffstat (limited to 'environment.py')
-rw-r--r--environment.py32
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']