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

cmake doesn't generate tfc_arm64.so #39

Open
nickbailuc opened this issue Jan 20, 2024 · 29 comments
Open

cmake doesn't generate tfc_arm64.so #39

nickbailuc opened this issue Jan 20, 2024 · 29 comments

Comments

@nickbailuc
Copy link

Hello. I'm trying to compile tf15 and cs16 for my M1 Macbook Air running Linux. I can play the regular HLSDK mods via Xash perfectly, but could not get tf15 or cs16 working. Upon inspection it seems this SDK doesn't generate the necessary tfc_arm64.so which the regular fwgs/hlsdk generates for each game.

Using the regular one that comes from Steam of course doesn't work as it is 32-bit and for x86 not ARM.

How do I compile tfc_arm64.so ?

@nekonomicon
Copy link
Contributor

nekonomicon commented Jan 20, 2024

Server library not implemented yet.
And repo named *-client.
You can use client to connect to existing servers hosted on x86.

@nickbailuc
Copy link
Author

Server library not implemented yet. And repo named *-client. You can use client to connect to existing servers hosted on x86.

that's what i mean (i'm not trying to start a server on my macbook air), I want to try playing the regular game through Xash3D, but upon starting any game or connecting to an online server, the engine complains that tfc_arm64.so is missing, and when I compile this repo i can't find this file being compiled.

@AruMoon
Copy link

AruMoon commented Jan 20, 2024

Server library not implemented yet. And repo named *-client. You can use client to connect to existing servers hosted on x86.

that's what i mean (i'm not trying to start a server on my macbook air), I want to try playing the regular game through Xash3D, but upon starting any game or connecting to an online server, the engine complains that tfc_arm64.so is missing, and when I compile this repo i can't find this file being compiled.

That's the server library and it should not ask you for it to work

@nickbailuc
Copy link
Author

Server library not implemented yet. And repo named *-client. You can use client to connect to existing servers hosted on x86.

that's what i mean (i'm not trying to start a server on my macbook air), I want to try playing the regular game through Xash3D, but upon starting any game or connecting to an online server, the engine complains that tfc_arm64.so is missing, and when I compile this repo i can't find this file being compiled.

That's the server library and it should not ask you for it to work

ok that makes sense (it was because i was trying to create my own LAN server technically, really just trying to open any map locally on my computer)

Joining one of two only internet servers that appear, I get no HUD at all, cant select team or character, cant view multiplayer scores. It's just a spectate mode but I cant move around only mouse look, but I do have all my key bindings configured. Console doesn't report anything useful after joining. Am I missing something (like a menu so or vgui or something)? I'm assuming the cmake generates what's required.

In case I misplaced the compiled .so files, I placed all .so files generated by cmake in every directory that may have them (cl_dlls, dlls, 3rd party).

Also the cmake seems to make a directory called cl_dll without the 's' at the end, this may be a bug

@AruMoon
Copy link

AruMoon commented Jan 20, 2024

Server library not implemented yet. And repo named *-client. You can use client to connect to existing servers hosted on x86.

that's what i mean (i'm not trying to start a server on my macbook air), I want to try playing the regular game through Xash3D, but upon starting any game or connecting to an online server, the engine complains that tfc_arm64.so is missing, and when I compile this repo i can't find this file being compiled.

That's the server library and it should not ask you for it to work

ok that makes sense (it was because i was trying to create my own LAN server technically, really just trying to open any map locally on my computer)

Joining one of two only internet servers that appear, I get no HUD at all, cant select team or character, cant view multiplayer scores. It's just a spectate mode but I cant move around only mouse look, but I do have all my key bindings configured. Console doesn't report anything useful after joining. Am I missing something (like a menu so or vgui or something)? I'm assuming the cmake generates what's required.

In case I misplaced the compiled .so files, I placed all .so files generated by cmake in every directory that may have them (cl_dlls, dlls, 3rd party).

Also the cmake seems to make a directory called cl_dll without the 's' at the end, this may be a bug

Yes, you have missed vgui. I don't know how to install it correctly, I hope devs will answer here how to install it

@nickbailuc
Copy link
Author

nickbailuc commented Jan 20, 2024

Server library not implemented yet. And repo named *-client. You can use client to connect to existing servers hosted on x86.

that's what i mean (i'm not trying to start a server on my macbook air), I want to try playing the regular game through Xash3D, but upon starting any game or connecting to an online server, the engine complains that tfc_arm64.so is missing, and when I compile this repo i can't find this file being compiled.

That's the server library and it should not ask you for it to work

ok that makes sense (it was because i was trying to create my own LAN server technically, really just trying to open any map locally on my computer)
Joining one of two only internet servers that appear, I get no HUD at all, cant select team or character, cant view multiplayer scores. It's just a spectate mode but I cant move around only mouse look, but I do have all my key bindings configured. Console doesn't report anything useful after joining. Am I missing something (like a menu so or vgui or something)? I'm assuming the cmake generates what's required.
In case I misplaced the compiled .so files, I placed all .so files generated by cmake in every directory that may have them (cl_dlls, dlls, 3rd party).
Also the cmake seems to make a directory called cl_dll without the 's' at the end, this may be a bug

