[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