mirror of https://github.com/arendst/Tasmota.git
39 lines
1.8 KiB
Python
39 lines
1.8 KiB
Python
import sys
|
|
from distutils import unixccompiler
|
|
from distutils import ccompiler
|
|
|
|
|
|
def register():
|
|
sys.modules['distutils.crossunixccompiler'] = sys.modules[__name__]
|
|
ccompiler.compiler_class['crossunix'] = (__name__,
|
|
'CrossUnixCCompiler',
|
|
'UNIX-style compiler for cross compilation')
|
|
|
|
|
|
def try_remove_all(lst, starts):
|
|
lst[:] = [x for x in lst if not x.startswith(starts)]
|
|
|
|
|
|
class CrossUnixCCompiler(unixccompiler.UnixCCompiler):
|
|
def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
|
|
try_remove_all(self.compiler_so, ('-m64', '-fstack-protector-strong', '-mtune=generic'))
|
|
try_remove_all(cc_args, '-I/usr')
|
|
try_remove_all(pp_opts, '-I/usr')
|
|
return unixccompiler.UnixCCompiler._compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts)
|
|
|
|
def link(self, target_desc, objects,
|
|
output_filename, output_dir=None, libraries=None,
|
|
library_dirs=None, runtime_library_dirs=None,
|
|
export_symbols=None, debug=0, extra_preargs=None,
|
|
extra_postargs=None, build_temp=None, target_lang=None):
|
|
try_remove_all(self.library_dirs, ('/usr'))
|
|
return unixccompiler.UnixCCompiler.link(self, target_desc, objects, output_filename, output_dir, libraries,
|
|
library_dirs, runtime_library_dirs, export_symbols, debug,
|
|
extra_preargs, extra_postargs, build_temp, target_lang)
|
|
|
|
def _fix_lib_args(self, libraries, library_dirs, runtime_library_dirs):
|
|
self.__class__ = unixccompiler.UnixCCompiler
|
|
ret = unixccompiler.UnixCCompiler._fix_lib_args(self, libraries, library_dirs, runtime_library_dirs)
|
|
self.__class__ = CrossUnixCCompiler
|
|
return ret
|