Upgrading gargoyle to use recent TADS sources.

I’ve been hacking this weekend on the sources of the garglk repo. Now, I can run in this(!) linux machine recent games that used to fail in gargoyle. It’s using 2.5.16/3.1.2.

> version Return to Ditch Day Release 2 (20130425) TADS 3 Library version 3.1.2 T3 VM (mjr-T3) version 3.1.2

Upgrading to 3.1.1 was hard. And not enough to run recent games.

Gargoyle has patched TADS sources, so I had to extract and rebase those patches correctly. I think that a port of TADS (as gargoyle) is doable without patching, at least in theory.

Then --very hackish-- I converted some frobtads’ C++ functions to C, to complete part of the portability API the VM expects. I think this is not OK for gargoyle because the target OSs are not the same (correct me if I’m wrong), but worked as a proof-of-concept build.

Are frobtads’ sources license-compatible with gargoyle? It’s not clear to me, and I’m not publising any changes because of this.

Upgrading to 3.1.2 was easier, just rebase the new patch and resolve a minor conflict I introduced while patching a bug in 3.1.1 that was solved some other way in 3.1.2.

Anyway, I’m far from being capable of writing multiplatform C/C++ (to complete support for other platforms gargoyle targets, and finish some functions that I left as stubs) and I’m pretty sure some headers/functions are not in the best place.

So this needs code if using frobtads code is not enough (or even possible), and some big review from an expert. Also, it would be great to avoid patching the TADS sources for future upgrades.

Anyone?

Comments? Questions?

I’ve already tried to upgrade Gargoyle sources to the latest TADS version, comparing the source code and seeking differences – but to no avail.

At first, I wrote an email to the author, asking him to explain what exact changes were made. But he didn’t respond.

It’s quite beyond me to help; but can I just say that this would be a very valuable thing to do. It’s a great pity that Gargoyle is incapable of dealing with current images. (Perhaps there’s a more general issue about Gargoyle slipping behind; but work on terps is really a labour of love, I think, with precious little reward.)

Images, hyperlinks (as per Joey’s recent tackling of Ecdysis) and, unless I’m mistaken, sound.

While documenting the license incompatibility between Gargoyle and FrobTADS (which is using just the freeware TADS license; RealNC, it would be great to dual-license it like the other ports, if possible), I looked at Qtads. It’s more aligned with Gargoyle so I’ll try to adapt the functions from there.

I need to license my own frobtads sources differently at some point. But for now, you can just pretty much take and modify anything you want from sources that are either written by me, or have been contributed to me. That is everything inside the “src” directory. Whatever you take, you can relicense it under the GPL (that is Gargoyle’s main license.)

The sources inside the “tads2” and “tads3” directories are Mike Roberts’ code. You would need permission if you want to take something from there. He gave me permission to distribute them under the GPL for qtads, so you can take pretty much anything you want from the “tads2” and “tads3” directories of qtads.

This was an issue because new versions of Tads 3 moved a lot of the compiler into the interpreter, so that games can compile and run code at runtime (very nifty feature, btw). The runtime sources have been GPLed in the past through gargoyle and qtads. The compiler sources have not. Mike gave permission to GPL the part of the compiler that is now used at runtime, which is why it’s safe to take anything you need from qtads, as the whole of it is GPL.

But if there’s any confusion about anything and you’re not sure what you can take or not, either from frobtads or the official source packages, just send an email to Mike.

Great, thank you very much! This is exactly what I need. Most of the code I’m using is adapted from src/osportable.cc of FrobTADS.

Oh, that’s enlightening and makes sense in the broad context. These days I was looking at FrobTADS just as frob-the-terp and forgot about the compilers. A bit embarrasing given its t3make is the compiler I use (thanks!) for my TADS projects.

I’ll prepare the first patchset/branch for public review (not ready for merge and I guess broken for some platforms). I’m thinking going up just to 3.1.1 for now, because I think it’s the more problematic upgrade.

Then 2.5.16/3.1.2. Finally, let’s hope (I didn’t try yet) we can reach 2.5.17/3.1.3.

This is an awesome endeavour. I’m just bumping to show interest. :slight_smile:

1 Like

I work on it a bit on weekends, so not fast paced until first alpha release. Then, feedback/code from interested developers may help to complete the task in shorter time.

Stay tuned.

You bet I’m staying tuned!

As you might have guessed, I lost momentum about this. Sorry.

