Building EDuke32 on Windows: Difference between revisions

From EDukeWiki
Jump to navigation Jump to search
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Distribution intro}}
{{Distribution intro}}


Before you begin, you will need to [[Acquiring the EDuke32 Source Code|acquire the EDuke32 source code]].
There are several options available to develop EDuke32 on Windows. Before you begin, you will need to [[Acquiring the EDuke32 Source Code|acquire the EDuke32 source code]].


==MinGW/GCC==
==[https://www.visualstudio.com/ Microsoft Visual Studio]==


This setup is personally used by [[Hendricks266]].
For many developers, Visual Studio will be the easiest and most familiar way to work with the source. While the EDuke32 team prefers GCC for production builds, the VS IDE is a valuable and useful resource for development.


===setup===
===setup===


==== [http://mingw-w64.sourceforge.net/ MinGW-w64] ====
[https://www.visualstudio.com/downloads/ Visual Studio can be downloaded from Microsoft's website.] The free version, ''Visual Studio Community'', works perfectly. If you don't want the IDE, the ''Build Tools for Visual Studio'' will install the toolchain by itself.
 
Visual Studio 2013 is the minimum supported version for building EDuke32, but the newest version is always recommended.


MinGW-GCC is the ''de facto'' standard for free compilers on Windows.
===building===


#First, install MSYS using the '''[http://sourceforge.net/downloads/mingw/ automated MinGW installer]'''. Make sure all MSYS components are installed. This should be relatively straightforward and will install the shell and utility commands.
====from the IDE====
#*This guide assumes that they're installed in '''c:/MinGW''' and '''c:/MinGW/msys''' -- from the wording on their page, anything else is BAD.
 
#Next, download '''[http://www.nasm.us/ NASM]''' and extract its contents to MSYS' bin folder, so nasm.exe is located there.
Either click on the green play button, or navigate '''Build → Build eduke32''' in the menus to start the build process.
#*Sample path: <code>C:\MinGW\msys\1.0\bin\nasm.exe</code>
 
#Download any and all MinGW-w64 packages you would like. These contain the entire toolchain. Win32 threads are preferred to POSIX threads, and seh (for 64-bit) and dwarf (for 32-bit) exception handling methods are preferred to sjlj.
====from the command line====
#*[http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/ Targeting Win32 (i686)]
 
#*[http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/ Targeting Win64 (x86_64)]
You will need to set up your paths to contain the VS toolchain. Newer versions provide shortcuts in the start menu to start a terminal with the appropriate settings. Doing so manually is out of scope of this article.
#You are going to want to extract these in an organized fashion. Use these paths unless you are prepared to make edits to the batch files included with the Setup Helper below.
 
#*<code>C:\MinGW-w64\mingw32\bin\gcc.exe</code>
Navigate to ''platform/Windows'' in the EDuke32 source code and enter:
#*<code>C:\MinGW-w64\mingw64\bin\gcc.exe</code>
 
#After that, download, extract, and run the '''[[MinGW EDuke32 Setup Helper]]'''. (You may need to run it as an administrator for it to take full effect.) It will help ensure that everything is installed correctly as well as modify your PATH environment variable for you so you can run the compiler from any directory allowing you to compile EDuke32.
nmake -f msvc.mak
#Unfortunately, one deficiency in MinGW-w64 is that the each of the two targets (32-bit and 64-bit) require their own separate executables, instead of using one binary with the <code>-arch</code> parameter as on other platforms. When building EDuke32, the executables generated will match the target of whatever compiler is the highest in PATH--no extra make parameters needed.
 
#*The Setup Helper sets up the 64-bit compiler by default. If you would like to change the default, run the included <code>i686-MinGW-w64.bat</code>. You can revert with <code>x86_64-MinGW-w64.bat</code>.
==MinGW-w64/GCC with MSYS2==
#**If you have configured Windows Explorer so that the "Launch folder windows in a separate process" option is enabled, you will need to restart explorer.exe (either by terminating and relaunching it in Task Manager, or restarting your computer) for changes made to persistent PATH to take effect in command prompt windows launched from within Explorer.
 
#*Otherwise, for a quick test, execute the commands <code>override32</code> and <code>override64</code> to change the selected compiler for the current command prompt window only. (These are installed by the Setup Helper.)
For a more Unix-like style of development, [http://www.msys2.org/ MSYS2] provides a bash shell, native GCC and clang builds, and the ''pacman'' package manager originally from Arch Linux.
#One final note: If you are trying to build '''ebacktrace1.dll''' and are getting errors about a missing "bfd.h", you need to copy the following files from <code><nowiki><root>\include\</nowiki></code> to <code><nowiki><root>\<target>-w64-mingw32\include\</nowiki></code>:


ansidecl.h
===tips to remember===
bfd.h
bfdlink.h
dis-asm.h
symcat.h


==== [http://clang.llvm.org/ clang] ====
*You can press the middle mouse button to paste text into the MSYS2 terminal, or right-click for more options.
*You can navigate folders using the <code>cd</code> command (short for ''change directory''), or the <code>pushd</code> command, which adds the new path you specify to a stack, allowing you to return to your previous location with <code>popd</code>.
*Paths use forward slashes (<code>/</code>) instead of backslashes (<code>\</code>) and drive letters take the form <code>/c/</code> instead of <code>C:\</code>, though it will likely understand either way if you put your path in <code>"quotes"</code>.


Clang is another compiler that complements and works closely in tandem with MinGW. It is mainly used for its highly human readable diagnostic descriptions of compiler errors and warnings.
===setup===


Installation is simple. [http://llvm.org/releases/ Download the binaries] marked for "Mingw32/x86", which may be marked "''Experimental''". From here you have two options. You can extract the contents of the archive in such a way so that its directory structure merges with MinGW's--you will have <code>C:\MinGW\msys\1.0\bin\clang.exe</code> and so on. The other is to extract the data to its own folder, possibly simplifying the name, and adding it on its own to PATH--<code>C:\clang\bin\clang.exe</code>.
#First, [http://www.msys2.org/ install MSYS2], following the instructions on that page fully. Install whichever architecture matches your computer; both can cross-compile to the other.
#*If you see the prompt <code>warning: terminate MSYS2 without returning to shell and check for updates again</code> during this process, you will need to close ''pacman.exe'', ''bash.exe'', and ''mintty.exe'' in the Task Manager, or using <code>taskkill /f /im <exe></code> from a [[Working with the Windows Command Prompt|Windows command prompt (cmd.exe)]].
#The installer will create three shortcuts in the Start Menu. Ignore '''MSYS2 MSYS'''. Open '''MSYS MinGW (32-bit)''' or '''(64-bit)''' to select which architecture you would like to target while building during the shell session that begins. Unfortunately, one deficiency in MinGW-w64 is that the each of the two targets (32-bit and 64-bit) require their own separate executables, instead of using one binary with the <code>-arch</code> parameter as on other platforms.
#Try updating all packages with <code>pacman -Syuu</code> to verify you've completed the instructions. If all is well, you should see <code>there is nothing to do</code>. Otherwise, accept the update and repeat until there is nothing further to update.
#Next, we will need to install some additional packages. The ''pacman'' package manager covers all of MSYS2 and is not affected by which shortcut you chose in the previous item.
#*These packages are necessary to build:
#**<code>pacman -S --needed --noconfirm mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain make nasm</code>
#*If you would like to use Subversion directly from the MSYS2 shell:
#**<code>pacman -S --needed --noconfirm subversion</code>
#*If you would like ''clang'' as an additional compiler option:
#**<code>pacman -S --needed --noconfirm mingw-w64-i686-clang mingw-w64-x86_64-clang</code>
#*EDuke32 includes prebuilt Windows static libraries for all external dependencies with its source code, and therefore installing them through the package manager is superfluous. However, for reference:
#**<code>pacman -S --needed --noconfirm `pacman -Ssq sdl` `pacman -Ssq libogg` `pacman -Ssq libvorbis` `pacman -Ssq flac` `pacman -Ssq libvpx` `pacman -Ssq luajit`</code>


To build with clang, append the setting <code>CLANG=1</code> to your ''make'' invocation.
You should now be all set.


===building===
===building===
Now that we've got everything together, [[Working with the Windows Command Prompt|navigate a command prompt window]] to the base directory containing the EDuke32 source code, type
Now that we've got everything together, you can try building EDuke32 and Mapster32. Navigate to the base directory containing [[Acquiring the EDuke32 Source Code|the EDuke32 source code]], type the following and ''eduke32.exe'' and ''mapster32.exe'' should be created.
  make
  make
and cross your fingers: this will attempt to build EDuke32 and Mapster32. If you ran the '''MinGW EDuke32 Setup Helper''' earlier in the instructions, it should work.
For quick testing of changes, it is recommended to build a debug executable, which skips all compiler optimizations for a much faster compile time, and also includes information about the source code called ''debug symbols'' for debugging with GDB. Append ''RELEASE=0'' to the command, like this:
 
make RELEASE=0
You can enable parallelism and build multiple objects at the same time with '-j'. The flag by itself will use the total number of threads available, or you can specify a number, such as '-j2'.
make RELEASE=0 -j4
To compile only either the game or the editor, simply give ''make'' the name of the executable, like
To compile only either the game or the editor, simply give ''make'' the name of the executable, like
  make eduke32.exe
  make RELEASE=0 -j4 eduke32.exe
To compile a version suitable for later debugging with GDB, append ''RELEASE=0'' to the command, like this:
To build with clang, append the setting <code>CLANG=1</code> to your ''make'' invocation.
  make RELEASE=0
  make RELEASE=0 -j4 eduke32.exe CLANG=1


===troubleshooting===
===troubleshooting===
Line 59: Line 72:
* If you see a barrage of error messages saying that some symbols are not defined, check whether you have all necessary prerequisites like the DirectX SDK installed and that the paths in the Makefile point to the right location.
* If you see a barrage of error messages saying that some symbols are not defined, check whether you have all necessary prerequisites like the DirectX SDK installed and that the paths in the Makefile point to the right location.
* If you get errors at the end of the build process (technically, at ''link time''), there's usually a problem with the libraries -- the linker can't find one or more ''.a'' files ''[needs explanation]''.
* If you get errors at the end of the build process (technically, at ''link time''), there's usually a problem with the libraries -- the linker can't find one or more ''.a'' files ''[needs explanation]''.
* Finally, if the executable starts but aborts shortly thereafter, a ''dynamic link library'' may be missing. Usually you'll get a helpful message with its name: check the MinGW download page then.
* Finally, if the executable starts but aborts shortly thereafter, a ''dynamic link library'' may be missing. Usually you'll get a helpful message with its name.


===debugging===
===debugging===
Line 65: Line 78:
''See [[Troubleshooting EDuke32#Debugging|Troubleshooting EDuke32]].''
''See [[Troubleshooting EDuke32#Debugging|Troubleshooting EDuke32]].''


==[https://www.visualstudio.com/ Microsoft Visual Studio]==
==MinGW-w64/GCC (Standalone)==
 
MSYS2 has some minor downsides: occasional slowness in the shell and file I/O, and the unchangeable default of using POSIX threading (requiring distribution of libwinpthread-1.dll with your binaries) instead of native Win32 threads. For advanced users seeking the best-quality binaries for distribution, it is possible to build with nothing but a standalone MinGW-w64 toolchain and [[Working with the Windows Command Prompt|cmd.exe]].


===setup===
===setup===


Visual Studio 2013 is the minimum supported version for building EDuke32, but the newest version is always recommended. The free "Community" version is entirely sufficient. If you don't want the IDE, the [https://www.visualstudio.com/downloads/ Build Tools for Visual Studio] will install the toolchain by itself.
====GCC====


===building===
#First, download one or more MinGW-w64 packages. These contain the entire toolchain. For our purposes, Win32 threads are preferred to POSIX threads, and seh (for 64-bit) and dwarf (for 32-bit) exception handling methods are preferred to sjlj.
#*[http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/ Targeting Win32 (i686)]
#*[http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/ Targeting Win64 (x86_64)]
#You are going to want to extract these in an organized fashion. For example:
#*<code>C:\MinGW-w64\mingw32\bin\gcc.exe</code>
#*<code>C:\MinGW-w64\mingw64\bin\gcc.exe</code>
#If you are interested in building 32-bit binaries, also download '''[http://www.nasm.us/ NASM]''' and extract its contents to the i686 bin folder, so nasm.exe is located there.
#*<code>C:\MinGW-w64\mingw32\bin\nasm.exe</code>
#Unfortunately, one deficiency in MinGW-w64 is that the each of the two targets (32-bit and 64-bit) require their own separate executables, instead of using one binary with the <code>-arch</code> parameter as on other platforms. You will need to use the included '''mingw32env.cmd''' or '''mingw64env.cmd''' to set up your PATH variables for a session that can use the toolchain you have set up. When building, the executables generated will match the target of whatever compiler is the highest in PATH--no extra make parameters needed.
#*Power users can permanently set up their PATH to one or the other toolchain through ''Advanced system settings'' (aka ''sysdm.cpl'') if desired. If you have enabled the "Launch folder windows in a separate process" option in Windows Explorer, you will need to restart explorer.exe (either by terminating and relaunching it in Task Manager, or restarting your computer) for changes made to persistent PATH to take effect in command prompt windows launched from within Explorer.
#MinGW-w64 comes with GNU Make, but it is named ''mingw32-make.exe''. If you don't want to type <code>mingw32-make</code> where you would normally type <code>make</code>, feel free to <code>copy mingw32-make.exe make.exe</code>.
#One final note: If you are trying to build '''ebacktrace1.dll''' and are getting errors about a missing "bfd.h", you need to copy the following files from <code><nowiki><root>\include\</nowiki></code> to <code><nowiki><root>\<target>-w64-mingw32\include\</nowiki></code>:
 
ansidecl.h
bfd.h
bfdlink.h
dis-asm.h
symcat.h
 
====clang====


====from the IDE====
This process should set up a fully working GCC. Unfortunately, clang is a different story. Recent releases of clang for Windows default to acting as a drop-in replacement for Visual Studio, rather than MinGW. However, for the adventurous:


Either click on the green play button, or navigate '''Build &rarr; Build eduke32''' in the menus to start the build process.
#Download [http://releases.llvm.org/download.html clang for Windows].
#Extract your choice of 32-bit and/or 64-bit binaries to the ''bin'' folder of the corresponding MinGW-w64 toolchain installed above.
#When building EDuke32, append <code>CUSTOMOPT="-target i686-w64-mingw32"</code> (targeting a 32-bit build) or <code>CUSTOMOPT="-target x86_64-w64-mingw32"</code> (targeting 64-bit) in addition to <code>CLANG=1</code> so clang tries to use GCC's headers instead of Visual Studio's headers.


====from the command line====
Since primary purpose of a standalone setup is producing the most optimized production binaries possible, clang on Windows may or may not be stable, robust, and mature enough to be worth it in this setting. For simple development aids such as clang's very nice diagnostic output, using it in MSYS2 should be sufficient.


You will need to set up your paths to contain the VS toolchain. Newer versions provide shortcuts in the start menu to start a terminal with the appropriate settins. Doing so manually is out of scope of this article.
===building===


Navigate to ''platform/Windows'' in the EDuke32 source code and enter:
Open '''mingw32env.cmd''' or '''mingw64env.cmd''' (double-clicking is fine) to start a [[Working with the Windows Command Prompt|command prompt window]]. Once there, building is the same as with MSYS2, with the exception of using <code>mingw32-make</code> instead of <code>make</code> if you did not copy it.


nmake -f Makefile.msvc
In order to allow building in the absence of an ''sh.exe'', the PRETTY_OUTPUT colorful build process message feature provided by EDuke32's Makefile is disabled with this setup. Advanced users can open the ''MSYS2 MSYS'' shortcut, if installed above, or [https://git-scm.com/download/win Git Bash], in combination with manually configuring their Unix-style PATH variable, to get colorful output with a standalone toolchain.


[[Category:Distribution documentation]]
[[Category:Distribution documentation]]

Revision as of 16:52, 7 March 2019

EDuke32 Distribution

Download · Source Code · APT repository · Packages
Building from source on: Linux · Windows · macOS


There are several options available to develop EDuke32 on Windows. Before you begin, you will need to acquire the EDuke32 source code.

Microsoft Visual Studio

For many developers, Visual Studio will be the easiest and most familiar way to work with the source. While the EDuke32 team prefers GCC for production builds, the VS IDE is a valuable and useful resource for development.

setup

Visual Studio can be downloaded from Microsoft's website. The free version, Visual Studio Community, works perfectly. If you don't want the IDE, the Build Tools for Visual Studio will install the toolchain by itself.

Visual Studio 2013 is the minimum supported version for building EDuke32, but the newest version is always recommended.

building

from the IDE

Either click on the green play button, or navigate Build → Build eduke32 in the menus to start the build process.

from the command line

You will need to set up your paths to contain the VS toolchain. Newer versions provide shortcuts in the start menu to start a terminal with the appropriate settings. Doing so manually is out of scope of this article.

Navigate to platform/Windows in the EDuke32 source code and enter:

nmake -f msvc.mak

MinGW-w64/GCC with MSYS2

For a more Unix-like style of development, MSYS2 provides a bash shell, native GCC and clang builds, and the pacman package manager originally from Arch Linux.

tips to remember

  • You can press the middle mouse button to paste text into the MSYS2 terminal, or right-click for more options.
  • You can navigate folders using the cd command (short for change directory), or the pushd command, which adds the new path you specify to a stack, allowing you to return to your previous location with popd.
  • Paths use forward slashes (/) instead of backslashes (\) and drive letters take the form /c/ instead of C:\, though it will likely understand either way if you put your path in "quotes".

setup

  1. First, install MSYS2, following the instructions on that page fully. Install whichever architecture matches your computer; both can cross-compile to the other.
    • If you see the prompt warning: terminate MSYS2 without returning to shell and check for updates again during this process, you will need to close pacman.exe, bash.exe, and mintty.exe in the Task Manager, or using taskkill /f /im <exe> from a Windows command prompt (cmd.exe).
  2. The installer will create three shortcuts in the Start Menu. Ignore MSYS2 MSYS. Open MSYS MinGW (32-bit) or (64-bit) to select which architecture you would like to target while building during the shell session that begins. Unfortunately, one deficiency in MinGW-w64 is that the each of the two targets (32-bit and 64-bit) require their own separate executables, instead of using one binary with the -arch parameter as on other platforms.
  3. Try updating all packages with pacman -Syuu to verify you've completed the instructions. If all is well, you should see there is nothing to do. Otherwise, accept the update and repeat until there is nothing further to update.
  4. Next, we will need to install some additional packages. The pacman package manager covers all of MSYS2 and is not affected by which shortcut you chose in the previous item.
    • These packages are necessary to build:
      • pacman -S --needed --noconfirm mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain make nasm
    • If you would like to use Subversion directly from the MSYS2 shell:
      • pacman -S --needed --noconfirm subversion
    • If you would like clang as an additional compiler option:
      • pacman -S --needed --noconfirm mingw-w64-i686-clang mingw-w64-x86_64-clang
    • EDuke32 includes prebuilt Windows static libraries for all external dependencies with its source code, and therefore installing them through the package manager is superfluous. However, for reference:
      • pacman -S --needed --noconfirm `pacman -Ssq sdl` `pacman -Ssq libogg` `pacman -Ssq libvorbis` `pacman -Ssq flac` `pacman -Ssq libvpx` `pacman -Ssq luajit`

You should now be all set.

building

Now that we've got everything together, you can try building EDuke32 and Mapster32. Navigate to the base directory containing the EDuke32 source code, type the following and eduke32.exe and mapster32.exe should be created.

make

For quick testing of changes, it is recommended to build a debug executable, which skips all compiler optimizations for a much faster compile time, and also includes information about the source code called debug symbols for debugging with GDB. Append RELEASE=0 to the command, like this:

make RELEASE=0

You can enable parallelism and build multiple objects at the same time with '-j'. The flag by itself will use the total number of threads available, or you can specify a number, such as '-j2'.

make RELEASE=0 -j4

To compile only either the game or the editor, simply give make the name of the executable, like

make RELEASE=0 -j4 eduke32.exe

To build with clang, append the setting CLANG=1 to your make invocation.

make RELEASE=0 -j4 eduke32.exe CLANG=1

troubleshooting

If something doesn't go as planned, don't despair. Most issues are resolved rather quickly.

  • If you see a barrage of error messages saying that some symbols are not defined, check whether you have all necessary prerequisites like the DirectX SDK installed and that the paths in the Makefile point to the right location.
  • If you get errors at the end of the build process (technically, at link time), there's usually a problem with the libraries -- the linker can't find one or more .a files [needs explanation].
  • Finally, if the executable starts but aborts shortly thereafter, a dynamic link library may be missing. Usually you'll get a helpful message with its name.

debugging

See Troubleshooting EDuke32.

MinGW-w64/GCC (Standalone)

MSYS2 has some minor downsides: occasional slowness in the shell and file I/O, and the unchangeable default of using POSIX threading (requiring distribution of libwinpthread-1.dll with your binaries) instead of native Win32 threads. For advanced users seeking the best-quality binaries for distribution, it is possible to build with nothing but a standalone MinGW-w64 toolchain and cmd.exe.

setup

GCC

  1. First, download one or more MinGW-w64 packages. These contain the entire toolchain. For our purposes, Win32 threads are preferred to POSIX threads, and seh (for 64-bit) and dwarf (for 32-bit) exception handling methods are preferred to sjlj.
  2. You are going to want to extract these in an organized fashion. For example:
    • C:\MinGW-w64\mingw32\bin\gcc.exe
    • C:\MinGW-w64\mingw64\bin\gcc.exe
  3. If you are interested in building 32-bit binaries, also download NASM and extract its contents to the i686 bin folder, so nasm.exe is located there.
    • C:\MinGW-w64\mingw32\bin\nasm.exe
  4. Unfortunately, one deficiency in MinGW-w64 is that the each of the two targets (32-bit and 64-bit) require their own separate executables, instead of using one binary with the -arch parameter as on other platforms. You will need to use the included mingw32env.cmd or mingw64env.cmd to set up your PATH variables for a session that can use the toolchain you have set up. When building, the executables generated will match the target of whatever compiler is the highest in PATH--no extra make parameters needed.
    • Power users can permanently set up their PATH to one or the other toolchain through Advanced system settings (aka sysdm.cpl) if desired. If you have enabled the "Launch folder windows in a separate process" option in Windows Explorer, you will need to restart explorer.exe (either by terminating and relaunching it in Task Manager, or restarting your computer) for changes made to persistent PATH to take effect in command prompt windows launched from within Explorer.
  5. MinGW-w64 comes with GNU Make, but it is named mingw32-make.exe. If you don't want to type mingw32-make where you would normally type make, feel free to copy mingw32-make.exe make.exe.
  6. One final note: If you are trying to build ebacktrace1.dll and are getting errors about a missing "bfd.h", you need to copy the following files from <root>\include\ to <root>\<target>-w64-mingw32\include\:
ansidecl.h
bfd.h
bfdlink.h
dis-asm.h
symcat.h

clang

This process should set up a fully working GCC. Unfortunately, clang is a different story. Recent releases of clang for Windows default to acting as a drop-in replacement for Visual Studio, rather than MinGW. However, for the adventurous:

  1. Download clang for Windows.
  2. Extract your choice of 32-bit and/or 64-bit binaries to the bin folder of the corresponding MinGW-w64 toolchain installed above.
  3. When building EDuke32, append CUSTOMOPT="-target i686-w64-mingw32" (targeting a 32-bit build) or CUSTOMOPT="-target x86_64-w64-mingw32" (targeting 64-bit) in addition to CLANG=1 so clang tries to use GCC's headers instead of Visual Studio's headers.

Since primary purpose of a standalone setup is producing the most optimized production binaries possible, clang on Windows may or may not be stable, robust, and mature enough to be worth it in this setting. For simple development aids such as clang's very nice diagnostic output, using it in MSYS2 should be sufficient.

building

Open mingw32env.cmd or mingw64env.cmd (double-clicking is fine) to start a command prompt window. Once there, building is the same as with MSYS2, with the exception of using mingw32-make instead of make if you did not copy it.

In order to allow building in the absence of an sh.exe, the PRETTY_OUTPUT colorful build process message feature provided by EDuke32's Makefile is disabled with this setup. Advanced users can open the MSYS2 MSYS shortcut, if installed above, or Git Bash, in combination with manually configuring their Unix-style PATH variable, to get colorful output with a standalone toolchain.