Skip to content

Commit 9ae8cf1

Browse files
Rashed97darkobas
authored andcommitted
build: Automatically replace old-style kernel header includes with new header lib
This is a combination of 3 commits. This is the 1st commit message: build: add kernel header dependency if module uses kernel headers Many of the QCOM components use kernel headers, but don't declare the dependency on them. This is fine in CAF because of the way they build the boot.img before anything else. In CM, we don't build the boot.img the same, so we run into a race between the kernel build & these modules... and the modules lose. Warn about modules that have this missing dependency, and add it for them so we don't have to modify each Android.mk. Change-Id: I95f1e47b5ef440f6f5d8f64a0c3f38d9572e839e ============================================================================ This is the commit message #2: build: Switch kernel header inclusion The build is switching to the target INSTALLED_KERNEL_HEADERS to declare dependencies on kernel headers. Change-Id: I913e74681b02dfcf1eaed3d1e47ff4ab2300b12d ============================================================================ This is the commit message #3: build: Automatically replace old-style kernel header includes with new header lib Since we do this via soong and the result is a header library, just replace all legacy include paths that point to the old header location with calls to the new header library. Since we no longer have the legacy include, we can also remove the additional dependency. This reverts commit fa798218e5b7f96e12ab3acc9d47a3f26a140777. Change-Id: I716955534e50831e6568ca01e480aa8b90075d92
1 parent cb1a292 commit 9ae8cf1

1 file changed

Lines changed: 17 additions & 6 deletions

File tree

core/binary.mk

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,24 @@ endif
3434

3535
my_soong_problems :=
3636

37-
# Many qcom modules don't correctly set a dependency on the kernel headers. Fix it for them,
38-
# but warn the user.
37+
# Automatically replace the old-style kernel header include with a dependency
38+
# on the generated_kernel_headers header library
3939
ifneq (,$(findstring $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include,$(LOCAL_C_INCLUDES)))
40-
ifeq (,$(findstring $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr,$(LOCAL_ADDITIONAL_DEPENDENCIES)))
41-
$(warning $(LOCAL_MODULE) uses kernel headers, but does not depend on them!)
42-
LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
43-
endif
40+
LOCAL_C_INCLUDES := $(patsubst $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include,,$(LOCAL_C_INCLUDES))
41+
LOCAL_HEADER_LIBRARIES += generated_kernel_headers
42+
endif
43+
44+
# Some qcom binaries use this weird -isystem include...
45+
ifneq (,$(findstring $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include,$(LOCAL_CFLAGS)))
46+
LOCAL_CFLAGS := $(patsubst -isystem $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include,,$(LOCAL_CFLAGS))
47+
LOCAL_HEADER_LIBRARIES += generated_kernel_headers
48+
endif
49+
50+
# Remove KERNEL_OBJ/usr from any LOCAL_ADDITIONAL_DEPENDENCIES, we will
51+
# just include generated_kernel_headers which already has the proper
52+
# dependency
53+
ifneq (,$(findstring $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr,$(LOCAL_ADDITIONAL_DEPENDENCIES)))
54+
LOCAL_ADDITIONAL_DEPENDENCIES := $(patsubst $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr,,$(LOCAL_ADDITIONAL_DEPENDENCIES))
4455
endif
4556

4657
# The following LOCAL_ variables will be modified in this file.

0 commit comments

Comments
 (0)