Kodi Community Forum

Full Version: Replacing depends with a CMake-based system
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Replacing depends with a CMake-based system

Name: Michael Lojkovic
forum/e-mail: [email protected]
Summary: Replace the current custom makefiles and autotools usage with a CMake build system.
How will I achieve this: I'll scrap all of the old build system, (will probably reference it on occasion) from there I'll be writing CMake files in CLion on Linux. I'll start off by focusing on compilation on Linux through GCC and Clang. Once I get everything building on Linux and finish creating reusable functions and macros I'll start working on the Windows build through msvc. (Hopefully Clang will be finished being ported to windows by then though)

I'll most likely end up using a few CMake scripts I've written in the past for pulling in libraries, and also use CMake libraries for cross platform build time speed ups (unity builds, precompiled headers, etc). The precise names escape me right now.
What will the project focus on: Pulling in all dependencies and optimizing build times. Also maintainability, cleanliness, and easily supporting building on different platforms.
Benefits: This benefits any developer by making building projects much simpler, and allowing new developers, on Windows, to contribute without much friction.
Goals: The bare minimum goal is getting Kodi to build cross-platform, and on windows. With my experience with CMake so far I feel I can definitely pull off transitioning Kodi to CMake in the three month time period. This will take the same skills used in personal projects, but scale up the size quite a bit. I'll definitely have Kodi building, with build time optimizations being a stretch goal. (I'm sure I'll be optimizing along the way just to avoid sitting watching the project compile forever)
What does it touch in Kodi: this will touch pretty much all of Kodi.
Requirements: What's required for completing this project? First off, knowing CMake. Being able to read and interpret c++ error messages. Searching on Google for finding solutions for obscure CMake error messages. Just basic debugging skills, and having hardware that can compile fast helps.
Possible mentors: Place to add possible mentors (Team-Kodi will add this).


Tell us about the computer(s) and devices you have available for working on your SoC project? I have diy dual boot Arch and Windows water cooled box. The hardware on it is more than adequate for speedy compiling.
When did you first start programming? Years ago. It's only been in the last four years or so that I've started taking programming seriously for a career.
Are you a user of Kodi? When did you first start using it? I have not actually used Kodi personally. But, I've watched some movies with friends on a device running Kodi.
What do you primarily use Kodi for? Just used it for watching movies and TV shows.
Have you contributed to other Open Source projects? If so, which projects and can we see some of your code? I've contributed a bit to openrazer, Unreal, (maintain the arch pkgbuild on the aur) SCUMMVM, and I'm sure a few other projects as well. Yes you may see the code.
What sorts of programming projects have you done on your own time? mostly gameplay programming, and system scripting. Currently, I've been working on a documentation parser to dialogue boxes in Unreal on and off. Haven't been coding as much as usual lately since I'm currently studying for the gre.
How much time do you have available, and how would you plan to use it? I'm not sure exactly yet, but I think I'll be able to pull 40 hours a week this summer. Maybe more.
Do you plan to have a job or study during the summer in conjunction with Summer of Code? I'll be reviewing some math, (going to take a community college course so I'll be eligible for gsoc) and system architecture this summer to get prepped for grad school. Other than that I might be doing some freelance work. But, I'd rather focus on this project.
kodi already has a cmake build system and i see no reason to throw that away. this should be about dependencies only.
(2018-03-12, 09:36)spiff Wrote: [ -> ]kodi already has a cmake build system and i see no reason to throw that away. this should be about dependencies only.

Yeah, I don't see a reason to do that either. So, you want to replace the current dependency resolution with a cmake generator expression based system?
So, is there anyway for me to improve my application?