├── .gitignore ├── LICENSE ├── bootanimation ├── bootanimation_1080.zip ├── bootanimation_1440.zip └── bootanimation_720.zip ├── build ├── core │ ├── config.mk │ ├── definitions.mk │ ├── main.mk │ ├── mkdir.mk │ ├── pathmap.mk │ ├── qcom_target.mk │ └── utils.mk ├── envsetup.sh ├── soong │ ├── Android.bp │ ├── bin │ │ └── hmm │ ├── generator │ │ ├── generator.go │ │ └── variables.go │ └── mkdir │ │ ├── init.go │ │ └── mkdir.go ├── tasks │ ├── bacon.mk │ ├── dt_image.mk │ └── kernel.mk └── tools │ ├── getb64key.py │ └── merge_dtbs.py ├── charger ├── Android.mk ├── images │ └── charger │ │ ├── battery_fail.png │ │ ├── battery_scale.png │ │ └── main_font.png └── values │ └── charger │ └── animation.txt ├── config ├── BoardConfigCustom.mk ├── BoardConfigKernel.mk ├── BoardConfigReservedSize.mk ├── BoardConfigSoong.mk ├── bootanimation.mk ├── common.mk ├── common_full_phone.mk ├── common_full_tablet.mk ├── common_full_tablet_wifionly.mk ├── common_mobile.mk ├── common_mobile_full.mk ├── data_only.mk ├── device_framework_matrix.xml ├── ota.mk ├── permissions │ ├── com.google.android.apps.dialer.call_recording_audio.features.xml │ ├── org.lineageos.health.xml │ ├── privapp-permissions-custom.xml │ └── privapp-permissions-lineagehw.xml ├── tablet.mk ├── telephony.mk ├── version.mk └── wifionly.mk ├── fonts ├── GoogleSans-Italic.ttf ├── GoogleSans-Regular.ttf ├── GoogleSansClock-Regular.ttf ├── GoogleSansFlex-Regular.ttf ├── GoogleSansFlexClock-Regular.ttf ├── fonts.mk └── fonts_customization.xml ├── overlay ├── common │ ├── frameworks │ │ └── base │ │ │ ├── core │ │ │ └── res │ │ │ │ └── res │ │ │ │ ├── color │ │ │ │ └── config_progress_background_tint.xml │ │ │ │ ├── drawable-nodpi │ │ │ │ └── default_wallpaper.png │ │ │ │ ├── drawable-sw600dp-nodpi │ │ │ │ └── default_wallpaper.png │ │ │ │ ├── drawable-sw720dp-nodpi │ │ │ │ └── default_wallpaper.png │ │ │ │ ├── drawable-television │ │ │ │ └── default_wallpaper.png │ │ │ │ ├── values-mcc460 │ │ │ │ └── config.xml │ │ │ │ ├── values-sw600dp │ │ │ │ └── config.xml │ │ │ │ ├── values │ │ │ │ ├── config.xml │ │ │ │ ├── vendor_required_apps_managed_device.xml │ │ │ │ ├── vendor_required_apps_managed_profile.xml │ │ │ │ └── vendor_required_apps_managed_user.xml │ │ │ │ └── xml │ │ │ │ └── config_webview_packages.xml │ │ │ └── packages │ │ │ ├── SettingsLib │ │ │ └── res │ │ │ │ ├── drawable-mcc310-mnc160 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc200 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc210 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc220 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc230 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc240 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc250 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc26 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc260 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc270 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc300 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc310 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc490 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc530 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc590 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc640 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc660 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── drawable-mcc310-mnc800 │ │ │ │ └── ic_5g_plus_mobiledata.xml │ │ │ │ ├── values-mcc310-mnc160 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc200 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc210 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc220 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc230 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc240 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc250 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc26 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc260 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc270 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc300 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc310 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc490 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc530 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc590 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc640 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc660 │ │ │ │ └── strings.xml │ │ │ │ ├── values-mcc310-mnc800 │ │ │ │ └── strings.xml │ │ │ │ └── values │ │ │ │ └── config.xml │ │ │ ├── SettingsProvider │ │ │ └── res │ │ │ │ └── values │ │ │ │ └── defaults.xml │ │ │ └── SystemUI │ │ │ └── res │ │ │ └── values │ │ │ ├── config.xml │ │ │ └── dimens.xml │ └── packages │ │ └── apps │ │ └── Settings │ │ └── res │ │ ├── values-night │ │ └── colors.xml │ │ └── values │ │ ├── colors.xml │ │ ├── config.xml │ │ ├── dimens.xml │ │ └── strings.xml ├── rro_packages │ ├── AndroidBlackTheme │ │ ├── Android.bp │ │ ├── AndroidManifest.xml │ │ └── res │ │ │ ├── color-night │ │ │ └── surface_header_dark_sysui.xml │ │ │ ├── values-night │ │ │ └── colors.xml │ │ │ └── values │ │ │ └── strings.xml │ ├── CustomFontPixelLauncherOverlay │ │ ├── Android.bp │ │ ├── AndroidManifest.xml │ │ └── res │ │ │ └── values │ │ │ └── styles.xml │ ├── DocumentsUIOverlay │ │ ├── Android.bp │ │ ├── AndroidManifest.xml │ │ └── res │ │ │ └── values │ │ │ └── config.xml │ ├── NcmTetheringOverlay │ │ ├── Android.bp │ │ ├── AndroidManifest.xml │ │ └── res │ │ │ └── values │ │ │ └── config.xml │ └── NetworkStackOverlay │ │ ├── Android.bp │ │ ├── AndroidManifest.xml │ │ └── res │ │ └── values │ │ └── config.xml ├── tablet │ └── frameworks │ │ └── base │ │ ├── core │ │ └── res │ │ │ └── res │ │ │ └── values │ │ │ └── config.xml │ │ └── packages │ │ └── SystemUI │ │ └── res │ │ └── values │ │ └── config.xml ├── tv │ └── frameworks │ │ └── base │ │ ├── core │ │ └── res │ │ │ └── res │ │ │ └── values-television │ │ │ └── config.xml │ │ └── packages │ │ └── PackageInstaller │ │ └── res │ │ └── values-television-night │ │ └── themes.xml └── wifionly │ ├── frameworks │ └── base │ │ └── core │ │ └── res │ │ └── res │ │ └── values │ │ └── config.xml │ └── packages │ └── apps │ └── Settings │ └── res │ └── values │ └── config.xml ├── prebuilt └── common │ ├── Android.bp │ ├── bin │ ├── backuptool.functions │ ├── backuptool.sh │ ├── backuptool_ab.functions │ ├── backuptool_ab.sh │ ├── backuptool_postinstall.sh │ └── wipe-frp.sh │ └── etc │ ├── apns-conf.xml │ ├── custom-component-overrides.xml │ ├── init │ ├── init.lineage-system_ext.rc │ └── init.openssh.rc │ └── sysconfig │ └── pixel_2016_exclusive.xml ├── product └── nvidia.mk ├── release ├── aconfig │ └── bp1a │ │ ├── Android.bp │ │ ├── android.hardware.biometrics │ │ ├── Android.bp │ │ └── screen_off_unlock_udfps_flag_values.textproto │ │ └── com.android.window.flags │ │ ├── Android.bp │ │ ├── enable_desktop_windowing_mode_flag_values.textproto │ │ ├── enable_desktop_windowing_taskbar_running_apps_flag_values.textproto │ │ └── enable_minimize_button_flag_values.textproto ├── build_config │ ├── DEFAULT=proto │ └── bp1a.textproto ├── release_config_map.mk ├── release_config_map.textproto └── release_configs │ └── bp1a.textproto ├── signing ├── BUILD ├── BUILD.bazel └── keys │ └── BUILD ├── tools ├── Android.bp ├── apns-conf.xsd └── clean_headers.sh └── vars └── aosp_target_release /.gitignore: -------------------------------------------------------------------------------- 1 | proprietary/* 2 | prebuilt/archive 3 | signing/keys/* 4 | !signing/keys/BUILD 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2011-15 The CyanogenMod Project 2 | 2017 The LineageOS Project 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | -------------------------------------------------------------------------------- /bootanimation/bootanimation_1080.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelOS-AOSP/vendor_aosp/2887d1b7729f38560b1cb4b27317c2bf29f2325b/bootanimation/bootanimation_1080.zip -------------------------------------------------------------------------------- /bootanimation/bootanimation_1440.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelOS-AOSP/vendor_aosp/2887d1b7729f38560b1cb4b27317c2bf29f2325b/bootanimation/bootanimation_1440.zip -------------------------------------------------------------------------------- /bootanimation/bootanimation_720.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PixelOS-AOSP/vendor_aosp/2887d1b7729f38560b1cb4b27317c2bf29f2325b/bootanimation/bootanimation_720.zip -------------------------------------------------------------------------------- /build/core/config.mk: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2015 The CyanogenMod Project 2 | # (C) 2017-2018 The LineageOS Project 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # Rules for QCOM targets 17 | include $(TOPDIR)vendor/aosp/build/core/qcom_target.mk 18 | -------------------------------------------------------------------------------- /build/core/definitions.mk: -------------------------------------------------------------------------------- 1 | # 2 | # PixelOS-specific macros 3 | # 4 | define uniq 5 | $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1))) 6 | endef 7 | 8 | # Include board/platform macros 9 | include vendor/aosp/build/core/utils.mk 10 | -------------------------------------------------------------------------------- /build/core/main.mk: -------------------------------------------------------------------------------- 1 | # Include PixelOS versions 2 | include $(TOPDIR)vendor/aosp/build/core/main_version.mk 3 | -------------------------------------------------------------------------------- /build/core/mkdir.mk: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2025 The LineageOS Project 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) 16 | $(call pretty-error,mkdir.mk may only be used from Soong) 17 | endif 18 | 19 | include $(BUILD_SYSTEM)/base_rules.mk 20 | 21 | $(LOCAL_BUILT_MODULE): $(LOCAL_ADDITIONAL_DEPENDENCIES) 22 | @mkdir -p $(dir $@) 23 | @touch $@ 24 | 25 | ifneq ($(filter $(LOCAL_MODULE),$(PRODUCT_PACKAGES)),) 26 | $(LOCAL_SOONG_INSTALL_DIR): 27 | @mkdir -p $@ 28 | 29 | ALL_DEFAULT_INSTALLED_MODULES += $(LOCAL_SOONG_INSTALL_DIR) 30 | endif 31 | -------------------------------------------------------------------------------- /build/core/pathmap.mk: -------------------------------------------------------------------------------- 1 | # Enter project path into pathmap 2 | # 3 | # $(1): name 4 | # $(2): path 5 | # 6 | define project-set-path 7 | $(eval pathmap_PROJ += $(1):$(2)) 8 | endef 9 | 10 | # Returns the path to the requested module's include directory, 11 | # relative to the root of the source tree. 12 | # 13 | # $(1): a list of modules (or other named entities) to find the projects for 14 | define project-path-for 15 | $(foreach n,$(1),$(patsubst $(n):%,%,$(filter $(n):%,$(pathmap_PROJ)))) 16 | endef 17 | -------------------------------------------------------------------------------- /build/core/qcom_target.mk: -------------------------------------------------------------------------------- 1 | # Set device-specific HALs into project pathmap 2 | define set-device-specific-path 3 | $(if $(USE_DEVICE_SPECIFIC_$(1)), \ 4 | $(if $(DEVICE_SPECIFIC_$(1)_PATH), \ 5 | $(eval path := $(DEVICE_SPECIFIC_$(1)_PATH)), \ 6 | $(eval path := $(TARGET_DEVICE_DIR)/$(2))), \ 7 | $(eval path := $(3))) \ 8 | $(call project-set-path,qcom-$(2),$(strip $(path))) 9 | endef 10 | 11 | ifeq ($(BOARD_USES_QCOM_HARDWARE),true) 12 | 13 | $(call set-device-specific-path,AUDIO,audio,hardware/qcom-caf/$(QCOM_HARDWARE_VARIANT)/audio) 14 | $(call set-device-specific-path,DISPLAY,display,hardware/qcom-caf/$(QCOM_HARDWARE_VARIANT)/display) 15 | $(call set-device-specific-path,MEDIA,media,hardware/qcom-caf/$(QCOM_HARDWARE_VARIANT)/media) 16 | 17 | $(call set-device-specific-path,BT_VENDOR,bt-vendor,hardware/qcom-caf/bt) 18 | $(call set-device-specific-path,DATA_IPA_CFG_MGR,data-ipa-cfg-mgr,vendor/qcom/opensource/data-ipa-cfg-mgr) 19 | $(call set-device-specific-path,DATASERVICES,dataservices,vendor/qcom/opensource/dataservices) 20 | $(call set-device-specific-path,WLAN,wlan,hardware/qcom-caf/wlan) 21 | 22 | PRODUCT_CFI_INCLUDE_PATHS += \ 23 | hardware/qcom-caf/wlan/qcwcn/wpa_supplicant_8_lib 24 | 25 | else 26 | 27 | QC_OPEN_PATH := vendor/qcom/opensource 28 | 29 | endif 30 | -------------------------------------------------------------------------------- /build/core/utils.mk: -------------------------------------------------------------------------------- 1 | # vars for use by utils 2 | # the following are already defined in build/make: 3 | # empty space comma newline pound backslash 4 | colon := $(empty):$(empty) 5 | underscore := $(empty)_$(empty) 6 | 7 | # $(call match-word,w1,w2) 8 | # checks if w1 == w2 9 | # How it works 10 | # if (w1-w2 not empty or w2-w1 not empty) then not_match else match 11 | # 12 | # returns true or empty 13 | #$(warning :$(1): :$(2): :$(subst $(1),,$(2)):) \ 14 | #$(warning :$(2): :$(1): :$(subst $(2),,$(1)):) \ 15 | # 16 | define match-word 17 | $(strip \ 18 | $(if $(or $(subst $(1),$(empty),$(2)),$(subst $(2),$(empty),$(1))),,true) \ 19 | ) 20 | endef 21 | 22 | # $(call find-word-in-list,w,wlist) 23 | # finds an exact match of word w in word list wlist 24 | # 25 | # How it works 26 | # fill wlist spaces with colon 27 | # wrap w with colon 28 | # search word w in list wl, if found match m, return stripped word w 29 | # 30 | # returns stripped word or empty 31 | define find-word-in-list 32 | $(strip \ 33 | $(eval wl:= $(colon)$(subst $(space),$(colon),$(strip $(2)))$(colon)) \ 34 | $(eval w:= $(colon)$(strip $(1))$(colon)) \ 35 | $(eval m:= $(findstring $(w),$(wl))) \ 36 | $(if $(m),$(1),) \ 37 | ) 38 | endef 39 | 40 | # $(call match-word-in-list,w,wlist) 41 | # does an exact match of word w in word list wlist 42 | # How it works 43 | # if the input word is not empty 44 | # return output of an exact match of word w in wordlist wlist 45 | # else 46 | # return empty 47 | # returns true or empty 48 | define match-word-in-list 49 | $(strip \ 50 | $(if $(strip $(1)), \ 51 | $(call match-word,$(call find-word-in-list,$(1),$(2)),$(strip $(1))), \ 52 | ) \ 53 | ) 54 | endef 55 | 56 | # $(call match-prefix,p,delim,w/wlist) 57 | # matches prefix p in wlist using delimiter delim 58 | # 59 | # How it works 60 | # trim the words in wlist w 61 | # if find-word-in-list returns not empty 62 | # return true 63 | # else 64 | # return empty 65 | # 66 | define match-prefix 67 | $(strip \ 68 | $(eval w := $(strip $(1)$(strip $(2)))) \ 69 | $(eval text := $(patsubst $(w)%,$(1),$(3))) \ 70 | $(if $(call match-word-in-list,$(1),$(text)),true,) \ 71 | ) 72 | endef 73 | 74 | # ---- 75 | # The following utilities are meant for board platform specific 76 | # featurisation 77 | 78 | ifndef get-vendor-board-platforms 79 | # $(call get-vendor-board-platforms,v) 80 | # returns list of board platforms for vendor v 81 | define get-vendor-board-platforms 82 | $(if $(call match-word,$(BOARD_USES_$(1)_HARDWARE),true),$($(1)_BOARD_PLATFORMS)) 83 | endef 84 | endif # get-vendor-board-platforms 85 | 86 | # $(call is-board-platform,bp) 87 | # returns true or empty 88 | define is-board-platform 89 | $(call match-word,$(1),$(TARGET_BOARD_PLATFORM)) 90 | endef 91 | 92 | # $(call is-not-board-platform,bp) 93 | # returns true or empty 94 | define is-not-board-platform 95 | $(if $(call match-word,$(1),$(TARGET_BOARD_PLATFORM)),,true) 96 | endef 97 | 98 | # $(call is-board-platform-in-list,bpl) 99 | # returns true or empty 100 | define is-board-platform-in-list 101 | $(call match-word-in-list,$(TARGET_BOARD_PLATFORM),$(1)) 102 | endef 103 | 104 | # $(call is-vendor-board-platform,vendor) 105 | # returns true or empty 106 | define is-vendor-board-platform 107 | $(strip \ 108 | $(call match-word-in-list,$(TARGET_BOARD_PLATFORM),\ 109 | $(call get-vendor-board-platforms,$(1)) \ 110 | ) \ 111 | ) 112 | endef 113 | 114 | # $(call is-chipset-in-board-platform,chipset) 115 | # does a prefix match of chipset in TARGET_BOARD_PLATFORM 116 | # uses underscore as a delimiter 117 | # 118 | # returns true or empty 119 | define is-chipset-in-board-platform 120 | $(call match-prefix,$(1),$(underscore),$(TARGET_BOARD_PLATFORM)) 121 | endef 122 | 123 | # $(call is-chipset-prefix-in-board-platform,prefix) 124 | # does a chipset prefix match in TARGET_BOARD_PLATFORM 125 | # assumes '_' and 'a' as the delimiter to the chipset prefix 126 | # 127 | # How it works 128 | # if ($(prefix)_ or $(prefix)a match in board platform) 129 | # return true 130 | # else 131 | # return empty 132 | # 133 | define is-chipset-prefix-in-board-platform 134 | $(strip \ 135 | $(eval delim_a := $(empty)a$(empty)) \ 136 | $(if \ 137 | $(or \ 138 | $(call match-prefix,$(1),$(delim_a),$(TARGET_BOARD_PLATFORM)), \ 139 | $(call match-prefix,$(1),$(underscore),$(TARGET_BOARD_PLATFORM)), \ 140 | ), \ 141 | true, \ 142 | ) \ 143 | ) 144 | endef 145 | 146 | #---- 147 | # The following utilities are meant for Android Code Name 148 | # specific featurisation 149 | # 150 | # refer http://source.android.com/source/build-numbers.html 151 | # for code names and associated sdk versions 152 | CUPCAKE_SDK_VERSIONS := 3 153 | DONUT_SDK_VERSIONS := 4 154 | ECLAIR_SDK_VERSIONS := 5 6 7 155 | FROYO_SDK_VERSIONS := 8 156 | GINGERBREAD_SDK_VERSIONS := 9 10 157 | HONEYCOMB_SDK_VERSIONS := 11 12 13 158 | ICECREAM_SANDWICH_SDK_VERSIONS := 14 15 159 | JELLY_BEAN_SDK_VERSIONS := 16 17 18 160 | 161 | # $(call is-platform-sdk-version-at-least,version) 162 | # version is a numeric SDK_VERSION defined above 163 | define is-platform-sdk-version-at-least 164 | $(strip \ 165 | $(if $(filter 1,$(shell echo "$$(( $(PLATFORM_SDK_VERSION) >= $(1) ))" )), \ 166 | true, \ 167 | ) \ 168 | ) 169 | endef 170 | 171 | # $(call is-android-codename,codename) 172 | # codename is one of cupcake,donut,eclair,froyo,gingerbread,icecream 173 | # please refer the $(codename)_SDK_VERSIONS declared above 174 | define is-android-codename 175 | $(strip \ 176 | $(if \ 177 | $(call match-word-in-list,$(PLATFORM_SDK_VERSION),$($(1)_SDK_VERSIONS)), \ 178 | true, \ 179 | ) \ 180 | ) 181 | endef 182 | 183 | # $(call is-android-codename-in-list,cnlist) 184 | # cnlist is combination/list of android codenames 185 | define is-android-codename-in-list 186 | $(strip \ 187 | $(eval acn := $(empty)) \ 188 | $(foreach \ 189 | i,$(1),\ 190 | $(eval acn += \ 191 | $(if \ 192 | $(call \ 193 | match-word-in-list,\ 194 | $(PLATFORM_SDK_VERSION),\ 195 | $($(i)_SDK_VERSIONS)\ 196 | ),\ 197 | true,\ 198 | )\ 199 | )\ 200 | ) \ 201 | $(if $(strip $(acn)),true,) \ 202 | ) 203 | endef 204 | 205 | # $(call add-radio-file-sha1-checked,path,sha1) 206 | define add-radio-file-sha1-checked 207 | $(eval path := $(LOCAL_PATH)/$(1)) 208 | $(eval sha1 := $(shell sha1sum "$(path)" | cut -d" " -f 1)) 209 | $(if $(filter $(sha1),$(2)), 210 | $(call add-radio-file,$(1)), 211 | $(error $(path) SHA1 mismatch ($(sha1) != $(2)))) 212 | endef 213 | -------------------------------------------------------------------------------- /build/soong/Android.bp: -------------------------------------------------------------------------------- 1 | // PixelOS soong configs 2 | 3 | bootstrap_go_package { 4 | name: "soong-custom-generator", 5 | pkgPath: "custom/soong/generator", 6 | deps: [ 7 | "blueprint", 8 | "blueprint-pathtools", 9 | "soong", 10 | "soong-android", 11 | "soong-shared", 12 | ], 13 | srcs: [ 14 | "generator/generator.go", 15 | "generator/variables.go", 16 | ], 17 | pluginFor: ["soong_build"], 18 | } 19 | 20 | custom_generator { 21 | name: "generated_kernel_includes", 22 | 23 | // The headers make command 24 | cmd: "$(PATH_OVERRIDE_SOONG) $(KERNEL_MAKE_CMD) $(KERNEL_MAKE_FLAGS) -C $(TARGET_KERNEL_SOURCE) O=$(KERNEL_BUILD_OUT_PREFIX)$(genDir) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) headers_install && vendor/aosp/tools/clean_headers.sh $(KERNEL_BUILD_OUT_PREFIX)$(genDir)", 25 | 26 | // Directories that can be imported by a cc_* module generated_headers property 27 | export_include_dirs: [ 28 | "usr/audio/include/uapi", 29 | "usr/include", 30 | "usr/include/audio", 31 | "usr/include/audio/include/uapi", 32 | "usr/techpack/audio/include", 33 | ], 34 | 35 | // Sources for dependency tracking 36 | dep_root: "$(TARGET_KERNEL_SOURCE)", 37 | dep_files: [ 38 | "Makefile", 39 | "include/**/*", 40 | "arch/$(KERNEL_ARCH)/include/**/*", 41 | "techpack/audio/include/**/*", 42 | ], 43 | } 44 | 45 | bootstrap_go_package { 46 | name: "soong-aosp-mkdir", 47 | pkgPath: "aosp/soong/mkdir", 48 | deps: [ 49 | "blueprint", 50 | "blueprint-pathtools", 51 | "soong", 52 | "soong-android", 53 | ], 54 | srcs: [ 55 | "mkdir/init.go", 56 | "mkdir/mkdir.go", 57 | ], 58 | pluginFor: ["soong_build"], 59 | } 60 | 61 | cc_defaults { 62 | name: "generated_kernel_header_defaults", 63 | generated_headers: ["generated_kernel_includes"], 64 | export_generated_headers: ["generated_kernel_includes"], 65 | vendor_available: true, 66 | recovery_available: true, 67 | } 68 | 69 | cc_library_headers { 70 | name: "generated_kernel_headers", 71 | defaults: ["generated_kernel_header_defaults"], 72 | } 73 | 74 | cc_library_headers { 75 | name: "qti_kernel_headers", 76 | defaults: ["generated_kernel_header_defaults"], 77 | } 78 | -------------------------------------------------------------------------------- /build/soong/bin/hmm: -------------------------------------------------------------------------------- 1 | function __print_custom_functions_help() { 2 | cat <): the path to the tool or tool_file with name