Good news is that someone (Chris Spiegel) that I think knows a lot more than me did something (see around Multiple options for advanced UI features? - #9 by RealNC)

github.com/garglk/garglk/issues/203

I’ve got a more up-to-date branch here: github.com/cspiegel/garglk/tree … ds-upgrade

I consider this to be a private branch insofar as I may do some history rewriting, but anyone is of course free to look at it with that caveat in mind.

I’ve been held back a bit by the fact that I’m not really familiar with Windows or Mac builds; but working in parallel on a cmake branch has gotten me some experience with MinGW cross-builds. At the same time, I’ve got a volunteer to help with Mac testing, and a coworker has lent me his Macbook, so when I learn how to use that, I can start doing some testing myself.

I’ll try to get the branch whipped into shape soon, but in any case, I can state with almost complete certainty that it will be available in the next Gargoyle release, whenever that happens, because I consider an updated TADS interpreter to be essential to such a release.

Great, thank you so much for working on this! Will be great to be able to take the “use QTADS” warning off my games’ IFDB pages at last.

cas,
Your latest branch still doesn’t compile on Windows. I’m using the GCC v5.1.0 (from TDM32 MinGW Bundle) Here’s the full build log:

[spoiler]Microsoft Windows [Version 6.1.7601]
Copyright © 2009 Microsoft Corporation. All rights reserved.

C:>cd tdm-gcc-32

C:\TDM-GCC-32>mingwvars.bat

Setting up environment for using MinGW with GCC from C:\TDM-GCC-32.

C:\TDM-GCC-32>set JAM_TOOLSET=MINGW

C:\TDM-GCC-32>cd\

C:>cd garglk-203-tads-upgrade

C:\garglk-203-tads-upgrade>gargoyle_build.cmd
Building Gargoyle for Windows …
Compiler is GCC with Mingw

BUILD is RELEASE
…patience…
…found 1657 target(s)…
…updating 512 target(s)…
MkDir1 build
MkDir1 build\mingw.release
MkDir1 build\mingw.release\garglk
MkDir1 build\mingw.release\tads
MkDir1 build\mingw.release\babel
MkDir1 build\mingw.release\SDL_sound
MkDir1 build\mingw.release\advsys
MkDir1 build\mingw.release\agility
MkDir1 build\mingw.release\alan2
MkDir1 build\mingw.release\alan3
Cc build\mingw.release\garglk\main.o
Cc build\mingw.release\tads\argize.o
Cc build\mingw.release\babel\babel_handler.o
Cc build\mingw.release\SDL_sound\ogg.o
Cc build\mingw.release\advsys\advmsg.o
Cc build\mingw.release\agility\agtread.o
Cc build\mingw.release\alan2\arun.o
Cc build\mingw.release\alan3\alan.version.o
Archive build\mingw.release\garglk\libgarglkmain.a
Cc build\mingw.release\alan3\act.o
ar: creating build\mingw.release\garglk\libgarglkmain.a
Cc build\mingw.release\alan3\actor.o
Cc build\mingw.release\alan3\args.o
Cc build\mingw.release\alan3\arun.o
Cc build\mingw.release\alan3\attribute.o
Cc build\mingw.release\alan3\checkentry.o
Cc build\mingw.release\alan3\class.o
Cc build\mingw.release\alan3\current.o
Cc build\mingw.release\alan3\debug.o
Cc build\mingw.release\alan3\decode.o
Cc build\mingw.release\alan3\dictionary.o
Cc build\mingw.release\alan3\event.o
Cc build\mingw.release\alan3\exe.o
Cc build\mingw.release\alan3\glkio.o
Cc build\mingw.release\alan3\glkstart.o
Cc build\mingw.release\alan3\instance.o
Cc build\mingw.release\alan3\inter.o
Cc build\mingw.release\alan3\lists.o
Cc build\mingw.release\alan3\literal.o
Cc build\mingw.release\alan3\main.o
Cc build\mingw.release\alan3\memory.o
Cc build\mingw.release\alan3\msg.o
Cc build\mingw.release\alan3\options.o
Cc build\mingw.release\alan3\output.o
Cc build\mingw.release\alan3\params.o
Cc build\mingw.release\alan3\parse.o
Cc build\mingw.release\alan3\readline.o
Cc build\mingw.release\alan3\reverse.o
Cc build\mingw.release\alan3\rules.o
Cc build\mingw.release\alan3\save.o
Cc build\mingw.release\alan3\scan.o
Cc build\mingw.release\alan3\score.o
Cc build\mingw.release\alan3\set.o
Cc build\mingw.release\alan3\stack.o
Cc build\mingw.release\alan3\state.o
Cc build\mingw.release\alan3\syntax.o
Cc build\mingw.release\alan3\sysdep.o
Cc build\mingw.release\alan3\syserr.o
Cc build\mingw.release\alan3\term.o
Cc build\mingw.release\alan3\utils.o
Cc build\mingw.release\alan3\word.o
Cc build\mingw.release\alan3\compatibility.o
Cc build\mingw.release\alan3\AltInfo.o
Cc build\mingw.release\alan3\Container.o
Cc build\mingw.release\alan3\Location.o
Cc build\mingw.release\alan3\ParameterPosition.o
Cc build\mingw.release\alan3\StateStack.o
Cc build\mingw.release\alan2\main.o
Cc build\mingw.release\alan2\debug.o
Cc build\mingw.release\alan2\args.o
Cc build\mingw.release\alan2\exe.o
Cc build\mingw.release\alan2\inter.o
Cc build\mingw.release\alan2\parse.o
Cc build\mingw.release\alan2\rules.o
Cc build\mingw.release\alan2\stack.o
Cc build\mingw.release\alan2\decode.o
Cc build\mingw.release\alan2\term.o
Cc build\mingw.release\alan2\reverse.o
Cc build\mingw.release\alan2\readline.o
Cc build\mingw.release\alan2\params.o
Cc build\mingw.release\alan2\sysdep.o
Cc build\mingw.release\alan2\glkstart.o
Cc build\mingw.release\alan2\glkio.o
Cc build\mingw.release\alan2\alan.version.o
Cc build\mingw.release\agility\gamedata.o
Cc build\mingw.release\agility\util.o
Cc build\mingw.release\agility\agxfile.o
Cc build\mingw.release\agility\auxfile.o
Cc build\mingw.release\agility\filename.o
Cc build\mingw.release\agility\parser.o
Cc build\mingw.release\agility\exec.o
Cc build\mingw.release\agility\runverb.o
Cc build\mingw.release\agility\metacommand.o
Cc build\mingw.release\agility\savegame.o
Cc build\mingw.release\agility\debugcmd.o
Cc build\mingw.release\agility\agil.o
Cc build\mingw.release\agility\token.o
Cc build\mingw.release\agility\disassemble.o
Cc build\mingw.release\agility\object.o
Cc build\mingw.release\agility\interface.o
…on 100th target…
Cc build\mingw.release\agility\os_glk.o
Cc build\mingw.release\advsys\advtrm.o
Cc build\mingw.release\advsys\advprs.o
Cc build\mingw.release\advsys\advdbs.o
Cc build\mingw.release\advsys\advint.o
Cc build\mingw.release\advsys\advjunk.o
Cc build\mingw.release\advsys\advexe.o
Cc build\mingw.release\advsys\glkstart.o
Cc build\mingw.release\SDL_sound\smpeg.o
Cc build\mingw.release\SDL_sound\audio_convert.o
Cc build\mingw.release\SDL_sound\alt_audio_convert.o
Cc build\mingw.release\SDL_sound\extra_rwops.o
Cc build\mingw.release\SDL_sound\SDL_sound.o
Cc build\mingw.release\babel\ifiction.o
Cc build\mingw.release\babel\md5.o
Cc build\mingw.release\babel\misc.o
Cc build\mingw.release\babel\register.o
Cc build\mingw.release\babel\register_ifiction.o
Cc build\mingw.release\babel\adrift.o
Cc build\mingw.release\babel\advsys.o
Cc build\mingw.release\babel\agt.o
Cc build\mingw.release\babel\alan.o
SharedLink build\mingw.release\SDL_sound\SDL_sound.dll
Cc build\mingw.release\babel\blorb.o
Cc build\mingw.release\babel\executable.o
Cc build\mingw.release\babel\glulx.o
Cc build\mingw.release\babel\hugo.o
Cc build\mingw.release\babel\level9.o
Cc build\mingw.release\babel\magscrolls.o
Cc build\mingw.release\babel\tads.o
Cc build\mingw.release\babel\tads2.o
Cc build\mingw.release\babel\tads3.o
Cc build\mingw.release\babel\zcode.o
Cc build\mingw.release\tads\bif.o
Cc build\mingw.release\tads\bifgdum.o
Cc build\mingw.release\tads\cmap.o
Cc build\mingw.release\tads\cmd.o
Cc build\mingw.release\tads\dat.o
Cc build\mingw.release\tads\dbgtr.o
Cc build\mingw.release\tads\errmsg.o
Cc build\mingw.release\tads\execmd.o
Cc build\mingw.release\tads\fio.o
Cc build\mingw.release\tads\fioxor.o
Cc build\mingw.release\tads\getstr.o
Cc build\mingw.release\tads\ler.o
Cc build\mingw.release\tads\linfdum.o
Cc build\mingw.release\tads\lst.o
Cc build\mingw.release\tads\mch.o
Cc build\mingw.release\tads\mcm.o
Cc build\mingw.release\tads\mcs.o
Cc build\mingw.release\tads\obj.o
Cc build\mingw.release\tads\oem.o
Archive build\mingw.release\babel\babel_static.a
Cc build\mingw.release\tads\os0.o
Cc build\mingw.release\tads\oserr.o
ar: creating build\mingw.release\babel\babel_static.a
Cc build\mingw.release\tads\osifc.o
Cc build\mingw.release\tads\osnoui.o
Cc build\mingw.release\tads\osrestad.o
Cc build\mingw.release\tads\osstzprs.o
Cc build\mingw.release\tads\ostzposix.o
Cc build\mingw.release\tads\out.o
Cc build\mingw.release\tads\output.o
Cc build\mingw.release\tads\ply.o
tads\tads2\ostzposix.c: In function ‘os_get_timezone_info’:
tads\tads2\ostzposix.c:298:31: error: ‘const struct tm’ has no member named ‘tm_gmtoff’
info->dst_ofs = tm->tm_gmtoff;
^
tads\tads2\ostzposix.c:299:67: error: ‘const struct tm’ has no member named ‘tm_zone’
safe_strcpy(info->dst_abbr, sizeof(info->dst_abbr), tm->tm_zone);
^
tads\tads2\ostzposix.c:303:31: error: ‘const struct tm’ has no member named ‘tm_gmtoff’
info->std_ofs = tm->tm_gmtoff;
^
tads\tads2\ostzposix.c:304:67: error: ‘const struct tm’ has no member named ‘tm_zone’
safe_strcpy(info->std_abbr, sizeof(info->std_abbr), tm->tm_zone);
^

gcc -c -o build\mingw.release\tads\ostzposix.o -DGARGOYLE -DVMGLOB_STRUCT -DGLK_UNICODE -DGLK_TIMERS -DTC_TARGET_T3 -DRUNTIME -O2 -Itads\tads2 -Itads\tads3 -Itads -Itads -Itads\tads2 -Itad
arglk tads\tads2\ostzposix.c

…failed Cc build\mingw.release\tads\ostzposix.o …
Cc build\mingw.release\tads\qas.o
Cc build\mingw.release\tads\regex.o
Cc build\mingw.release\tads\run.o
Cc build\mingw.release\tads\runstat.o
Cc build\mingw.release\tads\suprun.o
Cc build\mingw.release\tads\trd.o
Cc build\mingw.release\tads\voc.o
Cc build\mingw.release\tads\vocab.o
C++ build\mingw.release\tads\charmap.o
C++ build\mingw.release\tads\md5.o
C++ build\mingw.release\tads\resldexe.o
C++ build\mingw.release\tads\resload.o
C++ build\mingw.release\tads\sha2.o
C++ build\mingw.release\tads\std.o
C++ build\mingw.release\tads\tcerr.o
C++ build\mingw.release\tads\tcerrmsg.o
C++ build\mingw.release\tads\tcgen.o
C++ build\mingw.release\tads\tcglob.o
C++ build\mingw.release\tads\tcmain.o
C++ build\mingw.release\tads\tcprs.o
C++ build\mingw.release\tads\tcprs_rt.o
C++ build\mingw.release\tads\tcprsnf.o
C++ build\mingw.release\tads\tcprsnl.o
C++ build\mingw.release\tads\tcprsstm.o
C++ build\mingw.release\tads\tcsrc.o
C++ build\mingw.release\tads\tct3.o
C++ build\mingw.release\tads\tct3_d.o
C++ build\mingw.release\tads\tct3nl.o
C++ build\mingw.release\tads\tct3stm.o
C++ build\mingw.release\tads\tct3unas.o
C++ build\mingw.release\tads\tctok.o
C++ build\mingw.release\tads\utf8.o
C++ build\mingw.release\tads\vmanonfn.o
C++ build\mingw.release\tads\vmbif.o
C++ build\mingw.release\tads\vmbifl.o
C++ build\mingw.release\tads\vmbifreg.o
C++ build\mingw.release\tads\vmbift3.o
…skipped libtads2.a for lack of libtads2.a(ostzposix.o)…
…on 200th target…
C++ build\mingw.release\tads\vmbiftad.o
C++ build\mingw.release\tads\vmbiftio.o
C++ build\mingw.release\tads\vmbignum.o
tads\tads3\vmbiftad.cpp: In static member function ‘static vm_obj_id_t CVmBifTADS::format_datetime_list(time_t)’:
tads\tads3\vmbiftad.cpp:2291:49: warning: right shift count >= width of type [-Wshift-count-overflow]
vmg_ FALSE, (uint32_t)(timer >> 32),
^
C++ build\mingw.release\tads\vmbignumlib.o
C++ build\mingw.release\tads\vmbt3_nd.o
C++ build\mingw.release\tads\vmbytarr.o
C++ build\mingw.release\tads\vmcfgmem.o
C++ build\mingw.release\tads\vmcoll.o
C++ build\mingw.release\tads\vmconhmp.o
C++ build\mingw.release\tads\vmconsol.o
C++ build\mingw.release\tads\vmcrc.o
C++ build\mingw.release\tads\vmcset.o
C++ build\mingw.release\tads\vmdate.o
C++ build\mingw.release\tads\vmdict.o
C++ build\mingw.release\tads\vmdynfunc.o
C++ build\mingw.release\tads\vmerr.o
C++ build\mingw.release\tads\vmerrmsg.o
C++ build\mingw.release\tads\vmfile.o
C++ build\mingw.release\tads\vmfilnam.o
C++ build\mingw.release\tads\vmfilobj.o
C++ build\mingw.release\tads\vmfref.o
C++ build\mingw.release\tads\vmfunc.o
C++ build\mingw.release\tads\vmglob.o
C++ build\mingw.release\tads\vmgram.o
C++ build\mingw.release\tads\vmhash.o
C++ build\mingw.release\tads\vmhostsi.o
C++ build\mingw.release\tads\vmhosttx.o
C++ build\mingw.release\tads\vmimage.o
C++ build\mingw.release\tads\vmimg_nd.o
C++ build\mingw.release\tads\vmini_nd.o
C++ build\mingw.release\tads\vminit.o
C++ build\mingw.release\tads\vminitim.o
C++ build\mingw.release\tads\vmintcls.o
C++ build\mingw.release\tads\vmisaac.o
C++ build\mingw.release\tads\vmiter.o
C++ build\mingw.release\tads\vmlog.o
C++ build\mingw.release\tads\vmlookup.o
C++ build\mingw.release\tads\vmlst.o
C++ build\mingw.release\tads\vmmain.o
C++ build\mingw.release\tads\vmmcreg.o
C++ build\mingw.release\tads\vmmeta.o
C++ build\mingw.release\tads\vmnetfillcl.o
C++ build\mingw.release\tads\vmobj.o
C++ build\mingw.release\tads\vmop.o
C++ build\mingw.release\tads\vmpack.o
C++ build\mingw.release\tads\vmpat.o
C++ build\mingw.release\tads\vmpool.o
C++ build\mingw.release\tads\vmpoolim.o
C++ build\mingw.release\tads\vmregex.o
C++ build\mingw.release\tads\vmrun.o
C++ build\mingw.release\tads\vmrunsym.o
C++ build\mingw.release\tads\vmsa.o
C++ build\mingw.release\tads\vmsave.o
C++ build\mingw.release\tads\vmsort.o
C++ build\mingw.release\tads\vmsortv.o
C++ build\mingw.release\tads\vmsrcf.o
C++ build\mingw.release\tads\vmstack.o
C++ build\mingw.release\tads\vmstr.o
C++ build\mingw.release\tads\vmstrbuf.o
C++ build\mingw.release\tads\vmstrcmp.o
C++ build\mingw.release\tads\vmtmpfil.o
C++ build\mingw.release\tads\vmtobj.o
C++ build\mingw.release\tads\vmtype.o
C++ build\mingw.release\tads\vmtypedh.o
C++ build\mingw.release\tads\vmtz.o
C++ build\mingw.release\tads\vmtzobj.o
C++ build\mingw.release\tads\vmundo.o
C++ build\mingw.release\tads\vmvec.o
C++ build\mingw.release\tads\vmconnom.o
Cc build\mingw.release\tads\memicmp.o
Cc build\mingw.release\tads\osbuffer.o
Cc build\mingw.release\tads\osglk.o
Cc build\mingw.release\tads\osglkban.o
Cc build\mingw.release\tads\osmisc.o
Cc build\mingw.release\tads\osparse.o
C++ build\mingw.release\tads\osportable.o
C++ build\mingw.release\tads\t23run.o
tads\osportable.cc: In function ‘void os_get_tmp_path(char*)’:
tads\osportable.cc:459:29: error: ‘GetTempPath’ was not declared in this scope
GetTempPath(OSFNMAX, buf);
^
tads\osportable.cc: In function ‘int os_mkdir(const char*, int)’:
tads\osportable.cc:540:35: error: ‘S_IRWXG’ was not declared in this scope
mkdir(tmp, S_IRWXU | S_IRWXG | S_IRWXO);
^
tads\osportable.cc:540:45: error: ‘S_IRWXO’ was not declared in this scope
mkdir(tmp, S_IRWXU | S_IRWXG | S_IRWXO);
^
tads\osportable.cc: In function ‘int os_file_stat(const char*, int, os_file_stat_t*)’:
tads\osportable.cc:586:62: error: ‘lstat’ was not declared in this scope
if ((follow_links ? stat(fname, &buf) : lstat(fname, &buf)) != 0)
^
tads\osportable.cc:591:46: warning: right shift count >= width of type [-Wshift-count-overflow]
? (uint32_t)((buf.st_size >> 32) & 0xFFFFFFFF)
^
tads\osportable.cc:604:17: error: ‘geteuid’ was not declared in this scope
if (geteuid() == buf.st_uid) {
^
tads\osportable.cc:617:36: error: ‘getgroups’ was not declared in this scope
int grpSize = getgroups(0, NULL) + 1;
^
tads\osportable.cc:619:19: error: ‘NGROUPS_MAX’ was not declared in this scope
if (grpSize > NGROUPS_MAX or grpSize < 0)
^
tads\osportable.cc:621:5: error: ‘gid_t’ was not declared in this scope
gid_t* groups = new gid_t[grpSize];
^
tads\osportable.cc:621:12: error: ‘groups’ was not declared in this scope
gid_t* groups = new gid_t[grpSize];
^
tads\osportable.cc:621:25: error: ‘gid_t’ does not name a type
gid_t* groups = new gid_t[grpSize];
^
tads\osportable.cc:623:18: error: type ‘’ argument given to ‘delete’, expected pointer
delete[] groups;
^
Cc tads\osportable.cc:626:25: error: ‘getegid’ was not declared in this scope
groups[0] = getegid();
^
build\mingw.release\tads\t2askf.o tads\osportable.cc:630:14: error: type ‘’ argument given to ‘delete’, expected pointer
delete[] groups;
^

tads\osportable.cc:632:27: error: ‘S_IRGRP’ was not declared in this scope
if (buf.st_mode & S_IRGRP)
^
tads\osportable.cc:634:27: error: ‘S_IWGRP’ was not declared in this scope
if (buf.st_mode & S_IWGRP)
^
tads\osportable.cc:641:23: error: ‘S_IROTH’ was not declared in this scope
if (buf.st_mode & S_IROTH)
^
tads\osportable.cc:643:23: error: ‘S_IWOTH’ was not declared in this scope
if (buf.st_mode & S_IWOTH)
^
tads\osportable.cc: In function ‘int os_resolve_symlink(const char*, char*, size_t)’:
tads\osportable.cc:656:26: error: ‘lstat’ was not declared in this scope
if (lstat(fname, &buf) != 0 or (buf.st_mode & S_IFLNK) == 0)
^
tads\osportable.cc:656:51: error: ‘S_IFLNK’ was not declared in this scope
if (lstat(fname, &buf) != 0 or (buf.st_mode & S_IFLNK) == 0)
^
tads\osportable.cc:663:40: error: ‘readlink’ was not declared in this scope
if (readlink(fname, target, copylen) < 0)
^
tads\osportable.cc: In function ‘void resolve_path(char*, size_t, const char*)’:
tads\osportable.cc:1055:41: error: ‘realpath’ was not declared in this scope
char rpath = realpath(mypath, 0);
^
tads\osportable.cc: In function 'int os_get_abs_filename(char
, size_t, const char*)’:
tads\osportable.cc:1230:41: error: ‘realpath’ was not declared in this scope
char* newpath = realpath(filename, 0);
^
Cc build\mingw.release\tads\t2indlg.o

gcc -c -o build\mingw.release\tads\osportable.o -DGARGOYLE -DVMGLOB_STRUCT -DGLK_UNICODE -DGLK_TIMERS -DTC_TARGET_T3 -DRUNTIME -O2 -Itads\tads2 -Itads\tads3 -Itads -Itads -Itads\tads2 -Ita
garglk tads\osportable.cc

…failed C++ build\mingw.release\tads\osportable.o …
C++ build\mingw.release\tads\t3askf.o
C++ build\mingw.release\tads\t3indlg.o
C++ build\mingw.release\tads\vmuni_cs.o
Cc build\mingw.release\garglk\launchwin.o
Cc build\mingw.release\garglk\launcher.o
Cc build\mingw.release\garglk\gi_blorb.o
Cc build\mingw.release\garglk\gi_dispa.o
Cc build\mingw.release\garglk\cggestal.o
Cc build\mingw.release\garglk\cgblorb.o
Cc build\mingw.release\garglk\cgfref.o
Cc build\mingw.release\garglk\cgmisc.o
Cc build\mingw.release\garglk\cgstyle.o
garglk\cgfref.c: In function ‘glkunix_set_base_file’:
garglk\cgfref.c:358:5: warning: implicit declaration of function ‘chdir’ [-Wimplicit-function-declaration]
chdir(gli_workdir);
^
Cc build\mingw.release\garglk\cgstream.o
Cc build\mingw.release\garglk\cgunicod.o
Cc build\mingw.release\garglk\cgdate.o
Cc build\mingw.release\garglk\window.o
Cc build\mingw.release\garglk\winblank.o
Cc build\mingw.release\garglk\winpair.o
Cc build\mingw.release\garglk\wingrid.o
Cc build\mingw.release\garglk\wintext.o
Cc build\mingw.release\garglk\wingfx.o
…on 300th target…
Cc build\mingw.release\garglk\winmask.o
Cc build\mingw.release\garglk\event.o
Cc build\mingw.release\garglk\draw.o
Cc build\mingw.release\garglk\config.o
Cc build\mingw.release\garglk\imgload.o
Archive build\mingw.release\tads\libtads3.a
ar: creating build\mingw.release\tads\libtads3.a
Cc build\mingw.release\garglk\imgscale.o
Cc build\mingw.release\garglk\fontdata.o
Archive build\mingw.release\tads\libtads3.a
Cc build\mingw.release\garglk\babeldata.o
Cc build\mingw.release\garglk\sndsdl.o
Cc build\mingw.release\garglk\syswin.o
Cc build\mingw.release\garglk\fontwin.o
WindRes build\mingw.release\garglk\icons.o
garglk\syswin.c: In function ‘onconfig’:
garglk\syswin.c:125:9: warning: implicit declaration of function ‘access’ [-Wimplicit-function-declaration]
if (access(buf, R_OK))
^
MkDir1 build\mingw.release\bocfel
Cc build\mingw.release\bocfel\blorb.o
Cc build\mingw.release\bocfel\branch.o
Cc build\mingw.release\bocfel\dict.o
Cc build\mingw.release\bocfel\glkstart.o
Cc build\mingw.release\bocfel\iff.o
Cc build\mingw.release\bocfel\io.o
Cc build\mingw.release\bocfel\math.o
Cc build\mingw.release\bocfel\memory.o
Cc build\mingw.release\bocfel\meta.o
Cc build\mingw.release\bocfel\objects.o
Cc build\mingw.release\bocfel\osdep.o
Cc build\mingw.release\bocfel\process.o
Cc build\mingw.release\bocfel\random.o
Cc build\mingw.release\bocfel\screen.o
Cc build\mingw.release\bocfel\sound.o
Cc build\mingw.release\bocfel\stack.o
Cc build\mingw.release\bocfel\unicode.o
Cc build\mingw.release\bocfel\util.o
Cc build\mingw.release\bocfel\zoom.o
Cc build\mingw.release\bocfel\zterp.o
MkDir1 build\mingw.release\frotz
Cc build\mingw.release\frotz\buffer.o
Cc build\mingw.release\frotz\err.o
Cc build\mingw.release\frotz\fastmem.o
Cc build\mingw.release\frotz\files.o
Cc build\mingw.release\frotz\input.o
Cc build\mingw.release\frotz\main.o
Cc build\mingw.release\frotz\math.o
Cc build\mingw.release\frotz\object.o
Cc build\mingw.release\frotz\process.o
Cc build\mingw.release\frotz\quetzal.o
Cc build\mingw.release\frotz\random.o
Cc build\mingw.release\frotz\redirect.o
Cc build\mingw.release\frotz\sound.o
Cc build\mingw.release\frotz\stream.o
Cc build\mingw.release\frotz\table.o
Cc build\mingw.release\frotz\text.o
Cc build\mingw.release\frotz\variable.o
Cc build\mingw.release\frotz\glkscreen.o
Cc build\mingw.release\frotz\glkmisc.o
MkDir1 build\mingw.release\geas
C++ build\mingw.release\geas\geasfile.o
C++ build\mingw.release\geas\geas-runner.o
C++ build\mingw.release\geas\geas-state.o
C++ build\mingw.release\geas\geas-util.o
SharedLink build\mingw.release\garglk\libgarglk.dll
C++ build\mingw.release\geas\geasglk.o
Cc build\mingw.release\geas\geasglkterm.o
C++ build\mingw.release\geas\istring.o
C++ build\mingw.release\geas\readfile.o
Link build\mingw.release\garglk\gargoyle.exe
Link build\mingw.release\advsys\advsys.exe
Link build\mingw.release\agility\agility.exe
Link build\mingw.release\alan2\alan2.exe
Link build\mingw.release\alan3\alan3.exe
Link build\mingw.release\bocfel\bocfel.exe
Link build\mingw.release\frotz\frotz.exe
…skipped tadsr.exe for lack of osportable.o…
MkDir1 build\mingw.release\git
Cc build\mingw.release\git\git.o
Cc build\mingw.release\git\memory.o
Cc build\mingw.release\git\compiler.o
Cc build\mingw.release\git\opcodes.o
Cc build\mingw.release\git\operands.o
Cc build\mingw.release\git\peephole.o
Cc build\mingw.release\git\terp.o
Cc build\mingw.release\git\glkop.o
Cc build\mingw.release\git\search.o
Cc build\mingw.release\git\git_unix.o
terps\git\git_unix.c: In function ‘fatalError’:
terps\git\git_unix.c:48:1: warning: ‘noreturn’ function does return
}
^
Cc build\mingw.release\git\savefile.o
Cc build\mingw.release\git\saveundo.o
Cc build\mingw.release\git\gestalt.o
Cc build\mingw.release\git\heap.o
Cc build\mingw.release\git\accel.o
MkDir1 build\mingw.release\glulxe
Cc build\mingw.release\glulxe\main.o
Cc build\mingw.release\glulxe\files.o
Cc build\mingw.release\glulxe\vm.o
Cc build\mingw.release\glulxe\exec.o
Cc build\mingw.release\glulxe\funcs.o
Cc build\mingw.release\glulxe\operand.o
Cc build\mingw.release\glulxe\string.o
Cc build\mingw.release\glulxe\glkop.o
Cc build\mingw.release\glulxe\heap.o
Cc build\mingw.release\glulxe\serial.o
Cc build\mingw.release\glulxe\search.o
Cc build\mingw.release\glulxe\gestalt.o
…on 400th target…
Cc build\mingw.release\glulxe\osdepend.o
Link build\mingw.release\git\git.exe
Cc build\mingw.release\glulxe\unixstrt.o
Cc build\mingw.release\glulxe\accel.o
Cc build\mingw.release\glulxe\profile.o
Cc build\mingw.release\glulxe\float.o
MkDir1 build\mingw.release\hugo
Cc build\mingw.release\hugo\he.o
Cc build\mingw.release\hugo\heexpr.o
Cc build\mingw.release\hugo\hemisc.o
Cc build\mingw.release\hugo\heobject.o
Cc build\mingw.release\hugo\heparse.o
Cc build\mingw.release\hugo\heres.o
Link build\mingw.release\glulxe\glulxe.exe
Cc build\mingw.release\hugo\herun.o
Cc build\mingw.release\hugo\heset.o
Cc build\mingw.release\hugo\stringfn.o
Cc build\mingw.release\hugo\heglk.o
Cc build\mingw.release\hugo\heglkunix.o
MkDir1 build\mingw.release\jacl
MkDir1 build\mingw.release\level9
Cc build\mingw.release\jacl\jacl.o
Cc build\mingw.release\jacl\glk_startup.o
Cc build\mingw.release\level9\bitmap.o
Cc build\mingw.release\level9\level9.o
Cc build\mingw.release\level9\glk.o
terps\level9\level9.c: In function ‘intinitialise’:
terps\level9\level9.c:1509:8: warning: iteration 5u invokes undefined behavior [-Waggressive-loop-optimizations]
int off=L9V1Games[L9V1Game].L9Ptrs[i];
^
terps\level9\level9.c:1507:3: note: containing loop
for (i=0;i<6;i++)
^
Cc build\mingw.release\jacl\findroute.o
Link build\mingw.release\hugo\hugo.exe
Cc build\mingw.release\jacl\interpreter.o
Cc build\mingw.release\jacl\loader.o
Cc build\mingw.release\jacl\glk_saver.o
Cc build\mingw.release\jacl\logging.o
Cc build\mingw.release\jacl\parser.o
Cc build\mingw.release\jacl\display.o
Cc build\mingw.release\jacl\utils.o
Cc build\mingw.release\jacl\jpp.o
Cc build\mingw.release\jacl\resolvers.o
Cc build\mingw.release\jacl\errors.o
Cc build\mingw.release\jacl\encapsulate.o
Cc build\mingw.release\jacl\libcsv.o
MkDir1 build\mingw.release\magnetic
MkDir1 build\mingw.release\nitfol
Cc build\mingw.release\magnetic\emu.o
Cc build\mingw.release\nitfol\automap.o
Cc build\mingw.release\nitfol\solve.o
Link build\mingw.release\level9\level9.exe
Cc build\mingw.release\nitfol\infix.o
Cc build\mingw.release\nitfol\copying.o
Cc build\mingw.release\nitfol\debug.o
Link build\mingw.release\jacl\jacl.exe
Cc build\mingw.release\nitfol\inform.o
Cc build\mingw.release\nitfol\quetzal.o
Cc build\mingw.release\nitfol\undo.o
Cc build\mingw.release\nitfol\op_call.o
Cc build\mingw.release\nitfol\decode.o
Cc build\mingw.release\nitfol\errmesg.o
Cc build\mingw.release\nitfol\globals.o
Cc build\mingw.release\nitfol\iff.o
Cc build\mingw.release\nitfol\init.o
Cc build\mingw.release\nitfol\io.o
Cc build\mingw.release\nitfol\z_io.o
Cc build\mingw.release\nitfol\op_jmp.o
Cc build\mingw.release\nitfol\op_math.o
Cc build\mingw.release\nitfol\op_save.o
Cc build\mingw.release\nitfol\op_table.o
Cc build\mingw.release\nitfol\op_v6.o
Cc build\mingw.release\nitfol\oplist.o
Cc build\mingw.release\nitfol\stack.o
Cc build\mingw.release\nitfol\zscii.o
Cc build\mingw.release\nitfol\tokenise.o
Cc build\mingw.release\nitfol\struct.o
Cc build\mingw.release\nitfol\objects.o
Cc build\mingw.release\nitfol\portfunc.o
Cc build\mingw.release\nitfol\hash.o
Cc build\mingw.release\nitfol\sound.o
Cc build\mingw.release\nitfol\graphics.o
Cc build\mingw.release\nitfol\blorb.o
Cc build\mingw.release\nitfol\main.o
Cc build\mingw.release\nitfol\startunix.o
Cc build\mingw.release\magnetic\glk.o
MkDir1 build\mingw.release\scare
MkDir1 build\mingw.release\scott
Cc build\mingw.release\scare\sctafpar.o
Cc build\mingw.release\scare\sctaffil.o
Cc build\mingw.release\scott\scott.o
Cc build\mingw.release\scare\scprops.o
Cc build\mingw.release\scare\scvars.o
Link build\mingw.release\nitfol\nitfol.exe
Cc build\mingw.release\scare\scexpr.o
Cc build\mingw.release\scare\scprintf.o
Cc build\mingw.release\scare\scinterf.o
Link build\mingw.release\scott\scott.exe
Cc build\mingw.release\scare\scparser.o
Cc build\mingw.release\scare\sclibrar.o
Cc build\mingw.release\scare\scrunner.o
Cc build\mingw.release\scare\scevents.o
Cc build\mingw.release\scare\scnpcs.o
Cc build\mingw.release\scare\scobjcts.o
Link build\mingw.release\magnetic\magnetic.exe
Cc build\mingw.release\scare\sctasks.o
…on 500th target…
Cc build\mingw.release\scare\screstrs.o
Cc build\mingw.release\scare\scgamest.o
Cc build\mingw.release\scare\scserial.o
Cc build\mingw.release\scare\scresour.o
Cc build\mingw.release\scare\scutils.o
Cc build\mingw.release\scare\scdebug.o
Cc build\mingw.release\scare\sclocale.o
Cc build\mingw.release\scare\scmemos.o
Cc build\mingw.release\scare\os_glk.o
Link build\mingw.release\scare\scare.exe
Link build\mingw.release\geas\geas.exe
…failed updating 2 target(s)…
…skipped 2 target(s)…
…updated 508 target(s)…
… finished building!
Press any key to continue . . .

