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

Get cmake to support IOS/Android #102

Open
rjdgtn opened this issue Mar 16, 2020 · 12 comments
Open

Get cmake to support IOS/Android #102

rjdgtn opened this issue Mar 16, 2020 · 12 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@rjdgtn
Copy link

rjdgtn commented Mar 16, 2020

What about IOS/Android support?

@zpostfacto
Copy link
Contributor

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.)

@rjdgtn
Copy link
Author

rjdgtn commented Mar 18, 2020

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

@Levendo
Copy link

Levendo commented Mar 24, 2020

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

@zpostfacto
Copy link
Contributor

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? :)

@nxrighthere
Copy link
Contributor

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.

@zpostfacto
Copy link
Contributor

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 zpostfacto changed the title IOS/Android support Get cmake to support IOS/Android Mar 24, 2020
@zpostfacto zpostfacto added enhancement New feature or request help wanted Extra attention is needed labels Mar 24, 2020
@Levendo
Copy link

Levendo commented Mar 24, 2020

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

@felipejfc
Copy link

felipejfc commented Mar 24, 2020

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

@nxrighthere
Copy link
Contributor

Looks good, just a few minor changes. 👍

@Levendo
Copy link

Levendo commented Mar 24, 2020

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?

@Fr33maan
Copy link

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.

@LeventSevgili
Copy link
Contributor

We've added an experimental CMake build support for building Android and iOS and opened a PR. ( #312 )
You can follow the instructions at BUILDING_ANDROID.md and BUILDING_IOS.md files.

We'd love you to take a look at it and maybe we can iterate on it. Hope it helps anyone!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

7 participants