jack2 codebase
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.9KB

  1. #! /usr/bin/env python
  2. # encoding: utf-8
  3. # harald at klimachs.de
  4. """
  5. NEC SX Compiler for SX vector systems
  6. """
  7. import os
  8. import re
  9. from waflib import Utils
  10. from waflib.Tools import ccroot,ar
  11. from waflib.Configure import conf
  12. from waflib.Tools import xlc # method xlc_common_flags
  13. from waflib.Tools.compiler_c import c_compiler
  14. c_compiler['linux'].append('c_nec')
  15. @conf
  16. def find_sxc(conf):
  17. cc = conf.find_program(['sxcc'], var='CC')
  18. conf.get_sxc_version(cc)
  19. conf.env.CC = cc
  20. conf.env.CC_NAME = 'sxcc'
  21. @conf
  22. def get_sxc_version(conf, fc):
  23. version_re = re.compile(r"C\+\+/SX\s*Version\s*(?P<major>\d*)\.(?P<minor>\d*)", re.I).search
  24. cmd = fc + ['-V']
  25. p = Utils.subprocess.Popen(cmd, stdin=False, stdout=Utils.subprocess.PIPE, stderr=Utils.subprocess.PIPE, env=None)
  26. out, err = p.communicate()
  27. if out: match = version_re(out)
  28. else: match = version_re(err)
  29. if not match:
  30. conf.fatal('Could not determine the NEC C compiler version.')
  31. k = match.groupdict()
  32. conf.env['C_VERSION'] = (k['major'], k['minor'])
  33. @conf
  34. def sxc_common_flags(conf):
  35. v=conf.env
  36. v['CC_SRC_F']=[]
  37. v['CC_TGT_F']=['-c','-o']
  38. if not v['LINK_CC']:v['LINK_CC']=v['CC']
  39. v['CCLNK_SRC_F']=[]
  40. v['CCLNK_TGT_F']=['-o']
  41. v['CPPPATH_ST']='-I%s'
  42. v['DEFINES_ST']='-D%s'
  43. v['LIB_ST']='-l%s'
  44. v['LIBPATH_ST']='-L%s'
  45. v['STLIB_ST']='-l%s'
  46. v['STLIBPATH_ST']='-L%s'
  47. v['RPATH_ST']=''
  48. v['SONAME_ST']=[]
  49. v['SHLIB_MARKER']=[]
  50. v['STLIB_MARKER']=[]
  51. v['LINKFLAGS_cprogram']=['']
  52. v['cprogram_PATTERN']='%s'
  53. v['CFLAGS_cshlib']=['-fPIC']
  54. v['LINKFLAGS_cshlib']=['']
  55. v['cshlib_PATTERN']='lib%s.so'
  56. v['LINKFLAGS_cstlib']=[]
  57. v['cstlib_PATTERN']='lib%s.a'
  58. def configure(conf):
  59. conf.find_sxc()
  60. conf.find_program('sxar',VAR='AR')
  61. conf.sxc_common_flags()
  62. conf.cc_load_tools()
  63. conf.cc_add_flags()
  64. conf.link_add_flags()