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'