[10:37:09] Dominus: Marzo: I was just looking for you! Yesterday you didn't give the pastebin to the patch but again your msys2 instructions :)
[10:37:31] Dominus: when I finally had time late at night I was stopped by not having the patch :)
[10:37:33] Marzo: Here you go: https://pastebin.com/bQFaWYEt
[10:37:46] Marzo: Seems like I forgot to copy the link
[10:52:55] Dominus: Marzo: do you have a highdpi capable monitor?
[10:53:00] Marzo: No
[10:53:24] Marzo: Hm, that is not strictly true; my work computer has one
[10:53:57] Marzo: I could try to set up Exult on it to see how it works
[10:54:24] Dominus: yes, because I have an odd issue that I thought I fixed...
[10:54:27] Dominus: https://github.com/exult/exult/commit/c3d7afb999217103745e5e73c7cd42ab24fa57eb
[10:54:38] Marzo: This could happen on these winter months, since I am carrying it home in case of snow
[10:55:24] Dominus: AFAIK this fixed it on Windows but on OS X I now I have this problem, that on higher resolutions the party suddenly changes direction when walking a straight line....
[10:55:51] Dominus: I need to look into this again
[10:57:14] Dominus: and even though my imac is highdpi capable, to test it out I need to boot Windows again and most of the times I have other things going on that prevent me from doing this or from staying too long in Windows....
[10:57:52] Dominus: in other news, marzo, your instructions worked fine on Windows 10 64bit and msys2-64 compiling in 32bit
[10:58:41] Marzo: Good to know
[10:58:53] Dominus: except... it needs libintl-8.dll, too
[10:58:55] Marzo: I was documenting everything along the way, but I was worried I might have missed something
[10:59:13] Marzo: What needs libintl-8.dll?
[10:59:18] Dominus: Exult
[10:59:24] Dominus: it won't start
[10:59:34] Marzo: That's odd
[10:59:37] Dominus: it says it's missing that dll
[11:00:30] Marzo: OH
[11:00:35] Marzo: It is because of glib
[11:02:01] Marzo: Lets see: in Makefile.mingw, under 'dist' and 'debug', add the following line:
[11:02:02] Marzo: cp $(MSYSTEM_PREFIX)/bin/libintl-8.dll $(U7PATH)
[11:02:15] Marzo: Then under 'dist', add this:
[11:02:22] Marzo: cp $(MSYSTEM_PREFIX)/bin/libintl-8.dll $(U7PATH)/Exult
[11:03:05] Marzo: I need to extract those dependencies into their own rules to avoid repetition
[11:05:09] Marzo: Hm
[11:05:25] Marzo: Adding intl will also require libiconv-2.dll
[11:05:31] Marzo: Add lines with it as well
[11:06:38] Marzo: So because of fluidsynth, we need glib, which needs libintl, which needs libiconv
[11:07:18] Dominus: it's why I don't have fluidsynth enabled for the OS X snapshots
[11:16:02] Dominus: aarrgh... and of course the cp lines need to be in the install rules as well
[11:20:23] Dominus: and yes, that worked fine now
[11:21:09] Dominus: (except I wanted to quite Exult via the command-q which you use on OS X and it ended my VM abruptly :))
[12:38:34] Marzo: Dominus: that is actually not that bad; in my side, Exult and ES were aborting on startup because glib pulls libpcre, and another program I had installed had a 64-bit version of it, and added it to the PATH variable
[12:39:16] Marzo: So Exult and ES were picking up some random 64-bit library from elsewhere in the system, which I was not even aware was there
[12:39:32] Marzo: I only found it out because of dependency walker
[12:56:16] Marzo: Dominus: now the question is: do we go for c++14 (as I suggested to Jeff) or c++11?
[12:56:43] Marzo: I see very little benefit for c++11
[13:14:13] Dominus: I'm fine either way.
[13:14:44] Dominus: and if we decide to abandon W9x also
[13:15:16] Dominus: do you know the cut off point for Windows? What would be the oldest we still support?
[13:15:21] Dominus: XP or 2k?
[13:31:11] Marzo: I think either one is probably fine, and about the same effort
[13:31:26] Marzo: Except that I doubt we know anyone that can test 2k
[14:05:38] Dominus: I have it as a VM :)
[14:09:10] Dominus: https://twitter.com/astr0baby/status/1065722071790030848
[14:09:11] Marzo: In that case, can you check if the versions of Exult built with those specifications run on XP and 2k? :-p
[14:09:47] Dominus: I have no idea whether what I compiled on 10-64bit even runs anywhere else :)
[14:09:55] Dominus: but I'll give it a try
[14:10:32] Marzo: You can try compiling as 32-bit before :-p
[14:11:10] Marzo: Going forward, we should make sure that 64-bit Exult works on Windows
[14:11:24] Marzo: I know it works on Linux and on OSX
[14:11:35] Marzo: But Windows has some differences
[14:11:53] Dominus: yes, right now I did only build for 32bit (your comment in the instructions made me skip that)
[14:12:07] Marzo: Well, I actually have to fix the Makefile I sent you
[14:12:27] Marzo: SIZEOF_INTP should be 8 on 64-bit Windows
[14:13:08] Marzo: I am removing the redundancy on the makefile, and will fix this as well
[14:13:20] Marzo: Then I will send another patch
[14:13:36] Marzo: I also renamed the maptools* targets into plugin*
[14:13:50] Dominus: I was about to ask about that one :)
[14:17:14] Dominus: Marzo: the 32bit build from Windows 10 does not run on XP. "System entry point "GetFileInformationByHandleEx" was not found
[14:17:45] Dominus: and studio complains about Dwrite.dll not being found...
[14:17:55] Marzo: Hm
[14:18:14] Marzo: Probably some of the dependencies require post-XP stuff
[14:18:34] Marzo: Will look into it
[14:19:11] Dominus: yeah, smooth also aborts with something else (Procedur entry point "initializeConditionVariable" not found in Kernel32.dll)
[14:19:56] Dominus: mockup as well (so probably SDL_image library problem)
[14:20:51] Marzo: Or SDL
[14:21:54] Dominus: it works on Windows 7 32bit
[14:22:44] Dominus: it could very well be that SDL abandoned XP, or the lib needs to be built differently
[14:23:14] Marzo: That does not seem to be the case: https://wiki.libsdl.org/Installation#Windows_XP.2FVista.2F7
[14:37:11] Marzo: Dominus: can you downoad the 32-bit version of dependency walker (http://www.dependencywalker.com/) into your XP VM, open Exult.exe with it, save, and send me the saved data? Bonus points for also doing ES
[14:42:22] Dominus: on it, both are missing system dlls it seems. IESHIMS.dll, MSOERT2.dll, WER.dll, WZCDLG.dll (and Studio additionally DWRITE.dll=
[14:42:43] Marzo: I think these are delay-load libraries
[14:42:53] Marzo: Meaning they are linked to if available
[14:43:16] Marzo: I am thinking that the culprit for GetFileInformationByHandleEx is glib
[14:43:45] Marzo: Which we need due to fluidsynth
[14:44:45] Dominus: https://www.dropbox.com/s/zp8x112ffiy3d8f/dwi.zip?dl=0 the two dwi files
[14:44:46] Marzo: And for initializeConditionVariable as well
[14:44:58] Marzo: Merci
[14:45:03] Dominus: but that shouldn't affect Studio, or?
[14:45:16] Marzo: Studio gets glib from GTK+
[14:45:21] Dominus: right
[14:45:59] Dominus: gtk is just not nice on any system :)
[14:50:35] Marzo: With youe dwi for Exult, I can say for certain that the culprit is in fact glib
[14:51:00] Marzo: It is the only import in all dlls that is not present on WinXP
[14:52:49] Marzo: Can you try recompiling Exult by editing Makefile.mingw to set FLUIDSYNTH_LIBS to empty, and deleting -DUSE_FLUIDSYNTH_MIDI from CPPFLAGS?
[14:53:11] Marzo: This should make Exult work on XP, if there is nothing else being imported from elsewhere
[14:53:27] Dominus: sure, can do
[14:53:50] Marzo: And I can add some checks in the Makefile to do this automatically if fluidsynth is not present/not wanted
[14:54:17] Dominus: that would be a nice addition
[14:54:57] Marzo: In the end, what I really want is to get rid of Makefile.mingw in favor of autotools, so that all OSes are built the same way
[14:55:21] Marzo: But I will need to rework drag-drop, especially on Windows, for that
[14:56:06] Dominus: norma autotooling would be best
[14:59:23] Marzo: ES: 2 missing imports from kernel32.dll due to glib (which ES depends directly on); 2 missing imports from WS2_32.dll and 4 from iphlapi.dll due to, both due to due to libgio which is included by libgdk; and dwrite.dll due to libfreetype
[15:00:33] Marzo: I now remember that glib dependency from ES actually is direct (some codepage conversion functions) as well as indirect (gtk+/gdk)
[15:01:21] Marzo: And actually, dwrite.dll dependency comes from libharfbuzz, which is brought by freetype
[15:02:31] Marzo: harfbuzz was code from freetype, pango, and Qt, combined together and extracted from their origins
[15:03:51] Dominus: Marzo, success on Exult without Fluidsynth on XP
[15:04:12] Marzo: So while it seems that Exult works on XP with this change, we likely won't be able to get ES working on XP
[15:04:36] Dominus: I remember that there is somewhere a "simple" fluidsynth that is without glib
[15:08:14] Dominus: https://github.com/kirbyfan64/fluidsynth/tree/glib_removal/fluidsynth
[15:10:05] Marzo: Now to figure out a way to get this in msys2
[15:10:24] Marzo: Hm
[15:10:39] Marzo: He/she provides a replacement for condition variables
[15:11:04] Marzo: That isn't good; implementing this kind of thing is difficult
[15:12:33] Dominus: :(
[15:21:33] Marzo: Exult without fluidsynth depends on 8 libraries
[15:33:02] Dominus: building in ogg/vorbis would take care of 4 :)
[15:39:23] Marzo: That's odd
[15:39:35] Marzo: The generated binary still depends on fluidsynth???
[15:42:04] Dominus: not mine
[15:42:40] Marzo: I did a completely clean build
[15:43:07] Dominus: that's odd because I did, too
[15:43:22] Dominus: but then my build system is probably much cleaner than your atm
[15:43:44] Marzo: I am verifying that the g++ commands issues did not include anything related to fluidsynth (it does not)
[15:43:51] Marzo: And still...
[15:45:25] Dominus: damn, my W2k VM is broken...
[15:45:53] Marzo: Doing a full clean build this time (cleaning also ES and tools)
[15:46:03] Dominus: Marzo: I did exactly what you told me to do with the makefile.mingw and it built without fluidsynth dependency
[15:46:10] Marzo: I know
[15:46:16] Marzo: Which is why I am stumped
[15:46:42] Marzo: I did basically that, but adding a variable that can be specified to remove the fluidsynth dependency
[16:00:33] Dominus: grr... of course I don't have my W2k iso around anymore
[16:02:56] Marzo: Full recompilation from scratch, and it still depends on fuildsynth...
[16:03:49] Marzo: The only two lines that contain "fluidsynth" are for the compilation of the (effectively empty) FluidSynthMidiDriver.cpp and for linking with its object file
[16:05:38] Marzo: AH
[16:05:45] Marzo: Grrr...
[16:07:46] Marzo: Dumb mistake in the refactored makefile
[15:39:23] Marzo: That's odd
[15:39:35] Marzo: The generated binary still depends on fluidsynth???
[15:42:04] Dominus: not mine
[15:42:40] Marzo: I did a completely clean build
[15:43:07] Dominus: that's odd because I did, too
[15:43:22] Dominus: but then my build system is probably much cleaner than your atm
[15:43:44] Marzo: I am verifying that the g++ commands issues did not include anything related to fluidsynth (it does not)
[15:43:51] Marzo: And still...
[15:45:25] Dominus: damn, my W2k VM is broken...
[15:45:53] Marzo: Doing a full clean build this time (cleaning also ES and tools)
[15:46:03] Dominus: Marzo: I did exactly what you told me to do with the makefile.mingw and it built without fluidsynth dependency
[15:46:10] Marzo: I know
[15:46:16] Marzo: Which is why I am stumped
[15:46:42] Marzo: I did basically that, but adding a variable that can be specified to remove the fluidsynth dependency
[16:00:33] Dominus: grr... of course I don't have my W2k iso around anymore
[16:02:56] Marzo: Full recompilation from scratch, and it still depends on fuildsynth...
[16:03:49] Marzo: The only two lines that contain "fluidsynth" are for the compilation of the (effectively empty) FluidSynthMidiDriver.cpp and for linking with its object file
[16:05:38] Marzo: AH
[16:05:45] Marzo: Grrr...
[16:07:46] Marzo: Dumb mistake in the refactored makefile
[16:14:50] Marzo: Out of curiosity, have you tested to see which tools work on XP?
[16:17:05] Marzo: Hm
[16:17:11] Marzo: This seems promising: https://gist.github.com/cchantep/9345d51889c0148c2256
[16:22:46] Dominus: I've not extensively tried them
[16:23:23] Dominus: just a quick doubleclick and it seemed that they all showed something before the command prompt auto closed again. Except for smooth and mockup
[16:23:40] Marzo: Odds are that mockup, smooth, and ucc are the only ones you need to test
[16:25:26] Dominus: do you want a dependency walker for smooth and mockup as well?
[16:25:37] Marzo: Yes, that may help
[16:29:19] Dominus: https://www.dropbox.com/s/2p4dyxmzq6h6ukh/toolsdwi.zip?dl=0
[16:29:53] Dominus: ucc seems to work... but ucc always hangs when you don't tell it something to do :)
[16:30:12] Marzo: It stays waiting for you to type usecode in the command line
[16:30:21] Marzo: Which, to be honest, is not that useful
[16:31:06] Dominus: :)
[16:31:36] Dominus: but yeah, that works. it complains about my broken usecode
[16:31:51] Marzo: mockup and smooth fail because SDL2_image pulls in libwebp, which requires functions not present on XP kernel32.dll
[16:32:43] Dominus: this is an awful can of worms... those libs...
[16:59:51] Marzo: Dominus: can you do me a favor and build again the 32-bit Exult with fluidsynth dependency?
[16:59:59] Marzo: I will be giving you something to test soon
[17:00:21] Dominus: yes, I can do that
[17:03:26] Marzo: When it is done, copy these over the libraries that get copied to the exe directory: https://drive.google.com/open?id=158-dS5sc4TzOY3DssNWP94zBFmVwrDmH
[17:03:37] Marzo: And see if it works in XP with these libraries
[17:04:38] Marzo: If it works, we can add instructions for compiling glib (albeit an older version) for a XP build
[17:08:24] Marzo: Yeah, I know how it goes
[17:08:39] Dominus: it would have been so nice if Colourless had done a SDL_scaler lib :)
[17:12:34] Dominus: SUCCESS
[17:12:44] Dominus: Exult starts up with these
[17:12:45] Marzo: :-)
[17:13:27] Marzo: So I will remove the fluidsynth-less setup and give instructions on how to build glib for Windows XP
[17:13:48] Marzo: It is actually very easy
[17:14:04] Dominus: *OR* provided these dlls for XP users?
[17:14:48] Marzo: That works
[17:15:18] Marzo: But having the instructions in readme.win32 helps to keep them from getting lost
[17:16:23] Marzo: Especially since a patch is needed to the glib code to get it to compile due to -Werror=format-nonliteral
[17:17:09] Marzo: And the readme can always be edited later with the link to the downloads
[17:20:11] Dominus: yes, documenting everything is best :)
[17:33:56] Marzo: Dominus: I added two more libraries from glib to the link I gave you (https://drive.google.com/open?id=158-dS5sc4TzOY3DssNWP94zBFmVwrDmH)
[17:34:09] Marzo: They should reduce dependencies of ES
[17:34:24] Marzo: If all goes well, there is only one thing missing to get ES working on XP
[17:34:50] Marzo: Can you redo ES on dependency walker so I can confirm?
[17:35:22] Dominus: hmm, I only see the same two dlls in there
[17:36:46] Marzo: Let me double-check
[17:37:55] Marzo: Deleted the old one just in case
[17:37:56] Marzo: https://drive.google.com/open?id=1p5VwGJSsg33Dc8XQOtNnEhQ8f0w6CLos
[17:44:37] Dominus: Marzo: https://www.dropbox.com/s/c4qosf9plpf3nxb/exult_studio.dwi.zip?dl=0
[17:46:46] Marzo: Yeah, ES won't work with these versions of glib libraries
[17:47:23] Marzo: They lack some functions which ES needs
[17:47:31] Dominus: bummer
[17:48:07] Marzo: We would still have to find a way to go around the dwrite dependency of freetype
[17:48:22] Marzo: So no great loss there
[17:49:00] Marzo: Can you try mockup and smooth with the official SDL2_image DLLs? They are here: https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.4-win32-x86.zip
[17:49:01] Dominus: I think having a working Exult on XP is great but if need be Exult Studio only on higher Windows...
[17:49:16] Marzo: Agreed
[17:49:43] Dominus: we might need to ask AgentOrangeGuy... after all he seems to be the most ambitious modder atm
[17:52:20] Dominus: the official sdl-image dlls work
[17:52:33] Marzo: Great
[17:52:48] Marzo: Need to report a bug to msys2 package maintainers then
[17:53:04] Dominus: I might even have my W2k VM up and running soon... :)
[17:53:05] Marzo: Because SDL2 image is supposed to only load the DLLs if hey are needed
[17:53:38] Marzo: So to recap: we now have Exult and tools working on XP
[17:54:56] Dominus: yes
[17:55:26] Dominus: seems not to work on W2k, but that is a kind of hopeless thing...
[17:55:54] Dominus: I can't even connect to Windows update and it reports a msvcrt.dll error on Exult.
[18:04:19] Marzo: Hm. It might be possible to compile newer glib for WinXP
[18:15:02] Dominus: whee :)
[18:16:01] Dominus: there is a reason that Kirben stayed so low with the lib versions and also provided the dlls :)
[18:16:15] Marzo: Yeah, I know
[18:16:28] Marzo: But it is painful for the developers
[18:17:10] Marzo: For example, it is impossible to upgrade ES to use GtkBuilder, or to use new c++ stuff that makes life a lot easier
[18:17:37] Marzo: Seems like the last version of glib that supports XP is 2.54.3
[18:18:06] Marzo: And it seems like a better candidate (if it works) because it does not require me to include a patch for it
[18:20:07] Marzo: Dominus: https://drive.google.com/open?id=1D88Jqf5ocsTdw5CyPrOu6_EGqybwjTM0
[18:20:34] Marzo: try Exult with these, please, and do the dependency walker for ES once more
[18:20:57] Marzo: With luck, the only thing we will need for ES is a dwrite-less freetype
[18:22:18] Dominus: I'll test in an hour... dinner time
[18:22:37] Marzo: bon appetit
[18:50:16] Dominus: Marzo: https://www.dropbox.com/s/c4qosf9plpf3nxb/exult_studio.dwi.zip?dl=0
[18:50:30] Dominus: Exult still runs with those :)
[18:50:40] Marzo: Excellent
[18:54:27] Marzo: Hm. Seems libatk, libpango, libpangocairo will cause issues
[18:54:41] Marzo: Can you check if ES works with this version of libharfbuzz: https://www.dropbox.com/s/c4qosf9plpf3nxb/exult_studio.dwi.zip?dl=0
[18:54:59] Marzo: (I had just finished compiling it when you came back)
[19:00:32] Dominus: Marzo, you gave me my dropbox link :)
[19:01:09] Dominus: seems Windows 2k is stuck on older msvcrt.dll and msys2 is using newer functions....
[19:01:18] Marzo: Hm. The clipboard seems to be failing sporadically from Windows->Linux
[19:03:08] Marzo: Here it is: https://drive.google.com/open?id=1jwDZjzkbvEKQ1XyAc_ftUtEg56mFDobo
[19:05:25] Dominus: hmm, this one complains about missing procedure entry point g_log_stuctured_standard in libglib-2.0-0.dll
[19:05:40] Marzo: Yeah, I was hoping this would not be an issue
[19:06:00] Dominus: do you need a dwi?
[19:06:37] Marzo: No need, I already know the culprits
[19:06:49] Marzo: There are two ways I can go about this: (1) obtain libatk, libpango, and libpangocairo that use an earlier version of glib
[19:07:06] Marzo: (2) add the code for this function from new glib
[19:08:08] Dominus: earlier version sounds more reliably but... could be more dlll hell
[19:22:59] Dominus: on the bright side, Exult and Exult Studio work fine in Crossover (Wine) :)
[19:23:07] Marzo: :-)
[19:23:21] Marzo: In a couple minutes, I will have something more for you to test
[19:27:10] Marzo: Hm. Make that "a few minutes"
[19:27:26] Marzo: Everything in glib depends on the one header file I just edited
[19:30:23] Marzo: Dominus: https://drive.google.com/open?id=1cmqpT-pxb038oFC_psqzV1UBBq59fp2N
[19:33:12] Dominus: i fear to say it... same error
[19:33:25] Marzo: Oh?
[19:34:11] Dominus: (unless you didn't want me to keep the newer libharfbuzz)
[19:34:19] Marzo: I did, yes
[19:34:49] Marzo: I am finding this odd, because I added the function to the library
[19:35:38] Dominus: i doublechecked, the new glib dlls are in there
[19:35:46] Marzo: Ah
[19:35:52] Marzo: I need to add something
[19:35:59] Marzo: And recompile EVERYTHING
[19:36:11] Dominus: yeah :(
[19:45:54] Marzo: Dominus: https://drive.google.com/open?id=1wSG6Z6blytvAgS91dTTkqi43CfkutFj4
[19:46:01] Marzo: Hopefully, that works
[20:18:17] Dominus: marzo, we have a winner!
[20:18:28] Marzo: /micdrop
[20:18:54] Marzo: Will push the instructions on a separate branch
[20:19:24] Dominus: Exult works, Exult Studio works, connection between both works!
[20:19:47] Marzo: And after we talk to Kirben, we can merge to master
[20:19:58] Marzo: Also, I need to update the installer scripts
[20:23:06] Marzo: With this, we can even build c++14 or c++17 and still support Win XP
[20:24:16] Marzo: https://github.com/exult/exult/commits/msys2
[20:25:26] Marzo: We probably want to store the glib patch elsewhere
[20:27:43] Marzo: Anyways, I am done for today
[20:28:08] Dominus: that was a mighty undertaking today :)
[20:28:20] Dominus: the glib patch could go into the Win32 folder
[20:28:20] Marzo: Indeed
[20:28:28] Marzo: It is there at the moment
[20:28:59] Marzo: I guess we both agree it is the most sensible place for it
[20:29:00] Dominus: he he, I wasn't there yet at reading through the changes :)