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.

69 lines
2.1 KiB

6 years ago
  1. from __future__ import print_function
  2. """SCons.Tool.DCommon
  3. Common code for the various D tools.
  4. Coded by Russel Winder (russel@winder.org.uk)
  5. 2012-09-06
  6. """
  7. #
  8. # Copyright (c) 2001 - 2017 The SCons Foundation
  9. #
  10. # Permission is hereby granted, free of charge, to any person obtaining
  11. # a copy of this software and associated documentation files (the
  12. # "Software"), to deal in the Software without restriction, including
  13. # without limitation the rights to use, copy, modify, merge, publish,
  14. # distribute, sublicense, and/or sell copies of the Software, and to
  15. # permit persons to whom the Software is furnished to do so, subject to
  16. # the following conditions:
  17. #
  18. # The above copyright notice and this permission notice shall be included
  19. # in all copies or substantial portions of the Software.
  20. #
  21. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
  22. # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  23. # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  24. # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  25. # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  26. # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  27. # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  28. #
  29. __revision__ = "src/engine/SCons/Tool/DCommon.py rel_3.0.0:4395:8972f6a2f699 2017/09/18 12:59:24 bdbaddog"
  30. import os.path
  31. def isD(env, source):
  32. if not source:
  33. return 0
  34. for s in source:
  35. if s.sources:
  36. ext = os.path.splitext(str(s.sources[0]))[1]
  37. if ext == '.d':
  38. return 1
  39. return 0
  40. def addDPATHToEnv(env, executable):
  41. dPath = env.WhereIs(executable)
  42. if dPath:
  43. phobosDir = dPath[:dPath.rindex(executable)] + '/../src/phobos'
  44. if os.path.isdir(phobosDir):
  45. env.Append(DPATH=[phobosDir])
  46. def allAtOnceEmitter(target, source, env):
  47. if env['DC'] in ('ldc2', 'dmd'):
  48. env.SideEffect(str(target[0]) + '.o', target[0])
  49. env.Clean(target[0], str(target[0]) + '.o')
  50. return target, source
  51. # Local Variables:
  52. # tab-width:4
  53. # indent-tabs-mode:nil
  54. # End:
  55. # vim: set expandtab tabstop=4 shiftwidth=4: