GPUOpen-Archive / Anvil

Anvil is a cross-platform framework for Vulkan
MIT License
594 stars 62 forks source link

Not building on ubuntu 18.10 #125

Closed levtoji closed 5 years ago

levtoji commented 5 years ago

Hi, I try to build Anvil on ubuntu 18.10. [I tried on 18.04 too.] Sadly the make process does not finish and I get following error. Your building tag shows, that you can build the project, so maybe you know the mistake I made. It doesn't make a difference if I call cmake from another folder.

lev@lev-nb:~/git/Anvil$ ls
CHANGELOG.md  CMakeLists.txt  CONTRIBUTING.md  deps  examples  HOW_TO_BUILD.txt  include  LICENSE.txt  README.md  src
lev@lev-nb:~/git/Anvil$ cmake .
-- The C compiler identification is GNU 8.2.0
-- The CXX compiler identification is GNU 8.2.0
-- 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
-- spirv-tools not linked - illegal SPIRV may be generated for HLSL
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lev/git/Anvil
lev@lev-nb:~/git/Anvil$ l
CHANGELOG.md  CMakeCache.txt  CMakeFiles/  cmake_install.cmake  CMakeLists.txt  CONTRIBUTING.md  deps/  examples/  HOW_TO_BUILD.txt  include/  LICENSE.txt  Makefile  README.md  src/
lev@lev-nb:~/git/Anvil$ make
Scanning dependencies of target HLSL
[  1%] Building CXX object deps/glslang/hlsl/CMakeFiles/HLSL.dir/hlslAttributes.cpp.o
[  1%] Building CXX object deps/glslang/hlsl/CMakeFiles/HLSL.dir/hlslParseHelper.cpp.o
[  2%] Building CXX object deps/glslang/hlsl/CMakeFiles/HLSL.dir/hlslScanContext.cpp.o
[  3%] Building CXX object deps/glslang/hlsl/CMakeFiles/HLSL.dir/hlslOpMap.cpp.o
[  4%] Building CXX object deps/glslang/hlsl/CMakeFiles/HLSL.dir/hlslTokenStream.cpp.o
[  5%] Building CXX object deps/glslang/hlsl/CMakeFiles/HLSL.dir/hlslGrammar.cpp.o
[  5%] Building CXX object deps/glslang/hlsl/CMakeFiles/HLSL.dir/hlslParseables.cpp.o
[  6%] Linking CXX static library libHLSL.a
[  6%] Built target HLSL
Scanning dependencies of target OSDependent
[  6%] Building CXX object deps/glslang/glslang/OSDependent/Unix/CMakeFiles/OSDependent.dir/ossource.cpp.o
[  7%] Linking CXX static library libOSDependent.a
[  7%] Built target OSDependent
Scanning dependencies of target OGLCompiler
[  8%] Building CXX object deps/glslang/OGLCompilersDLL/CMakeFiles/OGLCompiler.dir/InitializeDll.cpp.o
[  9%] Linking CXX static library libOGLCompiler.a
[  9%] Built target OGLCompiler
Scanning dependencies of target glslang
[ 10%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/glslang_tab.cpp.o
[ 11%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/attribute.cpp.o
[ 11%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/Constant.cpp.o
[ 12%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/iomapper.cpp.o
[ 13%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/InfoSink.cpp.o
[ 14%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/Initialize.cpp.o
[ 15%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/IntermTraverse.cpp.o
[ 15%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/Intermediate.cpp.o
[ 16%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/ParseContextBase.cpp.o
[ 17%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/ParseHelper.cpp.o
[ 18%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/PoolAlloc.cpp.o
[ 18%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/RemoveTree.cpp.o
[ 19%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/Scan.cpp.o
[ 20%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/ShaderLang.cpp.o
[ 21%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/SymbolTable.cpp.o
[ 22%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/Versions.cpp.o
[ 22%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/intermOut.cpp.o
[ 23%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/limits.cpp.o
[ 24%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/linkValidate.cpp.o
[ 25%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/parseConst.cpp.o
[ 25%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/reflection.cpp.o
[ 26%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/preprocessor/Pp.cpp.o
[ 27%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/preprocessor/PpAtom.cpp.o
[ 28%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/preprocessor/PpContext.cpp.o
[ 29%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/preprocessor/PpScanner.cpp.o
[ 29%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/preprocessor/PpTokens.cpp.o
[ 30%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/MachineIndependent/propagateNoContraction.cpp.o
[ 31%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/GenericCodeGen/CodeGen.cpp.o
[ 32%] Building CXX object deps/glslang/glslang/CMakeFiles/glslang.dir/GenericCodeGen/Link.cpp.o
[ 33%] Linking CXX static library libglslang.a
[ 33%] Built target glslang
Scanning dependencies of target SPIRV
[ 34%] Building CXX object deps/glslang/SPIRV/CMakeFiles/SPIRV.dir/GlslangToSpv.cpp.o
[ 35%] Building CXX object deps/glslang/SPIRV/CMakeFiles/SPIRV.dir/InReadableOrder.cpp.o
[ 36%] Building CXX object deps/glslang/SPIRV/CMakeFiles/SPIRV.dir/Logger.cpp.o
[ 36%] Building CXX object deps/glslang/SPIRV/CMakeFiles/SPIRV.dir/SpvBuilder.cpp.o
In file included from /home/lev/git/Anvil/deps/glslang/SPIRV/hex_float.h:39,
                 from /home/lev/git/Anvil/deps/glslang/SPIRV/SpvBuilder.cpp:49:
/home/lev/git/Anvil/deps/glslang/SPIRV/bitutils.h: In instantiation of ‘Dest spvutils::BitwiseCast(Src) [with Dest = spvutils::Float16; Src = short unsigned int]’:
/home/lev/git/Anvil/deps/glslang/SPIRV/hex_float.h:138:47:   required from ‘T spvutils::FloatProxy<T>::getAsFloat() const [with T = spvutils::Float16]’
/home/lev/git/Anvil/deps/glslang/SPIRV/hex_float.h:821:52:   required from here
/home/lev/git/Anvil/deps/glslang/SPIRV/bitutils.h:29:14: warning: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of non-trivially copyable type ‘class spvutils::Float16’; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
   std::memcpy(&dest, &source, sizeof(dest));
   ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/lev/git/Anvil/deps/glslang/SPIRV/SpvBuilder.cpp:49:
/home/lev/git/Anvil/deps/glslang/SPIRV/hex_float.h:43:7: note: ‘class spvutils::Float16’ declared here
 class Float16 {
       ^~~~~~~
In file included from /home/lev/git/Anvil/deps/glslang/SPIRV/hex_float.h:39,
                 from /home/lev/git/Anvil/deps/glslang/SPIRV/SpvBuilder.cpp:49:
/home/lev/git/Anvil/deps/glslang/SPIRV/bitutils.h: In instantiation of ‘Dest spvutils::BitwiseCast(Src) [with Dest = spvutils::FloatProxy<spvutils::Float16>; Src = short unsigned int]’:
/home/lev/git/Anvil/deps/glslang/SPIRV/hex_float.h:431:28:   required from ‘void spvutils::HexFloat<T, Traits>::setFromSignUnbiasedExponentAndNormalizedSignificand(bool, spvutils::HexFloat<T, Traits>::int_type, spvutils::HexFloat<T, Traits>::uint_type, bool) [with T = spvutils::FloatProxy<spvutils::Float16>; Traits = spvutils::HexFloatTraits<spvutils::FloatProxy<spvutils::Float16> >; spvutils::HexFloat<T, Traits>::int_type = short int; spvutils::HexFloat<T, Traits>::uint_type = short unsigned int]’
/home/lev/git/Anvil/deps/glslang/SPIRV/hex_float.h:633:5:   required from ‘void spvutils::HexFloat<T, Traits>::castTo(other_T&, spvutils::round_direction) [with other_T = spvutils::HexFloat<spvutils::FloatProxy<spvutils::Float16>, spvutils::HexFloatTraits<spvutils::FloatProxy<spvutils::Float16> > >; T = spvutils::FloatProxy<float>; Traits = spvutils::HexFloatTraits<spvutils::FloatProxy<float> >]’
/home/lev/git/Anvil/deps/glslang/SPIRV/hex_float.h:817:39:   required from here
/home/lev/git/Anvil/deps/glslang/SPIRV/bitutils.h:29:14: warning: ‘void* memcpy(void*, const void*, size_t)’ copying an object of non-trivial type ‘class spvutils::FloatProxy<spvutils::Float16>’ from an array of ‘short unsigned int’ [-Wclass-memaccess]
   std::memcpy(&dest, &source, sizeof(dest));
   ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/lev/git/Anvil/deps/glslang/SPIRV/SpvBuilder.cpp:49:
/home/lev/git/Anvil/deps/glslang/SPIRV/hex_float.h:115:7: note: ‘class spvutils::FloatProxy<spvutils::Float16>’ declared here
 class FloatProxy {
       ^~~~~~~~~~
[ 37%] Building CXX object deps/glslang/SPIRV/CMakeFiles/SPIRV.dir/doc.cpp.o
[ 38%] Building CXX object deps/glslang/SPIRV/CMakeFiles/SPIRV.dir/disassemble.cpp.o
[ 39%] Linking CXX static library libSPIRV.a
[ 39%] Built target SPIRV
Scanning dependencies of target Anvil
[ 39%] Building CXX object CMakeFiles/Anvil.dir/src/misc/memalloc_backends/backend_oneshot.cpp.o
[ 40%] Building CXX object CMakeFiles/Anvil.dir/src/misc/memalloc_backends/backend_vma.cpp.o
[ 41%] Building CXX object CMakeFiles/Anvil.dir/src/misc/base_pipeline_create_info.cpp.o
[ 42%] Building CXX object CMakeFiles/Anvil.dir/src/misc/base_pipeline_manager.cpp.o
[ 42%] Building CXX object CMakeFiles/Anvil.dir/src/misc/buffer_create_info.cpp.o
[ 43%] Building CXX object CMakeFiles/Anvil.dir/src/misc/buffer_view_create_info.cpp.o
[ 44%] Building CXX object CMakeFiles/Anvil.dir/src/misc/compute_pipeline_create_info.cpp.o
[ 45%] Building CXX object CMakeFiles/Anvil.dir/src/misc/debug.cpp.o
[ 46%] Building CXX object CMakeFiles/Anvil.dir/src/misc/debug_marker.cpp.o
/home/lev/git/Anvil/src/misc/debug_marker.cpp: In member function ‘void Anvil::DebugMarkerSupportProviderWorker::set_tag_internal(uint64_t, size_t, const void*, bool)’:
/home/lev/git/Anvil/src/misc/debug_marker.cpp:107:27: error: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘class std::vector<char>’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Werror=class-memaccess]
                in_tag_size);
                           ^
In file included from /usr/include/c++/8/vector:64,
                 from /home/lev/git/Anvil/include/misc/types.h:103,
                 from /home/lev/git/Anvil/include/misc/debug_marker.h:28,
                 from /home/lev/git/Anvil/src/misc/debug_marker.cpp:23:
/usr/include/c++/8/bits/stl_vector.h:339:11: note: ‘class std::vector<char>’ declared here
     class vector : protected _Vector_base<_Tp, _Alloc>
           ^~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [CMakeFiles/Anvil.dir/build.make:167: CMakeFiles/Anvil.dir/src/misc/debug_marker.cpp.o] Fehler 1
make[1]: *** [CMakeFiles/Makefile2:77: CMakeFiles/Anvil.dir/all] Fehler 2
make: *** [Makefile:130: all] Fehler 2
lev@lev-nb:~/git/Anvil$ 
DominikWitczakAMD commented 5 years ago

This is an interesting find, thanks. I'll be fixing this in an update coming later today.

Please consider contributing PRs in the future, as these are much easier to address.

DominikWitczakAMD commented 5 years ago

Should be fine now.

levtoji commented 5 years ago

It seems to be a new warning respectively error introduced by gcc 8. I tried this solution and it works: https://github.com/Tencent/rapidjson/pull/1323