Is it generally a good idea to build everything on the target device? If I want to use my x86 main machine to cross compile for my N2+ what would that look like? The instructions on the wiki say just run make image and when i tried that it proceeded to get busy, probably building for the wrong platform.
Any more documentation avaiable for this? Any advice?
also has anyone got a docker-compose of a build environment?
Is it neccessary to build an image once, and pull a bunch of files and such, to build addons?
I use self builds myself, reason: I need to enable certain cgroup support in Linux kernel to restrict docker container resource and fine tune some parameters in kodi upnp server to better suit my usage.
Other than that, I think CE is pretty much out-of-the-box for daily use, normal users do not need to build themselves.
Its not a lack of reading but a lack of inforation. You may know this stuff inside and out, but either I am reading the wrong things, or the documentation is lacking.
I read it and need more to go on beyond
Ubuntu 20.04 lts
make
make image
PROJECT=amlogic for legacy 9.2.x devices
Does this assume x86_64 to arm cross compilation?
Does this assume x86_64 to aarch64 cross compilation?
Does it throw the kitchen sink at every build?
How do I specificy what build on what architecture for what project type?
The CoreELEC âbuild-systemâ simplifies the complex task of cross-compiling
That doesnt really explain, it just says it can make cross-compiling easier.
Donât be only theoretical: be practical too.
Not an appealing path when it says builds take hours.
Things like specifying platform paramenters or architecture parameters someone probably knows off the top of their head.
So the first answer is
The build system by default cross-compiles x86_64 to ____ (need to figure out if armv7 or aarch64), from an ubuntu 20.04 LTS install.
Im guessing ill have to dig through the code to try to find the answer to my other question of how to specify platform. There is obviously a way to build for differnet platforms because different images exist for different platforms.
Well, you still didnât tell us what you actually want to achieve. You just need to use make for making .tar file for update only and make image to make disk images.
You donât need to figure out anything - make and make image does it all automatically.
That first sentence irks me. Im not really someone who can do things without understanding what, why, and how.
If itâs all done automatically, that makes me think itâs all x86_64 to armv7 or armv7h , and the âkitchen sinkâ method for platform specificity where support for all platforms are included in every build. That doesnt make sense with the different builds for different platforms available on the site though, unless a post-hoc script is run that adjusts dtb stuff for platform specificity.
I assume the addon build system would follow the same principles as the main build system
My end goal is to get up to speed with understanding the build tools, and maintain an addon project for the ng devices. I am just trying to get a proper build environment setup and the gist of how things actually function, so im not just walking off into the dark.
I think you are on your own then to optimize everything to your requirements.
Donât know if you really need to do that but you know better. And donât expect much help because we have more important things to do then doing such tweaks.
So i you run it without specifying any parameters you get
you get (PROJECT=amlogic-ce DEVICE=amlogic-ng ARCH=arm make image)
/coreelec/config/arch.arm breaks it down by chip
default target cpu selects chip which sorts to armv7-a
determine architectureâs family
case $TARGET_CPU in
arm1176jzf-s)
TARGET_SUBARCH=armv6zk
;;
cortex-a7|cortex-a15|cortex-a17|cortex-a15.cortex-a7|cortex-a17.cortex-a7)
TARGET_SUBARCH=armv7ve
;;
cortex-a5|cortex-a8|cortex-a9)
TARGET_SUBARCH=armv7-a
;;
cortex-a53|cortex-a72.cortex-a53)
TARGET_SUBARCH=armv8-a
;;
esac
Looking over the code base, it does look like aarch64 has quite a bit of work put into it, but I am guessing it is non-defaulted for driver based reasons. AArch64 is the 64-bit state introduced in the Armv8-A architecture armv8 includes both 32-bit execution and 64-bit execution states
So the default state of affairs for coreelec is cross-compiling x86_64 to armv7-a (with implied parameters PROJECT=amlogic-ce DEVICE=amlogic-ng ARCH=arm), normally done on ubuntu 20.04LTS.