Mercurial > projects > ddmd
annotate buildHelper.d @ 186:1a0c1126bc46
Fixed: Build script's initial setup fails if "{ddmd}/bin" doesn't already exist.
author | Abscissa |
---|---|
date | Tue, 07 Jun 2011 21:01:03 -0400 |
parents | 190ba98276b3 |
children | 80660782bffe |
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 |
186
1a0c1126bc46
Fixed: Build script's initial setup fails if "{ddmd}/bin" doesn't already exist.
Abscissa
parents:
183
diff
changeset
|
157 makePath("bin"); |
1a0c1126bc46
Fixed: Build script's initial setup fails if "{ddmd}/bin" doesn't already exist.
Abscissa
parents:
183
diff
changeset
|
158 |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
159 // Download dmd zip |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
160 if(!exists(dmdArchive) && shouldDownload) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
161 doSystem("wget "~dmdArchiveBaseURL~dmdArchive); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
162 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
163 // Extract dmd zip |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
164 writeln("Extracting dmd archive..."); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
165 if(exists("dmd2")) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
166 rmdirRecurse("dmd2"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
167 auto zip = new ZipArchive(std.file.read(dmdArchive)); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
168 foreach(member; zip.directory) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
169 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
170 makePathTo(member.name); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
171 std.file.write(member.name, zip.expand(member)); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
172 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
173 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
174 // Make mars2.c with 'main' hidden |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
175 doChDir("dmd2/src/dmd"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
176 copyAndPatch("mars.c", "mars2.c", (ref string data) { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
177 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
|
178 }); |
180 | 179 |
180 copyAndPatch("util.c", "util.c", (ref string data) { | |
181 data = data.replace("void util_assert(char *file,int line)", "void HIDE_util_assert(char *file,int line)"); | |
182 }); | |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
183 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
184 // Apply patch |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
185 doChDir("../../.."); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
186 doChDir("dmd2"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
187 doSystem("patch -p1 --binary < " ~ normFilePath("../dmdpatch.patch")); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
188 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
189 // Setup makefile for dmd.lib |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
190 doChDir(".."); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
191 doChDir("dmd2/src/dmd"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
192 version(Windows) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
193 enum makefile = "win32.mak"; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
194 else |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
195 { |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
196 version (linux) |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
197 enum makefile = "linux_lib.mak"; |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
198 |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
199 else version (OSX) |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
200 enum makefile = "osx_lib.mak"; |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
201 |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
202 doCopy("../../../"~makefile, makefile); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
203 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
204 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
205 version(Windows) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
206 copyAndPatch(makefile, makefile, (ref string data) { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
207 if(dmBase == "") |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
208 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
209 data = data.replace("\nCC=$(SCROOT)\\bin\\dmc", "\nCC=dmc"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
210 data = data.replace("\nLIB=$(SCROOT)\\bin\\lib", "\nLIB=lib"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
211 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
212 else |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
213 data = data.replace("\nD=", "\nD="~dmBase); |
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 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
216 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
217 // Build dmd.lib |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
218 version(Windows) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
219 doSystem("make deblib -f"~makefile); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
220 else |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
221 doSystem("make -f"~makefile); |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
222 doCopy(dmdLib, "../../../" ~ dmdLib); |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
223 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
224 // Copy and patch config file |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
225 doChDir("../../.."); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
226 copyAndPatch( |
172
5a9a88e919f9
BuildHelper updated to use src and lib from dmd2/, not copies
korDen
parents:
171
diff
changeset
|
227 normFilePath("dmd2/"~osSubDir~"/bin/"~configFile), |
171
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
228 normFilePath("bin/"~configFile), |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
229 (ref string data) { |
172
5a9a88e919f9
BuildHelper updated to use src and lib from dmd2/, not copies
korDen
parents:
171
diff
changeset
|
230 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
|
231 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
|
232 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
233 ); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
234 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
235 // Copy linker |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
236 version (Windows) |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
237 doCopy("dmd2/"~osSubDir~"/bin/link"~execExt, "bin/link"~execExt); |
171
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 return true; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
240 } |
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 int main(string[] args) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
243 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
244 endOfOptions = ""; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
245 bool help; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
246 bool shouldSetup; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
247 bool debugOnly; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
248 bool releaseOnly; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
249 dmdVersion = dmdVersionDefault; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
250 getopt( |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
251 args, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
252 std.getopt.config.caseSensitive, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
253 "setup", &shouldSetup, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
254 "debug|d", &debugOnly, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
255 "release|r", &releaseOnly, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
256 "ver", &dmdVersion, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
257 "download", &shouldDownload, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
258 "dmbase", &dmBase, |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
259 "help|h|H|?", &help |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
260 ); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
261 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
262 dmdPackage = "dmd."~dmdVersion; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
263 dmdArchive = dmdPackage~".zip"; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
264 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
265 auto helpMsg = |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
266 `This script will compile DDMD |
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 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
|
269 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
270 Also, make sure you have GNU patch installed and current versions |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
271 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
|
272 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
273 Usage: |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
274 `~scriptName~` [options...] |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
275 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
276 --help,-h,-H,-? Display this help message |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
277 --debug,-d Only build debug version |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
278 --release,-r Only build release version |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
279 --ver={ver} Base DDMD off specific DMD version (default: `~dmdVersionDefault~`) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
280 --setup Run initial setup |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
281 --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
|
282 use wget to download it |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
283 --dmbase={path} Path to directory containing 'dm' for building dmd.lib |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
284 (Optional if --setup is used, otherwise ignored) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
285 `; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
286 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
287 // Assume the user meant they wanted both. |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
288 if(debugOnly && releaseOnly) |
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 debugOnly = releaseOnly = false; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
291 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
292 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
293 if( |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
294 help || |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
295 ( shouldSetup && !exists(dmdArchive) && !shouldDownload ) || |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
296 ( shouldSetup && exists(dmdArchive) && !isfile(dmdArchive) ) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
297 ) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
298 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
299 write(helpMsg); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
300 return 1; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
301 } |
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 if( !shouldSetup && (!exists(dmdLib) || !isfile(dmdLib)) ) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
304 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
305 auto needSetupMsg = |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
306 `'`~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
|
307 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
308 If you have GNU wget installed, just run: |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
309 `~scriptName~` --setup --download |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
310 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
311 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
|
312 directory. It can be obtained from: |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
313 `~dmdArchiveBaseURL~dmdArchive~` |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
314 Then run: |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
315 `~scriptName~` --setup |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
316 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
317 For a full list of options, run: |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
318 `~scriptName~` --help |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
319 `; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
320 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
321 write(needSetupMsg); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
322 return 1; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
323 } |
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(shouldSetup) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
326 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
327 if(!initialSetup()) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
328 return 1; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
329 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
330 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
331 int ret=0; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
332 version(Windows) |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
333 { |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
334 system("cls"); |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
335 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
|
336 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
|
337 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
|
338 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
339 else |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
340 { |
183
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
341 version (linux) |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
342 auto commands = "@commands.linux.txt"; |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
343 |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
344 else version (OSX) |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
345 auto commands = "@commands.osx.txt"; |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
346 |
190ba98276b3
Several changes to make it build on posix systems.
Jacob Carlborg <doob@me.com>
parents:
180
diff
changeset
|
347 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
|
348 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
|
349 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
|
350 } |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
351 |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
352 return ret; |
b080e62b16b4
Enhanced buildscript to simplify compiling for new users
Abscissa
parents:
diff
changeset
|
353 } |