Difference between revisions of "Compiling ScummVM/MinGW"

Jump to navigation Jump to search
no edit summary
(3 intermediate revisions by 2 users not shown)
Line 3: Line 3:
MinGW is "a collection of freely available and freely distributable Windows specific header files and import libraries combined with GNU toolsets that allow one to produce native Windows programs that do not rely on any 3rd-party C runtime DLLs".  
MinGW is "a collection of freely available and freely distributable Windows specific header files and import libraries combined with GNU toolsets that allow one to produce native Windows programs that do not rely on any 3rd-party C runtime DLLs".  


More information can be found at the [https://osdn.net/projects/mingw/ MinGW homepage]
More information can be found at the [https://osdn.net/projects/mingw/ MinGW homepage]. See also [[Compiling_ScummVM/MinGW-w64|MinGW-w64]].


== Things needed ==
== Things needed ==
Line 20: Line 20:


* [https://github.com/libsdl-org/SDL-1.2 SDL 1.2]. For Windows 95/98/ME support
* [https://github.com/libsdl-org/SDL-1.2 SDL 1.2]. For Windows 95/98/ME support
** You need the latest SDL 1.2 source code revision from GitHub ([https://github.com/libsdl-org/SDL-1.2/tree/99d7f1d1c5492f0fb3c799255042ca7a3f4a5de4 99d7f1d1c5492f0fb3c799255042ca7a3f4a5de4] at the time of writing).
** You need the latest SDL 1.2 source code revision from GitHub ([https://github.com/libsdl-org/SDL-1.2/tree/27d991f356a2712feba0d7749f11807849665491 27d991f356a2712feba0d7749f11807849665491] at the time of writing).


* [https://www.libsdl.org/projects/SDL_net/ SDL2_net]. Optional, for network support.
* [https://www.libsdl.org/projects/SDL_net/ SDL2_net]. Optional, for network support.
Line 58: Line 58:
* [http://www.libpng.org/pub/png/libpng.html libpng]. Optional, for PNG support.
* [http://www.libpng.org/pub/png/libpng.html libpng]. Optional, for PNG support.
** You need the latest libpng source code ([https://download.sourceforge.net/libpng/libpng-1.6.37.tar.xz v1.6.37] at the time of writing).
** You need the latest libpng source code ([https://download.sourceforge.net/libpng/libpng-1.6.37.tar.xz v1.6.37] at the time of writing).
* [http://giflib.sourceforge.net/ giflib]. Optional, for GIF support.
** You need at least [https://downloads.sourceforge.net/giflib/giflib-5.1.4.tar.gz v5.1.4].


* [http://download.savannah.gnu.org/releases/freetype/ freetype]. Optional, for TTF support.
* [http://download.savannah.gnu.org/releases/freetype/ freetype]. Optional, for TTF support.
Line 73: Line 76:
* [http://liba52.sourceforge.net/ liba52]. Optional, for AC-3 support.
* [http://liba52.sourceforge.net/ liba52]. Optional, for AC-3 support.
** You need the latest liba52 source code ([http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz v0.7.4] at the time of writing).
** You need the latest liba52 source code ([http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz v0.7.4] at the time of writing).
* [https://tls.mbed.org/ mbedTLS]. Optional, for cloud support.
** You need the latest mbedTLS source code ([https://github.com/ARMmbed/mbedtls/archive/v2.26.0.tar.gz v2.26.0] at the time of writing).


* [https://curl.se/ libcurl]. Optional, for cloud support.
* [https://curl.se/ libcurl]. Optional, for cloud support.
** You need the latest libcurl source code ([https://curl.se/download/curl-7.75.0.tar.xz 7.75.0] at the time of writing).
** You need the latest libcurl source code ([https://curl.se/download/curl-7.76.0.tar.xz v7.76.0] at the time of writing).


* [http://glew.sourceforge.net GLEW]. Optional, for hardware acceleration in 3D games.
* [https://github.com/nigels-com/glew GLEW]. Optional, for hardware acceleration in 3D games.
** You need the latest GLEW source code ([https://sourceforge.net/projects/glew/files/glew/2.1.0/ v2.1.0] at the time of writing).
** You need the latest GLEW source code ([https://github.com/nigels-com/glew/tree/glew-2.2.0 v2.2.0] at the time of writing).


==== Precompiled libraries ====
==== Precompiled libraries ====
Line 248: Line 254:
  make pnglibconf.h
  make pnglibconf.h
  sed -i 's/\x0D//' pnglibconf.h
  sed -i 's/\x0D//' pnglibconf.h
make
make install
=== giflib ===
Unzip the giflib archive in a folder, open MSYS, go to the giflib folder and issue these commands to compile and install the library:
./configure --disable-shared --prefix=/mingw
  make
  make
  make install
  make install
Line 366: Line 381:


  ./configure --disable-shared --prefix=/mingw
  ./configure --disable-shared --prefix=/mingw
make
make install
=== mbedTLS ===
Unzip the mbedTLS archive in a folder, open MSYS, go to the mbedtls folder and apply the following patch:
<syntaxhighlight lang="diff">
--- library/platform_util.c.orig        2020-12-10 12:55:25 +0000
+++ library/platform_util.c    2021-03-08 23:59:37 +0000
@@ -92,9 +92,11 @@
  * threading.h. However, this macro is not part of the Mbed TLS public API, so
  * we keep it private by only defining it in this file
  */
-#if ! ( defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) )
+#if ! ( defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) ) || \
+      ( defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) )
#define PLATFORM_UTIL_USE_GMTIME
-#endif /* ! ( defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) ) */
+#endif /* ! ( defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) ) || \
+            (defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) ) */
#endif /* !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) ||    \
              ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) &&                    \
@@ -103,7 +105,7 @@
struct tm *mbedtls_platform_gmtime_r( const mbedtls_time_t *tt,
                                      struct tm *tm_buf )
{
-#if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32)
+#if defined(_WIN32) && !defined(PLATFORM_UTIL_USE_GMTIME)
    return( ( gmtime_s( tm_buf, tt ) == 0 ) ? tm_buf : NULL );
#elif !defined(PLATFORM_UTIL_USE_GMTIME)
    return( gmtime_r( tt, tm_buf ) );
</syntaxhighlight>
Then issue these commands to compile and install the library:
CPPFLAGS=-D_WIN32_WINNT=0x400 cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_BUILD_TYPE=Release -DENABLE_PROGRAMS=OFF -DENABLE_TESTING=OFF .
  make
  make
  make install
  make install
Line 374: Line 428:
Unzip the curl archive in a folder, open MSYS, go to the curl folder and issue these commands to compile and install the library:
Unzip the curl archive in a folder, open MSYS, go to the curl folder and issue these commands to compile and install the library:


  CPPFLAGS=-D_WIN32_WINNT=0x400 ./configure --disable-shared --prefix=/mingw --with-winssl --disable-pthreads --disable-ldap
  CPPFLAGS=-D_WIN32_WINNT=0x400 ./configure --disable-shared --prefix=/mingw --with-winssl --with-mbedtls --disable-pthreads --disable-ldap
  make
  make
  make install
  make install
Line 407: Line 461:
Then issue these commands to compile and install the library:
Then issue these commands to compile and install the library:


  make install.all GLEW_PREFIX=$PREFIX GLEW_DEST=$PREFIX
  make install.all GLEW_PREFIX=$PREFIX GLEW_DEST=$PREFIX GLEW_NO_GLU=-DGLEW_NO_GLU




213

edits

Navigation menu