StevenC21 Posted September 21, 2018 (edited) 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 September 21, 2018 by StevenC21 0 Share this post Link to post
ReFracture Posted September 21, 2018 (edited) 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. 0 Share this post Link to post
StevenC21 Posted September 21, 2018 I am sure that I ran cmake first. And I have both of those packages installed. Any other ideas? 0 Share this post Link to post
ReFracture Posted September 21, 2018 (edited) 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 September 21, 2018 by ReFracture 0 Share this post Link to post
StevenC21 Posted September 21, 2018 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 0 Share this post Link to post
ReFracture Posted September 21, 2018 (edited) 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). 0 Share this post Link to post
StevenC21 Posted September 21, 2018 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! 0 Share this post Link to post
StevenC21 Posted September 21, 2018 No, the dependencies did not help. If I compile that manually, will it cause issues with the package manager version? 0 Share this post Link to post
StevenC21 Posted September 21, 2018 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. 2 Share this post Link to post
ReFracture Posted September 21, 2018 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. 0 Share this post Link to post
StevenC21 Posted September 21, 2018 Ehh thats fine. Yknow the best part about Linux? The documentation. 2 Share this post Link to post
ReFracture Posted September 21, 2018 I'd probably vote for not resetting for updates while I'm actively using the computer ala Windows 10.. but that's great too. 0 Share this post Link to post
StevenC21 Posted September 21, 2018 Yes. Oh, and by the way, that cmake switch fixed the issue. Cheers! 0 Share this post Link to post