def __init__(self, config: Config):
		self.config = config

		# Create environment variables
		self.env_vars = os.environ.copy()
		self.env_vars['PATH'] = f"{CLANG_PATH}/bin:{GCC_AARCH64_PATH}/bin:{GCC_ARM_PATH}/bin:{self.env_vars['PATH']}"

		# Create Make flags
		self.make_flags = [
			f"O={config.out_path}/KERNEL_OBJ",
			f"ARCH={config.arch}",
			f"SUBARCH={config.arch}",
			f"-j{cpu_count()}",
		]
		self.make_flags += [
			"CROSS_COMPILE=aarch64-linux-android-",
			"CROSS_COMPILE_ARM32=arm-linux-androideabi-"
		] if config.arch == "arm64" else [
			"CROSS_COMPILE=arm-linux-androideabi-"
		]
		self.make_flags += [
			f"CC=ccache {config.toolchain}"
		] if get_config("ENABLE_CCACHE") == "true" else [
			f"CC={config.toolchain}"
		]
		if config.toolchain == "clang":
			self.make_flags += [
				"CLANG_TRIPLE=aarch64-linux-gnu-"
			] if config.arch == "arm64" else [
				"CLANG_TRIPLE=arm-linux-gnu-"
			]

		localversion = ""
		kernel_name = get_config("COMMON_KERNEL_NAME")
		kernel_version = get_config("COMMON_KERNEL_VERSION")
		if kernel_name != "":
			localversion += f"-{kernel_name}"
		if kernel_version != "":
			localversion += f"-{kernel_version}"

		if localversion != "":
			self.make_flags += [f"LOCALVERSION={localversion}"]

		self.make_flags += config.additional_make_flags

		# Clone toolchains if needed
		for toolchain in ["clang", "gcc"]:
			toolchain_path = prebuilts_path / toolchain
			if toolchain_path.is_dir():
				continue

			info(f"Cloning toolchain: {toolchain}")
			Repo.clone_from(TOOLCHAINS_REMOTE, toolchain_path, branch=f"prebuilts-{toolchain}",
							single_branch=True, depth=1)
			info("Cloning finished")
    def __init__(self, config: Config):
        self.config = config
        self.path = config.out_path / "ANYKERNEL_OBJ"
        self.kernel_name = get_config("COMMON_KERNEL_NAME")
        self.kernel_version = get_config("COMMON_KERNEL_VERSION")

        if self.path.is_dir():
            rmtree(self.path,
                   ignore_errors=False,
                   onerror=handle_remove_readonly)

        Repo.clone_from(ANYKERNEL3_REMOTE,
                        self.path,
                        single_branch=True,
                        depth=1)
    def get_ak3_zip_filename(self):
        filename = [self.kernel_name if self.kernel_name != "" else "kernel"]
        filename += [self.config.codename, self.kernel_version]
        if get_config("INCLUDE_DATE_IN_ZIP_FILENAME") == "true":
            filename += [date.today().strftime('%Y%m%d')]

        return "-".join(filename)