FEX: failure to build with -DBUILD_TESTS=True on 18.04
I shoved a few PPAs into 18.04 to attempt to build it on a Jetson Nano - are the following errors a result of my dependencies probably being a mess, or is this something that can be fixed on FEX’s end?
Relevant dependencies below, let me know if I’m missing anything:
cobalt@nano-sd:~/FEX/Build$ cmake --version
cmake version 3.22.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).
cobalt@nano-sd:~/FEX/Build$ clang-13 --version
Ubuntu clang version 13.0.1-++20211124042925+19b8368225dc-1~exp1~20211124043458.31
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
cobalt@nano-sd:~/FEX/Build$
Also I’ve got libstdc++-11-dev
and libstdc++6
, llvm.org mentioned those were needed from a PPA.
Full log:
cobalt@nano-sd:~/FEX/Build$ CC=clang-13 CXX=clang++-13 cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DENABLE_LTO=True -DBUILD_TESTS=False -G Ninja ..
-- The C compiler identification is Clang 13.0.1
-- The CXX compiler identification is Clang 13.0.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang-13 - 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: /usr/bin/clang++-13 - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test ENUM_ENUM_WARNING
-- Performing Test ENUM_ENUM_WARNING - Success
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Found Python: /usr/bin/python3.8 (found suitable version "3.8.6", minimum required is "3.0") found components: Interpreter
-- xxHash not found. Using Externals
-- Version: 7.1.3
-- Build type: RELEASE
-- CXX_STANDARD: 20
-- Performing Test has_std_20_flag
-- Performing Test has_std_20_flag - Success
-- Performing Test has_std_2a_flag
-- Performing Test has_std_2a_flag - Success
-- Performing Test SUPPORTS_USER_DEFINED_LITERALS
-- Performing Test SUPPORTS_USER_DEFINED_LITERALS - Success
-- Performing Test FMT_HAS_VARIANT
-- Performing Test FMT_HAS_VARIANT - Success
-- Required features: cxx_variadic_templates
-- Performing Test HAS_NULLPTR_WARNING
-- Performing Test HAS_NULLPTR_WARNING - Success
-- Looking for strtod_l
-- Looking for strtod_l - not found
-- Performing Test GCC_COLOR
-- Performing Test GCC_COLOR - Success
-- Performing Test CLANG_COLOR
-- Performing Test CLANG_COLOR - Success
-- Performing Test COMPILER_SUPPORTS_CPU_TYPE
-- Performing Test COMPILER_SUPPORTS_CPU_TYPE - Success
-- Found Git: /usr/bin/git (found version "2.17.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/cobalt/FEX/Build
cobalt@nano-sd:~/FEX/Build$ ninja
[0/2] Re-checking globbed directories...
[69/327] Building CXX object External/imgui/CMakeFiles/imgui.dir/imgui_widgets.cpp.o
/home/cobalt/FEX/External/imgui/imgui_widgets.cpp:5415:98: warning: bitwise operation between different enumeration types ('ImGuiTreeNodeFlags_' and 'ImGuiTreeNodeFlagsPrivate_') is deprecated [-Wdeprecated-enum-enum-conversion]
flags |= ImGuiTreeNodeFlags_CollapsingHeader | (p_open ? ImGuiTreeNodeFlags_AllowItemOverlap | ImGuiTreeNodeFlags_ClipLabelForTrailingButton : 0);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
[75/327] Building CXX object Source/Tools/FEX...emon/CMakeFiles/FEXMountDaemon.dir/Main.cpp.o
FAILED: Source/Tools/FEXMountDaemon/CMakeFiles/FEXMountDaemon.dir/Main.cpp.o
/usr/bin/clang++-13 -DENABLE_JEMALLOC=1 -DGLOBAL_DATA_DIRECTORY=\"/usr/share/fex-emu/\" -D_M_ARM_64=1 -I/home/cobalt/FEX/Build/Source/Tools/FEXMountDaemon -I/home/cobalt/FEX/Source/Tools/FEXMountDaemon -I/home/cobalt/FEX/External/jemalloc/pregen/include -I/home/cobalt/FEX/External/vixl/src -I/home/cobalt/FEX/External/xxhash -I/home/cobalt/FEX/External/cpp-optparse -I/home/cobalt/FEX/External/imgui -I/home/cobalt/FEX/External/json-maker -I/home/cobalt/FEX/External/tiny-json -I/home/cobalt/FEX/External/xbyak -I/home/cobalt/FEX/Source -I/home/cobalt/FEX/Build/Source -mcpu=cortex-a57 -O3 -DNDEBUG -fomit-frame-pointer -flto=thin -fPIE -Wno-trigraphs -fdiagnostics-color=always -fcolor-diagnostics -Wno-deprecated-enum-enum-conversion -Wall -std=gnu++20 -MD -MT Source/Tools/FEXMountDaemon/CMakeFiles/FEXMountDaemon.dir/Main.cpp.o -MF Source/Tools/FEXMountDaemon/CMakeFiles/FEXMountDaemon.dir/Main.cpp.o.d -o Source/Tools/FEXMountDaemon/CMakeFiles/FEXMountDaemon.dir/Main.cpp.o -c /home/cobalt/FEX/Source/Tools/FEXMountDaemon/Main.cpp
/home/cobalt/FEX/Source/Tools/FEXMountDaemon/Main.cpp:78:24: error: no member named 'gettid' in the global namespace
EPollThreadTID = ::gettid();
~~^
/home/cobalt/FEX/Source/Tools/FEXMountDaemon/Main.cpp:125:5: error: use of undeclared identifier 'tgkill'
tgkill(::getpid(), EPollThreadTID, SIGUSR1);
^
/home/cobalt/FEX/Source/Tools/FEXMountDaemon/Main.cpp:143:25: error: no member named 'gettid' in the global namespace
SocketThreadTID = ::gettid();
~~^
/home/cobalt/FEX/Source/Tools/FEXMountDaemon/Main.cpp:285:5: error: use of undeclared identifier 'tgkill'
tgkill(::getpid(), SocketThreadTID, SIGUSR1);
^
4 errors generated.
[80/327] Building CXX object External/FEXCore...ir/Interface/Core/Interpreter/VectorOps.cpp.o
/home/cobalt/FEX/External/FEXCore/Source/Interface/Core/Interpreter/VectorOps.cpp:1404:11: warning: unused variable 'OpSize' [-Wunused-variable]
uint8_t OpSize = IROp->Size;
^
1 warning generated.
ninja: build stopped: subcommand failed.
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 18 (18 by maintainers)
Commits related to this issue
- Linux: Fixes for older build environments Should resolve the new building issues from #1423 — committed to Sonicadvance1/FEX by Sonicadvance1 2 years ago
I pulled off a successful build on 18.04! I’m gonna try another one with
-DBUILD_TESTS=True
, but for now here’s the warning log if anyone’s interested:FEX itself doesn’t use statx directly. So you could define SYS_statx correctly and hope whatever application you’re attempting to run doesn’t use it. It was added in kernel 4.11 and we don’t expose that low of a kernel version to the guest. Just need to be careful with the syscall numbering on the host