Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not building on ubuntu 18.10 #125

Closed
levtoji opened this issue Nov 14, 2018 · 3 comments
Closed

Not building on ubuntu 18.10 #125

levtoji opened this issue Nov 14, 2018 · 3 comments
Assignees
Labels

Comments

@levtoji
Copy link

levtoji commented Nov 14, 2018

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
Copy link
Contributor

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
Copy link
Contributor

Should be fine now.

@levtoji
Copy link
Author

levtoji commented Nov 19, 2018

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

janisozaur added a commit to janisozaur/Anvil that referenced this issue Nov 19, 2018
Rather than trying to cheat compiler into forcefully zeroing memory,
properly zero-initialise the relevant objects.

For BitwiseCast explicitly cast to void-pointer, as this is the inteded
behaviour.

Fixes GPUOpen-Archive#125
Closes GPUOpen-Archive#128
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants