[Gd-hackers] Building latest Open Dylan for Mac OS X
Dustin Voss
d_j_v at mac.com
Sat Dec 8 11:33:23 CET 2007
Hey all. I have gotten Open Dylan to compile on Mac OS X. The diff
(against revision 11530) is at <http://idisk.mac.com/d_j_v-Public/Under%20Development/fundev.diff
>. Applying the diff gives you build instructions in README.txt.
I will do the check-in a few days from now.
The sticking point was the copy-bytes argument order change in the
core libraries. Originally, libraries from 1.0beta4 were being linked
in to the latest version (I'll call it beta5) to fill in for beta5
libraries that hadn't been compiled yet. Because of the argument order
change, the copy-bytes methods and their callers weren't always in
agreement about which argument meant what. This led to core dumps and
anguish.
The solution was to rewrite parts of the build system. Beta5 gets rid
of the 4 bootstrap stages and replaces it with a 2-stage process. In
the first stage (the bootstrap stage), the beta4 libraries and
compiler are used to build the minimal beta5 libraries and compiler.
In the second stage (the installation stage), the beta5 compiler and
libraries from the first stage are used to build the beta5 libraries
and compiler in the installation location. This allows the
installation to benefit from any extra optimizations introduced by new
compiler code.
To keep the beta5 libraries from linking to the beta4 libraries, I
altered admin/build/fdmake.pl to do a dependency analysis to ensure
that prerequisite beta5 libraries are always built before their
dependents are. Since Dylan doesn't allow circular dependencies, this
works out, and the beta4 libraries are never needed or linked in.
I put in some other improvements as well. Now, you only need superuser
privileges when running "make install"; you don't need them for the
bootstrap stage. I also enabled the build-aux directory to contain
various ./configure byproducts so that they don't clutter the main
directory.
There are future improvements that someone might like to do. I'd like
an installation process that adheres more closely to GNU standards,
and a packaging process. One needed improvement would be the ability
to rebuild an individual library from sources in the working
directory. I think the only way to rebuild a library in this beta5
system is to run "make clean" and rebuild everything. One solution to
this problem would use a make target like "lib%" to allow the user to
specify an arbitrary library to find and rebuild.
More information about the hackers
mailing list