Skip to content

How to Compile (Windows Vista 32bit)

ZERICO2005 edited this page Mar 5, 2024 · 20 revisions

How to Compile (Windows Vista 32bit)

(2024, March 5th)

This guide will show you how to compile ABS-Fractal-Explorer v1.0.2 on a Windows Vista 32bit system. You will also need an internet connection.

0. Recommended Software

7-Zip: https://7-zip.org
Very handy for unzipping/extracting files. Latest version works on Windows Vista 32bit

Notepad++ (6.2.3): https://notepad-plus-plus.org/downloads/
A decent text editor that supports syntax highlighting. Most recent version won't work, but version 6.2.3 does work on Windows Vista 32bit. Not sure if version 7.X.X or later works

Displaying Hidden Folders and File Extensions:
It can be annoying to navigate through File-Explorer when file extensions and hidden folders are not shown. To fix this, go to Computer/File-Explorer, then click on Organize, and select Folder and Search Options. Click on the View tab, and click on Show hidden files and folders as well as unchecking Hide extensions for known file types.

1. MinGW Setup

This is the original MinGW, not MinGW64. To download, go to the link mentioned in the Wikipedia page https://en.wikipedia.org/wiki/MinGW, which is osdn.net/projects/mingw at the time of writing. The website may take awhile to respond, you may have to reload the webpage, or go back to it later if you can't connect. You go through the download steps and install it, then you wait awhile for everything to download from the same slow to respond website.

Once you are in the MinGW Installation Manager, select Basic Setup on the far left, then Right-Click and Mark for Installation the following items: mingw-developer-toolkit-bin, mingw32-base-bin, mingw32-base-bin, mingw32-gcc-g++-bin, and msys-base-bin. Afterwards, select Advanced Setup on the far left, then look for mingw32-pthreads-w32-dev and mark it for installation. When you are ready to install the packages, go the the top left, click on Installation, then click Apply Changes.

2. Path/Environment Variables

Go to something like C:\MinGW\bin in Command Prompt as an Admin, and then run mklink make mingw32-make.exe. Follow these directions Start --> Computer --> Right Click --> Properties --> Advanced System Settings --> Advanced --> Environment Variables, Then click on Environment Variables, afterwards click on the row that says Path under System variables and click Edit. You will see some dialog box, go to the end of it, which might display something like ;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\, type ;C:\MinGW\bin at the end of it.

3. SDL2

Download SDL2-devel-2.0.3-mingw.tar.gz from libsdl.org, or download it directly from here. Since we are on a 32bit system, we will use i686-w64-mingw32. Take the bin, include, lib, and share directories and copy them over into C:\MinGW. According to some Stack-Overflow posts, SDL2-devel-2.0.3 has some bug with winapifamily.h, to fix it replace the code in SDL_platform.h with this: https://raw.githubusercontent.com/libsdl-org/SDL/1496be6e4b3d732eaa46a691590cb06a630c866b/include/SDL_platform.h.

4. std::thread in MinGW

#include<thread> and std::thread don't work in MinGW out of the box, so we will have to use a work around to fix this. You can obtain some header files from this GitHub Repo: https://github.com/meganz/mingw-std-threads. Afterwards copy the header files into the ./src directory of ABS-Fractal-Explorer v1.0.2.

mingw.thread.h may ask you to to define _WIN32_WINNT. Defining it it gamma.h can result in redefinition warnings, so one thing you can do is going to lines 60 to 62 of mingw.thread.h, commenting them out, and adding the code below to set _WIN32_WINNT for mingw.thread.h. You can also comment out lines 44 to 46 to remove/dismiss the pragma message that pops up.

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
#endif

0x0600 is NT 6.0 (Windows Vista), and 0x0601 is NT 6.1 (Windows 7). Other operating system codes are listed here: https://learn.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt?view=msvc-170

Additionally, you can uncomment #define DISABLE_MULTITHREADING in gamma.h to compile ABS-Fractal-Explorer v1.0.2 without multi-threading.

5. Importing other Libraries

stb is needed to write/save images. You can place the folder with all of its include files in MinGW\include\stb

SDL2 and stb_image don't come with MinGW/MSYS, so they have to be copied in manually. You could probably copy them over from MSYS2, from either C:\msys64\mingw64 or C:\msys64\mingw32. You place in C:\MinGW as shown in MinGW.zip.

6. Compiling in MSYS

(I haven't tried to use Git Bash on Windows Vista yet, so you may have to clone the repo through other means, such as downloading the zip file of the repo)

Navigate to C:\MinGW\msys\1.0 and click on msys.bat. Set MSYS to the project directory by copying the file path in quotations. To paste the file path, you do Ctrl Shift Insert, or you can right click the title-bar and go to the Edit menu. Once you have the current directory set,

7. Striping the Executable File (Optional)

If you run the .exe on Windows 10, Windows defend may flag the program for Win32/Wactac.B!ml. To prevent this from happening, you will have to run a strip command on the .exe to remove all symbols and debug information. After the code compiles in MSYS, you would just need to type strip ./bin/Program-Name.exe. This also has the additional benefit of reducing the size of the executable.


See Also: