Commit graph

136 commits

Author SHA1 Message Date
Michael Bestas
98447383e4
kernel: Allow overriding dtb target
On some devices we might want to build just the *.dtb files
that we actually need instead of the every dtb that exists.

Change-Id: Id7a152499d4ee1dd08f79d34cc34bfe959313515
2022-08-11 18:34:23 +03:00
Michael Bestas
12b812b4c9
kernel: Allow overriding dtbo target name
gs101 kernel uses google/dtbo.img target for dtbo.img

Change-Id: Ib03f35c0035f56d303771de9399bcce3d02c0775
2022-08-11 18:34:23 +03:00
Alexander Koskovich
a78681c09c
kernel: Move TARGET_KERNEL_ADDITIONAL_FLAGS to kernel task
* Currently, because DTC_EXT make flag is in the
   kernel task the only way to override it is to
   have TARGET_KERNEL_ADDITIONAL_FLAGS come after.

Change-Id: If62ed979581dc07eafd4628ce2b2d799388d3704
2022-06-24 14:23:06 +03:00
Alexander Koskovich
911b7c47b3
kernel: Switch to AOSP DTC instead of using scripts/dtc
Change-Id: I8faf295dfb84ab7481b80d5b7d2add8ed8ddf6d9
2022-06-24 14:23:05 +03:00
Michael Bestas
87c0acd05e Revert "kernel: Remove unneeded MKDTIMG dependency"
This reverts commit caa3bddf00.

Reason for revert: Breaks pixel dtbo.img build, since kernel depends on
mkdtimg. Add it back so it gets compiled and kernel can pick it up.

Change-Id: I2b9fd0b2b35e0cf2f908516b10f65399780d5c30
2022-06-20 11:51:56 +02:00
Michael Bestas
caa3bddf00 kernel: Remove unneeded MKDTIMG dependency
Change-Id: Icc1923e922adb50b02252883aa6814101837adfc
2022-06-18 10:26:14 +02:00
dianlujitao
709371be5e kernel: Ensure dtb(o) always get rebuilt
* AOSP build system is not aware of dtb(o) source update, and thus
   won't rebuild the images, results in outdated artifact.
 * Convert DTB(O)_OUT to make targets and make the images depend on them
   to address the issue. This makes AOSP build system be aware of
   their timestamp changes and re-execute recipes depending on them.
   Finally, it's up to kernel's build system to decide actions to take.

Test: m dtb(o)image and observe dtb(o).img get rebuilt
Change-Id: I197e7d2d3e013ded0e555fc22bb6a1200d40df9c
2022-06-18 10:26:14 +02:00
dianlujitao
9955cd657b kernel: Avoid unnecessary savedefconfig
Change-Id: I5400e549a6574208d67c5d107ca56eee402fa7f2
2022-06-18 10:26:14 +02:00
dianlujitao
8c6398e9fd kernel: Clean up kernel copy recipes
ACP and ALL_PREBUILT are dropped years ago and thus have become no-ops.

Change-Id: Ic317cb4a4fa406cce0dc86555fb8da34d21fb2bf
2022-06-18 10:26:14 +02:00
Alexander Koskovich
3bab7d780e lineage: build: Wipe DTB/O OBJs before build
* They can linger and cause problems, e.g. mismatching
   kernel and DTBs.

Change-Id: I4adafe140093ff675fc3f55e3233a754d44d5656
2022-05-31 01:37:14 +02:00
Bruno Martins
bf9c45fa42 kernel: Document TARGET_KERNEL_RECOVERY_CONFIG usage
Change-Id: Idefd38dae5e8beac7d7de797f3f792fea25dacef
2022-04-09 14:46:47 +02:00
Bruno Martins
f5023f46f9 kernel: Fix building recovery images
Commit 8ac7d31 introduced this issue.

Test: run `m recoveryimage` and verify that recovery
image is now built.

Change-Id: Iffdd8112db2ba1baff28db7ee4c340dbb5ebd917
2022-04-09 14:46:47 +02:00
Bruno Martins
03f2b69dc7 kernel: Fix kernel rebuilding
Commit 8ac7d31 introduced this issue.

Test: run `m installclean && m bootimage` and observe that
kernel image is built.

Change-Id: I41eb7cd2e5108bae8f4c40c0f9a300a8a3cc95a7
2022-04-09 12:58:09 +02:00
Sebastiano Barezzi
8ac7d31285 build: tasks: kernel: Rework kernel fragments handling
* Since some time you can specify multiple configs when you prepare .config and they'll get merged to main one
* To use it inline:
TARGET_KERNEL_CONFIG := main_defconfig fragment1.config fragment2.config ...
* TARGET_KERNEL_ADDITIONAL_CONFIG has been nuked since it's superseed by this new logic
* kernelsavedefconfig will only use the base defconfig

Change-Id: I479c762a9235ed0ef6fcdc79b53e084d5e2d78a6
2022-04-04 03:54:39 +02:00
Michael Bestas
518ab667f2 build: Fix kernelsavedefconfig target
Change-Id: Ie3d9a187693f2435f2555658c833de666848e48e
2022-03-15 17:21:22 +01:00
Alexander Koskovich
6d88852d2e lineage: config: Make LLVM kernel compile the default
* GCC was deprecated awhile ago, the large majority
   of devices should now be using this. Clang should
   be opt out as opposed to opt in.

Change-Id: Ie388aff8eca189663f2f615f7d059e47eaf2dce3
2022-03-10 11:06:43 +01:00
Jarl-Penguin
7adc095f6a kernel: INSTALLED_RECOVERY_KERNEL -> INSTALLED_RECOVERY_KERNEL_TARGET
* Make it consistent with the rest of the targets

Signed-off-by: Jarl-Penguin <jarlpenguin@outlook.com>
Change-Id: I869d3d8570b4deb2f1e019efa975526a528ca3e7
2022-02-20 13:26:31 +01:00
Alexander Koskovich
e220ca2625
lineage: tasks: Support copying kernel modules out to /vendor_dlkm.
Change-Id: I84993ba5e0190d310c326da7806e82f627e37a58
2022-01-22 22:39:21 -07:00
Chirayu Desai
d91d695664 kernel: Implement build time LTO choice
Change-Id: I898eb50fadb6bde5beebf46f443c5de7e6acc907
2022-01-13 14:40:31 +01:00
Alessandro Astone
174ee28d0f Revert "Revert "kernel: fix KERNEL_TOOLCHAIN_PATH_gcc and usage""
The fix was correct...

This reverts commit 168fd231b6.

Change-Id: If550fd44f32b801553b8ac23cb2a91d3f29df557
2022-01-06 16:41:05 +01:00
Julian Veit
cb30d255fb bacon: switch to sha256 checksum
As md5 is not considered as secure since some time, and sha256 is
industry standard, lets switch over here too.

Change-Id: I22015be20126a4348affa5ef97e2c28fbd7b4717
2021-10-07 11:39:17 +02:00
marcost2
fad4142e6e Add support for separate kernels for boot and recovery [1/2]
* Either as prebuilts, or with separate defconfigs

Change-Id: Iad877a5fbef095e3e5d792aebb240c230a829552
2021-09-08 17:16:01 +02:00
Tim Schumacher
cec409ecf8 kernel: Fix the check for official builds
The check for official builds now only affects the case where a prebuilt
kernel was actually used, not the case where a device builds a kernel
from source as normal.

The check has also been turned around so that it only fails the build if
it's actually an official build, not an unofficial one.

Change-Id: I1280b16b90589742c2abe7f3f6f5975a3aaeea03
2021-06-27 11:49:48 +02:00
Sebastiano Barezzi
c86a1a8128 kernel: Add TARGET_FORCE_PREBUILT_KERNEL flag
* TARGET_FORCE_PREBUILT_KERNEL should be useful when you don't have ready kernel sources (OEM releasing broken sources or releasing them lately)
* It lets you use kernel sources for userspace generated headers (generated_kernel_headers) while keeping using prebuilt kernel
* Keep in mind that generated kernel headers may not align with the ABI of kernel you're including
* This commit also partially revert commit a836d79, where TARGET_KERNEL_SOURCE would have been unset if TARGET_PREBUILT_KERNEL was defined (we already check in kernel.mk if kernel sources are present anyway)

Change-Id: I84acae890dabb5b9dbd48143ad58f6420c0cef75
2021-06-24 11:50:07 +02:00
LuK1337
cae10f81b0 kernel: Pass absolute path for KCONFIG_ALLCONFIG
It fails to read relative one, at least on QCOM 4.19 kernel base.

