Clean on Mac OS X

From Clean
Revision as of 20:35, 5 September 2010 by Sgielen (talk | contribs) (Building the RuntimeSystem)
Jump to navigationJump to search

This page is a work-in-progress for building Clean on recent Mac OS X systems. There is an official build for Clean on Mac, but it's 32-bit-PowerPC-based; a shame since the newest Macs are 64-bit-Intel-based.

A useful page for building Clean on recent Unices is the Clean2.2 on 64bit Xubuntu page, which ends in the same problems I end up with here.

I haven't started working with Clean itself yet, therefore I don't know very well all of its components; however I hope to find out what everything does and how it works together in the process.

This guide assumes basic knowledge of Terminal.app and the basics of UNIX. I am running on a MacBook Pro 2009 model running Mac OS X 10.6.4. Please report back in the Discussion above what your results are.

Downloading sources

Because a part of Clean is written in Clean, we need to take a 'bootstrap' package to build. This package contains some 'precompiled' Clean source (no machine-dependent object code, however). You can get it from the Download page (direct link).

Of course, the way of downloading and the place to download is up to you. I use wget and download to $HOME/clean.

~$ mkdir clean
~$ cd clean
~/clean$ wget http://clean.cs.ru.nl/download/Clean22/linux/Clean2.2_boot.tar.gz
[...]
2010-09-05 14:10:41 (429 KB/s) - '`Clean2.2_boot.tar.gz'' opgeslagen [5651786/5651786]

And unpack it...

~/clean$ tar -xzf Clean2.2_boot.tar.gz

Download some of my patches, which will hopefully be merged (after which this guide will be updated):

~/clean$ wget http://files.dazjorz.com/clean/clean_mac_runtimesystem.patch

Building the RuntimeSystem

Because the standard Makefile assumes we are using Linux, we will build the RuntimeSystem ourselves.

~/clean$ patch -p0 <clean_mac_runtimesystem.patch 
patching file clean/src/RuntimeSystem/Makefile.macosx
patching file clean/src/RuntimeSystem/scon.c
patching file clean/src/RuntimeSystem/ufileIO2.c
~/clean$ cd clean/src/RuntimeSystem
~/clean/clean/src/RuntimeSystem$ make -f Makefile.macosx
~/clean/clean/src/RuntimeSystem$ file _startup.o
_startup.o: Mach-O object i386
~/clean/clean/src/RuntimeSystem$ make -f Makefileprofile.macosx
~/clean/clean/src/RuntimeSystem$ file _startupProfile.o
_startupProfile.o: Mach-O object i386

Building the Code Generator

Rest of this page is TODO.