C:\garglk-203-tads-upgrade>[/spoiler]

The branch is/was in a sort of transition: I’ve pulled in support code from FrobTADS which should make future updates easier. However, FrobTADS targets POSIX, and MinGW is missing some POSIX functionality, meaning the support code wasn’t fully supported in MinGW.

But since I’ve made the existence of this branch known, it’s probably best to at least get it compiling with MinGW. I’ve pushed a couple of changes which allow it to fully build. The TADS fixes are hacky for the time being, but should allow for testing with MinGW at least.

Chris, I still getting a couple of errors when trying to build on Windows.

MinGW complains about the following constants are not defined (osportable.cc, line 645):

However, I managed to compile a test build for Windows.

gargoyle_28-may-2016_test_build.zip

P.S.

I’m playing with the idea of using Boost to cover both Unix and Windows filesystem routines. Would it be OK if Boost was a dependency for Gargoyle?

Also, some of the other code in osportable.cc was changed to be portable to Windows too (random numbers and timers) by requiring a C++14 compiler. If you want to use that instead, it’s in the frobtads “next” branch.

Looks like those macros were added to MinGW fairly recently (they’re in version 4.0.6). I pushed a change to the branch which just removes the checks on MinGW, since most of that particular function is not implemented for MinGW anyway. This isn’t a long-term solution, just a way to support early testing.

