Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
StevenC21

Compiling Doom64EX from source "Make" Error.

Recommended Posts

Hello all.

 

I am running Arch Linux x86_64, and attempting to compile Doom64 EX for Linux.

 

You can find the project here.

 

The issue is, in the README.MD file, it references  a "fluidsynth-lite". And when I attempt to compile (just with make) it crashes, saying the following:

 

Scanning dependencies of target pk3
graphics
graphics/fancred.png
graphics/cursor.png
graphics/confont.png
graphics/crshairs.png
graphics/buttons.png
animdefs.txt
mapinfo.txt
palplay3.act
skydefs.txt
[  0%] Built target pk3
Scanning dependencies of target libfluidsynth
[  1%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/utils/fluid_conv.c.o
[  2%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/utils/fluid_hash.c.o
[  2%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/utils/fluid_list.c.o
[  3%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/utils/fluid_ringbuffer.c.o
[  4%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/utils/fluid_settings.c.o
[  4%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/utils/fluid_sys.c.o
[  5%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/sfloader/fluid_defsfont.c.o
[  6%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/sfloader/fluid_ramsfont.c.o
[  7%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/rvoice/fluid_adsr_env.c.o
[  7%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/rvoice/fluid_chorus.c.o
[  8%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/rvoice/fluid_iir_filter.c.o
[  9%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/rvoice/fluid_lfo.c.o
[ 10%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/rvoice/fluid_rvoice.c.o
[ 10%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/rvoice/fluid_rvoice_dsp.c.o
[ 11%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/rvoice/fluid_rvoice_event.c.o
[ 12%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/rvoice/fluid_rvoice_mixer.c.o
[ 13%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/rvoice/fluid_rev.c.o
[ 13%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/synth/fluid_chan.c.o
[ 14%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/synth/fluid_event.c.o
[ 15%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/synth/fluid_gen.c.o
[ 16%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/synth/fluid_mod.c.o
[ 16%] Building C object fluidsynth/src/CMakeFiles/libfluidsynth.dir/synth/fluid_synth.c.o
In file included from /home/steven/source/Doom64EX/fluidsynth/src/synth/fluid_synth.h:34,
                 from /home/steven/source/Doom64EX/fluidsynth/src/synth/fluid_synth.c:23:
/home/steven/source/Doom64EX/fluidsynth/src/synth/fluid_synth.c: In function fluid_synth_sysex_midi_tuning’:
/home/steven/source/Doom64EX/fluidsynth/src/utils/fluidsynth_priv.h:209:38: error: strncpy output may be truncated copying 16 bytes from a string of length 16 [-Werror=stringop-truncation]
 #define FLUID_STRNCPY(_dst,_src,_n)  strncpy(_dst,_src,_n)
                                      ^~~~~~~~~~~~~~~~~~~~~
/home/steven/source/Doom64EX/fluidsynth/src/synth/fluid_synth.c:1339:9: note: in expansion of macro FLUID_STRNCPY
         FLUID_STRNCPY (resptr, name, 16);
         ^~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[2]: *** [fluidsynth/src/CMakeFiles/libfluidsynth.dir/build.make:336: fluidsynth/src/CMakeFiles/libfluidsynth.dir/synth/fluid_synth.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:149: fluidsynth/src/CMakeFiles/libfluidsynth.dir/all] Error 2
make: *** [Makefile:152: all] Error 2

What would you recommend I do?

 

I don't usually compile things from source haha.

 

Edit: I just want to add that I'm REALLY frustrated by this. I know that its undoubtedly my fault and that I'm missing something really obvious but its just SO ANNOYING!

 

/rantover

Edited by StevenC21

Share this post


Link to post

Are you running cmake before make?

I don't know if it will apply for you or not on Arch, but here's what I did on Slackware64-Current:

 

Downloaded the source zip, extracted, made a new directory in the folder called 'build'

 

In terminal I moved to the build folder

Typed in:

cmake ..

then

make

 

I have cmake-3.12.1-x86_64-1 and fluidsynth-1.1.10-x86_64-2 packages installed.

 

Afterwards you need to follow the ## Data Files step in README.md to get up and running.

Share this post


Link to post

Paste your terminal output you get after running cmake.

 

For some reason it's trying to compile fluidsynth which doesn't seem necessary if you already have it.

 

If you still have troubles you could try just using my compiled binary. It might not behave right if your fluidsynth files aren't detected though.. also you'll have to source doom64.wad and doomsnd.sf2 using the wadgen function detailed in the source's readme.

Doom64EX-master 20-9-2018.zip

Edited by ReFracture

Share this post


Link to post

Alright, here you are.

 

Result of "cmake .."

-- The C compiler identification is GNU 8.2.1
-- The CXX compiler identification is GNU 8.2.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found SDL2: /usr/include/SDL2 (found version "2.0.8") 
-- Found SDL2_net: /usr/include/SDL2 (found version "2.0.1") 
-- Found ZLIB: /usr/lib/libz.so (found version "1.2.11") 
-- Found PNG: /usr/lib/libpng.so (found version "1.6.35") 
CMake Warning (dev) at /usr/share/cmake-3.12/Modules/FindOpenGL.cmake:270 (message):
  Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when
  available.  Run "cmake --help-policy CMP0072" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  FindOpenGL found both a legacy GL library:

    OPENGL_gl_LIBRARY: /usr/lib/libGL.so

  and GLVND libraries for OpenGL and GLX:

    OPENGL_opengl_LIBRARY: /usr/lib/libOpenGL.so
    OPENGL_glx_LIBRARY: /usr/lib/libGLX.so

  OpenGL_GL_PREFERENCE has not been set to "GLVND" or "LEGACY", so for
  compatibility with CMake 3.10 and below the legacy GL library will be used.
Call Stack (most recent call first):
  CMakeLists.txt:124 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found OpenGL: /usr/lib/libOpenGL.so   
-- Checking whether system has ANSI C header files
-- Looking for 8 include files dlfcn.h, ..., float.h
-- Looking for 8 include files dlfcn.h, ..., float.h - found
-- Performing Test memchrExists
-- Performing Test memchrExists - Success
-- Performing Test freeExists
-- Performing Test freeExists - Success
-- ANSI C header files - found
-- Looking for include file unistd.h
-- Looking for include file unistd.h - found
-- Looking for DIR in sys/stat.h;sys/types.h;dirent.h
-- Looking for DIR in sys/stat.h;sys/types.h;dirent.h - found
-- Looking for stdio.h
-- Looking for stdio.h - found
-- Looking for stdbool.h
-- Looking for stdbool.h - found
-- Looking for math.h
-- Looking for math.h - found
-- Looking for errno.h
-- Looking for errno.h - found
-- Looking for stdarg.h
-- Looking for stdarg.h - found
-- Looking for memory.h
-- Looking for memory.h - found
-- Looking for sys/mman.h
-- Looking for sys/mman.h - found
-- Looking for sys/time.h
-- Looking for sys/time.h - found
-- Looking for sys/ioctl.h
-- Looking for sys/ioctl.h - found
-- Looking for fcntl.h
-- Looking for fcntl.h - found
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test _have_inline
-- Performing Test _have_inline - Success
-- Performing Test _have_vla
-- Performing Test _have_vla - Success
-- Check if the system is big endian
-- Searching 16 bit integer
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Using unsigned short
-- Check if the system is big endian - little endian
-- Configuring done
-- Generating done
-- Build files have been written to: /home/steven/source/Doom64EX/build

 

Share this post


Link to post

So unsurprisingly by your build attempts fluidsynth isn't detected. What version do you have? Is it a x86_x64 version? If the dependencies listed are satisfied I imagine it should be able to compile it.

https://www.archlinux.org/packages/community/x86_64/fluidsynth/

 

If nothing else you could grab fluidsynth from https://github.com/FluidSynth/fluidsynth/releases

Compile that yourself and then attempt compiling Doom64ex again. Could be something with the fluidsynth from your distros package manager. I just used the one on slackbuilds (Basically my distros packages).

Share this post


Link to post

Well, I don't know if it matters, but I am installing some optional dependencies, which might help.

 

I have the x86_64 version AFAIK.

 

I'm not very wise with pacman and its man page confuses me, so I'm not super knowledgeable, but I think its 64 bit.

 

Thank you for helping me by the way. I really appreciate it!

Share this post


Link to post

No, the dependencies did not help.

 

If I compile that manually, will it cause issues with the package manager version?

Share this post


Link to post

Hey, so I think I got it fixed. Towards the top of the README.MD, it actually says that to use the system's fluidsynth, I need to use

 

cmake -DENABLE_SYSTEM_FLUIDSYNTH=ON ..

instead of

cmake ..

I will test this now.

 

Sorry for the triple post, I know that its frowned upon, but I think it was appropriate in this case.

Share this post


Link to post

Interesting.. not sure why I didn't have to do that.

 

I'm not familiar with pacman specifically but I would assume that when a package is installed it puts the dependencies into the appropriate lib folder, gives the file itself whatever name it wants, then creates the general named link file to point to it.

 

In my case I found libfluidsynth.so in /usr/lib64

This file is a link to libfluidsynth.so.1, which itself is a link to libfluidsynth.so.1.7.1, which is the actual dependency from what I can tell.

 

The idea being I imagine that programs would only know to look for the general .so file, not specific versions of it.. hence the use of links.

 

I'm not very linux savvy myself though so I could be off.

Share this post


Link to post

I'd probably vote for not resetting for updates while I'm actively using the computer ala Windows 10.. but that's great too.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×