February 16, 2009
Walter Bright wrote:

>> Must have been unlucky, or doing things "outside the dotted lines",
>> or both... Because usually it does just work with the MDT and SDK.
> 
> I don't know how my new Mac mini, with an utterly default install, could possibly be outside the dotted lines. "man gcc" lists about a thousand switches, none of which are -mmacosx-version-min=10.4

Me neither, seems to work for me.

>> I think cross-compilation is rather transparent on Mac OS X, on the
>> other platforms it usually involves a full chroot or virtual machine ?
> 
> On Windows I can still compile for DOS <g>.

Is that a bug or a feature ? :-)

--anders
February 16, 2009
I tried using DMD OSX with DSSS yesterday. For some reason it whines when using -version=Posix
  "Error: version identifier 'Posix' is reserved and cannot be set".

Is that a bug or a feature :-)?


Op Sat, 14 Feb 2009 21:11:38 +0100 schreef Walter Bright <newshound1@digitalmars.com>:

> Now includes Mac OSX version!
>
> http://www.digitalmars.com/d/1.0/changelog.html
> http://ftp.digitalmars.com/dmd.1.040.zip
>
>
> http://www.digitalmars.com/d/2.0/changelog.html
> http://ftp.digitalmars.com/dmd.2.025.zip
>
> Expect bugs. Thread local storage isn't working on OSX, neither are sockets and memory mapped files (for unknown reasons).
>
> Thanks to Sean Kelly for a lot of help on the runtime library with this.
February 16, 2009
Danny Wilson wrote:
> I tried using DMD OSX with DSSS yesterday. For some reason it whines when using -version=Posix
>   "Error: version identifier 'Posix' is reserved and cannot be set".
> 
> Is that a bug or a feature :-)?

It's a feature. Posix is predefined for OSX and linux targets.
February 16, 2009
So, does the latest dmd1 work?
February 16, 2009
Danny Wilson wrote:
> I tried using DMD OSX with DSSS yesterday. For some reason it whines when using -version=Posix
>   "Error: version identifier 'Posix' is reserved and cannot be set".
> 
> Is that a bug or a feature :-)?

LDC does the same...

For GDC, the predefined version identifier is 'Unix':
http://www.digitalmars.com/d/archives/D/gnu/1208.html

--anders
February 16, 2009
Walter Bright wrote:
> Anders F Björklund wrote:
>> Walter Bright wrote:
>>
>>>> No luck, same problem. Might want to add "requires Mac OS X 10.5"
>>>> or something for now ? Upgraded wxD CVS to support DMD on Mac too.
>>>
>>> Yeah, that looks like the best strategy for the moment. It seems odd that there is such confusion about something that should be documented and straightforward.
>>
>> Must have been unlucky, or doing things "outside the dotted lines",
>> or both... Because usually it does just work with the MDT and SDK.
> 
> I don't know how my new Mac mini, with an utterly default install, could possibly be outside the dotted lines. "man gcc" lists about a thousand switches, none of which are -mmacosx-version-min=10.4

I ran across some documentation that says this flag wasn't added to the man page because it was expected to change at some point.


Sean
February 17, 2009
On Sat, 14 Feb 2009 12:11:38 -0800, Walter Bright wrote:

> Now includes Mac OSX version!
> 
> http://www.digitalmars.com/d/1.0/changelog.html http://ftp.digitalmars.com/dmd.1.040.zip
> 
> 
> http://www.digitalmars.com/d/2.0/changelog.html http://ftp.digitalmars.com/dmd.2.025.zip
> 
> Expect bugs. Thread local storage isn't working on OSX, neither are sockets and memory mapped files (for unknown reasons).
> 
> Thanks to Sean Kelly for a lot of help on the runtime library with this.

Great to see a osx dmd! Thanks!

But! The new folder structure (./<OS>/bin/) is very unfortunate.

Installer scripts need to be rewritten and tutorials changed all over the net.

Can't we have three release files, for windows, linux and osx?
It's the way every other program I've seen in my life does it.
This way the directory structure would be preserved.
The download volume would be reduced (linux user don't have to download
the windows stuff etc.).
The users don't get confused by looking for the OS specific download.
The linux package can be a tar.gz file with executable bit set already.

*PLEASE* :)
February 22, 2009
== Quote from Walter Bright (newshound1@digitalmars.com)'s article
> Michel Fortin wrote:
> >> Is 10.5 really binary incompatible with 10.4 ?
> >
> > It is compatible, unless you're using a new API or new linker features which weren't available in 10.4.
> >
> > Development on Mac OS X works by choosing a target SDK and a deployment target version. Unless you want to use new APIs from 10.5, you should use the MacOSX10.4u.sdk SDK.
>
> It's hard to see what that might be. dmd uses nothing but the generic
> linker commands, in fact, it uses gcc to do the link. It also doesn't
> use any but the basic api functions like read() and write().

You'll be affected pretty much no matter what you use. Changes between OS versions have included:
* the libc and dynamic linker bootstrap process. Basically, crt.o changed, and you can't compile with the
new crt.o and run on an old OS.
* UNIX compliance. Some functions changed for UNIX compliance, so now libc includes _read and
_read$UNIX2003 for example. If you build with UNIX compliance on (which is the default), then you'll
magically link to the _read$UNIX2003 symbol, which doesn't exist on older OS versions.

You can get backwards compatibility, but you have to ask for it with the SDK and min-version settings.


--
Greg Parker     gparker@apple.com     Runtime Wrangler


February 22, 2009
Greg Parker wrote:
> You'll be affected pretty much no matter what you use. Changes
> between OS versions have included: * the libc and dynamic linker
> bootstrap process. Basically, crt.o changed, and you can't compile
> with the new crt.o and run on an old OS. * UNIX compliance. Some
> functions changed for UNIX compliance, so now libc includes _read and
>  _read$UNIX2003 for example. If you build with UNIX compliance on
> (which is the default), then you'll magically link to the
> _read$UNIX2003 symbol, which doesn't exist on older OS versions.
> 
> You can get backwards compatibility, but you have to ask for it with
> the SDK and min-version settings.

Thanks, I think I've got the makefile set up for that now, though I don't have an old mac to test it on.
February 23, 2009
On Sun, Feb 22, 2009 at 21:55, Walter Bright <newshound1@digitalmars.com> wrote:
> Greg Parker wrote:
>>
>> You'll be affected pretty much no matter what you use. Changes
>> between OS versions have included: * the libc and dynamic linker
>> bootstrap process. Basically, crt.o changed, and you can't compile
>> with the new crt.o and run on an old OS. * UNIX compliance. Some
>> functions changed for UNIX compliance, so now libc includes _read and
>>  _read$UNIX2003 for example. If you build with UNIX compliance on
>> (which is the default), then you'll magically link to the
>> _read$UNIX2003 symbol, which doesn't exist on older OS versions.
>>
>> You can get backwards compatibility, but you have to ask for it with the SDK and min-version settings.
>
> Thanks, I think I've got the makefile set up for that now, though I don't have an old mac to test it on.
>

If you upload some 10.4 binaries I can try it on my machine.

-- 
Anders Bergh