[m-rev.] for review: port Mercury to MacOS X 10.6

Ian MacLarty maclarty at csse.unimelb.edu.au
Thu Oct 8 15:15:36 AEDT 2009


On Wed, Oct 7, 2009 at 8:48 PM, Julien Fischer
<juliensf at csse.unimelb.edu.au> wrote:
>
> On Wed, 7 Oct 2009, Ian MacLarty wrote:
>
>> For review by Julien and Zoltan.
>>
>> Get Mercury compiling on Mac OS X 10.6 (Darwin 10).
>>
>> Mmake.common.in:
>>   Add ENABLE_BOEHM_XOPEN_SOURCE.
>>
>> README.MacOS:
>>   Document that Mercury works on Mac OS X 10.5 and 10.6.
>>   Also document that it hasn't been tested on 10.3 for
>>   some time.
>>
>> configure.in:
>>   Pass -m32 to gcc on Darwin 10, because our current version of boehm
>> doesn't
>>   work on 64 bit Darwin.
>>
>>   Define _XOPEN_SOURCE on Darwin 10 when compiling boehm to
>>   avoid errors about the functions in ucontext.h being deprecated.
>>
>>   Don't pass -s to the linker on any intel Darwin system.
>>
>> boehm_gc/Makefile:
>>   Include BOEHM_CFLAGS (generated by the Mercury configure script)
>>   in SPECIALCFLAGS which is used when compiling mach_dep.c so that
>>   _XOPEN_SOURCE is defined in mach_dep.c.
>>
>> trace/mercury_event_scanner.l:
>>   Use yy_size_t instead of int for the return type of
>>   mercury_event_get_leng to avoid errors about conflicting types
>>   between the prototype and its implementation (flex generates a
>>   function that returns yy_size_t).
>>
>
> ...
>
>> Index: README.MacOS
>> ===================================================================
>> RCS file: /home/mercury1/repository/mercury/README.MacOS,v
>> retrieving revision 1.11
>> diff -u -b -r1.11 README.MacOS
>> --- README.MacOS        11 Jan 2007 02:18:29 -0000      1.11
>> +++ README.MacOS        7 Oct 2009 20:44:28 -0000
>> @@ -1,13 +1,15 @@
>> -This file documents the port of Mercury to PowerPC Macs running Mac OS X,
>> -i.e. the "powerpc-apple-darwin" configuration.
>> +This file documents the port of Mercury to Mac OS X,
>> +i.e. the "*-apple-darwin" configuration.
>>
>> -----------------------------
>> Supported version of Mac OS X
>> -----------------------------
>>
>> -Mercury has been heavily tested on Mac OS X 10.3 and should build
>> -"out-of-the-box".  Mercury also works with Mac OS X 10.4 subject to the
>> caveat
>> -below regarding which version of gcc to use.
>
> Technically, the above is still true for the current stable release.
>

This diff is for the main branch, not the stable release branch.  You
get a different README with the stable release.

>> +Mercury has been tested on the Intel versions of Mac OS X 10.5 and 10.6
>> +and should build "out-of-the-box" using Apple's gcc 4.2.
>> +
>> +Mercury may also work on Mac OS X 10.3 and 10.4 (Intel or PPC), but it
>> hasn't
>> +been tested on these platforms for some time.
>
> Intel for 10.3?  Not officially.
>

The bit in parenthesis applies only to 10.4.

>> There may be problems with building Mercury on versions of Mac OS X less
>> than
>> 10.3.0.  In particular there may be problems with building and using
>> shared
>> @@ -33,6 +35,9 @@
>> Apple gcc 4.0 does not work with Mercury.  Users of Mac OS X 10.4 should
>> note that this version of gcc is the default one on their systems.
>>
>> +Apple gcc 4.2 works on Mac OS X 10.5 and 10.6 (although the asm_fast
>> +and reg grades are not available).
>> +
>> If you are using an Apple build of gcc then you must use the gcc_select
>> command to set the system's default gcc to that version of gcc.  It is not
>> sufficient to just point Mercury to a version of gcc using the configure
>> Index: configure.in
>> ===================================================================
>> RCS file: /home/mercury1/repository/mercury/configure.in,v
>> retrieving revision 1.547
>> diff -u -b -r1.547 configure.in
>> --- configure.in        1 Oct 2009 07:05:37 -0000       1.547
>> +++ configure.in        7 Oct 2009 20:44:30 -0000
>> @@ -720,6 +720,17 @@
>>
>> #-----------------------------------------------------------------------------#
>> AC_PROG_CC
>> MERCURY_CHECK_CC_NEEDS_TRAD_CPP
>> +
>> +# Mercury doesn't currently work on 64 bit Darwin, so we need to pass
>> +# -m32 to gcc.
>
> You should explain why it needs to be *darwin*10*.  Actually, I think it
> should be harmless to pass -m32 on 10.5 as well.   I will try it after
> you commit and adjust this for 10.5 as well.
>

I just did it for darwin 10, because -m64 is the default on that
version.  I will add -m32 for both.

>> +case "$host" in
>> +    *apple*darwin*10*)
>> +        if test "$GCC" = "yes"; then
>> +            CC="$CC -m32"
>> +        fi
>> +        ;;
>> +esac
>> +
>> AC_SUBST(CC)
>>
>> # AC_PROG_CC sets GCC to yes if $CC is GNU C.
>> @@ -741,6 +752,19 @@
>> # test for memalign() doesn't use `-g', since `ml' doesn't use `-g'.
>> CFLAGS="-O"
>>
>> +# We need to define _XOPEN_SOURCE when building boehm on Darwin 10
>> +# so that we don't get errors about the functions in ucontext.h being
>> +# deprecated.
>> +case "$host" in
>> +    *apple*darwin*10*)
>> +        ENABLE_BOEHM_XOPEN_SOURCE="-D_XOPEN_SOURCE"
>> +        ;;
>> +    *)
>> +        ENABLE_BOEHM_XOPEN_SOURCE=
>> +        ;;
>> +esac
>> +AC_SUBST(ENABLE_BOEHM_XOPEN_SOURCE)
>> +
>> # We also need to add the appropriate `-I' options so that the test
>> programs
>> # can #include various Mercury runtime headers.
>> case "$MERCURY_CONF_RECONFIGURE" in
>> @@ -924,11 +948,11 @@
>>
>>    LD_STRIP_FLAG="-s"
>>
>> -    # Suppress a warning from the linker on Darwin 9.  `-s' is deprecated
>> on it
>> -    # and has no effect other than causing the linker to emit a warning.
>> +    # Suppress a warning from the linker on Darwin 9+.  `-s' is
>> deprecated on
>> +    # it and has no effect other than causing the linker to emit a
>> warning.
>>    #
>>    case "$host" in
>> -        *apple*darwin*9*)
>> +        i686*apple*darwin*)
>>            LD_STRIP_FLAG=""
>
> Why is this change here?  Won't it break the Mac OS X PPC port? i.e.
> don't you want to match against *apple*darwin*9*?  (Is the warning
> present with Darwin 10?)
>

Yes the warning is present in Darwin 10.  I wanted to turn it off for
all future versions of Intel Darwin too. As far as I know Mac OS X
10.6 is Intel only.  I think 10.5 is Intel only also.

Ian.

--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to:       mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions:          mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the reviews mailing list