Mercurial > projects > ddmd
comparison dmd/Util.d @ 183:190ba98276b3
Several changes to make it build on posix systems.
I've only tried to build on Mac OS X but it should build on Linux now as well.
This should also fix ticket #9.
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Mon, 25 Oct 2010 15:36:13 +0200 |
parents | cd48cb899aee |
children | 9f4e5ac4f0a3 |
comparison
equal
deleted
inserted
replaced
181:aa70dca07cb0 | 183:190ba98276b3 |
---|---|
56 { | 56 { |
57 import dmd.Array; | 57 import dmd.Array; |
58 import dmd.Gnuc; | 58 import dmd.Gnuc; |
59 import core.sys.posix.stdlib; | 59 import core.sys.posix.stdlib; |
60 version (TARGET_FOS) import core.stdc.limits; | 60 version (TARGET_FOS) import core.stdc.limits; |
61 | |
62 enum PATH_MAX = 1024; | |
61 } | 63 } |
62 | 64 |
63 enum MAX_PATH = 256; /// | 65 enum MAX_PATH = 256; /// |
64 | 66 |
65 version (Windows) { | 67 version (Windows) { |
190 /* argv0 might be a symbolic link, | 192 /* argv0 might be a symbolic link, |
191 * so try again looking past it to the real path | 193 * so try again looking past it to the real path |
192 */ | 194 */ |
193 version (TARGET_FOS) {/// #if __APPLE__ || __FreeBSD__ || __sun&&__SVR4 | 195 version (TARGET_FOS) {/// #if __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
194 char resolved_name[PATH_MAX + 1]; | 196 char resolved_name[PATH_MAX + 1]; |
195 char* real_argv0 = realpath(toStringz(argv0), resolved_name); | 197 char* real_argv0 = realpath(toStringz(argv0), resolved_name.ptr); |
196 } else { | 198 } else { |
197 char* real_argv0 = realpath(toStringz(argv0), null); | 199 char* real_argv0 = realpath(toStringz(argv0), null); |
198 } | 200 } |
199 //printf("argv0 = %s, real_argv0 = %p\n", argv0, real_argv0); | 201 //printf("argv0 = %s, real_argv0 = %p\n", argv0, real_argv0); |
200 if (real_argv0) { | 202 if (real_argv0) { |
917 memcpy(m + elen + 1, global.map_ext.ptr, extlen); | 919 memcpy(m + elen + 1, global.map_ext.ptr, extlen); |
918 m[mlen] = 0; | 920 m[mlen] = 0; |
919 global.params.mapfile = cast(string)m[0..mlen]; | 921 global.params.mapfile = cast(string)m[0..mlen]; |
920 } | 922 } |
921 argv.push(cast(void*)"-Xlinker".ptr); | 923 argv.push(cast(void*)"-Xlinker".ptr); |
922 argv.push(global.params.mapfile.ptr); | 924 argv.push(cast(void*)global.params.mapfile.ptr); |
923 } | 925 } |
924 | 926 |
925 if (0 && global.params.exefile) | 927 if (0 && global.params.exefile) |
926 { | 928 { |
927 /* This switch enables what is known as 'smart linking' | 929 /* This switch enables what is known as 'smart linking' |