* use self.debug_print() for debug messages
* uses now copy.copy() to copy lists
* added 'shared_lib_extension=".dll"', ... , this is necessary if you
want use the compiler class outside of the standard distutils build
process.
* changed result type of check_config_h() from int to string
participates in the "--root" hack, ie. it also has a new root directory
hacked on at the very last minute (essential if the .pth file is to be
included in an RPM or other smart installer!).
- added big comment describing possible problems
- look for and react to versions of gcc, ld, and dlltool; mainly
this is done by the 'get_versions()' function and the CygwinCCompiler
and Mingw32CCompiler constructors
- move 'check_config_h()' to end of file and defer calling it until
we need to (ie. in the CygwinCCompiler constructor)
- lots of changes in 'link_shared_object()' -- mostly seems to be
library and DLL stuff, but I don't follow it entirely
it so BCPPCompiler actually works, so I'm provisionally accepting it
-- ugly and working is better than not working! Major changes:
- normalize paths (apparently BC++ doesn't like slashes)
- overhauled how we search for and specify libraries on the linker
command-line
- hacked up 'find_library_file()' so it knows about "debug" library
naming convention as well as "bcpp_xxx.lib" -- the question is,
is this a well-established and sensible convention?
Also:
- change to use 'util.write_file()' to write the .def file
- 'export_symbol_file' (and corresponding 'def_file' in the old
"build info" dict) are gone; warn if we see 'def_file' in the
dict
- the MSVC "pre-link hack" is gone -- all that stuff is now handled
elsewhere (eg. by using 'export_symbols', etc.)
- add 'get_export_symbols()' and 'get_libraries()' methods -- needed
because on Windows, both of those things are a tad more complicated
than fetching them from the Extension instance
Added 'remove_duplicates()'.
Simplified constructor: no longer take 'files' or 'allfiles' as args,
and no longer have 'dir' attribute at all.
Added 'set_allfiles()' and 'findall()' so the client does have a
way to set the list of all files.
Changed 'include_pattern()' to use the 'findall()' method instead of
the external function. (Of course, the method is just a trivial
wrapper around the function.)
the filesystem, and filtering the list by applying various patterns.
Initial revision (almost) as supplied in a patch by Rene Liebscher; I
just renamed the class from Template to FileList, and the module
accordingly.
This'll work fine with 2.0 or 1.5.2, but is less than ideal for
1.6a1/a2. But the code to accomodate 1.6a1/a2 was released with
Distutils 0.9, so it can go away now.
Changed 'prune_file_list()' so it also prunes out RCS and CVS directories.
Added 'is_regex' parameter to 'select_pattern()', 'exclude_pattern()',
and 'translate_pattern()', so that you don't have to be constrained
by the simple shell-glob-like pattern language, and can escape into
full-blown regexes when needed. Currently this is only available
in code -- it's not exposed in the manifest template mini-language.
Added 'prune' option (controlled by --prune and --no-prune) to determine
whether we call 'prune_file_list()' or not -- it's true by default.
Fixed 'negative_opt' -- it was misnamed and not being seen by dist.py.
Added --no-defaults to the option table, so it's seen by FancyGetopt.
methods (but not 'link_executable()', hmmm). Currently only used by
BCPPCompiler; it's a dummy parameter for UnixCCompiler and MSVCCompiler.
Also added 'bcpp' to compiler table used by 'new_compiler()'.
Two major points:
* lots of overlap with MSVCCompiler; the common code really should be
factored out into a base class, say WindowsCCompiler
* it doesn't work: weird problem spawning the linker (see comment for
details)
to 'msvc_prelink_hack()', adding the parameters that it actually needs,
and only calling it for MSVC compiler objects. Generally gave up on the
idea of a general "hook" mechanism: deleted the empty 'precompile_hook()'.
that a particular compiler system depends on. This consists of the
'set_executables()' and 'set_executable()' methods, and a few lines in
the constructor that expect implementation classes to provide an
'executables' attribute, which we use to initialize several instance
attributes. The default implementation is somewhat biased in favour of
a Unix/DOS "command-line" view of the world, but it shouldn't be too
hard to override this for operating systems with a more sophisticated
way of representing programs-to-execute.
meant playing along with the new "dictionary of executables" scheme
added to CCompiler by adding the 'executables' class attribute, and
changing all the compile/link/etc. methods to use the new attributes
(which encapsulate both the program to run and its standard arguments,
so it was a *little* bit more than just changing some names).
Unix shell-like syntax (eg. in Python's Makefile, for one thing -- now that
I have this function, I'll probably allow quoted strings in config files too.
the "install_data" command to the installation base, which is usually just
sys.prefix. (Any setup scripts out there that specify data files will have
to set the installation directory, relative to the base, explicitly.)
in the module of the command classes that have command-specific
help options. This lets us keep the principle of lazily importing
the ccompiler module, and also gets away from defining non-methods
at class level.