Greg Ward | 13ae1c8 | 1999-03-22 14:55:25 +0000 | [diff] [blame] | 1 | """distutils.command.build |
| 2 | |
| 3 | Implements the Distutils 'build' command.""" |
| 4 | |
| 5 | # created 1999/03/08, Greg Ward |
| 6 | |
| 7 | __rcsid__ = "$Id$" |
| 8 | |
| 9 | import os |
| 10 | from distutils.core import Command |
| 11 | |
| 12 | |
| 13 | class Build (Command): |
| 14 | |
Greg Ward | 37bc815 | 2000-01-30 18:34:15 +0000 | [diff] [blame] | 15 | description = "build everything needed to install" |
| 16 | |
Greg Ward | e6ac2fc | 1999-09-29 12:38:18 +0000 | [diff] [blame] | 17 | options = [('build-base=', 'b', |
| 18 | "base directory for build library"), |
| 19 | ('build-lib=', 'l', |
| 20 | "directory for platform-shared files"), |
| 21 | ('build-platlib=', 'p', |
| 22 | "directory for platform-specific files"), |
Greg Ward | 3246200 | 2000-02-09 02:19:49 +0000 | [diff] [blame^] | 23 | ('debug', 'g', |
| 24 | "compile extensions and libraries with debugging information"), |
Greg Ward | 13ae1c8 | 1999-03-22 14:55:25 +0000 | [diff] [blame] | 25 | ] |
| 26 | |
| 27 | def set_default_options (self): |
Greg Ward | e6ac2fc | 1999-09-29 12:38:18 +0000 | [diff] [blame] | 28 | self.build_base = 'build' |
| 29 | # these are decided only after 'build_base' has its final value |
Greg Ward | 13ae1c8 | 1999-03-22 14:55:25 +0000 | [diff] [blame] | 30 | # (unless overridden by the user or client) |
Greg Ward | e6ac2fc | 1999-09-29 12:38:18 +0000 | [diff] [blame] | 31 | self.build_lib = None |
| 32 | self.build_platlib = None |
Greg Ward | 3246200 | 2000-02-09 02:19:49 +0000 | [diff] [blame^] | 33 | self.debug = None |
Greg Ward | 13ae1c8 | 1999-03-22 14:55:25 +0000 | [diff] [blame] | 34 | |
Greg Ward | 13ae1c8 | 1999-03-22 14:55:25 +0000 | [diff] [blame] | 35 | def set_final_options (self): |
Greg Ward | e6ac2fc | 1999-09-29 12:38:18 +0000 | [diff] [blame] | 36 | # 'build_lib' and 'build_platlib' just default to 'lib' and |
| 37 | # 'platlib' under the base build directory |
| 38 | if self.build_lib is None: |
| 39 | self.build_lib = os.path.join (self.build_base, 'lib') |
| 40 | if self.build_platlib is None: |
| 41 | self.build_platlib = os.path.join (self.build_base, 'platlib') |
Greg Ward | 13ae1c8 | 1999-03-22 14:55:25 +0000 | [diff] [blame] | 42 | |
| 43 | |
| 44 | def run (self): |
| 45 | |
Greg Ward | 13ae1c8 | 1999-03-22 14:55:25 +0000 | [diff] [blame] | 46 | # For now, "build" means "build_py" then "build_ext". (Eventually |
| 47 | # it should also build documentation.) |
| 48 | |
Greg Ward | 02e1c56 | 1999-09-21 18:27:55 +0000 | [diff] [blame] | 49 | # Invoke the 'build_py' command to "build" pure Python modules |
| 50 | # (ie. copy 'em into the build tree) |
| 51 | if self.distribution.packages or self.distribution.py_modules: |
| 52 | self.run_peer ('build_py') |
Greg Ward | 13ae1c8 | 1999-03-22 14:55:25 +0000 | [diff] [blame] | 53 | |
Greg Ward | 5f7c18e | 2000-02-05 02:24:16 +0000 | [diff] [blame] | 54 | # Build any standalone C libraries next -- they're most likely to |
| 55 | # be needed by extension modules, so obviously have to be done |
| 56 | # first! |
| 57 | if self.distribution.libraries: |
| 58 | self.run_peer ('build_lib') |
| 59 | |
Greg Ward | 02e1c56 | 1999-09-21 18:27:55 +0000 | [diff] [blame] | 60 | # And now 'build_ext' -- compile extension modules and put them |
| 61 | # into the build tree |
| 62 | if self.distribution.ext_modules: |
| 63 | self.run_peer ('build_ext') |
Greg Ward | 13ae1c8 | 1999-03-22 14:55:25 +0000 | [diff] [blame] | 64 | |
| 65 | # end class Build |