Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fcbb743d authored by Inseob Kim's avatar Inseob Kim
Browse files

Migrate init.environ.rc module to Soong

Makefile module still remains to handle post install commands. We're
going to move that to somewhere else as a followup.

Bug: 353429422
Test: boot with and without USE_SOONG_DEFINED_SYSTEM_IMAGE
Change-Id: I85ec048e6e57981ad4496ea90762aa34bd9a5ca1
parent 4d73a9d9
Loading
Loading
Loading
Loading
+53 −0
Original line number Diff line number Diff line
@@ -134,3 +134,56 @@ llndk_libraries_txt {
sanitizer_libraries_txt {
    name: "sanitizer.libraries.txt",
}

EXPORT_GLOBAL_ASAN_OPTIONS = select(soong_config_variable("ANDROID", "ASAN_ENABLED"), {
    true: "export ASAN_OPTIONS include=/system/asan.options",
    default: "",
})

EXPORT_GLOBAL_HWASAN_OPTIONS = select((soong_config_variable("ANDROID", "HWASAN_ENABLED"), soong_config_variable("ANDROID", "HWADDRESS_SANITIZER_GLOBAL_OPTIONS")), {
    (true, ""): "",
    (true, any @ options): "export HWASAN_OPTIONS " + options,
    (default, default): "",
})

EXPORT_GLOBAL_GCOV_OPTIONS = select(soong_config_variable("ANDROID", "GCOV_COVERAGE"), {
    true: "export GCOV_PREFIX /data/misc/trace",
    default: "",
})

EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS = select((soong_config_variable("ANDROID", "CLANG_COVERAGE"), soong_config_variable("ANDROID", "CLANG_COVERAGE_CONTINUOUS_MODE")), {
    (true, true): "export LLVM_PROFILE_FILE /data/misc/trace/clang%c-%20m.profraw",
    (true, default): "export LLVM_PROFILE_FILE /data/misc/trace/clang-%20m.profraw",
    (default, default): "",
})

EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE = select(soong_config_variable("ANDROID", "SCUDO_ALLOCATION_RING_BUFFER_SIZE"), {
    "": "",
    any @ size: "export SCUDO_ALLOCATION_RING_BUFFER_SIZE " + size,
    default: "",
})

genrule {
    name: "init.environ.rc.gen",
    srcs: ["init.environ.rc.in"],
    out: ["init.environ.rc"],
    cmd: "cp -f $(in) $(out) && " +
        "sed -i -e 's?%EXPORT_GLOBAL_ASAN_OPTIONS%?" + EXPORT_GLOBAL_ASAN_OPTIONS + "?g' $(out) && " +
        "sed -i -e 's?%EXPORT_GLOBAL_GCOV_OPTIONS%?" + EXPORT_GLOBAL_GCOV_OPTIONS + "?g' $(out) && " +
        "sed -i -e 's?%EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS%?" + EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS + "?g' $(out) && " +
        "sed -i -e 's?%EXPORT_GLOBAL_HWASAN_OPTIONS%?" + EXPORT_GLOBAL_HWASAN_OPTIONS + "?g' $(out) && " +
        "sed -i -e 's?%EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE%?" + EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE + "?g' $(out)",
}

prebuilt_root {
    name: "init.environ.rc-soong",
    src: ":init.environ.rc.gen",
    filename: "init.environ.rc",
    install_in_root: true,
    no_full_install: true,
    required: select((soong_config_variable("ANDROID", "ASAN_ENABLED"), soong_config_variable("ANDROID", "SANITIZE_TARGET_SYSTEM_ENABLED")), {
        (true, true): ["asan.options", "asan_extract"],
        (true, default): ["asan.options"],
        (default, default): [],
    }),
}
+6 −38
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ endif
endif
#######################################
# init.environ.rc
# TODO(b/353429422): move LOCAL_POST_INSTALL_CMD to other rules and remove Android.mk module.

include $(CLEAR_VARS)
LOCAL_MODULE_CLASS := ETC
@@ -19,36 +20,8 @@ LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
LOCAL_LICENSE_CONDITIONS := notice
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)

EXPORT_GLOBAL_ASAN_OPTIONS :=
ifneq ($(filter address,$(SANITIZE_TARGET)),)
  EXPORT_GLOBAL_ASAN_OPTIONS := export ASAN_OPTIONS include=/system/asan.options
  LOCAL_REQUIRED_MODULES := asan.options $(ASAN_OPTIONS_FILES) $(ASAN_EXTRACT_FILES)
endif

EXPORT_GLOBAL_HWASAN_OPTIONS :=
ifneq ($(filter hwaddress,$(SANITIZE_TARGET)),)
  ifneq ($(HWADDRESS_SANITIZER_GLOBAL_OPTIONS),)
    EXPORT_GLOBAL_HWASAN_OPTIONS := export HWASAN_OPTIONS $(HWADDRESS_SANITIZER_GLOBAL_OPTIONS)
  endif
endif

EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE :=
ifneq ($(PRODUCT_SCUDO_ALLOCATION_RING_BUFFER_SIZE),)
  EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE := export SCUDO_ALLOCATION_RING_BUFFER_SIZE $(PRODUCT_SCUDO_ALLOCATION_RING_BUFFER_SIZE)
endif

EXPORT_GLOBAL_GCOV_OPTIONS :=
ifeq ($(NATIVE_COVERAGE),true)
  EXPORT_GLOBAL_GCOV_OPTIONS := export GCOV_PREFIX /data/misc/trace
endif

EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS :=
ifeq ($(CLANG_COVERAGE),true)
  ifeq ($(CLANG_COVERAGE_CONTINUOUS_MODE),true)
    EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS := export LLVM_PROFILE_FILE /data/misc/trace/clang%c-%20m.profraw
  else
    EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS := export LLVM_PROFILE_FILE /data/misc/trace/clang-%20m.profraw
  endif
  LOCAL_REQUIRED_MODULES := asan.options $(ASAN_EXTRACT_FILES)
endif

# Put it here instead of in init.rc module definition,
@@ -173,15 +146,10 @@ ALL_DEFAULT_INSTALLED_MODULES += $(ALL_ROOTDIR_SYMLINKS)
include $(BUILD_SYSTEM)/base_rules.mk

$(ALL_ROOTDIR_SYMLINKS): $(LOCAL_BUILT_MODULE)
$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/init.environ.rc.in
	@echo "Generate: $< -> $@"
	@mkdir -p $(dir $@)
	$(hide) cp $< $@
	$(hide) sed -i -e 's?%EXPORT_GLOBAL_ASAN_OPTIONS%?$(EXPORT_GLOBAL_ASAN_OPTIONS)?g' $@
	$(hide) sed -i -e 's?%EXPORT_GLOBAL_GCOV_OPTIONS%?$(EXPORT_GLOBAL_GCOV_OPTIONS)?g' $@
	$(hide) sed -i -e 's?%EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS%?$(EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS)?g' $@
	$(hide) sed -i -e 's?%EXPORT_GLOBAL_HWASAN_OPTIONS%?$(EXPORT_GLOBAL_HWASAN_OPTIONS)?g' $@
	$(hide) sed -i -e 's?%EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE%?$(EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE)?g' $@

init.environ.rc-soong := $(call intermediates-dir-for,ETC,init.environ.rc-soong)/init.environ.rc-soong
$(eval $(call copy-one-file,$(init.environ.rc-soong),$(LOCAL_BUILT_MODULE)))
init.environ.rc-soong :=

#######################################
# ramdisk_node_list