[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
ooc-971016 & oo2c-1.2.13
This version of oo2c introduces support for shared libraries. If you
give configure the option "--enable-libs" all OOC standard modules
will be installed into a single shared library called `liboo2c'. oo2c
depends on GNU libtool to do its library magic. Libtool claims to
support shared libraries on a large number of systems, meaning that
oo2c with shared/static libaries should work on all decent Unix
systems. The oo2c distribution includes libtool, installing and using
oo2c should work like before on all systems.
There is only one caveat on old and broken systems (like HP-UX 9 with
its standard linker):
* Shared libraries: On some systems the linker doesn't support linking
executables against uninstalled shared libraries, like oo2c does
during its installation. Symptoms for this are warnings like
libtool: link: warning: using a buggy system linker
libtool: link: relinking will be required before `oo2c' can be installed
during make, or that after installation binaries complain about a
missing library liboo2c. A workaround for this is to install the
shared libraries first and then link the oo2c executables against them
by doing "make install-libs relink install" instead of plain "make
install". A more drastic solution is to disable shared libraries
altogether by passing "--disable-shared" to configure.
Please install oo2c with --enable-libs on your system and see if it
works. It'll speed up linking and makes executables smaller. Inter
library dependencies aren't handled yet, but the current
implementation is good enough to create libraries from the OOC
standard modules and Tim's VO modules. Unless I get too many negative
responses I intend to make 1.3.0 use libraries by default.
Note that the garbage collector is still linked statically into every
executable. Ask Tim <tim@edge.ping.de> if you want to make that one
shared, too. He might have a patch to automate the process.
When patching to 1.2.13 you need to do
chmod u+x config.sub config.guess
I had to extend the symbol file format. Please remove your old .Sym
files.
-- mva
------------------------------------------------------------------------
ChangeLog Sep 24 to Oct 15:
Tue Oct 14 14:59:18 1997 Michael van Acken <acken@informatik.uni-kl.de>
* backend/ansi-c/Build.Mod (LinkProgram, Makefile):
Move gc flags to end of link command.
Mon Oct 13 12:23:35 1997 Michael van Acken <acken@informatik.uni-kl.de>
* backend/ansi-c/lib/liboo2c.Mod: Initial revision
* backend/ansi-c/oo2c.Mod:
New command line options: --make-lib, --install-lib.
* backend/ansi-c/FileData.Mod (MarkForRemoval, RemoveFiles):
Mechanism to store a list of file names
and to remove all files in the list.
* backend/ansi-c/Config.Mod:
Added constants for symbol file version and defaults values for
libtool name and library path.
* backend/ansi-c/doc/ExternalC:
Added minimal docs for the LIBRARY directive.
* backend/ansi-c/SystemFlags.Mod:
Added code to handle library information. Use use new field
`beFlags'.
* frontend/Error.Mod (VerboseMsg):
Call `Out.Flush' after writing line to stdout.
* frontend/SymbolFile.Mod, frontend/doc/SymbolFile.ebnf:
Extended symbol file format to include version information. Save
`beFlags' for structs and objects. Changed magic number.
* frontend/Data.Mod:
`Object.flags' and `Struct.flags' were splitted into two separate
fields: `flags' and `beFlags'. The back-end can put anything into
`beFlags', both fields are saved and restored automatically by module
`SymbolFile'.
* backend/ansi-c/StdTypes.Mod:
New constants `objExportMaskBE' and `structExportMaskBE'. See module
Data for details. Fixed back-end struct and object flags accordingly.
* backend/demo/StdTypes.Mod:
New constants `objExportMaskBE' and `structExportMaskBE'. See module
Data for details.
Sat Oct 11 20:01:41 1997 Michael van Acken <acken@informatik.uni-kl.de>
* lib/Err.Mod, lib/Out.Mod, lib/In.Mod:
Renamed `Boolean' to `Bool' for consistency with TextRider.
* tools/oob.Mod: Return exit code 1 if some error occured, 0 otherwise.
* tools/oowhereis.Mod:
Return exit code 1 if file wasn't found, 0 otherwise.
Thu Oct 9 13:07:27 1997 Michael van Acken <acken@informatik.uni-kl.de>
* backend/demo/Config.Mod:
New constant `symbolFileVersion'. Used by "frontend/SymbolFile.Mod"
to implement a simple versioning mechanism for symbol files. Every
time the back-end changes the format of its symbol files this number
should be increased.
Tue Oct 7 13:46:22 1997 Michael van Acken <acken@informatik.uni-kl.de>
* backend/ansi-c/oo2c.Mod, tools/ooef.Mod, tools/oob.Mod, tools/oowhereis.Mod:
Added option --include-config <file>.
Mon Oct 6 21:04:32 1997 Michael van Acken <acken@informatik.uni-kl.de>
* backend/ansi-c/Classify.Mod (Region):
"copy" instructions of structured type don't emit any C
code.
* frontend/Opcode.Mod:
Clarification: The front-end won't leave any "copy" instructions in
the code, but a back-end may create such instructions for its own
purposes.
* backend/ansi-c/CodeGen.Mod (CollectInitialization):
When removing array initialization from the
module body make sure that no additional uses of "undefined" variables
are created. In this case create a fake copy instruction and use it
instead.
Fri Sep 26 08:45:49 1997 Michael van Acken <acken@informatik.uni-kl.de>
* backend/ansi-c/lib/__oo2c.c (_oo2c_init):
Call GC_INIT() and GC_register_displacement().