Change-Id: Iacbcadfabfcebb80a7f5934825123fdfa913c63c
2021-06-12 21:16:15 +02:00
Alessandro Astone
b9aa311d5a kernel: Support pixel style vendor_boot modules
Mini documentation:
List the names of boot modules in BOOT_KERNEL_MODULES to add them
to vendor_boot.

All modules still end up in their primary location (normally
vendor/lib/modules). Boot modules will be kept here as duplicates.

The list of boot modules is then depmod'ed and copied to the
vendor ramdisk.

The file modules.load is created from
BOARD_$(IMAGE)_KERNEL_MODULES_LOAD as the ordered list of modules
to be loaded form that location, either parsed by a modprobe script
or by init itself (only boot modules)
When using vendor_boot modules, vendor/lib/modules/modules.load
should list all modules but boot modules.

Also don't clear the output directory, because one might want to
push a modules.blocklist there.

Change-Id: I89a4aad42a6585a572812f1d7e89f5d78931e1e6
2021-02-17 20:21:04 +01:00
Michael Bestas
e26ac59843 kernel: Make system/vendor images depend on modules
* We're having a race with the kernel module build and vendor.img
  generation, and sometimes when vendor.img wins it won't include
  any modules in the image, which leads to all sorts of breakage

Change-Id: I2cdde96530aa8e47351cace76352788cde631058
2020-11-22 23:35:38 +01:00
Aayush Gupta
48d0111db6 lineage: Don't enforce specifying image name on prebuilt kernel
- The goal of specifying kernel image name was to whether kernel needs
  appended dtb or not, which is not something required if the kernel is
  prebuilt

Ref:
[0]: Commit edc1cebc2f

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
Change-Id: I6b43756a2eac59729a67b5f80dac112f8b6bcc5b
2020-10-28 10:25:37 +01:00
Alessandro Astone
08b2846646 kernel: Import function to install kernel modules from Q
* The new refactored function doesn't work with shell expanded
   variables, like our $$modules.

 * This is the _easy_ fix.
   A proper fix would imply generating the module list into a make variable
   from the shell variable, but with kati that looks unfeasable (to me...)

Change-Id: I8198c62fa93ad94d4b9bf7175fe5eea452c243ea
2020-09-25 21:04:31 +02:00
Bruno Martins
c3ad8b5c54 lineage: Use $(HOST_PREBUILT_TAG) where possible
Change-Id: If211d23ce72b3404368cd723cbb9ea801e61802c
2020-09-24 11:56:08 +01:00
LuK1337
d034c3f7bb lineage: Disable inline kernel building for generic {arm,arm64} targets
Change-Id: I766779a2babc170481174899aaf610cbfeb8d754
2020-09-18 22:37:47 +02:00
Jan Altensen
560ac4a965 bacon: switch to toybox md5sum
* fixes "error: MD5SUM is obsolete."

Change-Id: I38e167e24e9eb5596a1e8e2f2d915f648bc1283c
2020-09-15 13:17:38 +02:00
Luca Stefani
e30626da11 Revert "kernel: prevent additional config from being always rebuilt"
This reverts commit 70d5cc42e0.

Reason for revert: Mismatch module/kernel 

Change-Id: I2ae2df476f6cc06c8732336f325822cc2214ef79
2020-09-04 13:31:08 +02:00
Adrian DC
70d5cc42e0 kernel: prevent additional config from being always rebuilt
* A simple "make kernel" or incremental system build
   always triggers a complete kernel recompilation,
   even though the kernel sources were unchanged

 * The reason is because .additional_config is always
   considered new and invalidates the .config file,
   forcing the kernel to rebuild itself every time

 * Instead, prevent the /dev/null and KERNEL_OBJ dependencies
   having irrelevant timestamp changes with an empty variable

 * Command "make kernel" takes 3 seconds versus 40s before

Change-Id: I3b583077b7ef5873eebde3e4b0e790f5d7587ed3
Signed-off-by: Adrian DC <radian.dc@gmail.com>
2020-08-30 17:43:42 +02:00
Aayush Gupta
1de3b3019f vendor: kernel: Add back support for custom dtboimg makefile
It was removed accidentally in commit fe00ea9.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
Change-Id: Icadd7b17b3a732fc2c8aa14f1e4dbd4bc66eb7f9
2020-08-25 14:08:50 +00:00
Weikai Kong
8431a67c0c Revert "kernel: Set full path to DTC"
This reverts commit 5061962d73.

Reason for revert: breaks build with upstreamed dtc >

