[Date Prev][Date Next][Thread Prev][Thread Next][Thread Index]

[XaraXtreme-dev] Build system changes



I have broken^Wfixed up the build system.

New features:
* It will build static executables on any machines, not just the build
  server.
* The hard coded paths to libraries etc. have been removed
* Duplication of command line options to compile and link have been
  removed
* It now builds expandxar, and svgfilter as static binaries
  if you enable --enable-static-exec
* xarlib is built without the "assistance" (sic) of libtool.
  We always want it to be static right now, and libtool did a
  fine job of getting in the way. If we ever develop a masochistic
  streak and want it dynamic, then reintroducing libtool will be
  an ideal way to expend some of the masochism.

Tested:
* Static builds, Shared builds, including xarlib and SVGFilter
* Build SVGFilter separately (i.e. the normal way)
* Installing both varieties of Xara Lib
* Out-of-tree builds

Usage Notes:
* Note I have ONLY tested building svgfilter as a static exec from
  within the main build (not building it separately), though that
  should work too PROVIDED your xarlib was built static. There is
  really no good reason to do this, though, as far as I can see.
* Your debug setting for building the filter must match the debug
  setting you used to build xarlib.
* I have not tested package/port stuff. If people are compiling
  stuff using "CXXFLAGS=... ; make", it may not do what you think
  it should (it will pass CXXFLAGS to /all/ compiles, including
  XarLib, and will not remove the stuff we add for individual
  compiles). As far as I know, no-one uses this.

Notes for people tempted to futz with the makefile:
* Do NOT reintroduce the use of CXXFLAGS etc. at build time. This
  is bad because it gets passed to all invocations of g++ including
  linking. The problem here is sometimes we want to link with
  some libraries, and sometimes we don't. User XaraLX_CXXFLAGS
  etc.
* Please be careful when sticking extra things on compile and link
  lines. Do not duplicate stuff.
* Note that the linker is (for some reason) far more sensitive
  to duplications and misorderings when doing static builds
  than dynamic builds. So if you are making significant changes
  to link lines etc., please check both static and dynamic
  builds.

It would be really useful if someone could check the buildserver
is producing sensible output tomorrow. By sensible, I mean with nothing
less static linked than it was before. Building here, it looks pretty
much the same from "ldd -v".

Alex