Jump to content

[SOLVED] Can't compile Eternity with MSYS2


HavoX

Recommended Posts

I also want to mention that the compilation instructions at GitHub aren't really the best.

 

Spoiler

 

HavoX@DESKTOP-NJTJP9K MINGW64 ~
# git clone https://github.com/team-eternity/eternity
Cloning into 'eternity'...
remote: Enumerating objects: 57658, done.
remote: Counting objects: 100% (2400/2400), done.
remote: Compressing objects: 100% (1542/1542), done.
remote: Total 57658 (delta 1059), reused 2162 (delta 847), pack-reused 55258
Receiving objects: 100% (57658/57658), 39.46 MiB | 14.71 MiB/s, done.
Resolving deltas: 100% (45307/45307), done.
Updating files: 100% (1789/1789), done.

HavoX@DESKTOP-NJTJP9K MINGW64 ~
# cd eternity
git submodule update --init
Submodule 'adlmidi' (https://github.com/Wohlstand/libADLMIDI/) registered for path 'adlmidi'
Cloning into '/home/HavoX/eternity/adlmidi'...
Submodule path 'adlmidi': checked out '7d8e2ad424449af1212fdbba9099760c2e9bf538'

HavoX@DESKTOP-NJTJP9K MINGW64 ~/eternity
# mkdir build
cd build

HavoX@DESKTOP-NJTJP9K MINGW64 ~/eternity/build
# cd ~
cd eternity

HavoX@DESKTOP-NJTJP9K MINGW64 ~/eternity
# cmake -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -S . -B build
-- The C compiler identification is GNU 10.3.0
-- The CXX compiler identification is GNU 10.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/msys64/mingw64/bin/gcc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/msys64/mingw64/bin/g++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found asciidoc: C:/msys64/mingw64/bin/asciidoc
-- Performing Test FLAG_CXX_stdcxx17
-- Performing Test FLAG_CXX_stdcxx17 - Failed
-- Performing Test FLAG_CXX_lstdcxxfs
-- Performing Test FLAG_CXX_lstdcxxfs - Success
-- Performing Test FLAG_C_Wall
-- Performing Test FLAG_C_Wall - Success
-- Performing Test FLAG_CXX_Wall
-- Performing Test FLAG_CXX_Wall - Success
-- Performing Test FLAG_C_fomit_frame_pointer
-- Performing Test FLAG_C_fomit_frame_pointer - Success
-- Performing Test FLAG_CXX_fomit_frame_pointer
-- Performing Test FLAG_CXX_fomit_frame_pointer - Success
-- Found OpenGL: opengl32
-- Found SDL2: C:/msys64/home/HavoX/eternity/build/SDL2-2.0.14/x86_64-w64-mingw32/lib/libSDL2.dll.a
-- Found SDL2_mixer: C:/msys64/home/HavoX/eternity/build/SDL2_mixer-2.0.4/x86_64-w64-mingw32/lib/libSDL2_mixer.dll.a
-- Found SDL2_net: C:/msys64/home/HavoX/eternity/build/SDL2_net-2.0.1/x86_64-w64-mingw32/lib/libSDL2_net.dll.a
CMake Deprecation Warning at acsvm/CMakeLists.txt:13 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Performing Test HAS_NO_PIE
-- Performing Test HAS_NO_PIE - Success
==== libADLMIDI options ====
libADLMIDI_STATIC        = ON
libADLMIDI_SHARED        = OFF
WITH_UNIT_TESTS          = OFF
WITH_MIDI_SEQUENCER      = ON
WITH_EMBEDDED_BANKS      = ON
WITH_HQ_RESAMPLER        = OFF
WITH_MUS_SUPPORT         = ON
WITH_XMI_SUPPORT         = ON
USE_DOSBOX_EMULATOR      = ON
USE_NUKED_EMULATOR       = ON
USE_OPAL_EMULATOR        = ON
USE_JAVA_EMULATOR        = ON
===== Utils and extras =====
WITH_GENADLDATA          = OFF
WITH_GENADLDATA_COMMENTS = OFF
WITH_MIDIPLAY            = OFF
MIDIPLAY_WAVE_ONLY       = OFF
WITH_ADLMIDI2            = OFF
WITH_VLC_PLUGIN          = OFF
WITH_OLD_UTILS           = OFF
WITH_MUS2MID             = OFF
WITH_XMI2MID             = OFF
EXAMPLE_SDL2_AUDIO       = OFF
WITH_WINMMDRV            = OFF
CMake Deprecation Warning at zlib/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of off64_t
-- Check size of off64_t - done
-- Looking for fseeko
-- Looking for fseeko - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- The ASM compiler identification is GNU
-- Found assembler: C:/msys64/mingw64/bin/gcc.exe
-- Performing Test HAVE_LD_VERSION_SCRIPT
-- Performing Test HAVE_LD_VERSION_SCRIPT - Success
CMake Deprecation Warning at snes_spc/CMakeLists.txt:20 (CMAKE_MINIMUM_REQUIRED):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Configuring done
-- Generating done
-- Build files have been written to: C:/msys64/home/HavoX/eternity/build

HavoX@DESKTOP-NJTJP9K MINGW64 ~/eternity
# cmake --build build
[  0%] Built target readme-asciidoc
[  0%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/Action.cpp.obj
[  0%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/Array.cpp.obj
[  1%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/BinaryIO.cpp.obj
[  1%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/CallFunc.cpp.obj
[  1%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/CodeData.cpp.obj
[  1%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/Environment.cpp.obj
[  2%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/Error.cpp.obj
[  2%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/Function.cpp.obj
[  2%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/Init.cpp.obj
[  3%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/Jump.cpp.obj
[  3%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/Module.cpp.obj
[  3%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/ModuleACS0.cpp.obj
[  3%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/ModuleACSE.cpp.obj
[  4%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/PrintBuf.cpp.obj
[  4%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/Scope.cpp.obj
[  4%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/Script.cpp.obj
[  5%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/Serial.cpp.obj
[  5%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/String.cpp.obj
[  5%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/Thread.cpp.obj
[  6%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/ThreadExec.cpp.obj
[  6%] Building CXX object acsvm/ACSVM/CMakeFiles/acsvm.dir/Tracer.cpp.obj
[  6%] Linking CXX static library libacsvm.a
[  6%] Built target acsvm
[  7%] Building C object adlmidi/CMakeFiles/ADLMIDI_version_check.dir/version_check.c.obj
[  7%] Built target ADLMIDI_version_check
[  7%] Building CXX object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/adlmidi.cpp.obj
[  7%] Building CXX object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/adlmidi_load.cpp.obj
[  7%] Building CXX object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/adlmidi_midiplay.cpp.obj
[  8%] Building CXX object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/adlmidi_opl3.cpp.obj
[  8%] Building CXX object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/adlmidi_private.cpp.obj
[  8%] Building C object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/wopl/wopl_file.c.obj
[  9%] Building CXX object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/adlmidi_sequencer.cpp.obj
[  9%] Building CXX object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/chips/dosbox_opl3.cpp.obj
[  9%] Building CXX object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/chips/dosbox/dbopl.cpp.obj
[  9%] Building CXX object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/chips/nuked_opl3.cpp.obj
[ 10%] Building C object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/chips/nuked/nukedopl3.c.obj
[ 10%] Building CXX object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/chips/nuked_opl3_v174.cpp.obj
[ 10%] Building C object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/chips/nuked/nukedopl3_174.c.obj
[ 11%] Building CXX object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/chips/opal_opl3.cpp.obj
[ 11%] Building CXX object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/chips/java_opl3.cpp.obj
[ 11%] Building CXX object adlmidi/CMakeFiles/ADLMIDI_static.dir/src/inst_db.cpp.obj
[ 11%] Linking CXX static library ../libADLMIDI.a
[ 11%] Built target ADLMIDI_static
[ 11%] Building C object zlib/CMakeFiles/zlibstatic.dir/adler32.obj
[ 11%] Building C object zlib/CMakeFiles/zlibstatic.dir/compress.obj
[ 12%] Building C object zlib/CMakeFiles/zlibstatic.dir/crc32.obj
[ 12%] Building C object zlib/CMakeFiles/zlibstatic.dir/deflate.obj
[ 12%] Building C object zlib/CMakeFiles/zlibstatic.dir/gzclose.obj
[ 13%] Building C object zlib/CMakeFiles/zlibstatic.dir/gzlib.obj
[ 13%] Building C object zlib/CMakeFiles/zlibstatic.dir/gzread.obj
[ 13%] Building C object zlib/CMakeFiles/zlibstatic.dir/gzwrite.obj
[ 13%] Building C object zlib/CMakeFiles/zlibstatic.dir/inflate.obj
[ 14%] Building C object zlib/CMakeFiles/zlibstatic.dir/infback.obj
[ 14%] Building C object zlib/CMakeFiles/zlibstatic.dir/inftrees.obj
[ 14%] Building C object zlib/CMakeFiles/zlibstatic.dir/inffast.obj
[ 15%] Building C object zlib/CMakeFiles/zlibstatic.dir/trees.obj
[ 15%] Building C object zlib/CMakeFiles/zlibstatic.dir/uncompr.obj
[ 15%] Building C object zlib/CMakeFiles/zlibstatic.dir/zutil.obj
[ 16%] Linking C static library libzlibstatic.a
[ 16%] Built target zlibstatic
[ 16%] Built target genfiles
[ 16%] Building C object libpng/CMakeFiles/png_static.dir/png.c.obj
[ 16%] Building C object libpng/CMakeFiles/png_static.dir/pngerror.c.obj
[ 17%] Building C object libpng/CMakeFiles/png_static.dir/pngget.c.obj
[ 17%] Building C object libpng/CMakeFiles/png_static.dir/pngmem.c.obj
[ 17%] Building C object libpng/CMakeFiles/png_static.dir/pngpread.c.obj
[ 18%] Building C object libpng/CMakeFiles/png_static.dir/pngread.c.obj
[ 18%] Building C object libpng/CMakeFiles/png_static.dir/pngrio.c.obj
[ 18%] Building C object libpng/CMakeFiles/png_static.dir/pngrtran.c.obj
[ 19%] Building C object libpng/CMakeFiles/png_static.dir/pngrutil.c.obj
[ 19%] Building C object libpng/CMakeFiles/png_static.dir/pngset.c.obj
[ 19%] Building C object libpng/CMakeFiles/png_static.dir/pngtrans.c.obj
[ 19%] Building C object libpng/CMakeFiles/png_static.dir/pngwio.c.obj
[ 20%] Building C object libpng/CMakeFiles/png_static.dir/pngwrite.c.obj
[ 20%] Building C object libpng/CMakeFiles/png_static.dir/pngwtran.c.obj
[ 20%] Building C object libpng/CMakeFiles/png_static.dir/pngwutil.c.obj
[ 21%] Linking C static library libpng16.a
[ 21%] Built target png_static
[ 21%] Building CXX object snes_spc/CMakeFiles/snes_spc.dir/SNES_SPC.obj
In member function 'void SNES_SPC::cpu_write_high(int, int, SNES_SPC::rel_time_t)',
    inlined from 'void SNES_SPC::cpu_write_high(int, int, SNES_SPC::rel_time_t)' at C:/msys64/home/HavoX/eternity/snes_spc/SNES_SPC.cpp:401:6:
C:/msys64/home/HavoX/eternity/snes_spc/SNES_SPC.cpp:412:22: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
  412 |   RAM [i + rom_addr] = cpu_pad_fill; // restore overwritten padding
      |                      ^
In file included from C:/msys64/home/HavoX/eternity/snes_spc/SNES_SPC.cpp:5:
C:/msys64/home/HavoX/eternity/snes_spc/SNES_SPC.h: In member function 'void SNES_SPC::cpu_write_high(int, int, SNES_SPC::rel_time_t)':
C:/msys64/home/HavoX/eternity/snes_spc/SNES_SPC.h:184:12: note: at offset [65536, 2147483647] to object 'SNES_SPC::state_t::<unnamed struct>::ram' with size 65536 declared here
  184 |    uint8_t ram      [0x10000];
      |            ^~~
[ 21%] Building CXX object snes_spc/CMakeFiles/snes_spc.dir/SNES_SPC_misc.obj
[ 21%] Building CXX object snes_spc/CMakeFiles/snes_spc.dir/SNES_SPC_state.obj
[ 22%] Building CXX object snes_spc/CMakeFiles/snes_spc.dir/SPC_DSP.obj
[ 22%] Building CXX object snes_spc/CMakeFiles/snes_spc.dir/SPC_Filter.obj
[ 22%] Building CXX object snes_spc/CMakeFiles/snes_spc.dir/dsp.obj
[ 23%] Building CXX object snes_spc/CMakeFiles/snes_spc.dir/spc.obj
[ 23%] Linking CXX static library libsnes_spc.a
[ 23%] Built target snes_spc
[ 24%] Generating ../../base/heretic/eternity.pke
[ 24%] Generating ../../base/doom/eternity.pke
Scanning dependencies of target eternity
[ 24%] Building RC object source/CMakeFiles/eternity.dir/Eternity.rc.obj
C:/msys64/home/HavoX/eternity/build/source/Eternity.rc:10: warning: "VFT_APP" redefined
   10 | #define VFT_APP     0x00000001L
      |
In file included from C:/msys64/mingw64/x86_64-w64-mingw32/include/winresrc.h:30,
                 from C:/msys64/mingw64/x86_64-w64-mingw32/include/windows.h:27,
                 from C:/msys64/home/HavoX/eternity/build/source/Eternity.rc:7:
C:/msys64/mingw64/x86_64-w64-mingw32/include/winver.h:52: note: this is the location of the previous definition
   52 | #define VFT_APP __MSABI_LONG(0x00000001)
      |
C:/msys64/home/HavoX/eternity/build/source/Eternity.rc:11: warning: "VOS_NT" redefined
   11 | #define VOS_NT      0x00040000L
      |
In file included from C:/msys64/mingw64/x86_64-w64-mingw32/include/winresrc.h:30,
                 from C:/msys64/mingw64/x86_64-w64-mingw32/include/windows.h:27,
                 from C:/msys64/home/HavoX/eternity/build/source/Eternity.rc:7:
C:/msys64/mingw64/x86_64-w64-mingw32/include/winver.h:36: note: this is the location of the previous definition
   36 | #define VOS_NT __MSABI_LONG(0x00040000)
      |
C:/msys64/home/HavoX/eternity/build/source/Eternity.rc:12: warning: "VS_FF_DEBUG" redefined
   12 | #define VS_FF_DEBUG 0x00000001L
      |
In file included from C:/msys64/mingw64/x86_64-w64-mingw32/include/winresrc.h:30,
                 from C:/msys64/mingw64/x86_64-w64-mingw32/include/windows.h:27,
                 from C:/msys64/home/HavoX/eternity/build/source/Eternity.rc:7:
C:/msys64/mingw64/x86_64-w64-mingw32/include/winver.h:25: note: this is the location of the previous definition
   25 | #define VS_FF_DEBUG __MSABI_LONG(0x00000001)
      |
[ 24%] Building CXX object source/CMakeFiles/eternity.dir/Win32/i_exception.cpp.obj
C:/msys64/home/HavoX/eternity/source/Win32/i_exception.cpp: In function 'void PrintCS()':
C:/msys64/home/HavoX/eternity/source/Win32/i_exception.cpp:561:7: error: '__try' was not declared in this scope
  561 |       __try
      |       ^~~~~
C:/msys64/home/HavoX/eternity/source/Win32/i_exception.cpp:565:7: error: '__except' was not declared in this scope
  565 |       __except(EXCEPTION_EXECUTE_HANDLER)
      |       ^~~~~~~~
C:/msys64/home/HavoX/eternity/source/Win32/i_exception.cpp: In function 'void PrintStack()':
C:/msys64/home/HavoX/eternity/source/Win32/i_exception.cpp:681:4: error: '__try' was not declared in this scope
  681 |    __try
      |    ^~~~~
C:/msys64/home/HavoX/eternity/source/Win32/i_exception.cpp:742:4: error: '__except' was not declared in this scope
  742 |    __except(EXCEPTION_EXECUTE_HANDLER)
      |    ^~~~~~~~
C:/msys64/home/HavoX/eternity/source/Win32/i_exception.cpp: In function 'void PrintBacktrace()':
C:/msys64/home/HavoX/eternity/source/Win32/i_exception.cpp:757:4: error: '__try' was not declared in this scope
  757 |    __try
      |    ^~~~~
C:/msys64/home/HavoX/eternity/source/Win32/i_exception.cpp:793:4: error: '__except' was not declared in this scope
  793 |    __except(EXCEPTION_EXECUTE_HANDLER)
      |    ^~~~~~~~
make[2]: *** [source/CMakeFiles/eternity.dir/build.make:864: source/CMakeFiles/eternity.dir/Win32/i_exception.cpp.obj] Error 1
make[1]: *** [CMakeFiles/Makefile2:421: source/CMakeFiles/eternity.dir/all] Error 2
make: *** [Makefile:156: all] Error 2

HavoX@DESKTOP-NJTJP9K MINGW64 ~/eternity
#

 

 

Edited by HavoX

Share this post


Link to post

Typically we just use cmake and visual studio (Windows) or gcc (Linux). MSYS looks to be adding extra steps and I'm not sure if anyone uses that.

Edited by Edward850

Share this post


Link to post
13 hours ago, Edward850 said:

and visual studio (Windows)

...sigh...

Well, that's the problem. I wanted to use Visual Studio Community, but there were some issues I had with it.
One is the installation size; the more components I add to the installation, the more bloated it becomes (which can wind up becoming more than 20+ GB!). That is NOT what I want.

The other issue (and it's a big one) is that it has a so-called 30-day "trial" that, when it ends, requires activation via a Microsoft Account. Needless to say, when I did try to sign in, I learned that they locked my account. The cheek of those guys! :-(

Share this post


Link to post
4 hours ago, HavoX said:

Well, that's the problem. I wanted to use Visual Studio Community, but there were some issues I had with it.
One is the installation size; the more components I add to the installation, the more bloated it becomes (which can wind up becoming more than 20+ GB!). That is NOT what I want.

 

You could try just downloading the standalone Build Tools for Visual Studio 2019, which you can just install the compiler and build tools binaries and use them normally as a CLI.

In the end the Build Tools for C++ base install size reaches 6 GB + 1,2 GB from the MFC Libraries required to compile Eternity, which is still quite big and bloated if you ask me, but it should be the bare minimum to compile anything with Visual Studio.

 

If you do decide installing it, the build commands are a little diferent. Just use CMake normally but targetting Visual Studio 16 2019 with 

cmake -G "Visual Studio 16 2019"

Then to compile the project cd into the build directory and use

msbuild "Eternity Engine.sln" /p:Configuration=Release

For some reason my bash can't recognise msbuild, so this part you can just do in cmd and it should compile just as a normal Visual Studio project.

 

I did try compiling the source myself using only the Build Tools for Visual Studio 2019 installation and succeeded, so it should be fine.

 

Share this post


Link to post

PROBLEM SOLVED.

 

I used Visual Studio Code with the Build Tools, and it worked without a hitch.

Edited by HavoX

Share this post


Link to post
9 hours ago, HavoX said:

Needless to say, when I did try to sign in, I learned that they locked my account. The cheek of those guys! :-(

Microsoft aren't going to lock your account for no reason. You've either misinterpreted what you saw, done something very catastrophically wrong, or forgot something simple (did you remember to accept the account validation email?).

Share this post


Link to post
13 hours ago, Edward850 said:

Microsoft aren't going to lock your account for no reason. You've either misinterpreted what you saw, done something very catastrophically wrong, or forgot something simple (did you remember to accept the account validation email?).

Well, apparently I forgot my Win10 login password so I had to reset it. But that, my friend, is another story ;-)

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...