miki151 / keeperrl

Source code of KeeperRL
GNU General Public License v2.0
890 stars 112 forks source link

Compiling without Steamworks? #2053

Open NetSysFire opened 8 months ago

NetSysFire commented 8 months ago

NO_STEAMWORKS has no peceived effect when compiling and there will be a fatal error during linking. The Steamworks-sdk dependency has only been "documented" in a single, closed issue. Is there really no way to work around this? What if people want to package this for distributions? I can see there being license troubles.

Full trace for anyone interested:

``` /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `std::_Function_handler::_M_invoke(std::_Any_data const&)': ld-temp.o:(.text._ZNSt17_Function_handlerIFbvEZN10WindowView10rebuildGuiEvE4$_17E9_M_invokeERKSt9_Any_data+0x39): undefined reference to `MySteamInput::getJoyPos(ControllerJoy)' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `std::_Function_handler (), WindowView::chooseDirection(Vec2, std::__cxx11::basic_string, std::allocator > const&)::$_0>::_M_invoke(std::_Any_data const&)': /usr/src/debug/keeperrl-git/keeperrl-git/window_view.cpp:619:(.text._ZNSt17_Function_handlerIFNSt12experimental8optionalI4Vec2EEvEZN10WindowView15chooseDirectionES2_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0E9_M_invokeERKSt9_Any_data+0x5c): undefined reference to `MySteamInput::setGameActionLayer(MySteamInput::GameActionLayer)' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `Renderer::getDiscreteJoyPos(ControllerJoy)': /usr/src/debug/keeperrl-git/keeperrl-git/renderer.cpp:768:(.text._ZNSt17_Function_handlerIFNSt12experimental8optionalI4Vec2EEvEZN10WindowView15chooseDirectionES2_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0E9_M_invokeERKSt9_Any_data+0xa4): undefined reference to `MySteamInput::getJoyPos(ControllerJoy)' /usr/bin/ld: /usr/src/debug/keeperrl-git/keeperrl-git/renderer.cpp:768:(.text._ZNSt17_Function_handlerIFNSt12experimental8optionalI4Vec2EEvEZN10WindowView15chooseDirectionES2_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0E9_M_invokeERKSt9_Any_data+0x16a): undefined reference to `MySteamInput::getJoyPos(ControllerJoy)' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `Renderer::drawAndClearBuffer()': /usr/src/debug/keeperrl-git/keeperrl-git/renderer.cpp:676:(.text._ZN8Renderer18drawAndClearBufferEv+0x1c): undefined reference to `MySteamInput::runFrame()' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `Renderer::pollEvent(SDL::SDL_Event&)': /usr/src/debug/keeperrl-git/keeperrl-git/renderer.cpp:745:(.text._ZN8Renderer9pollEventERN3SDL9SDL_EventE+0x54): undefined reference to `MySteamInput::getEvent()' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `ScriptedUIElems::RenderKeybinding::getKeybindingGlyph[abi:cxx11](GuiFactory*, Keybinding) const': /usr/src/debug/keeperrl-git/keeperrl-git/scripted_ui.cpp:211:(.text._ZNK15ScriptedUIElems16RenderKeybinding18getKeybindingGlyphB5cxx11EP10GuiFactory10Keybinding[_ZNK15ScriptedUIElems16RenderKeybinding18getKeybindingGlyphB5cxx11EP10GuiFactory10Keybinding]+0x85): undefined reference to `MySteamInput::getGlyph(ControllerKey)' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `std::_Function_handler::_M_invoke(std::_Any_data const&)': /usr/src/debug/keeperrl-git/keeperrl-git/options.cpp:535:(.text._ZNSt17_Function_handlerIFbvEZN7Options6handleEP4ViewPK14ContentFactory9OptionSetiE3$_2E9_M_invokeERKSt9_Any_data+0x26): undefined reference to `MySteamInput::showBindingScreen()' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `keeperMain(po::parser&)': ld-temp.o:(.text._ZL10keeperMainRN2po6parserE+0x5923): undefined reference to `MySteamInput::isRunningOnDeck()' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `Renderer::getDiscreteJoyPos(ControllerJoy)': /usr/src/debug/keeperrl-git/keeperrl-git/renderer.cpp:768:(.text._ZN6MapGui16renderMapObjectsER8Renderer4Vec2NSt6chrono8durationIlSt5ratioILl1ELl1000EEEE+0x5a5c): undefined reference to `MySteamInput::getJoyPos(ControllerJoy)' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `MapGui::updateObjects(CreatureView*, Renderer&, MapLayout*, bool, bool, std::experimental::optional const&)': /usr/src/debug/keeperrl-git/keeperrl-git/map_gui.cpp:1512:(.text._ZN6MapGui13updateObjectsEP12CreatureViewR8RendererP9MapLayoutbbRKNSt12experimental8optionalI12TutorialInfoEE+0x126): undefined reference to `MySteamInput::setGameActionLayer(MySteamInput::GameActionLayer)' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `Game::achieve(AchievementId) const': /usr/src/debug/keeperrl-git/keeperrl-git/game.cpp:835:(.text._ZNK4Game7achieveE13AchievementId+0x35): undefined reference to `SteamAchievements::achieve(AchievementId)' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `Renderer::getDiscreteJoyPos(ControllerJoy)': /usr/src/debug/keeperrl-git/keeperrl-git/renderer.cpp:768:(.text._ZNSt17_Function_handlerIFbvEZN10GuiBuilder17drawPlayerOverlayERK10PlayerInfobE3$_4E9_M_invokeERKSt9_Any_data+0x4c): undefined reference to `MySteamInput::getJoyPos(ControllerJoy)' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `(anonymous namespace)::TextFieldElem::TextFieldElem(std::function, std::allocator > ()>, std::function, std::allocator >)>, std::function, int, bool, MySteamInput*, KeybindingMap*)': /usr/src/debug/keeperrl-git/keeperrl-git/gui_elem.cpp:227:(.text._ZN12_GLOBAL__N_113TextFieldElemC2ESt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEES1_IFvS7_EES1_IFbvEEibP12MySteamInputP13KeybindingMap+0x147): undefinedreference to `MySteamInput::showFloatingKeyboard(Rectangle)' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `(anonymous namespace)::TextFieldElem::onKeyPressed2(SDL::SDL_Keysym)': /usr/src/debug/keeperrl-git/keeperrl-git/gui_elem.cpp:296:(.text._ZN12_GLOBAL__N_113TextFieldElem13onKeyPressed2EN3SDL10SDL_KeysymE+0xf5): undefined reference to `MySteamInput::showFloatingKeyboard(Rectangle)' /usr/bin/ld: /usr/src/debug/keeperrl-git/keeperrl-git/gui_elem.cpp:287:(.text._ZN12_GLOBAL__N_113TextFieldElem13onKeyPressed2EN3SDL10SDL_KeysymE+0x1ee): undefined reference to `MySteamInput::dismissFloatingKeyboard()' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `(anonymous namespace)::TextFieldElem::~TextFieldElem()': /usr/src/debug/keeperrl-git/keeperrl-git/gui_elem.cpp:232:(.text._ZN12_GLOBAL__N_113TextFieldElemD2Ev+0x2e): undefined reference to `MySteamInput::dismissFloatingKeyboard()' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `std::_Function_handler::_M_invoke(std::_Any_data const&, Renderer&, Rectangle&&)': /usr/src/debug/keeperrl-git/keeperrl-git/gui_elem.cpp:3298:(.text._ZNSt17_Function_handlerIFvR8Renderer9RectangleEZN10GuiFactory15steamInputGlyphE13ControllerKeyiE3$_0E9_M_invokeERKSt9_Any_dataS1_OS2_+0x47): undefined reference to `MySteamInput::getGlyph(ControllerKey)' /usr/bin/ld: /tmp/lto-llvm-6fed57.o: in function `GuiFactory::propagateScrollEvent(vector > const&)': /usr/src/debug/keeperrl-git/keeperrl-git/gui_elem.cpp:3331:(.text._ZN10GuiFactory20propagateScrollEventERK6vectorISt10shared_ptrI7GuiElemEE+0x43): undefined reference to `MySteamInput::getJoyPos(ControllerJoy)' clang++: error: linker command failed with exit code 1 (use -v to see invocation) make[1]: *** [Makefile:146: keeper] Error 1 make: *** [Makefile:130: all] Error 2 ```

Related: #2012 but there has been no answer, so it was likely forgotten.

MinekPo1 commented 4 months ago

its seems like support for NO_STEAMWORKS was not added for newer code (example in older code), I'll hopefully be able to add it to newer code.