Thanks for looking at this! I’m doing what I can for Windows support but it’s not exactly my strength.

I have no problem making Boost a dependency.

That’s something I’ve been meaning to look at for a while now, but haven’t been able to find the time. I’ll see if I can find a bit of spare time this week to test it out.

cas

Now it builds ok. A few warnings, but nothing serious.

Here’s the current build for Windows. I also included a few custom color/font schemes (i.e. bright text on dark background).

gargoyle_01-jun-2016_win32.zip

[spoiler]Microsoft Windows [Version 6.1.7601]
Copyright © 2009 Microsoft Corporation. All rights reserved.

C:\Users\SE>cd\

C:>cd tdm-gcc-32

C:\TDM-GCC-32>mingwvars

Setting up environment for using MinGW with GCC from C:\TDM-GCC-32.

C:\TDM-GCC-32>set JAM_TOOLSET=MINGW

C:\TDM-GCC-32>cd\

C:>cd garglk-203-tads-upgrade

C:\garglk-203-tads-upgrade>gargoyle_win32
Packaging Gargoyle binaries …
Compiler is GCC with Mingw

BUILD is RELEASE
…patience…
…found 1691 target(s)…
…updating 544 target(s)…
MkDir1 build
MkDir1 build\dist
MkDir1 build\mingw.release
Install build\dist\freetype6.dll
Install build\dist\libjpeg-8.dll
Install build\dist\libpng14-14.dll
1 file(s) copied.
Install build\dist\zlib1.dll
1 file(s) copied.
Install build\dist\SDL_mixer.dll
1 file(s) copied.
Install build\dist\SDL.dll
1 file(s) copied.
Install build\dist\smpeg.dll
1 file(s) copied.
Install build\dist\libogg-0.dll
1 file(s) copied.
MkDir1 build\mingw.release\advsys
1 file(s) copied.
MkDir1 build\mingw.release\garglk
1 file(s) copied.
MkDir1 build\mingw.release\babel
Cc build\mingw.release\advsys\advmsg.o
Cc build\mingw.release\babel\babel_handler.o
Cc build\mingw.release\garglk\main.o
Cc build\mingw.release\garglk\gi_blorb.o
Cc build\mingw.release\garglk\gi_dispa.o
Cc build\mingw.release\garglk\cggestal.o
Cc build\mingw.release\garglk\cgblorb.o
Cc build\mingw.release\garglk\cgfref.o
garglk\cgfref.c: In function ‘glkunix_set_base_file’:
garglk\cgfref.c:358:5: warning: implicit declaration of function ‘chdir’ [-Wimplicit-function-declaration]
chdir(gli_workdir);
^
Cc build\mingw.release\garglk\cgmisc.o
Cc build\mingw.release\garglk\cgstyle.o
Archive build\mingw.release\garglk\libgarglkmain.a
Cc build\mingw.release\garglk\cgstream.o
Cc build\mingw.release\garglk\cgunicod.o
Cc build\mingw.release\garglk\cgdate.o
Cc build\mingw.release\garglk\window.o
Cc build\mingw.release\garglk\winblank.o
Cc build\mingw.release\garglk\winpair.o
Cc build\mingw.release\garglk\wingrid.o
Cc build\mingw.release\garglk\wintext.o
Cc build\mingw.release\garglk\wingfx.o
Cc build\mingw.release\garglk\winmask.o
ar: creating build\mingw.release\garglk\libgarglkmain.a
Cc build\mingw.release\garglk\event.o
Cc build\mingw.release\garglk\draw.o
Cc build\mingw.release\garglk\config.o
Cc build\mingw.release\garglk\imgload.o
Cc build\mingw.release\garglk\imgscale.o
Cc build\mingw.release\garglk\fontdata.o
Cc build\mingw.release\garglk\babeldata.o
Cc build\mingw.release\garglk\sndsdl.o
Cc build\mingw.release\garglk\syswin.o
Cc build\mingw.release\garglk\fontwin.o
WindRes build\mingw.release\garglk\icons.o
Cc build\mingw.release\garglk\launchwin.o
Cc build\mingw.release\garglk\launcher.o
Cc build\mingw.release\babel\ifiction.o
Cc build\mingw.release\babel\md5.o
Cc build\mingw.release\babel\misc.o
Cc build\mingw.release\babel\register.o
Cc build\mingw.release\babel\register_ifiction.o
Cc build\mingw.release\babel\adrift.o
Cc build\mingw.release\babel\advsys.o
Cc build\mingw.release\babel\agt.o
Cc build\mingw.release\babel\alan.o
Cc build\mingw.release\babel\blorb.o
Cc build\mingw.release\babel\executable.o
Cc build\mingw.release\babel\glulx.o
Cc build\mingw.release\babel\hugo.o
Cc build\mingw.release\babel\level9.o
Cc build\mingw.release\babel\magscrolls.o
Cc build\mingw.release\babel\tads.o
Cc build\mingw.release\babel\tads2.o
Cc build\mingw.release\babel\tads3.o
Cc build\mingw.release\babel\zcode.o
Cc build\mingw.release\advsys\advtrm.o
Cc build\mingw.release\advsys\advprs.o
Cc build\mingw.release\advsys\advdbs.o
Cc build\mingw.release\advsys\advint.o
Cc build\mingw.release\advsys\advjunk.o
Cc build\mingw.release\advsys\advexe.o
Cc build\mingw.release\advsys\glkstart.o
MkDir1 build\mingw.release\SDL_sound
Cc build\mingw.release\SDL_sound\ogg.o
Cc build\mingw.release\SDL_sound\smpeg.o
Archive build\mingw.release\babel\babel_static.a
garglk\syswin.c: In function ‘onconfig’:
garglk\syswin.c:125:9: warning: implicit declaration of function ‘access’ [-Wimplicit-function-declaration]
if (access(buf, R_OK))
^
ar: creating build\mingw.release\babel\babel_static.a
Cc build\mingw.release\SDL_sound\audio_convert.o
Cc build\mingw.release\SDL_sound\alt_audio_convert.o
Cc build\mingw.release\SDL_sound\extra_rwops.o
Cc build\mingw.release\SDL_sound\SDL_sound.o
MkDir1 build\mingw.release\agility
Cc build\mingw.release\agility\agtread.o
Cc build\mingw.release\agility\gamedata.o
Cc build\mingw.release\agility\util.o
Cc build\mingw.release\agility\agxfile.o
Cc build\mingw.release\agility\auxfile.o
SharedLink build\mingw.release\SDL_sound\SDL_sound.dll
Cc build\mingw.release\agility\filename.o
Cc build\mingw.release\agility\parser.o
Cc build\mingw.release\agility\exec.o
Cc build\mingw.release\agility\runverb.o
Cc build\mingw.release\agility\metacommand.o
Cc build\mingw.release\agility\savegame.o
Cc build\mingw.release\agility\debugcmd.o
Cc build\mingw.release\agility\agil.o
Cc build\mingw.release\agility\token.o
Cc build\mingw.release\agility\disassemble.o
…on 100th target…
Cc build\mingw.release\agility\object.o
Cc build\mingw.release\agility\interface.o
Cc build\mingw.release\agility\os_glk.o
MkDir1 build\mingw.release\alan2
Cc build\mingw.release\alan2\arun.o
Cc build\mingw.release\alan2\main.o
Cc build\mingw.release\alan2\debug.o
Cc build\mingw.release\alan2\args.o
Cc build\mingw.release\alan2\exe.o
Cc build\mingw.release\alan2\inter.o
Cc build\mingw.release\alan2\parse.o
Cc build\mingw.release\alan2\rules.o
Cc build\mingw.release\alan2\stack.o
Cc build\mingw.release\alan2\decode.o
Cc build\mingw.release\alan2\term.o
Cc build\mingw.release\alan2\reverse.o
Cc build\mingw.release\alan2\readline.o
Cc build\mingw.release\alan2\params.o
Cc build\mingw.release\alan2\sysdep.o
Cc build\mingw.release\alan2\glkstart.o
Cc build\mingw.release\alan2\glkio.o
Cc build\mingw.release\alan2\alan.version.o
MkDir1 build\mingw.release\alan3
Cc build\mingw.release\alan3\alan.version.o
Cc build\mingw.release\alan3\act.o
Cc build\mingw.release\alan3\actor.o
Cc build\mingw.release\alan3\args.o
Cc build\mingw.release\alan3\arun.o
Cc build\mingw.release\alan3\attribute.o
Cc build\mingw.release\alan3\checkentry.o
Cc build\mingw.release\alan3\class.o
Cc build\mingw.release\alan3\current.o
Cc build\mingw.release\alan3\debug.o
Cc build\mingw.release\alan3\decode.o
Cc build\mingw.release\alan3\dictionary.o
Cc build\mingw.release\alan3\event.o
Cc build\mingw.release\alan3\exe.o
Cc build\mingw.release\alan3\glkio.o
Cc build\mingw.release\alan3\glkstart.o
Cc build\mingw.release\alan3\instance.o
Cc build\mingw.release\alan3\inter.o
Cc build\mingw.release\alan3\lists.o
Cc build\mingw.release\alan3\literal.o
Cc build\mingw.release\alan3\main.o
Cc build\mingw.release\alan3\memory.o
Cc build\mingw.release\alan3\msg.o
Cc build\mingw.release\alan3\options.o
Cc build\mingw.release\alan3\output.o
Cc build\mingw.release\alan3\params.o
Cc build\mingw.release\alan3\parse.o
Cc build\mingw.release\alan3\readline.o
Cc build\mingw.release\alan3\reverse.o
Cc build\mingw.release\alan3\rules.o
Cc build\mingw.release\alan3\save.o
Cc build\mingw.release\alan3\scan.o
Cc build\mingw.release\alan3\score.o
Cc build\mingw.release\alan3\set.o
Cc build\mingw.release\alan3\stack.o
Cc build\mingw.release\alan3\state.o
Cc build\mingw.release\alan3\syntax.o
Cc build\mingw.release\alan3\sysdep.o
Cc build\mingw.release\alan3\syserr.o
Cc build\mingw.release\alan3\term.o
Cc build\mingw.release\alan3\utils.o
Cc build\mingw.release\alan3\word.o
Cc build\mingw.release\alan3\compatibility.o
Cc build\mingw.release\alan3\AltInfo.o
Cc build\mingw.release\alan3\Container.o
Cc build\mingw.release\alan3\Location.o
Cc build\mingw.release\alan3\ParameterPosition.o
Cc build\mingw.release\alan3\StateStack.o
MkDir1 build\mingw.release\bocfel
Cc build\mingw.release\bocfel\blorb.o
Cc build\mingw.release\bocfel\branch.o
Cc build\mingw.release\bocfel\dict.o
SharedLink build\mingw.release\garglk\libgarglk.dll
Install build\dist\SDL_sound.dll
Cc build\mingw.release\bocfel\glkstart.o
Cc build\mingw.release\bocfel\iff.o
1 file(s) copied.
Cc build\mingw.release\bocfel\io.o
Cc build\mingw.release\bocfel\math.o
Cc build\mingw.release\bocfel\memory.o
Cc build\mingw.release\bocfel\meta.o
Cc build\mingw.release\bocfel\objects.o
Cc build\mingw.release\bocfel\osdep.o
Cc build\mingw.release\bocfel\process.o
Cc build\mingw.release\bocfel\random.o
Cc build\mingw.release\bocfel\screen.o
Cc build\mingw.release\bocfel\sound.o
Cc build\mingw.release\bocfel\stack.o
Cc build\mingw.release\bocfel\unicode.o
Cc build\mingw.release\bocfel\util.o
Cc build\mingw.release\bocfel\zoom.o
Cc build\mingw.release\bocfel\zterp.o
MkDir1 build\mingw.release\frotz
Cc build\mingw.release\frotz\buffer.o
Cc build\mingw.release\frotz\err.o
Cc build\mingw.release\frotz\fastmem.o
Cc build\mingw.release\frotz\files.o
Cc build\mingw.release\frotz\input.o
…on 200th target…
Cc build\mingw.release\frotz\main.o
Link build\mingw.release\advsys\advsys.exe
Link build\mingw.release\agility\agility.exe
Link build\mingw.release\alan2\alan2.exe
Link build\mingw.release\alan3\alan3.exe
Link build\mingw.release\garglk\gargoyle.exe
Cc build\mingw.release\frotz\math.o
Cc build\mingw.release\frotz\object.o
Install build\dist\advsys.exe
Install build\dist\alan2.exe
Link build\mingw.release\bocfel\bocfel.exe
1 file(s) copied.
1 file(s) copied.
Cc build\mingw.release\frotz\process.o
Cc build\mingw.release\frotz\quetzal.o
Cc build\mingw.release\frotz\random.o
Cc build\mingw.release\frotz\redirect.o
Install build\dist\agility.exe
Install build\dist\alan3.exe
1 file(s) copied.
Cc build\mingw.release\frotz\sound.o
Cc build\mingw.release\frotz\stream.o
1 file(s) copied.
Cc build\mingw.release\frotz\table.o
Cc build\mingw.release\frotz\text.o
Install build\dist\bocfel.exe
Cc build\mingw.release\frotz\variable.o
Cc build\mingw.release\frotz\glkscreen.o
1 file(s) copied.
Cc build\mingw.release\frotz\glkmisc.o
MkDir1 build\mingw.release\geas
MkDir1 build\mingw.release\git
C++ build\mingw.release\geas\geasfile.o
Cc build\mingw.release\git\git.o
Cc build\mingw.release\git\memory.o
Cc build\mingw.release\git\compiler.o
Cc build\mingw.release\git\opcodes.o
Cc build\mingw.release\git\operands.o
Cc build\mingw.release\git\peephole.o
Cc build\mingw.release\git\terp.o
Cc build\mingw.release\git\glkop.o
Cc build\mingw.release\git\search.o
Link build\mingw.release\frotz\frotz.exe
Cc build\mingw.release\git\git_unix.o
Cc build\mingw.release\git\savefile.o
Cc build\mingw.release\git\saveundo.o
Cc build\mingw.release\git\gestalt.o
Cc build\mingw.release\git\heap.o
Install build\dist\frotz.exe
Cc build\mingw.release\git\accel.o
1 file(s) copied.
C++ build\mingw.release\geas\geas-runner.o
C++ build\mingw.release\geas\geas-state.o
C++ build\mingw.release\geas\geas-util.o
C++ build\mingw.release\geas\geasglk.o
Cc build\mingw.release\geas\geasglkterm.o
C++ build\mingw.release\geas\istring.o
C++ build\mingw.release\geas\readfile.o
Link build\mingw.release\git\git.exe
Install build\dist\git.exe
1 file(s) copied.
MkDir1 build\mingw.release\glulxe
Cc build\mingw.release\glulxe\main.o
Cc build\mingw.release\glulxe\files.o
Cc build\mingw.release\glulxe\vm.o
Cc build\mingw.release\glulxe\exec.o
Cc build\mingw.release\glulxe\funcs.o
Cc build\mingw.release\glulxe\operand.o
Cc build\mingw.release\glulxe\string.o
Cc build\mingw.release\glulxe\glkop.o
Cc build\mingw.release\glulxe\heap.o
Cc build\mingw.release\glulxe\serial.o
Cc build\mingw.release\glulxe\search.o
Cc build\mingw.release\glulxe\gestalt.o
Cc build\mingw.release\glulxe\osdepend.o
Cc build\mingw.release\glulxe\unixstrt.o
Cc build\mingw.release\glulxe\accel.o
Cc build\mingw.release\glulxe\profile.o
Cc build\mingw.release\glulxe\float.o
Link build\mingw.release\glulxe\glulxe.exe
Install build\dist\glulxe.exe
1 file(s) copied.
MkDir1 build\mingw.release\hugo
Cc build\mingw.release\hugo\he.o
Cc build\mingw.release\hugo\heexpr.o
Cc build\mingw.release\hugo\hemisc.o
Cc build\mingw.release\hugo\heobject.o
Cc build\mingw.release\hugo\heparse.o
Cc build\mingw.release\hugo\heres.o
Cc build\mingw.release\hugo\herun.o
Cc build\mingw.release\hugo\heset.o
Cc build\mingw.release\hugo\stringfn.o
Cc build\mingw.release\hugo\heglk.o
Cc build\mingw.release\hugo\heglkunix.o
Link build\mingw.release\hugo\hugo.exe
Install build\dist\hugo.exe
1 file(s) copied.
MkDir1 build\mingw.release\jacl
Cc build\mingw.release\jacl\jacl.o
Cc build\mingw.release\jacl\glk_startup.o
Cc build\mingw.release\jacl\findroute.o
Cc build\mingw.release\jacl\interpreter.o
Cc build\mingw.release\jacl\loader.o
Cc build\mingw.release\jacl\glk_saver.o
Cc build\mingw.release\jacl\logging.o
Cc build\mingw.release\jacl\parser.o
Cc build\mingw.release\jacl\display.o
Cc build\mingw.release\jacl\utils.o
Cc build\mingw.release\jacl\jpp.o
…on 300th target…
Cc build\mingw.release\jacl\resolvers.o
Cc build\mingw.release\jacl\errors.o
Cc build\mingw.release\jacl\encapsulate.o
Cc build\mingw.release\jacl\libcsv.o
Link build\mingw.release\jacl\jacl.exe
Install build\dist\jacl.exe
1 file(s) copied.
MkDir1 build\mingw.release\level9
Cc build\mingw.release\level9\bitmap.o
Cc build\mingw.release\level9\level9.o
terps\level9\level9.c: In function ‘intinitialise’:
terps\level9\level9.c:1509:8: warning: iteration 5u invokes undefined behavior [-Waggressive-loop-optimizations]
int off=L9V1Games[L9V1Game].L9Ptrs[i];
^
terps\level9\level9.c:1507:3: note: containing loop
for (i=0;i<6;i++)
^
Cc build\mingw.release\level9\glk.o
MkDir1 build\mingw.release\magnetic
Cc build\mingw.release\magnetic\emu.o
Link build\mingw.release\level9\level9.exe
Cc build\mingw.release\magnetic\glk.o
MkDir1 build\mingw.release\nitfol
Cc build\mingw.release\nitfol\automap.o
Install build\dist\level9.exe
1 file(s) copied.
Cc build\mingw.release\nitfol\solve.o
Cc build\mingw.release\nitfol\infix.o
Cc build\mingw.release\nitfol\copying.o
Cc build\mingw.release\nitfol\debug.o
Cc build\mingw.release\nitfol\inform.o
Cc build\mingw.release\nitfol\quetzal.o
Cc build\mingw.release\nitfol\undo.o
Cc build\mingw.release\nitfol\op_call.o
Cc build\mingw.release\nitfol\decode.o
Link build\mingw.release\magnetic\magnetic.exe
Cc build\mingw.release\nitfol\errmesg.o
Cc build\mingw.release\nitfol\globals.o
Cc build\mingw.release\nitfol\iff.o
Cc build\mingw.release\nitfol\init.o
Cc build\mingw.release\nitfol\io.o
Install build\dist\magnetic.exe
Cc build\mingw.release\nitfol\z_io.o
Cc build\mingw.release\nitfol\op_jmp.o
1 file(s) copied.
Cc build\mingw.release\nitfol\op_math.o
Cc build\mingw.release\nitfol\op_save.o
Cc build\mingw.release\nitfol\op_table.o
Cc build\mingw.release\nitfol\op_v6.o
Cc build\mingw.release\nitfol\oplist.o
Cc build\mingw.release\nitfol\stack.o
Cc build\mingw.release\nitfol\zscii.o
Cc build\mingw.release\nitfol\tokenise.o
Cc build\mingw.release\nitfol\struct.o
Cc build\mingw.release\nitfol\objects.o
Cc build\mingw.release\nitfol\portfunc.o
Cc build\mingw.release\nitfol\hash.o
Cc build\mingw.release\nitfol\sound.o
Cc build\mingw.release\nitfol\graphics.o
Cc build\mingw.release\nitfol\blorb.o
Cc build\mingw.release\nitfol\main.o
Cc build\mingw.release\nitfol\startunix.o
MkDir1 build\mingw.release\scare
MkDir1 build\mingw.release\scott
Cc build\mingw.release\scare\sctafpar.o
Cc build\mingw.release\scott\scott.o
Cc build\mingw.release\scare\sctaffil.o
Cc build\mingw.release\scare\scprops.o
Cc build\mingw.release\scare\scvars.o
Link build\mingw.release\nitfol\nitfol.exe
Cc build\mingw.release\scare\scexpr.o
Cc build\mingw.release\scare\scprintf.o
Cc build\mingw.release\scare\scinterf.o
Install build\dist\nitfol.exe
1 file(s) copied.
Cc build\mingw.release\scare\scparser.o
Link build\mingw.release\scott\scott.exe
Cc build\mingw.release\scare\sclibrar.o
Cc build\mingw.release\scare\scrunner.o
Install build\dist\scott.exe
Cc build\mingw.release\scare\scevents.o
1 file(s) copied.
Cc build\mingw.release\scare\scnpcs.o
Cc build\mingw.release\scare\scobjcts.o
Cc build\mingw.release\scare\sctasks.o
Cc build\mingw.release\scare\screstrs.o
Cc build\mingw.release\scare\scgamest.o
Cc build\mingw.release\scare\scserial.o
Cc build\mingw.release\scare\scresour.o
Cc build\mingw.release\scare\scutils.o
Cc build\mingw.release\scare\scdebug.o
Cc build\mingw.release\scare\sclocale.o
Cc build\mingw.release\scare\scmemos.o
Cc build\mingw.release\scare\os_glk.o
MkDir1 build\mingw.release\tads
Cc build\mingw.release\tads\memicmp.o
Cc build\mingw.release\tads\osbuffer.o
Cc build\mingw.release\tads\osglk.o
Cc build\mingw.release\tads\osglkban.o
Cc build\mingw.release\tads\osmisc.o
Cc build\mingw.release\tads\osparse.o
C++ build\mingw.release\tads\osportable.o
C++ build\mingw.release\tads\t23run.o
Cc build\mingw.release\tads\t2askf.o
Cc build\mingw.release\tads\t2indlg.o
C++ build\mingw.release\tads\t3askf.o
C++ build\mingw.release\tads\t3indlg.o
C++ build\mingw.release\tads\vmuni_cs.o
C++ build\mingw.release\tads\charmap.o
tads\osportable.cc: In function ‘int os_file_stat(const char*, int, os_file_stat_t*)’:
tads\osportable.cc:593:46: warning: right shift count >= width of type [-Wshift-count-overflow]
? (uint32_t)((buf.st_size >> 32) & 0xFFFFFFFF)
^
C++ build\mingw.release\tads\md5.o
C++ build\mingw.release\tads\resldexe.o
C++ build\mingw.release\tads\resload.o
…on 400th target…
C++ build\mingw.release\tads\sha2.o
C++ build\mingw.release\tads\std.o
C++ build\mingw.release\tads\tcerr.o
C++ build\mingw.release\tads\tcerrmsg.o
C++ build\mingw.release\tads\tcgen.o
C++ build\mingw.release\tads\tcglob.o
C++ build\mingw.release\tads\tcmain.o
C++ build\mingw.release\tads\tcprs.o
C++ build\mingw.release\tads\tcprs_rt.o
Link build\mingw.release\scare\scare.exe
C++ build\mingw.release\tads\tcprsnf.o
C++ build\mingw.release\tads\tcprsnl.o
C++ build\mingw.release\tads\tcprsstm.o
C++ build\mingw.release\tads\tcsrc.o
Install build\dist\scare.exe
C++ build\mingw.release\tads\tct3.o
1 file(s) copied.
C++ build\mingw.release\tads\tct3_d.o
C++ build\mingw.release\tads\tct3nl.o
C++ build\mingw.release\tads\tct3stm.o
C++ build\mingw.release\tads\tct3unas.o
C++ build\mingw.release\tads\tctok.o
C++ build\mingw.release\tads\utf8.o
C++ build\mingw.release\tads\vmanonfn.o
C++ build\mingw.release\tads\vmbif.o
C++ build\mingw.release\tads\vmbifl.o
C++ build\mingw.release\tads\vmbifreg.o
C++ build\mingw.release\tads\vmbift3.o
C++ build\mingw.release\tads\vmbiftad.o
C++ build\mingw.release\tads\vmbiftio.o
tads\tads3\vmbiftad.cpp: In static member function ‘static vm_obj_id_t CVmBifTADS::format_datetime_list(time_t)’:
tads\tads3\vmbiftad.cpp:2291:49: warning: right shift count >= width of type [-Wshift-count-overflow]
vmg_ FALSE, (uint32_t)(timer >> 32),
^
C++ build\mingw.release\tads\vmbignum.o
C++ build\mingw.release\tads\vmbignumlib.o
C++ build\mingw.release\tads\vmbt3_nd.o
C++ build\mingw.release\tads\vmbytarr.o
C++ build\mingw.release\tads\vmcfgmem.o
C++ build\mingw.release\tads\vmcoll.o
C++ build\mingw.release\tads\vmconhmp.o
C++ build\mingw.release\tads\vmconsol.o
C++ build\mingw.release\tads\vmcrc.o
C++ build\mingw.release\tads\vmcset.o
C++ build\mingw.release\tads\vmdate.o
C++ build\mingw.release\tads\vmdict.o
C++ build\mingw.release\tads\vmdynfunc.o
C++ build\mingw.release\tads\vmerr.o
C++ build\mingw.release\tads\vmerrmsg.o
C++ build\mingw.release\tads\vmfile.o
C++ build\mingw.release\tads\vmfilnam.o
C++ build\mingw.release\tads\vmfilobj.o
C++ build\mingw.release\tads\vmfref.o
C++ build\mingw.release\tads\vmfunc.o
C++ build\mingw.release\tads\vmglob.o
C++ build\mingw.release\tads\vmgram.o
C++ build\mingw.release\tads\vmhash.o
C++ build\mingw.release\tads\vmhostsi.o
C++ build\mingw.release\tads\vmhosttx.o
C++ build\mingw.release\tads\vmimage.o
C++ build\mingw.release\tads\vmimg_nd.o
C++ build\mingw.release\tads\vmini_nd.o
C++ build\mingw.release\tads\vminit.o
C++ build\mingw.release\tads\vminitim.o
C++ build\mingw.release\tads\vmintcls.o
C++ build\mingw.release\tads\vmisaac.o
C++ build\mingw.release\tads\vmiter.o
C++ build\mingw.release\tads\vmlog.o
C++ build\mingw.release\tads\vmlookup.o
C++ build\mingw.release\tads\vmlst.o
C++ build\mingw.release\tads\vmmain.o
C++ build\mingw.release\tads\vmmcreg.o
C++ build\mingw.release\tads\vmmeta.o
C++ build\mingw.release\tads\vmnetfillcl.o
C++ build\mingw.release\tads\vmobj.o
C++ build\mingw.release\tads\vmop.o
C++ build\mingw.release\tads\vmpack.o
C++ build\mingw.release\tads\vmpat.o
C++ build\mingw.release\tads\vmpool.o
C++ build\mingw.release\tads\vmpoolim.o
C++ build\mingw.release\tads\vmregex.o
C++ build\mingw.release\tads\vmrun.o
C++ build\mingw.release\tads\vmrunsym.o
C++ build\mingw.release\tads\vmsa.o
C++ build\mingw.release\tads\vmsave.o
C++ build\mingw.release\tads\vmsort.o
C++ build\mingw.release\tads\vmsortv.o
C++ build\mingw.release\tads\vmsrcf.o
C++ build\mingw.release\tads\vmstack.o
C++ build\mingw.release\tads\vmstr.o
C++ build\mingw.release\tads\vmstrbuf.o
C++ build\mingw.release\tads\vmstrcmp.o
C++ build\mingw.release\tads\vmtmpfil.o
Link build\mingw.release\geas\geas.exe
C++ build\mingw.release\tads\vmtobj.o
C++ build\mingw.release\tads\vmtype.o
C++ build\mingw.release\tads\vmtypedh.o
C++ build\mingw.release\tads\vmtz.o
C++ build\mingw.release\tads\vmtzobj.o
C++ build\mingw.release\tads\vmundo.o
C++ build\mingw.release\tads\vmvec.o
C++ build\mingw.release\tads\vmconnom.o
Cc build\mingw.release\tads\argize.o
Cc build\mingw.release\tads\bif.o
Cc build\mingw.release\tads\bifgdum.o
…on 500th target…
Cc build\mingw.release\tads\cmap.o
Cc build\mingw.release\tads\cmd.o
Cc build\mingw.release\tads\dat.o
Cc build\mingw.release\tads\dbgtr.o
Cc build\mingw.release\tads\errmsg.o
Cc build\mingw.release\tads\execmd.o
Cc build\mingw.release\tads\fio.o
Cc build\mingw.release\tads\fioxor.o
Cc build\mingw.release\tads\getstr.o
Cc build\mingw.release\tads\ler.o
Cc build\mingw.release\tads\linfdum.o
Cc build\mingw.release\tads\lst.o
Cc build\mingw.release\tads\mch.o
Cc build\mingw.release\tads\mcm.o
Cc build\mingw.release\tads\mcs.o
Install build\dist\geas.exe
1 file(s) copied.
Cc build\mingw.release\tads\obj.o
Cc build\mingw.release\tads\oem.o
Cc build\mingw.release\tads\os0.o
Cc build\mingw.release\tads\oserr.o
Cc build\mingw.release\tads\osifc.o
Cc build\mingw.release\tads\osnoui.o
Archive build\mingw.release\tads\libtads3.a
Cc build\mingw.release\tads\osrestad.o
Cc build\mingw.release\tads\osstzprs.o
ar: creating build\mingw.release\tads\libtads3.a
Cc build\mingw.release\tads\ostzposix.o
Cc build\mingw.release\tads\out.o
Cc build\mingw.release\tads\output.o
Cc build\mingw.release\tads\ply.o
Archive build\mingw.release\tads\libtads3.a
Cc build\mingw.release\tads\qas.o
Cc build\mingw.release\tads\regex.o
Cc build\mingw.release\tads\run.o
Cc build\mingw.release\tads\runstat.o
Cc build\mingw.release\tads\suprun.o
Cc build\mingw.release\tads\trd.o
Cc build\mingw.release\tads\voc.o
Cc build\mingw.release\tads\vocab.o
Install build\dist\libvorbis-0.dll
1 file(s) copied.
Install build\dist\libvorbisfile-3.dll
1 file(s) copied.
Install build\dist\mikmod.dll
Install build\dist\gargoyle.exe
1 file(s) copied.
Install build\dist\libgarglk.dll
1 file(s) copied.
1 file(s) copied.
Archive build\mingw.release\tads\libtads2.a
ar: creating build\mingw.release\tads\libtads2.a
Link build\mingw.release\tads\tadsr.exe
Install build\dist\tadsr.exe
1 file(s) copied.
…updated 544 target(s)…
‘makensis.exe’ is not recognized as an internal or external command,
operable program or batch file.
… finished packaging!
Press any key to continue . . .

C:\garglk-203-tads-upgrade>gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=C:/TDM-GCC-32/bin/…/libexec/gcc/mingw32/5.1.0/lto-wrapper.exe
Target: mingw32
Configured with: …/…/…/src/gcc-5.1.0/configure --build=mingw32 --enable-languages=ada,c,c++,fortran,lto,objc,obj-c++ --enable-libgomp --enable-lto --enable-graphite --enable-libstdcxx-debug --enable
-threads=posix --enable-version-specific-runtime-libs --enable-fully-dynamic-string --enable-libstdcxx-threads --enable-libstdcxx-time --with-gnu-ld --disable-werror --disable-nls --disable-win32-regis
try --disable-symvers --enable-cxx-flags=’-fno-function-sections -fno-data-sections -DWINPTHREAD_STATIC’ --prefix=/mingw32tdm --with-local-prefix=/mingw32tdm --with-pkgversion=tdm-1 --enable-sjlj-excep
tions --with-bugurl=http://tdm-gcc.tdragon.net/bugs
Thread model: posix
gcc version 5.1.0 (tdm-1)

C:\garglk-203-tads-upgrade>[/spoiler]