GameNetworkingSockets icon indicating copy to clipboard operation
GameNetworkingSockets copied to clipboard

Get cmake to support IOS/Android

Open rjdgtn opened this issue 4 years ago • 12 comments

What about IOS/Android support?

rjdgtn avatar Mar 16 '20 07:03 rjdgtn

Yeah, good idea. What exactly would be needed? Basically just the makefiles / build instructions I think, right?

This code has shipped on iOS and Android. (Dota Underlords uses it.)

zpostfacto avatar Mar 16 '20 18:03 zpostfacto

Yes just the makefiles and build instructions. Or just some information about preprocessor definitions should be present on ios/android builds.

rjdgtn avatar Mar 18 '20 06:03 rjdgtn

I have a working iOS, MacOS and Android versions.

Well, it would be better to have makefiles and build instructions, but, well, i prepared custom solutions (.sln) /projects for each platform out of the very same source codes and pushed to my forked version which works quite nice. That is handy when you want a build without the makefiles with IDE support, well of course it has IDE dependency in that way, i use Visual Studio 2017, 2019 for Android and Xcode for iOS and MacOS.

I forked months ago, but it is not that far from current version.

I may share if you wish, you may want to check the preprocessor definitions from projects. They all working for Android(x86, x64, armv7, arm64), iOS and MacOS. Just fyi.

Check for release configurations:

https://github.com/ingamegroup/GameNetworkingSockets/tree/master/build

Levendo avatar Mar 24 '20 17:03 Levendo

Is there a standard way to get cmake to target android / iOS? I'd like to use that if possible.

At Valve, we have two different sets of code that is using two different build environments: In one branch, we use VPC, our own cmake-like tool. And the other, we have hand-coded makefiles. Neither of these is really suitable for an opensource project, I think. I'd like to get cmake to work.

I could document the needed defines and link libs that @Levendo probably figured out. I don't like the idea of checking in .vcprojx files directly, for the same reason that we don't do this for windows - just too many different configurations to maintain. Isn't this the whole purpose of cmake? :)

zpostfacto avatar Mar 24 '20 18:03 zpostfacto

Is there a standard way to get cmake to target android / iOS?

Yes, see Cross Compiling for Android and Cross Compiling for iOS, tvOS, or watchOS.

nxrighthere avatar Mar 24 '20 18:03 nxrighthere

Cool, that sounds perfect! I don't have time to research this and hook this up and test it. But if somebody made a pull request, I'd take it!

As @Levendo discovered, the code definitely compiles on Android and iOS and it's been shipped in Underlords on those platforms. So just figuring out the cmake part should be the only thing that needs to be done, and it's probably not going to rise on my priority list high enough for a while.

I'll update the title and add a tag, maybe some kind soul will grab it!

zpostfacto avatar Mar 24 '20 18:03 zpostfacto

Well, i'd love to do the research and do the stuff. It is quite busy these days :/. I'll keep it in mind.

Levendo avatar Mar 24 '20 21:03 Levendo

We maintain a Fork where we made the changes for it to compile for both Android and iOS, so if anyone wants to use it as a base for a PR, here it goes

https://github.com/tfgco/GameNetworkingSockets/commits/master

Building instructions for both platforms are described in BUILDING.md, don't expect anything fancy :p

See commits starting Mar-15

felipejfc avatar Mar 24 '20 21:03 felipejfc

Looks good, just a few minor changes. 👍

nxrighthere avatar Mar 24 '20 21:03 nxrighthere

Looks neat, good job.

Third parties(OpenSSL and Protobuf) provided as pre-builts i guess. Just wondering do we need the build instructions for them as well as part of the building process?

Levendo avatar Mar 24 '20 21:03 Levendo

Will it be as simple as rebasing the commits on last valve master and reading building instructions ? I see that fork is ~250 commits behind.

Fr33maan avatar May 10 '20 05:05 Fr33maan