Commit Graph

134 Commits

Author SHA1 Message Date
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
Rashed Abdel-Tawab
15d91cd200 kernel: Only build dtb.img if prebuilt DTB directory is not set
If the prebuilt directory is set, then the AOSP commands get activated,
which will conflict with ours, so just disable ours if the prebuilt
directory is set.

Change-Id: Ia998ea3d1a2d3403d0261cecae12d8a5c4f689ec
2019-11-20 15:24:29 -05:00
Dan Pasanen
ac1268953a build: dt_image: use prebuilt lz4 binary for compressing
* Also remove the lz4c fallback. We're providing an lz4
  binary that works, so it shouldn't ever have to fall back
  to lz4c.

Change-Id: I5b1346c55dc97daec13e087c501840628a7265e8
2019-10-26 22:42:20 +02:00