View mode: basic / threaded / horizontal-split · Log in · Help
February 16, 2009
Re: Just one more thing...
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
Re: Just one more thing...
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
Re: Just one more thing...
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
Re: Just one more thing...
So, does the latest dmd1 work?
February 16, 2009
Re: Just one more thing...
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
Re: Just one more thing...
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
Re: Just one more thing...
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
Re: Just one more thing...
== 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
Re: Just one more thing...
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
Re: Just one more thing...
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
1 2 3 4 5 6 7 8 9
Top | Discussion index | About this forum | D home