Change-Id: Idcbb7b95bd54bb6ecfe30f3d55ee90bd57708995
2020-08-25 00:54:30 +02:00
Luca Stefani
05ce3dc8c0 kernel: Add support for mkdtimg cfg_create
Change-Id: If761bb034c175a03a10e5f70753db3a3ded496a8
2020-08-22 20:27:04 +02:00
Luca Stefani
16ea81423c kernel: Switch to mkdtboimg.py
Change-Id: I6f444a3e2265f163e84eaf00d054697dbcf0f803
2020-08-22 20:26:54 +02:00
Luca Stefani
fe00ea90c9 kernel: Rework how DTB/DTBO are built
* Remove the separate dtbo.mk task and merge it
  in kernel.mk
* Merge in-kernel and separated DTBO image generation

Change-Id: I2cae84095cbd3d68abbe1899a9cae34c8a1e5fc9
2020-08-22 20:26:13 +02:00
Chirayu Desai
5061962d73 kernel: Set full path to DTC
* This makes it use the latest source built dtc instead of the prebuilt,
  which is too old for coral/4.14
* Would be best to have it use the in-kernel DTC though,
  as that should always work for that particular kernel.
* When OUT_DIR_COMMON_BASE isn't set, this path is relative (i.e. out/),
  so append $(KERNEL_BUILD_OUT_PREFIX) to account for that.

Change-Id: I6ffe72a2fb061ee81b385f31f4acf682876b27c8
2020-08-16 18:09:30 +02:00
Rashed Abdel-Tawab
e523884e31 kernel: Make dtb.img depend on dtc and dtbo.img on mkdtimg
Change-Id: Id079861b43862881f6a00ec70a585d98d42c4687
2020-08-16 18:09:30 +02:00
Luca Stefani
fb58f7805c kernel: Bail-out if kernel config isn't set
* And remove stale info comment

Change-Id: I0cdd5ff54ed316858045f4c4ada4d78e593667cd
2020-08-06 17:29:39 +02:00
Luca Stefani
4b7a0a0756 kernel: Add support for module aliases
* On devices using vendor_overlay it could be useful
  to be able to re-name the installed modules to
  match the ones in vendor
  -> An example is QCOM techpack where default module
     name in kernel doesn't match installed module
     name

Change-Id: If9458bca06218aeb8c91283057c083d909bf5104
2020-08-06 17:29:39 +02:00
Luca Stefani
edc2e0c2eb kernel: Allow installing modules on vendor_overlay
* This allows to easily overlay kernel vendor modules
  on devices with prebuilt vendor.img

Change-Id: Ie870f0c486043b57e4b8b10696830331540ae010
2020-08-06 17:29:38 +02:00
Nolen Johnson
c0b837dbc8 tasks: kernel: Clarify prebuilt kernel deprecation notice
Change-Id: I229029a3b36c5564a445752c6e495817a0969240
2020-04-17 19:27:26 +02:00
Luca Stefani
83dee70c3b kernel: Allow specifying a custom linker binary
* This is needed for using LLVM LLD ( and ThinLTO )

Change-Id: If603274326f0ff22f967455847ffe1c595f04aa5
2020-04-12 21:47:17 +02:00
Andreas Schneider
b532825214 dtbo: Sort the files we found
Change-Id: Iece383362d00d600c5861914b9f2600020229d80
2020-02-27 16:13:50 +01:00
Kshitij Gupta
3795628673 tasks: dtbo: Add support for custom dtbo generation rules
Change-Id: I27fdade5eb177a06795fee7cc19066ec161642d9
2020-02-22 07:55:25 +01:00
Luca Stefani
ed9b10f172 Remove apicheck.mk
* It's currently broken
* Should be converted to soong/metalava

Change-Id: I45f91d20cf797f89e5b1e4730cdafde44128e9a4
2020-01-10 17:13:41 +01:00
Nolen Johnson
f50d9bc3fa lineage: Deprecate AddonSU
* We are no longer providing our own root access solution
  as of 17.0, as PermissionHub has largely replaced the
  functionallity of Privacy Guard, which this feature
  was housed in.

* We do still have a baked in ADB root solution that can
  be enabled in developer settings (see topic:ten-adbroot
  on Gerrit).

* This DOES NOT mean we will be providing support for other
  root solutions.

Change-Id: Iecf92e3c8f91304ed998e0260d09a8048dc44d82
2020-01-03 16:17:22 +01:00