diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2014-03-10 22:35:00 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2014-03-10 22:35:00 +0200 |
commit | e321345f41d554a52d055f14f79992bac46161b3 (patch) | |
tree | bfb1e033821f0d594a442f72abc962c0927c076f /environment.py | |
parent | 916dc87dc66cdbd54f2b014bd2180d8c5b8bff9b (diff) | |
download | meson-e321345f41d554a52d055f14f79992bac46161b3.zip meson-e321345f41d554a52d055f14f79992bac46161b3.tar.gz meson-e321345f41d554a52d055f14f79992bac46161b3.tar.bz2 |
Started work on Java support because why not.
Diffstat (limited to 'environment.py')
-rw-r--r-- | environment.py | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/environment.py b/environment.py index 3dfa1a3..ed98da2 100644 --- a/environment.py +++ b/environment.py @@ -386,6 +386,147 @@ class ObjCPPCompiler(CPPCompiler): if pe.returncode != 0: 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): + if type(exelist) == type(''): + self.exelist = [exelist] + elif type(exelist) == type([]): + self.exelist = exelist + else: + raise TypeError('Unknown argument to JavaCompiler') + self.version = version + 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): + return [] + + def get_linker_always_flags(self): + return [] + + def get_soname_flags(self, shlib_name, path): + return [] + + def split_shlib_to_parts(self, fname): + return (None, fname) + + def build_rpath_args(self, build_dir, rpath_paths): + return [] + + def get_id(self): + return self.id + + def get_dependency_gen_flags(self, outtarget, outfile): + return [] + + def get_depfile_suffix(self): + return 'd' + + def get_language(self): + return self.language + + def get_default_suffix(self): + return self.default_suffix + + def get_exelist(self): + return self.exelist[:] + + def get_linker_exelist(self): + return self.exelist[:] + + def get_compile_only_flags(self): + return [] + + def get_output_flags(self, target): + return [] + + def get_linker_output_flags(self, outputname): + return [] + + def get_debug_flags(self): + return ['-g'] + + def get_coverage_flags(self): + return [] + + def get_coverage_link_flags(self): + return [] + + def get_std_exe_link_flags(self): + return [] + + def get_include_arg(self, path): + return '' + + def get_std_shared_lib_link_flags(self): + return [] + + def can_compile(self, filename): + suffix = filename.split('.')[-1] + if suffix == 'java': + return True + return False + + def get_pic_flags(self): + return [] + + def name_string(self): + return ' '.join(self.exelist) + + def get_pch_use_args(self, pch_dir, header): + return [] + + def get_pch_name(self, header_name): + return '' + + def sanity_check(self, work_dir): + src = 'SanityCheck.java' + obj = 'SanityCheck.class' + 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."); + } +} +''') + ofile.close() + pc = subprocess.Popen(self.exelist + [src], cwd=work_dir) + pc.wait() + if pc.returncode != 0: + raise EnvironmentException('Java compiler %s can not compile programs.' % self.name_string()) + cmdlist = [self.javarunner, obj] + pe = subprocess.Popen(cmdlist, cwd=work_dir) + pe.wait() + if pe.returncode != 0: + raise EnvironmentException('Executables created by Java compiler %s are not runnable.' % self.name_string()) + + def has_header(self, hname): + raise EnvironmentException('Java does not support header checks.') + + def compiles(self, code): + raise EnvironmentException('Java does not support compile checks.') + + def run(self, code): + raise EnvironmentException('Java does not support run checks.') + + def sizeof(self, element, prefix, env): + raise EnvironmentException('Java does not support sizeof checks.') + + def alignment(self, typename, env): + raise EnvironmentException('Java does not support alignment checks.') + + def has_function(self, funcname, prefix, env): + raise EnvironmentException('Java does not support function checks.') + + class VisualStudioCCompiler(CCompiler): std_warn_flags = ['/W3'] std_opt_flags= ['/O2'] |