This isn't only about vax, so please read the explanations even if you
don't care about that architecture.

I've been building a handful of 4.5 release packages for vax and I
ran into many build failures.  Now there's a lot of things the vax
can't handle, but there are also a lot of *stupid* small mistakes
that cause build failures which could easily be avoided.

== C89 vs. C99 ==

vax and sparc still use gcc2.  gcc2 is a C89 compiler and can't
handle C99 constructs.  In particular, C89 only allows variable
declarations at the beginning of a block before any statements,
whereas C99 and C++ allow declarations and statements to be mixed
freely.  A project may choose to use C99 and that's okay, but
frequently misplaced declarations slip in by accident and the
upstream will happily fix things to be C89-compatible if only
somebody tells them.

== Static Linking ==

>From time to time we have architectures that don't support dynamic
linking.  At the moment vax is the only one.  Obviously things that
require dlopen() won't work, but that's not the issue.  Static linking
has some constraints that are hidden with dynamic linking:

* Inter-library dependencies
  Dynamic libraries can depend on other libraries and the linker will
  pull these in automatically.  For example, libX11 depends on
  libXau and libXdmcp.  With dynamic linking -lX11 is enough.  But
  static libraries don't register these dependencies.  You explicitly
  have to link with -lX11 -lXau -lXdmcp or you will see an error about
  unresolved symbols.
  (We used to explicitly not register inter-library dependencies
  so this would show up on all platforms, but we eventually gave
  up enforcing this.)

* Link order
  With static linking, if object files or library A depend on library
  B, then library B must come after them on the command line.  For
  example, -lcrypto -lssl will break.  It has to be -lssl -lcrypto.

Both of these problems can also appear in configure script tests,
causing erroneous library detection failures.

Maybe we can get regular package builds and error triaging going
on the affected archs, so that people can be made aware of these
problems and that the ports can be fixed.

-- 
Christian "naddy" Weisgerber                          na...@mips.inka.de

Reply via email to