Descent3 icon indicating copy to clipboard operation
Descent3 copied to clipboard

[Build Failure]: cpp-httplib missing for Descent3 target

Open jopadan opened this issue 9 months ago • 5 comments

Build Version

07ee9cf79486622927a8fdb150d0a135deb11475

Operating System Environment

  • [ ] Microsoft Windows (32-bit)
  • [ ] Microsoft Windows (64-bit)
  • [ ] macOS
  • [x] Linux (specify distribution and version below)

CPU Environment

  • [x] x86 (32-bit Intel/AMD)
  • [x] x86_64 (64-bit Intel/AMD)
  • [x] ARM (32-bit)
  • [x] ARM64 (64-bit; sometimes called AArch64 or Apple Silicon)
  • [x] Other (RISC V, PPC...)

Description

Linker flag missing for Descent3 target

Regression Status

No response

Steps to Reproduce

cmake ../Descent3 --install-prefix=/usr
make
[ 74%] Linking CXX executable ../build/Descent3
        /usr/lib/gcc/x86_64-pc-linux-gnu/14/../../../../x86_64-pc-linux-gnu/bin/ld: CMakeFiles/Descent3.dir/mission_download.cpp.o: in function `std::default_delete<httplib::Client>::operator()(httplib::Client*) const':
/usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/unique_ptr.h:93:(.text._ZNKSt14default_deleteIN7httplib6ClientEEclEPS1_[_ZNKSt14default_deleteIN7httplib6ClientEEclEPS1_]+0x22): undefined reference to `httplib::Client::~Client()'
/usr/lib/gcc/x86_64-pc-linux-gnu/14/../../../../x86_64-pc-linux-gnu/bin/ld: ../netcon/inetfile/libinetfile.a(httpclient.cpp.o): in function `D3::HttpClient::HttpClient(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/src/engines/interplay/descent3/jopadan/Descent3/netcon/inetfile/httpclient.cpp:25:(.text+0x77): undefined reference to `httplib::Client::set_follow_location(bool)'
/usr/lib/gcc/x86_64-pc-linux-gnu/14/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/src/engines/interplay/descent3/jopadan/Descent3/netcon/inetfile/httpclient.cpp:26:(.text+0x95): undefined reference to `httplib::Client::set_connection_timeout(long, long)'
/usr/lib/gcc/x86_64-pc-linux-gnu/14/../../../../x86_64-pc-linux-gnu/bin/ld: ../netcon/inetfile/libinetfile.a(httpclient.cpp.o): in function `D3::HttpClient::Get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/src/engines/interplay/descent3/jopadan/Descent3/netcon/inetfile/httpclient.cpp:30:(.text+0x12d): undefined reference to `httplib::Client::Get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/14/../../../../x86_64-pc-linux-gnu/bin/ld: ../netcon/inetfile/libinetfile.a(httpclient.cpp.o): in function `D3::HttpClient::Get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<bool (unsigned long, unsigned long)> const&)':
/usr/src/engines/interplay/descent3/jopadan/Descent3/netcon/inetfile/httpclient.cpp:34:(.text+0x1ad): undefined reference to `httplib::Client::Get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<bool (unsigned long, unsigned long)>)'
/usr/lib/gcc/x86_64-pc-linux-gnu/14/../../../../x86_64-pc-linux-gnu/bin/ld: ../netcon/inetfile/libinetfile.a(httpclient.cpp.o): in function `D3::HttpClient::Get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<bool (char const*, unsigned long)> const&)':
/usr/src/engines/interplay/descent3/jopadan/Descent3/netcon/inetfile/httpclient.cpp:38:(.text+0x273): undefined reference to `httplib::Client::Get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<bool (char const*, unsigned long)>)'
/usr/lib/gcc/x86_64-pc-linux-gnu/14/../../../../x86_64-pc-linux-gnu/bin/ld: ../netcon/inetfile/libinetfile.a(httpclient.cpp.o): in function `D3::HttpClient::Get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<bool (char const*, unsigned long)> const&, std::function<bool (unsigned long, unsigned long)> const&)':
/usr/src/engines/interplay/descent3/jopadan/Descent3/netcon/inetfile/httpclient.cpp:43:(.text+0x360): undefined reference to `httplib::Client::Get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<bool (char const*, unsigned long)>, std::function<bool (unsigned long, unsigned long)>)'
/usr/lib/gcc/x86_64-pc-linux-gnu/14/../../../../x86_64-pc-linux-gnu/bin/ld: ../netcon/inetfile/libinetfile.a(httpclient.cpp.o): in function `D3::HttpClient::SetProxy(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)':
/usr/src/engines/interplay/descent3/jopadan/Descent3/netcon/inetfile/httpclient.cpp:47:(.text+0x41e): undefined reference to `httplib::Client::set_proxy(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
/usr/lib/gcc/x86_64-pc-linux-gnu/14/../../../../x86_64-pc-linux-gnu/bin/ld: ../netcon/inetfile/libinetfile.a(httpclient.cpp.o): in function `std::__detail::_MakeUniq<httplib::Client>::__single_object std::make_unique<httplib::Client, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/unique_ptr.h:1077:(.text._ZSt11make_uniqueIN7httplib6ClientEJRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_[_ZSt11make_uniqueIN7httplib6ClientEJRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_]+0x3f): undefined reference to `httplib::Client::Client(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
collect2: error: ld returned 1 exit status
make[2]: *** [Descent3/CMakeFiles/Descent3.dir/build.make:2231: build/Descent3] Error 1
make[1]: *** [CMakeFiles/Makefile2:2496: Descent3/CMakeFiles/Descent3.dir/all] Error 2
make: *** [Makefile:156: all] Error 2

jopadan avatar Mar 22 '25 10:03 jopadan

Hello, which distribution are you using? Do you use the recommended VCPKG dependency management or manage the dependencies yourself, through your package manager?

Lgt2x avatar Mar 22 '25 10:03 Lgt2x

I am using Gentoo Linux 6.13.7 and using the systems package manager provided build scripts. Adding cpp-httplib to target_link_libraries in Descent3/Descent3/CMakeLists.txt for Descent3 fixes the problem

jopadan avatar Mar 22 '25 15:03 jopadan

Could you create a PR to add that? Thanks

Lgt2x avatar Mar 22 '25 19:03 Lgt2x

adding cpp-httplib causes all the action script tests to fail.

jopadan avatar Mar 22 '25 21:03 jopadan

ok I'll try to reproduce sometime and see what I can do

Lgt2x avatar Mar 24 '25 22:03 Lgt2x

https://github.com/DescentDevelopers/Descent3/pull/705

jengelh avatar May 24 '25 21:05 jengelh