(self, ext)
| 357 | return sources |
| 358 | |
| 359 | def build_extension(self, ext): |
| 360 | sources = ext.sources |
| 361 | if sources is None or not is_sequence(sources): |
| 362 | raise DistutilsSetupError( |
| 363 | ("in 'ext_modules' option (extension '%s'), " + |
| 364 | "'sources' must be present and must be " + |
| 365 | "a list of source filenames") % ext.name) |
| 366 | sources = list(sources) |
| 367 | |
| 368 | if not sources: |
| 369 | return |
| 370 | |
| 371 | fullname = self.get_ext_fullname(ext.name) |
| 372 | if self.inplace: |
| 373 | modpath = fullname.split('.') |
| 374 | package = '.'.join(modpath[0:-1]) |
| 375 | base = modpath[-1] |
| 376 | build_py = self.get_finalized_command('build_py') |
| 377 | package_dir = build_py.get_package_dir(package) |
| 378 | ext_filename = os.path.join(package_dir, |
| 379 | self.get_ext_filename(base)) |
| 380 | else: |
| 381 | ext_filename = os.path.join(self.build_lib, |
| 382 | self.get_ext_filename(fullname)) |
| 383 | depends = sources + ext.depends |
| 384 | |
| 385 | force_rebuild = self.force |
| 386 | if not self.disable_optimization and not self.compiler_opt.is_cached(): |
| 387 | log.debug("Detected changes on compiler optimizations") |
| 388 | force_rebuild = True |
| 389 | if not (force_rebuild or newer_group(depends, ext_filename, 'newer')): |
| 390 | log.debug("skipping '%s' extension (up-to-date)", ext.name) |
| 391 | return |
| 392 | else: |
| 393 | log.info("building '%s' extension", ext.name) |
| 394 | |
| 395 | extra_args = ext.extra_compile_args or [] |
| 396 | extra_cflags = getattr(ext, 'extra_c_compile_args', None) or [] |
| 397 | extra_cxxflags = getattr(ext, 'extra_cxx_compile_args', None) or [] |
| 398 | |
| 399 | macros = ext.define_macros[:] |
| 400 | for undef in ext.undef_macros: |
| 401 | macros.append((undef,)) |
| 402 | |
| 403 | c_sources, cxx_sources, f_sources, fmodule_sources = \ |
| 404 | filter_sources(ext.sources) |
| 405 | |
| 406 | if self.compiler.compiler_type == 'msvc': |
| 407 | if cxx_sources: |
| 408 | # Needed to compile kiva.agg._agg extension. |
| 409 | extra_args.append('/Zm1000') |
| 410 | extra_cflags += extra_cxxflags |
| 411 | # this hack works around the msvc compiler attributes |
| 412 | # problem, msvc uses its own convention :( |
| 413 | c_sources += cxx_sources |
| 414 | cxx_sources = [] |
| 415 | |
| 416 | # Set Fortran/C++ compilers for compilation and linking. |
nothing calls this directly
no test coverage detected