Installation MSYS2

From GNUstepWiki

Contents

Packages needed

Be very sure to install the packages correct for your architecture. The Guide refers to intel-64bit. Using the same procedure with the respective packages for 32bit failed currently. One package is msys, the other for mingw64

Be sure to work in the correct shell: for the 64bit example, launch and work inside MSYS2 MinGW 64-bit

Essential tools:

msys/make
mingw64/mingw-w64-x86_64-pkg-config 
msys/pkg-config
msys/tar


For GCC

mingw64/mingw-w64-x86_64-gcc 
mingw64/mingw-w64-x86_64-gcc-objc
msys/gcc-libs 9.1.0-2
mingw32/mingw-w64-i686-gcc-libs

For Clang + libobjc2

This will install clang and the latest gcc, since clang gets it's headers from that installation... This is the instance of clang usable from MSYS2, you will need to install another later for use under Windows to build libobjc2...

  ./tools-scripts/install-dependencies-msys2-64bit

Go to chocolatey software and follow the instructions there:

https://chocolatey.org/docs/installation

Here is the script used in Azure CI to build the library, you can follow this pretty easily:

- job: Windows
   displayName: Windows-2016
   pool:
     vmImage: vs2017-win2016
   strategy:
     matrix:
       Debug-32:
         BuildType: Debug
         Arch: x64_x86
         Flags: -m32
       Release-32:
         BuildType: Release
         Arch: x64_x86
         Flags: -m32
       Debug-64:
         BuildType: Debug
         Arch: x64
         Flags: -m64
       Release-64:
         BuildType: Release
         Arch: x64
         Flags: -m64
   steps:
   - checkout: self
     submodules: true
   - script: |
       choco.exe install ninja
       choco.exe install llvm
   - script: |
       echo Creating build directory...
       mkdir build
       cd build
       echo Importing visual studio environment variables...
       call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat" $(Arch)
       echo Checking that we're calling the correct link.exe
       where link.exe
       set CFLAGS=$(Flags)
       set CXXFLAGS=$(Flags)
       echo Running cmake...
       cmake .. -G Ninja -DTESTS=ON -DCMAKE_C_COMPILER="c:/Program Files/LLVM/bin/clang-cl.exe" -DCMAKE_CXX_COMPILER="c:/Program Files/LLVM/bin/clang-cl.exe" -DCMAKE_BUILD_TYPE=$(BuildType)
       echo CMake completed.
     failOnStderr: false
     displayName: 'CMake'
   - script: |
       cd build
       echo Importing visual studio environment variables...
       call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat" $(Arch)
       set CCC_OVERRIDE_OPTIONS=x-TC x-TP x/TC x/TP
       echo Running ninja...
       ninja
       echo Ninja completed.

Once this is complete you should have a build of libobjc2 in the build dir.

Patches needed

shlwapi.h Fix

For a successful build, MSYS2 headers need to be patched. Please apply following proposed fix:

Build instructions

Make

Configure as:

./configure --with-layout=gnustep 

then, remember, to source the script from the respective MinGW shell version, e.g. the 64 bit is in:

. /mingw64/System/Library/Makefiles/GNUstep.sh

Base

Essential base libraries, headers included:

msys/libxslt-devel 1.1.34-1 (development) [installed]
msys/libxslt 1.1.34-1 (libraries) [installed]
mingw64/mingw-w64-x86_64-libxslt 1.1.34-2 [installed]
msys/libffi 3.2.1-3 (libraries) [installed]
mingw64/mingw-w64-x86_64-libffi 3.2.1-4 [installed]
msys/libffi-devel 3.2.1-3 (development) [installed]
msys/libxml2-devel 2.9.10-2 (development) [installed]
msys/libxml2 2.9.10-2 (libraries) [installed]
mingw64/mingw-w64-x86_64-libxml2 2.9.10-3 [installed]
msys/libgnutls-devel 3.6.11.1-1 (development) [installed]
msys/libgnutls 3.6.11.1-1 (libraries) [installed]
mingw64/mingw-w64-x86_64-gnutls 3.6.11.1-1 [installed]


If all dependencies are installed, no difficulties then:

./configure
make install

Gui

Essential gui libraries:

mingw64/mingw-w64-x86_64-libjpeg-turbo
mingw64/mingw-w64-x86_64-libtiff
mingw64/mingw-w64-x86_64-libpng
mingw64/mingw-w64-x86_64-giflib


Then installation is as simple as:

./configure
make install

Back / winlib

Essential back libraries:

mingw64/mingw-w64-x86_64-freetype

Then installation for the 'native windows' backend is as simple as:

./configure --enable-graphics=winlib
make install

You may want to try cairo if you prefer, install also cairo libraries before...

Back / cairo

Essential back libraries:

mingw64/mingw-w64-x86_64-freetype
mingw64/mingw-w64-x86_64-cairo

Then install like this...

./configure --enable-graphics=cairo
make install