diff options
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | mingw.bld | 121 | ||||
| -rw-r--r-- | test.stage | 12 |
3 files changed, 135 insertions, 0 deletions
| @@ -2,3 +2,5 @@ stage | |||
| 2 | .build_cache | 2 | .build_cache |
| 3 | .*.swp | 3 | .*.swp |
| 4 | *.o | 4 | *.o |
| 5 | *.win_o | ||
| 6 | libbu++ | ||
diff --git a/mingw.bld b/mingw.bld new file mode 100644 index 0000000..f224fa0 --- /dev/null +++ b/mingw.bld | |||
| @@ -0,0 +1,121 @@ | |||
| 1 | #build-m3 file for fishtrax client | ||
| 2 | |||
| 3 | action "default" | ||
| 4 | { | ||
| 5 | warning "Use the 'release' target to strip debugging and build without deps."; | ||
| 6 | DEBUG = "true"; | ||
| 7 | build: ["stage.exe"]; | ||
| 8 | } | ||
| 9 | |||
| 10 | action "release" | ||
| 11 | { | ||
| 12 | warning "Relesae will build without deps, and will strip debugging."; | ||
| 13 | DEBUG = "false"; | ||
| 14 | build: ["stage.exe"]; | ||
| 15 | } | ||
| 16 | |||
| 17 | action "clean" | ||
| 18 | { | ||
| 19 | clean: targets(); | ||
| 20 | } | ||
| 21 | |||
| 22 | CXXFLAGS += "-ggdb"; | ||
| 23 | |||
| 24 | target "stage.exe" | ||
| 25 | { | ||
| 26 | input [ | ||
| 27 | files("src/*.cpp") | ||
| 28 | // files("src/*.c") | ||
| 29 | ]; | ||
| 30 | rule "winexe"; | ||
| 31 | |||
| 32 | CXXFLAGS += "-O2 -frtti -fexceptions -Wall -Ilibbu++/support/windows -Isrc"; | ||
| 33 | |||
| 34 | LDFLAGS += "-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -lmingw32 -Llibbu++ -lbu++win -Llibbu++/support/windows -lbz2"; | ||
| 35 | |||
| 36 | CXXFLAGS += "-Ilibbu++"; | ||
| 37 | } | ||
| 38 | |||
| 39 | rule "winlib" | ||
| 40 | { | ||
| 41 | input "*.win_o"; | ||
| 42 | profile "build" | ||
| 43 | { | ||
| 44 | execute("wine C:/MinGW/bin/ar.exe cr ${OUTPUT} ${INPUT}"); | ||
| 45 | } | ||
| 46 | } | ||
| 47 | |||
| 48 | rule "winexe" | ||
| 49 | { | ||
| 50 | input "*.win_o"; | ||
| 51 | profile "build" | ||
| 52 | { | ||
| 53 | if DEBUG != "true" then | ||
| 54 | { | ||
| 55 | LDFLAGS += "-Wl,-s"; | ||
| 56 | } | ||
| 57 | execute("wine C:/MinGW/bin/mingw32-g++.exe -o ${OUTPUT} ${INPUT} ${LDFLAGS}"); | ||
| 58 | } | ||
| 59 | } | ||
| 60 | |||
| 61 | function cppToWinObj() | ||
| 62 | { | ||
| 63 | if OBJ_DIR == null then | ||
| 64 | { | ||
| 65 | DIR = INPUT.dirName(); | ||
| 66 | } | ||
| 67 | else | ||
| 68 | { | ||
| 69 | DIR = OBJ_DIR; | ||
| 70 | } | ||
| 71 | |||
| 72 | return DIR + "/" + INPUT.fileName().replace(".cpp", ".win_o"); | ||
| 73 | } | ||
| 74 | |||
| 75 | function cToWinObj() | ||
| 76 | { | ||
| 77 | if OBJ_DIR == null then | ||
| 78 | { | ||
| 79 | DIR = INPUT.dirName(); | ||
| 80 | } | ||
| 81 | else | ||
| 82 | { | ||
| 83 | DIR = OBJ_DIR; | ||
| 84 | } | ||
| 85 | |||
| 86 | return DIR + "/" + INPUT.fileName().replace(".c", ".win_o"); | ||
| 87 | } | ||
| 88 | |||
| 89 | function winDeps( CMD ) | ||
| 90 | { | ||
| 91 | if DEBUG == "true" then | ||
| 92 | { | ||
| 93 | return getMakeDeps( CMD ); | ||
| 94 | } | ||
| 95 | return []; | ||
| 96 | } | ||
| 97 | |||
| 98 | rule "wincpp" | ||
| 99 | { | ||
| 100 | input "*.cpp"; | ||
| 101 | output INPUT.cppToWinObj(); | ||
| 102 | requires winDeps("wine C:/MinGW/bin/g++.exe ${CXXFLAGS} -M ${INPUT}"); | ||
| 103 | profile "build" | ||
| 104 | { | ||
| 105 | //condition always; | ||
| 106 | execute("wine C:/MinGW/bin/mingw32-g++.exe ${CXXFLAGS} -c -o ${OUTPUT} ${INPUT}", "g++"); | ||
| 107 | } | ||
| 108 | } | ||
| 109 | |||
| 110 | rule "winc" | ||
| 111 | { | ||
| 112 | input "*.c"; | ||
| 113 | output INPUT.cToWinObj(); | ||
| 114 | requires winDeps("wine C:/MinGW/bin/g++.exe ${CXXFLAGS} -M ${INPUT}"); | ||
| 115 | profile "build" | ||
| 116 | { | ||
| 117 | //condition always; | ||
| 118 | execute("wine C:/MinGW/bin/mingw32-g++.exe ${CXXFLAGS} -c -o ${OUTPUT} ${INPUT}", "g++"); | ||
| 119 | } | ||
| 120 | } | ||
| 121 | |||
| @@ -32,16 +32,23 @@ function myGoto( txt ) | |||
| 32 | goto( txt ); | 32 | goto( txt ); |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | function getThing() | ||
| 36 | { | ||
| 37 | display( situation.thing ); | ||
| 38 | } | ||
| 39 | |||
| 35 | situation <<start>> | 40 | situation <<start>> |
| 36 | { | 41 | { |
| 37 | setup | 42 | setup |
| 38 | { | 43 | { |
| 44 | situation.thing = 55; | ||
| 39 | player.name = "Bob"; | 45 | player.name = "Bob"; |
| 40 | name = player.name + "o"; | 46 | name = player.name + "o"; |
| 41 | name += " The Man"; | 47 | name += " The Man"; |
| 42 | display("This is the setup phase for start, " + name); | 48 | display("This is the setup phase for start, " + name); |
| 43 | sillyDisplay( "Hello", name == player.name ); | 49 | sillyDisplay( "Hello", name == player.name ); |
| 44 | 50 | ||
| 51 | getThing(); | ||
| 45 | myGoto( <<stuff>> ); | 52 | myGoto( <<stuff>> ); |
| 46 | display("You shouldn't see this."); | 53 | display("You shouldn't see this."); |
| 47 | } | 54 | } |
| @@ -54,8 +61,13 @@ situation <<start>> | |||
| 54 | 61 | ||
| 55 | situation <<stuff>> | 62 | situation <<stuff>> |
| 56 | { | 63 | { |
| 64 | setup | ||
| 65 | { | ||
| 66 | situation.thing = "Just a thing"; | ||
| 67 | } | ||
| 57 | enter | 68 | enter |
| 58 | { | 69 | { |
| 70 | getThing(); | ||
| 59 | display('''Entered stuff''' + player.name); | 71 | display('''Entered stuff''' + player.name); |
| 60 | count = 0; | 72 | count = 0; |
| 61 | while count < 5 do | 73 | while count < 5 do |
