| 1 |
// SemiTwist D Tools: Library |
|---|
| 2 |
// Written in the D programming language. |
|---|
| 3 |
|
|---|
| 4 |
module semitwist.util.os; |
|---|
| 5 |
|
|---|
| 6 |
import semitwist.util.all; |
|---|
| 7 |
|
|---|
| 8 |
private string genOSParam(string name, string[] values) |
|---|
| 9 |
{ |
|---|
| 10 |
assert(values.length == OS_length, "Wrong number of OSes provided for OS param '"~name~"'"); |
|---|
| 11 |
|
|---|
| 12 |
string str = ""; |
|---|
| 13 |
foreach(int i, string value; values) |
|---|
| 14 |
{ |
|---|
| 15 |
string osStr = enumOSToString(cast(OS)i); |
|---|
| 16 |
|
|---|
| 17 |
str ~= |
|---|
| 18 |
"enum string "~name~"_"~osStr~" = "~escapeDDQS!string(value)~";\n"~ |
|---|
| 19 |
"static if(os == OS."~osStr~")\n"~ |
|---|
| 20 |
" enum string "~name~" = "~name~"_"~osStr~";\n"; |
|---|
| 21 |
} |
|---|
| 22 |
return str; |
|---|
| 23 |
} |
|---|
| 24 |
|
|---|
| 25 |
mixin(genEnum("OS", ["Windows"[], "Linux", "BSD", "OSX"])); |
|---|
| 26 |
version(Windows) enum OS os = OS.Windows; |
|---|
| 27 |
version(linux) enum OS os = OS.Linux; |
|---|
| 28 |
version(freebsd) enum OS os = OS.BSD; |
|---|
| 29 |
version(OSX) enum OS os = OS.OSX; |
|---|
| 30 |
|
|---|
| 31 |
mixin(genOSParam("objExt", [ ".obj" [], ".o", ".o", ".o" ])); |
|---|
| 32 |
mixin(genOSParam("libExt", [ ".lib" [], ".a", ".a", ".a" ])); |
|---|
| 33 |
mixin(genOSParam("exeExt", [ ".exe" [], "", "", "" ])); |
|---|
| 34 |
mixin(genOSParam("pathSep", [ "\\" [], "/", "/", "/" ])); |
|---|
| 35 |
mixin(genOSParam("nlStr", [ "\r\n" [], "\n", "\n", "\n" ])); |
|---|
| 36 |
enum nlStr_Mac9 = "\r"; |
|---|
| 37 |
|
|---|
| 38 |
mixin(genOSParam("selfExeLink", [ ""[], "/proc/self/exe", "/proc/curproc/file", "/proc/curproc/file" ])); |
|---|