build.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from __future__ import division, absolute_import, print_function
  2. import os
  3. import sys
  4. from distutils.command.build import build as old_build
  5. from distutils.util import get_platform
  6. from numpy.distutils.command.config_compiler import show_fortran_compilers
  7. class build(old_build):
  8. sub_commands = [('config_cc', lambda *args: True),
  9. ('config_fc', lambda *args: True),
  10. ('build_src', old_build.has_ext_modules),
  11. ] + old_build.sub_commands
  12. user_options = old_build.user_options + [
  13. ('fcompiler=', None,
  14. "specify the Fortran compiler type"),
  15. ('parallel=', 'j',
  16. "number of parallel jobs"),
  17. ]
  18. help_options = old_build.help_options + [
  19. ('help-fcompiler', None, "list available Fortran compilers",
  20. show_fortran_compilers),
  21. ]
  22. def initialize_options(self):
  23. old_build.initialize_options(self)
  24. self.fcompiler = None
  25. self.parallel = None
  26. def finalize_options(self):
  27. if self.parallel:
  28. try:
  29. self.parallel = int(self.parallel)
  30. except ValueError:
  31. raise ValueError("--parallel/-j argument must be an integer")
  32. build_scripts = self.build_scripts
  33. old_build.finalize_options(self)
  34. plat_specifier = ".%s-%s" % (get_platform(), sys.version[0:3])
  35. if build_scripts is None:
  36. self.build_scripts = os.path.join(self.build_base,
  37. 'scripts' + plat_specifier)
  38. def run(self):
  39. old_build.run(self)