Yes, you have missed vgui. I don't know how to install it correctly, I hope devs will answer here how to install it

I have the libvgui.so compiled but dont know where to place it (regular xash with hlsdk doesnt have it under valve/cl_dlls nor valve/dlls, however I used to have it in the root directory where the xash binary sits (along with libxash.so and so on).

It would be great if the devs put instructions in the readme for where to place the actual compiled .so files. So far, compiling it creates:
client.so
libvgui.so
menu.so

@nekonomicon
Copy link
Contributor

Also the cmake seems to make a directory called cl_dll without the 's' at the end, this may be a bug

No, it's not.

It would be great if the devs put instructions in the readme for where to place the actual compiled .so files. So far, compiling it creates:

Half-Life has vgui in root directory and client/gameui in cl_dlls directory, so what instructions needed yet?

Also, you need to compile engine with vgui_support.
Without vgui loader library you are loaded Half-Life client probably.

@nickbailuc
Copy link
Author

Also the cmake seems to make a directory called cl_dll without the 's' at the end, this may be a bug

No, it's not.

Seems any hl1 game/mod i look at has the directory named cl_dlls not cl_dll. Are they interchangeable?

It would be great if the devs put instructions in the readme for where to place the actual compiled .so files. So far, compiling it creates:

Half-Life has vgui in root directory and client/gameui in cl_dlls directory, so what instructions needed yet?

Also, you need to compile engine with vgui_support. Without vgui loader library you are loaded Half-Life client probably.

Xash seems to compile with vgui support by default, and the repo depends on vgui.

I've placed libvgui.so into the root folder where the Xash binary and libs sit, but it didn't change anything. The changeclass menu never appears when joining a server

@nekonomicon
Copy link
Contributor

Seems any hl1 game/mod i look at has the directory named cl_dlls not cl_dll. Are they interchangeable?

HLSDK historically has cl_dll folder.
And you can say make install to instal libraries to right directory.

Xash seems to compile with vgui support by default, and the repo depends on vgui.

And do you have vgui_support.so library?

@nickbailuc
Copy link
Author

Maybe it's something with the server I'm joining if they're running some mod or something.
The only 2 servers I see listed are:
TFC 1.5 | North America with IP 155.248.229.151
TFC 1.5 | Central Europe with IP 135.125.188.162

Since there is no tfc_arm64.so I can't create a LAN game (or even launch a map through the console via map 2fort)

@nickbailuc
Copy link
Author

nickbailuc commented Jan 21, 2024

And do you have vgui_support.so library?

I don't, and I'm not sure how to get it. I think I used to some time ago and forgot where I got the file, but recently I recompiled everything fresh.

FWGS has like 5 repos related to vgui, I couldn't compile any of them. Velaron/vgui_support gives me cpp errors:

vgui_support/vgui_main.h:36:10: fatal error: vgui_api.h: No such file or directory
   36 | #include "vgui_api.h"

Is vgui_support.so different from the vgui.so found under hlsdk-portable/vgui_support ?
Because I have vgui.so from hlsdk, and also vgui.so and libvgui.so from this repository.
Every vgui I tried from fwgs gives me some kind of cpp error. Digging through the files, the headers always expect some odd library I've never heard of (probably something created for the game, not a system wide library)

Also make install tries to put it in /usr/local/tfc which is very odd. I'm unable to force a local directory on that script

$ make install
CMake Error at cl_dll/cmake_install.cmake:52 (file):
  file cannot create directory: /usr/local/tfc/cl_dlls.  Maybe need
  administrative privileges.

@nekonomicon
Copy link
Contributor

You need to compile engine with vgui support.
Check waf --help.

@nekonomicon
Copy link
Contributor

Also make install tries to put it in /usr/local/tfc which is very odd. I'm unable to force a local directory on that script

You can set custom PREFIX.

@nickbailuc
Copy link
Author

You need to compile engine with vgui support. Check waf --help.

Based on what the waf --help says, vgui is supported by default:

  VGUI options:
    --disable-vgui      disable vgui_support [default: False]
    --vgui=VGUI_DEV     path to vgui-dev repo [default: /home/nick/Downloads/xash3d-fwgs/3rdparty/vgui_support/vgui-dev]
    --skip-vgui-sanity-check
                        skip checking VGUI sanity [default: True]

@nekonomicon
Copy link
Contributor

Ok.
Do you clone FWGS/xash3d-fwgs repo with --recursive option?
If so you must have vgui_support library after compilation.

@nickbailuc
Copy link
Author

Ok. Do you clone FWGS/xash3d-fwgs repo with --recursive option? If so you must have vgui_support library after compilation.

yes, i clone every repo with --recurse-submodules
Xash comes with the regular vgui.so not vgui_support not sure if thats the same or not

@nekonomicon
Copy link
Contributor

Xash comes with the regular vgui.so not vgui_support not sure if thats the same or not

No, It's not.

@nickbailuc
Copy link
Author

Xash comes with the regular vgui.so not vgui_support not sure if thats the same or not

No, It's not.

so where can I get vgui_support.so not vgui.so
(this should also be mentioned in the README)

@Velaron
Copy link
Owner

Velaron commented Jan 22, 2024

It is bundled with xash3d-fwgs?

@nickbailuc
Copy link
Author

It is bundled with xash3d-fwgs?

no its not
theres only vgui.so under xash3d-fwgs/3rdparty/vgui_support/vgui-dev/lib
but @nekonomicon is saying its not the same

I just redownloaded xash3d-fwgs and compiled to confirm

@Velaron
Copy link
Owner

Velaron commented Jan 22, 2024

My bad, are you sure you installed tf15-client into tfc/cl_dlls? Sounds like you are playing with a client.dll from Half-Life.

@nickbailuc
Copy link
Author

My bad, are you sure you installed tf15-client into tfc/cl_dlls? Sounds like you are playing with a client.dll from Half-Life.

The only .so's I got from compiling this repo are client.so libvgui.so menu.so
There was no tfc_arm64.so

If you mean did i copy these objects into tfc/ instead of valve/, yes I put them in tfc/

Are you guys able to play the game on a platform that isn't Windows x86 32-bit?

@Velaron
Copy link
Owner

Velaron commented Jan 22, 2024

tfc_arm64.so is not supposed to compile, I haven't reverse-engineered the server binary yet. Using cmake install command should put the binaries where they are supposed to be.

@a1batross
Copy link
Contributor

It is bundled with xash3d-fwgs?

no its not theres only vgui.so under xash3d-fwgs/3rdparty/vgui_support/vgui-dev/lib but @nekonomicon is saying its not the same

I just redownloaded xash3d-fwgs and compiled to confirm

  • We lock vgui_support build on non-x86 platforms. But in case of tf15-client you don't have to do all the crazy stuff of manually building OpenVGUI and editing vgui_support/wscript to build it alongside engine.

  • Just open gameinfo.txt and add internal_vgui_support 1 to the end of the file. That will force the engine to check if mod provides its own vgui_support.

@a1batross
Copy link
Contributor

(Actually, internal_vgui_support 1 shouldn't be important. Engine will fall back to it, in case of missing vgui_support.so alongside engine)

@nickbailuc
Copy link
Author

tfc_arm64.so is not supposed to compile, I haven't reverse-engineered the server binary yet. Using cmake install command should put the binaries where they are supposed to be.

cant get cmake install to work, i've tried

cmake install bin
cmake --install dir
cmake --install-prefix dir

they all seem to expect that this was defined previously in cmakelists or something
can you give me the exact command for cmake install? I've run the 2 commands from the README under Linux

@nickbailuc
Copy link
Author

I've looked at your precompiled builds, and now I see that the two .so's that get compiled both go only in cl_dlls so I recompiled tf15, found the compiled client.so and menu.so. Realizing in the amd64 version they have the arch in the name just like other HLSDK builds, I renamed them to client_arm64.so and menu_arm64.so, put them inside cl_dlls and launched the game.

I get 2 errors, one shorter and one longer (and the engine crashes whereas before I guess it tried to boot tfc/cs16 with valve assets).

The short error I get is this:

nick@MacBook:~/Games/Half-Life$ ./xash3d -console -game tfc
Ver: Xash3D FWGS 0.20 (build 3209-2af0adb6, linux-arm64)
Crash: signal 11 errno 0 with code 1 at (nil) (nil)
Ver: Xash3D FWGS 0.20 (build 3209-2af0adb6, linux-arm64)
Crash: signal 11 errno 0 with code 1 at (nil) (nil)
Stack backtrace:
Stack backtrace:
 1: 0xfffedc248170 <_ZN4vgui9TextImage7getFontEv+32> (/home/nick/Downloads/tf15-client/build/3rdparty/vgui_dll/libvgui.so)
 1: 0xfffedc248170 <_ZN4vgui9TextImage7getFontEv+32> (/home/nick/Downloads/tf15-client/build/3rdparty/vgui_dll/libvgui.so)
Stack dump:

long-error.txt

The longer error I'll attach as a file. It randomly spits the short or the long error without me changing anything. This happens both if I launch xash3d and select TFC in "Custom Games" or if I launch xash3d directly with the -game tfc option.

@Yashar1991
Copy link

Yashar1991 commented Jul 28, 2024

Friends you are all should be xash3d FWGS download this is true Xash3d FWGS(Test) is false!

@a1batross
Copy link
Contributor

@Yashar1991 🤡

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants