Mercurial > projects > ddmd
annotate buildHelper.d @ 184:9f4e5ac4f0a3
One step closer to building on posix.
There are two missing symbols so it actually doesn't build
but previously it didn't build correctly anyway.
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Tue, 02 Nov 2010 08:46:11 +0100 |
parents | 190ba98276b3 |
children | 1a0c1126bc46 |
rev | line source |
---|---|
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
1 // Written in The D Programming Language |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
2 /// Script to build DDMD |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
3 import std.file; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
4 import std.getopt; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
5 import std.path; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
6 import std.process; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
7 import std.stdio; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
8 import std.string: replace, format; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
9 import std.zip; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
10 |
180 | 11 enum dmdVersionDefault = "2.040"; |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
12 enum dmdArchiveBaseURL = "http://ftp.digitalmars.com/"; |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
13 enum dmd = "dmd"; |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
14 |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
15 version(Windows) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
16 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
17 enum scriptName = "build.bat"; |
172
5a9a88e919f9
BuildHelper updated to use src and lib from dmd2/, not copies
korDen
parents:
171
diff
changeset
|
18 enum osSubDir = "windows"; |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
19 enum configFile = "sc.ini"; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
20 enum execExt = ".exe"; |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
21 enum dmdLib = "dmd.lib"; |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
22 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
23 else |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
24 { |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
25 version (OSX) |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
26 enum osSubDir = "osx"; |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
27 |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
28 else version (linux) |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
29 enum osSubDir = "linux"; |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
30 |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
31 enum scriptName = "./build.sh"; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
32 enum configFile = "dmd.conf"; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
33 enum execExt = ""; |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
34 enum dmdLib = "libdmd.a"; |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
35 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
36 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
37 string dmdVersion; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
38 string dmdPackage; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
39 string dmdArchive; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
40 string dmBase=""; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
41 bool shouldDownload; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
42 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
43 void doCopy(string from, string to) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
44 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
45 from = normFilePath(from); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
46 to = normFilePath(to); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
47 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
48 writefln(`copy "%s" "%s"`, from, to); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
49 copy(from, to); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
50 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
51 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
52 void doChDir(string dir) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
53 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
54 dir = normDirPath(dir); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
55 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
56 writefln(`chdir "%s"`, dir); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
57 chdir(dir); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
58 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
59 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
60 int doSystem(string cmd) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
61 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
62 writeln(cmd); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
63 stdout.flush(); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
64 return system(cmd); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
65 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
66 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
67 void copyRecurse(string from, string to) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
68 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
69 from = normDirPath(from)[0..$-1]; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
70 to = normDirPath(to)[0..$-1]; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
71 version(Windows) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
72 doSystem(`xcopy "%s" "%s" /E /I /Y /Q`.format(from, to)); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
73 else |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
74 doSystem(`cp '%s' '%s' -r`.format(from, to)); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
75 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
76 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
77 void copyAndPatch(string from, string to, void delegate(ref string) patcher) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
78 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
79 auto data = cast(string)read(from); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
80 patcher(data); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
81 std.file.write(to, data); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
82 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
83 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
84 /// makePath("C:\foo\bar\dir") will create "C:\foo\bar\dir" if it doesn't already exist. |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
85 /// makePath("C:\foo\bar\dir\") will create "C:\foo\bar\dir" if it doesn't already exist. |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
86 void makePath(string dir) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
87 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
88 dir = normDirPath(dir)[0..$-1]; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
89 if(!exists(dir)) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
90 mkdirRecurse(dir); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
91 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
92 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
93 /// makePathTo("C:\foo\bar\file.txt") will create "C:\foo\bar\" if it doesn't already exist. |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
94 /// makePathTo("C:\foo\bar\dir\") will create "C:\foo\bar\" if it doesn't already exist. |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
95 void makePathTo(string file) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
96 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
97 file = normFilePath(file); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
98 auto dir = dirname(file); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
99 makePath(dir); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
100 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
101 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
102 /// Ensure trailing slash and OS-correct path separators |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
103 string normDirPath(string str) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
104 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
105 str = normPathSep(str); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
106 if(str.length > 0 && str[$-1] != sep[0]) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
107 str ~= sep; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
108 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
109 return str; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
110 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
111 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
112 /// Ensure no trailing slash and OS-correct path separators |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
113 string normFilePath(string str) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
114 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
115 str = normPathSep(str); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
116 if(str.length > 0 && str[$-1] == sep[0]) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
117 str = str[0..$-1]; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
118 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
119 return str; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
120 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
121 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
122 /// Ensure OS-correct path separators |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
123 string normPathSep(string str) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
124 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
125 version(Windows) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
126 str = str.replace("/", "\\"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
127 else |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
128 str = str.replace("\\", "/"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
129 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
130 return str; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
131 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
132 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
133 unittest |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
134 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
135 version(Windows) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
136 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
137 assert(normDirPath ("C:\\a/b\\c/d" ) == "C:\\a\\b\\c\\d\\"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
138 assert(normDirPath ("C:\\a/b\\c/d\\") == "C:\\a\\b\\c\\d\\"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
139 assert(normDirPath ("C:\\a/b\\c/d/" ) == "C:\\a\\b\\c\\d\\"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
140 assert(normFilePath("C:\\a/b\\c/d" ) == "C:\\a\\b\\c\\d" ); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
141 assert(normFilePath("C:\\a/b\\c/d\\") == "C:\\a\\b\\c\\d" ); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
142 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
143 else |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
144 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
145 assert(normDirPath ("\\a/b\\c/d" ) == "/a/b/c/d/"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
146 assert(normDirPath ("\\a/b\\c/d\\") == "/a/b/c/d/"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
147 assert(normDirPath ("\\a/b\\c/d/" ) == "/a/b/c/d/"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
148 assert(normFilePath("\\a/b\\c/d" ) == "/a/b/c/d" ); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
149 assert(normFilePath("\\a/b\\c/d\\") == "/a/b/c/d" ); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
150 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
151 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
152 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
153 bool initialSetup() |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
154 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
155 writeln("Running initial setup..."); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
156 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
157 // Download dmd zip |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
158 if(!exists(dmdArchive) && shouldDownload) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
159 doSystem("wget "~dmdArchiveBaseURL~dmdArchive); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
160 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
161 // Extract dmd zip |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
162 writeln("Extracting dmd archive..."); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
163 if(exists("dmd2")) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
164 rmdirRecurse("dmd2"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
165 auto zip = new ZipArchive(std.file.read(dmdArchive)); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
166 foreach(member; zip.directory) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
167 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
168 makePathTo(member.name); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
169 std.file.write(member.name, zip.expand(member)); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
170 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
171 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
172 // Make mars2.c with 'main' hidden |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
173 doChDir("dmd2/src/dmd"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
174 copyAndPatch("mars.c", "mars2.c", (ref string data) { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
175 data = data.replace("int main(int argc, char *argv[])", "int HIDE_main(int argc, char *argv[])"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
176 }); |
180 | 177 |
178 copyAndPatch("util.c", "util.c", (ref string data) { | |
179 data = data.replace("void util_assert(char *file,int line)", "void HIDE_util_assert(char *file,int line)"); | |
180 }); | |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
181 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
182 // Apply patch |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
183 doChDir("../../.."); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
184 doChDir("dmd2"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
185 doSystem("patch -p1 --binary < " ~ normFilePath("../dmdpatch.patch")); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
186 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
187 // Setup makefile for dmd.lib |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
188 doChDir(".."); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
189 doChDir("dmd2/src/dmd"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
190 version(Windows) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
191 enum makefile = "win32.mak"; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
192 else |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
193 { |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
194 version (linux) |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
195 enum makefile = "linux_lib.mak"; |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
196 |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
197 else version (OSX) |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
198 enum makefile = "osx_lib.mak"; |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
199 |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
200 doCopy("../../../"~makefile, makefile); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
201 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
202 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
203 version(Windows) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
204 copyAndPatch(makefile, makefile, (ref string data) { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
205 if(dmBase == "") |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
206 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
207 data = data.replace("\nCC=$(SCROOT)\\bin\\dmc", "\nCC=dmc"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
208 data = data.replace("\nLIB=$(SCROOT)\\bin\\lib", "\nLIB=lib"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
209 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
210 else |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
211 data = data.replace("\nD=", "\nD="~dmBase); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
212 }); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
213 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
214 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
215 // Build dmd.lib |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
216 version(Windows) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
217 doSystem("make deblib -f"~makefile); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
218 else |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
219 doSystem("make -f"~makefile); |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
220 doCopy(dmdLib, "../../../" ~ dmdLib); |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
221 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
222 // Copy and patch config file |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
223 doChDir("../../.."); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
224 copyAndPatch( |
172
5a9a88e919f9
BuildHelper updated to use src and lib from dmd2/, not copies
korDen
parents:
171
diff
changeset
|
225 normFilePath("dmd2/"~osSubDir~"/bin/"~configFile), |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
226 normFilePath("bin/"~configFile), |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
227 (ref string data) { |
172
5a9a88e919f9
BuildHelper updated to use src and lib from dmd2/, not copies
korDen
parents:
171
diff
changeset
|
228 data = data.replace(normDirPath("../.."), normDirPath("../dmd2")); |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
229 data = data.replace(normDirPath("../lib")[0 .. $ - 1], normDirPath("../dmd2/"~osSubDir~"/lib")[0 .. $ - 1]); |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
230 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
231 ); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
232 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
233 // Copy linker |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
234 version (Windows) |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
235 doCopy("dmd2/"~osSubDir~"/bin/link"~execExt, "bin/link"~execExt); |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
236 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
237 return true; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
238 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
239 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
240 int main(string[] args) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
241 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
242 endOfOptions = ""; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
243 bool help; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
244 bool shouldSetup; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
245 bool debugOnly; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
246 bool releaseOnly; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
247 dmdVersion = dmdVersionDefault; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
248 getopt( |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
249 args, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
250 std.getopt.config.caseSensitive, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
251 "setup", &shouldSetup, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
252 "debug|d", &debugOnly, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
253 "release|r", &releaseOnly, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
254 "ver", &dmdVersion, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
255 "download", &shouldDownload, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
256 "dmbase", &dmBase, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
257 "help|h|H|?", &help |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
258 ); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
259 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
260 dmdPackage = "dmd."~dmdVersion; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
261 dmdArchive = dmdPackage~".zip"; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
262 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
263 auto helpMsg = |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
264 `This script will compile DDMD |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
265 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
266 Note that this script must be run from the main DDMD directory. |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
267 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
268 Also, make sure you have GNU patch installed and current versions |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
269 of DMC and DMD (D2) on the PATH. (DMC is only needed on Windows.) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
270 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
271 Usage: |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
272 `~scriptName~` [options...] |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
273 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
274 --help,-h,-H,-? Display this help message |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
275 --debug,-d Only build debug version |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
276 --release,-r Only build release version |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
277 --ver={ver} Base DDMD off specific DMD version (default: `~dmdVersionDefault~`) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
278 --setup Run initial setup |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
279 --download If running initial setup and the dmd zip doesn't exist, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
280 use wget to download it |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
281 --dmbase={path} Path to directory containing 'dm' for building dmd.lib |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
282 (Optional if --setup is used, otherwise ignored) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
283 `; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
284 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
285 // Assume the user meant they wanted both. |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
286 if(debugOnly && releaseOnly) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
287 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
288 debugOnly = releaseOnly = false; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
289 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
290 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
291 if( |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
292 help || |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
293 ( shouldSetup && !exists(dmdArchive) && !shouldDownload ) || |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
294 ( shouldSetup && exists(dmdArchive) && !isfile(dmdArchive) ) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
295 ) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
296 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
297 write(helpMsg); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
298 return 1; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
299 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
300 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
301 if( !shouldSetup && (!exists(dmdLib) || !isfile(dmdLib)) ) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
302 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
303 auto needSetupMsg = |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
304 `'`~dmdLib~`' has not been built so you need to run the initial setup: |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
305 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
306 If you have GNU wget installed, just run: |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
307 `~scriptName~` --setup --download |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
308 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
309 If you don't have wget, download a copy of `~dmdArchive~` to this |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
310 directory. It can be obtained from: |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
311 `~dmdArchiveBaseURL~dmdArchive~` |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
312 Then run: |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
313 `~scriptName~` --setup |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
314 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
315 For a full list of options, run: |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
316 `~scriptName~` --help |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
317 `; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
318 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
319 write(needSetupMsg); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
320 return 1; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
321 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
322 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
323 if(shouldSetup) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
324 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
325 if(!initialSetup()) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
326 return 1; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
327 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
328 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
329 int ret=0; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
330 version(Windows) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
331 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
332 system("cls"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
333 if(ret == 0) ret = doSystem(r"dmc.exe bridge\bridge.cpp -c"); |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
334 if(!releaseOnly) if(ret == 0) ret = doSystem(dmd ~ r" -debug -g @commands.txt"); |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
335 if(!debugOnly) if(ret == 0) ret = doSystem(dmd ~ r" -release -O -inline @commands.txt"); |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
336 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
337 else |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
338 { |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
339 version (linux) |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
340 auto commands = "@commands.linux.txt"; |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
341 |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
342 else version (OSX) |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
343 auto commands = "@commands.osx.txt"; |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
344 |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
345 if(ret == 0) ret = doSystem("g++ -m32 -c bridge/bridge.cpp -obridge.o"); |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
346 if(!releaseOnly) if(ret == 0) ret = doSystem(dmd ~ " -debug -gc " ~ commands); |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
347 if(!debugOnly) if(ret == 0) ret = doSystem(dmd ~ " -release -O -inline " ~ commands); |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
348 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
349 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
350 return ret; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
351 } |