Patch Detail
Show a patch.
GET /api/patches/17684/?format=api
{ "id": 17684, "url": "https://patchwork.libcamera.org/api/patches/17684/?format=api", "web_url": "https://patchwork.libcamera.org/patch/17684/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20221024055543.116040-10-nicholas@rothemail.net>", "date": "2022-10-24T05:55:41", "name": "[libcamera-devel,09/11] Adds Android makefiles to build libcamera inline with AOSP.", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "fa78b4eda4db98a921a52a36ad47613dfbf779fd", "submitter": { "id": 97, "url": "https://patchwork.libcamera.org/api/people/97/?format=api", "name": "Nicolas Dufresne via libcamera-devel", "email": "libcamera-devel@lists.libcamera.org" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/17684/mbox/", "series": [ { "id": 3575, "url": "https://patchwork.libcamera.org/api/series/3575/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3575", "date": "2022-10-24T05:55:33", "name": "[libcamera-devel,01/11] Fixes Bug 156, which breaks libcamera on Android < 12.", "version": 1, "mbox": "https://patchwork.libcamera.org/series/3575/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/17684/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/17684/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 07795C3285\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 24 Oct 2022 05:56:07 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7DE4862F17;\n\tMon, 24 Oct 2022 07:56:06 +0200 (CEST)", "from mail-oa1-x2a.google.com (mail-oa1-x2a.google.com\n\t[IPv6:2001:4860:4864:20::2a])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C425D62F09\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 24 Oct 2022 07:56:01 +0200 (CEST)", "by mail-oa1-x2a.google.com with SMTP id\n\t586e51a60fabf-1322d768ba7so10796333fac.5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 23 Oct 2022 22:56:01 -0700 (PDT)", "from nroth-pc.attlocal.net\n\t([2600:1700:20:20c0:7bc3:aed3:676f:10a0])\n\tby smtp.gmail.com with ESMTPSA id\n\tx15-20020a9d628f000000b0066193df8edasm3980278otk.34.2022.10.23.22.55.59\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tSun, 23 Oct 2022 22:55:59 -0700 (PDT)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1666590966;\n\tbh=8dK/hyVkFa9l4QITdedmqptYF0pa9Ow1zxArdOZrEr8=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=x3RJEChvHCp8eapxzlk323PSW6qr93CAYVE4UHMMnumqwytiRa5/sM02oRaKP84At\n\tD7zt4w1xskrPXjyRsLlLgH6Y0vaQ6cvuNLY3dkGRC2XuOIDpM9Uu3c8VVjJ3esDZbQ\n\t/p9nB1QwYHOS1MSB23RUf3xNT7P5oLzbIXyKEUV84s9xGD9x9wmFOErLDcvpUawsts\n\t4yyn1sx6VqW3mIR5UVv/nRhoqMayuPCEG3WyMIWmAXOxuDslLkrMCW/jNrSVWIjM2F\n\tN/n24U1eTF5uH76LsI6IS+Myf92S2g65NppI9FK6aTchdbPM5gloykvrVV9ezc9IzE\n\t72WKffDci/FEA==", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=rothemail-net.20210112.gappssmtp.com; s=20210112;\n\th=content-transfer-encoding:mime-version:reply-to:references\n\t:in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject\n\t:date:message-id:reply-to;\n\tbh=y2hEpCsq8TLWKTKIEMZub7cdxGQHSOfebJxxIIDwedc=;\n\tb=HI4xtw6PmOOBtM2m98houl8IxluHuln6JGDYce/esR7VL6xhNWCMxS7jL35/oi6fUA\n\tMUnRdL/iO+YlgLq0lJ5Uun9uDK8wwxI0v81yMgwPnnK5G8pOVzZemYK1MfFPjTJ6jf6w\n\tJ/nG93L5syU8x6/DiiYE6aVx1fgWCo+t3zOr6GU0k7t9MVEEGXbE7BbxqO3WStroh9TW\n\tQVpgJrH5LXwnrIckyAAEf2i3VFqKBHPCWMs3RvTwXH7uLvQeiZ/dK/P2rxG90VPY6B/6\n\tPDfxAUxFBEKUsrAtDMi+BE/T5XBCu2TNp50X6P7t2b/rC9yzfiULiZgvSldYNzvNAuv9\n\tXRAw==" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected)\n\theader.d=rothemail-net.20210112.gappssmtp.com\n\theader.i=@rothemail-net.20210112.gappssmtp.com header.b=\"HI4xtw6P\"; \n\tdkim-atps=neutral", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=content-transfer-encoding:mime-version:reply-to:references\n\t:in-reply-to:message-id:date:subject:cc:to:from:x-gm-message-state\n\t:from:to:cc:subject:date:message-id:reply-to;\n\tbh=y2hEpCsq8TLWKTKIEMZub7cdxGQHSOfebJxxIIDwedc=;\n\tb=faMpYNFy8y50RC+V5MHqMrXLrPCj3rzusPeVIJzlAowE2ozIaTXTK5hR2haVENU2qq\n\t55zORS9whLqB4WlxXjb97qktCjAcMj1j9XlRJ0ZjY3mz8ORWXrKdUwwCeI8rhJpnqgqN\n\tgOzeti4ZatcL52sxr3ONv9A4H7XLrRmlxBpG1RqO4H81ggbHA4tRifqLfeDhQUrmWaN5\n\th/LijQd5DRvaF9hyrsqE1CfF4SRNm2hXm3dnP6019TF7JjSLIWc79uMvLERJk1r+N6bQ\n\tUpZG55bp4OvLO8NFYVuTmiEvlSQxu4iQ/Wcm6VqU4FC9Ck7bjGzyorbusgJmD8piTe6E\n\t1uQw==", "X-Gm-Message-State": "ACrzQf31ua322jy0WdjkW+MzAQlajqJem2zz9CCqJfCDNMFkgo2dmK0F\n\tG58jBKfs6mcTYC/dM+bCI9ugrBHb2hEAsuVs", "X-Google-Smtp-Source": "AMsMyM7Ek/MChTpcIl9ZmhOz+EGRgYcFtnXkr2kLoCFDZduhSuvGA6D1ZyvLXRoEV1fNzU9TX4J8rQ==", "X-Received": "by 2002:a05:6870:2498:b0:131:958e:3cbd with SMTP id\n\ts24-20020a056870249800b00131958e3cbdmr38489487oaq.72.1666590960235; \n\tSun, 23 Oct 2022 22:56:00 -0700 (PDT)", "To": "libcamera-devel@lists.libcamera.org", "Date": "Mon, 24 Oct 2022 00:55:41 -0500", "Message-Id": "<20221024055543.116040-10-nicholas@rothemail.net>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20221024055543.116040-1-nicholas@rothemail.net>", "References": "<20221024055543.116040-1-nicholas@rothemail.net>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 09/11] Adds Android makefiles to build\n\tlibcamera inline with AOSP.", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "From": "Nicholas Roth via libcamera-devel <libcamera-devel@lists.libcamera.org>", "Reply-To": "libcamera-devel@lists.libcamera.org", "Cc": "nicholas@rothemail.net", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "From: Nicholas Roth <nicholas@rothemail.net>\n\n---\n android/Android.mk | 86 ++++++++++++\n android/meson_cross.mk | 296 +++++++++++++++++++++++++++++++++++++++++\n 2 files changed, 382 insertions(+)\n create mode 100644 android/Android.mk\n create mode 100644 android/meson_cross.mk", "diff": "diff --git a/android/Android.mk b/android/Android.mk\nnew file mode 100644\nindex 00000000..ff0d1472\n--- /dev/null\n+++ b/android/Android.mk\n@@ -0,0 +1,86 @@\n+# SPDX-License-Identifier: Apache-2.0\n+#\n+# Copyright (C) 2021, GlobalLogic Ukraine\n+# Copyright (C) 2021, Roman Stratiienko (r.stratiienko@gmail.com)\n+#\n+# Android.mk - Android makefile\n+#\n+\n+ifneq ($(filter true, $(BOARD_LIBCAMERA_USES_MESON_BUILD)),)\n+\n+LOCAL_PATH := $(call my-dir)\n+LIBCAMERA_TOP := $(dir $(LOCAL_PATH))\n+LIBCAMERA_MESON_VERSION := .0.0.1\n+\n+include $(CLEAR_VARS)\n+\n+LOCAL_SHARED_LIBRARIES := libc libexif libjpeg libyuv_chromium libdl libyaml\n+MESON_GEN_PKGCONFIGS := libexif libjpeg yaml-0.1 libyuv dl\n+\n+ifeq ($(TARGET_IS_64_BIT),true)\n+LOCAL_MULTILIB := 64\n+else\n+LOCAL_MULTILIB := 32\n+endif\n+include $(LOCAL_PATH)/meson_cross.mk\n+\n+ifdef TARGET_2ND_ARCH\n+LOCAL_MULTILIB := 32\n+include $(LOCAL_PATH)/meson_cross.mk\n+endif\n+\n+#-------------------------------------------------------------------------------\n+\n+define libcamera-lib\n+LOCAL_MODULE_CLASS := SHARED_LIBRARIES\n+LOCAL_MODULE := $1\n+LOCAL_VENDOR_MODULE := true\n+LOCAL_MODULE_RELATIVE_PATH := $2\n+ifdef TARGET_2ND_ARCH\n+LOCAL_SRC_FILES_$(TARGET_ARCH) := $(call relative_top_path,$(LOCAL_PATH))$($3)\n+LOCAL_SRC_FILES_$(TARGET_2ND_ARCH) := $(call relative_top_path,$(LOCAL_PATH))$(2ND_$3)\n+LOCAL_MULTILIB := both\n+else\n+LOCAL_SRC_FILES := $(call relative_top_path,$(LOCAL_PATH))$($3)\n+endif\n+LOCAL_CHECK_ELF_FILES := false\n+LOCAL_MODULE_SUFFIX := .so$(${4})\n+include $(BUILD_PREBUILT)\n+include $(CLEAR_VARS)\n+endef\n+\n+__MY_SHARED_LIBRARIES := $(LOCAL_SHARED_LIBRARIES)\n+include $(CLEAR_VARS)\n+LOCAL_SHARED_LIBRARIES := $(__MY_SHARED_LIBRARIES)\n+\n+# Modules 'libcamera', produces '/vendor/lib{64}/libcamera.so'\n+$(eval $(call libcamera-lib,libcamera,,LIBCAMERA_BIN,LIBCAMERA_MESON_VERSION))\n+# Modules 'libcamera-base', produces '/vendor/lib{64}/libcamera-base.so'\n+$(eval $(call libcamera-lib,libcamera-base,,LIBCAMERA_BASE_BIN,LIBCAMERA_MESON_VERSION))\n+# Modules 'ipa_rkisp1', produces '/vendor/lib{64}/ipa_rkisp1.so'\n+$(eval $(call libcamera-lib,ipa_rkisp1,,LIBCAMERA_IPA_RKISP1_BIN,))\n+# Modules 'ipa_rkisp1', produces '/vendor/lib{64}/ipa_rpi.so'\n+$(eval $(call libcamera-lib,ipa_rpi,,LIBCAMERA_IPA_RASPBERRYPI_BIN,))\n+# Modules 'ipa_rkisp1', produces '/vendor/lib{64}/ipa_ipu3.so'\n+$(eval $(call libcamera-lib,ipa_ipu3,,LIBCAMERA_IPA_IPU3_BIN,))\n+# Modules 'ipa_rkisp1', produces '/vendor/lib{64}/ipa_vimc.so'\n+$(eval $(call libcamera-lib,ipa_vimc,,LIBCAMERA_IPA_VIMC_BIN,))\n+\n+# Modules 'camera.libcamera', produces '/vendor/lib{64}/hw/camera.libcamera.so' HAL\n+$(eval $(call libcamera-lib,camera.libcamera,hw,LIBCAMERA_HAL_BIN,))\n+\n+LOCAL_SHARED_LIBRARIES += libcamera libcamera-base ipa_rkisp1 ipa_rpi ipa_ipu3 ipa_vimc\n+LOCAL_REQUIRED_MODULES := libcamera libcamera-base ipa_rkisp1 ipa_rpi ipa_ipu3 ipa_vimc\n+\n+$(shell mkdir -p $(TARGET_OUT_VENDOR_ETC)/rkisp1/)\n+$(shell mkdir -p $(TARGET_OUT_VENDOR_ETC)/rpi/)\n+$(shell mkdir -p $(TARGET_OUT_VENDOR_ETC)/ipu3/)\n+$(shell mkdir -p $(TARGET_OUT_VENDOR_ETC)/vimc/)\n+$(shell cp $(LIBCAMERA_IPA_RKISP1_CONFIGS)/* $(TARGET_OUT_VENDOR_ETC)/rkisp1/)\n+$(shell cp $(LIBCAMERA_IPA_RASPBERRYPI_CONFIGS)/* $(TARGET_OUT_VENDOR_ETC)/rpi/)\n+$(shell cp $(LIBCAMERA_IPA_IPU3_CONFIGS)/* $(TARGET_OUT_VENDOR_ETC)/ipu3/)\n+$(shell cp $(LIBCAMERA_IPA_VIMC_CONFIGS)/* $(TARGET_OUT_VENDOR_ETC)/vimc/)\n+\n+#-------------------------------------------------------------------------------\n+\n+endif\ndiff --git a/android/meson_cross.mk b/android/meson_cross.mk\nnew file mode 100644\nindex 00000000..bb1661cd\n--- /dev/null\n+++ b/android/meson_cross.mk\n@@ -0,0 +1,296 @@\n+# SPDX-License-Identifier: Apache-2.0\n+#\n+# Copyright (C) 2021, GlobalLogic Ukraine\n+# Copyright (C) 2021, Roman Stratiienko (r.stratiienko@gmail.com)\n+#\n+# meson_cross.mk - Android makefile\n+#\n+\n+# Turn \"dir1/dir2/dir3/dir4\" into \"../../../../\"\n+define relative_top_path\n+$(eval __s:=) \\\n+$(foreach tmp,$(subst /,$(space),$1),$(eval __s:=$(__s)../)) \\\n+$(__s)\n+endef\n+\n+MY_PATH := $(call my-dir)\n+\n+AOSP_ABSOLUTE_PATH := $(realpath .)\n+\n+libcam_m_dummy_$(LOCAL_MULTILIB) := $(TARGET_OUT_INTERMEDIATES)/LIBCAM_DUMMY_$(LOCAL_MULTILIB)/dummy.c\n+\n+$(libcam_m_dummy_$(LOCAL_MULTILIB)):\n+\tmkdir -p $(dir $@)\n+\ttouch $@\n+\n+LOCAL_SRC_FILES := $(call relative_top_path,$(MY_PATH))$(libcam_m_dummy_$(LOCAL_MULTILIB))\n+LOCAL_VENDOR_MODULE := true\n+LOCAL_MODULE := libcam.dummy.$(LOCAL_MULTILIB)\n+\n+# Prepare intermediate variables by AOSP make/core internals\n+include $(BUILD_SHARED_LIBRARY)\n+\n+LOCAL_PATH := $(MY_PATH)\n+\n+link_deps := \\\n+\t$(built_static_libraries) \\\n+\t$(built_shared_libraries) \\\n+\t$(built_whole_libraries) \\\n+\t$(strip $(all_objects)) \\\n+\t$(my_target_libatomic) \\\n+\t$(my_target_libcrt_builtins) \\\n+\t$(my_target_crtbegin_so_o) \\\n+\t$(my_target_crtend_so_o)\n+\n+# Build using intermediate variables provided by AOSP make/core internals\n+M_TARGET_PREFIX := $(my_2nd_arch_prefix)\n+\n+LIBCAMERA_LIB_DIR := lib$(subst 32,,$(LOCAL_MULTILIB))\n+\n+MESON_OUT_DIR := $($(M_TARGET_PREFIX)TARGET_OUT_INTERMEDIATES)/MESON_LIBCAMERA\n+MESON_GEN_DIR := $(MESON_OUT_DIR)_GEN\n+MESON_GEN_FILES_TARGET := $(MESON_GEN_DIR)/.timestamp\n+\n+$(M_TARGET_PREFIX)LIBCAMERA_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libcamera.so\n+$(M_TARGET_PREFIX)LIBCAMERA_HAL_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libcamera-hal.so\n+$(M_TARGET_PREFIX)LIBCAMERA_BASE_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libcamera-base.so\n+$(M_TARGET_PREFIX)LIBCAMERA_IPA_RKISP1_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libcamera/ipa_rkisp1.so\n+$(M_TARGET_PREFIX)LIBCAMERA_IPA_RASPBERRYPI_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libcamera/ipa_rpi.so\n+$(M_TARGET_PREFIX)LIBCAMERA_IPA_IPU3_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libcamera/ipa_ipu3.so\n+$(M_TARGET_PREFIX)LIBCAMERA_IPA_VIMC_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libcamera/ipa_vimc.so\n+$(M_TARGET_PREFIX)LIBCAMERA_IPA_RKISP1_CONFIGS := $(MESON_OUT_DIR)/install/usr/local/share/libcamera/ipa/rkisp1\n+$(M_TARGET_PREFIX)LIBCAMERA_IPA_RASPBERRYPI_CONFIGS := $(MESON_OUT_DIR)/install/usr/local/share/libcamera/ipa/raspberrypi\n+$(M_TARGET_PREFIX)LIBCAMERA_IPA_IPU3_CONFIGS := $(MESON_OUT_DIR)/install/usr/local/share/libcamera/ipa/ipu3\n+$(M_TARGET_PREFIX)LIBCAMERA_IPA_VIMC_CONFIGS := $(MESON_OUT_DIR)/install/usr/local/share/libcamera/ipa/vimc\n+\n+LIBCAMERA_BINS := \\\n+\t$($(M_TARGET_PREFIX)LIBCAMERA_BIN) \\\n+\t$($(M_TARGET_PREFIX)LIBCAMERA_HAL_BIN) \\\n+\t$($(M_TARGET_PREFIX)LIBCAMERA_BASE_BIN) \\\n+\t$($(M_TARGET_PREFIX)LIBCAMERA_IPA_RKISP1_BIN) \\\n+\t$($(M_TARGET_PREFIX)LIBCAMERA_IPA_RASPBERRYPI_BIN) \\\n+\t$($(M_TARGET_PREFIX)LIBCAMERA_IPA_IPU3_BIN) \\\n+\t$($(M_TARGET_PREFIX)LIBCAMERA_IPA_VIMC_BIN)\n+\n+MESON_GEN_NINJA := \\\n+\tcd $(MESON_OUT_DIR) && PATH=/usr/bin:/usr/local/bin:$$PATH meson ./build \\\n+\t--cross-file $(AOSP_ABSOLUTE_PATH)/$(MESON_GEN_DIR)/aosp_cross \\\n+\t--buildtype=release \\\n+\t-Dandroid=enabled \\\n+\t-Dipas=$(subst $(space),$(comma),$(BOARD_LIBCAMERA_IPAS)) \\\n+\t-Dpipelines=$(subst $(space),$(comma),$(BOARD_LIBCAMERA_PIPELINES)) \\\n+\t-Dsysconfdir=/vendor/etc \\\n+\t-Dtest=false \\\n+\t-Dallow_unsigned_ipas_in_process=true\n+\n+MESON_BUILD := PATH=/usr/bin:/bin:/sbin:$$PATH ninja -C $(MESON_OUT_DIR)/build\n+\n+$(MESON_GEN_FILES_TARGET): MESON_CPU_FAMILY := $(subst arm64,aarch64,$(TARGET_$(M_TARGET_PREFIX)ARCH))\n+\n+define create-pkgconfig\n+echo -e \"Name: $2\" \\\n+\t\"\\nDescription: $2\" \\\n+\t\"\\nVersion: $3\" > $1/$2.pc\n+\n+endef\n+\n+# Taken from build/make/core/binary.mk. We need this\n+# to use definitions from build/make/core/definitions.mk\n+$(MESON_GEN_FILES_TARGET): PRIVATE_GLOBAL_C_INCLUDES := $(my_target_global_c_includes)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_GLOBAL_C_SYSTEM_INCLUDES := $(my_target_global_c_system_includes)\n+\n+$(MESON_GEN_FILES_TARGET): PRIVATE_TARGET_GLOBAL_CFLAGS := $(my_target_global_cflags)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_TARGET_GLOBAL_CONLYFLAGS := $(my_target_global_conlyflags)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_TARGET_GLOBAL_CPPFLAGS := $(my_target_global_cppflags)\n+\n+$(MESON_GEN_FILES_TARGET): PRIVATE_2ND_ARCH_VAR_PREFIX := $(M_TARGET_PREFIX)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_CC := $(my_cc)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_LINKER := $(my_linker)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_CXX := $(my_cxx)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_CXX_LINK := $(my_cxx_link)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_YACCFLAGS := $(LOCAL_YACCFLAGS)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_ASFLAGS := $(my_asflags)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_CONLYFLAGS := $(my_conlyflags)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_CFLAGS := $(my_cflags)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_CPPFLAGS := $(my_cppflags)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_CFLAGS_NO_OVERRIDE := $(my_cflags_no_override)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_CPPFLAGS_NO_OVERRIDE := $(my_cppflags_no_override)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_RTTI_FLAG := $(LOCAL_RTTI_FLAG)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_DEBUG_CFLAGS := $(debug_cflags)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_C_INCLUDES := $(my_c_includes)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_IMPORTED_INCLUDES := $(imported_includes)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_LDFLAGS := $(my_ldflags)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_LDLIBS := $(my_ldlibs)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_TARGET_GLOBAL_LDFLAGS := $(my_target_global_ldflags)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_TIDY_CHECKS := $(my_tidy_checks)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_TIDY_FLAGS := $(my_tidy_flags)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_ARFLAGS := $(my_arflags)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_ALL_SHARED_LIBRARIES := $(built_shared_libraries)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_ALL_STATIC_LIBRARIES := $(built_static_libraries)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_ALL_WHOLE_STATIC_LIBRARIES := $(built_whole_libraries)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_ALL_OBJECTS := $(strip $(all_objects))\n+\n+$(MESON_GEN_FILES_TARGET): PRIVATE_ARM_CFLAGS := $(normal_objects_cflags)\n+\n+$(MESON_GEN_FILES_TARGET): PRIVATE_TARGET_LIBCRT_BUILTINS := $(my_target_libcrt_builtins)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_TARGET_LIBATOMIC := $(my_target_libatomic)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_TARGET_CRTBEGIN_SO_O := $(my_target_crtbegin_so_o)\n+$(MESON_GEN_FILES_TARGET): PRIVATE_TARGET_CRTEND_SO_O := $(my_target_crtend_so_o)\n+##\n+\n+define m-lld-flags\n+ -nostdlib -Wl,--gc-sections \\\n+ $(PRIVATE_TARGET_CRTBEGIN_SO_O) \\\n+ $(PRIVATE_ALL_OBJECTS) \\\n+ -Wl,--whole-archive \\\n+ $(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES) \\\n+ -Wl,--no-whole-archive \\\n+ $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \\\n+ $(PRIVATE_ALL_STATIC_LIBRARIES) \\\n+ $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \\\n+ $(if $(filter true,$(NATIVE_COVERAGE)),$(PRIVATE_TARGET_COVERAGE_LIB)) \\\n+ $(PRIVATE_TARGET_LIBCRT_BUILTINS) \\\n+ $(PRIVATE_TARGET_LIBATOMIC) \\\n+ $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \\\n+ $(PRIVATE_LDFLAGS) \\\n+ $(PRIVATE_ALL_SHARED_LIBRARIES) \\\n+ $(PRIVATE_TARGET_CRTEND_SO_O) \\\n+ $(PRIVATE_LDLIBS)\n+endef\n+\n+define m-lld-flags-cleaned\n+ $(subst prebuilts/,$(AOSP_ABSOLUTE_PATH)/prebuilts/, \\\n+ $(subst out/,$(AOSP_ABSOLUTE_PATH)/out/, \\\n+ $(subst -Wl$(comma)--fatal-warnings,, \\\n+ $(subst -Wl$(comma)--no-undefined-version,, \\\n+ $(subst -Wl$(comma)--gc-sections,, \\\n+ $(patsubst %dummy.o,, \\\n+ $(m-lld-flags)))))))\n+endef\n+\n+define m-cpp-flags\n+ $(PRIVATE_TARGET_GLOBAL_CFLAGS) \\\n+ $(PRIVATE_TARGET_GLOBAL_CPPFLAGS) \\\n+ $(PRIVATE_ARM_CFLAGS) \\\n+ $(PRIVATE_RTTI_FLAG) \\\n+ $(PRIVATE_CFLAGS) \\\n+ $(PRIVATE_CPPFLAGS) \\\n+ $(PRIVATE_DEBUG_CFLAGS) \\\n+ $(PRIVATE_CFLAGS_NO_OVERRIDE) \\\n+ $(PRIVATE_CPPFLAGS_NO_OVERRIDE)\n+endef\n+\n+define m-c-flags\n+ $(PRIVATE_TARGET_GLOBAL_CFLAGS) \\\n+ $(PRIVATE_TARGET_GLOBAL_CONLYFLAGS) \\\n+ $(PRIVATE_ARM_CFLAGS) \\\n+ $(PRIVATE_CFLAGS) \\\n+ $(PRIVATE_CONLYFLAGS) \\\n+ $(PRIVATE_DEBUG_CFLAGS) \\\n+ $(PRIVATE_CFLAGS_NO_OVERRIDE)\n+endef\n+\n+define filter-c-flags\n+ $(subst -std=gnu++17,, \\\n+ $(subst -fno-rtti,, \\\n+ $(patsubst -W%,, \\\n+ $1)))\n+endef\n+\n+define m-c-includes-common\n+$(addprefix -I , $(PRIVATE_C_INCLUDES)) \\\n+$(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),,\\\n+ $(addprefix -I ,\\\n+ $(filter-out $(PRIVATE_C_INCLUDES), \\\n+ $(PRIVATE_GLOBAL_C_INCLUDES))) \\\n+ $(addprefix -isystem ,\\\n+ $(filter-out $(PRIVATE_C_INCLUDES), \\\n+ $(PRIVATE_GLOBAL_C_SYSTEM_INCLUDES))))\n+endef\n+\n+ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 30; echo $$?), 0)\n+# Android 11+\n+define m-c-includes\n+$(foreach i,$(PRIVATE_IMPORTED_INCLUDES),$(EXPORTS.$(i)))\\\n+$(m-c-includes-common)\n+endef\n+define postprocess-includes\n+endef\n+else\n+# Android 10,9\n+$(MESON_GEN_FILES_TARGET): PRIVATE_IMPORT_INCLUDES := $(import_includes)\n+define postprocess-includes\n+\techo \" $$(cat $(PRIVATE_IMPORT_INCLUDES)) \" > $(MESON_GEN_DIR)/import_includes && \\\n+\tsed -i -e ':a;N;$$!ba;s/\\n/ /g' \\\n+\t\t-e 's# \\{2,\\}# #g' \\\n+\t\t-e 's# -isystem # -isystem#g' \\\n+\t\t-e 's# -I # -I#g' \\\n+\t\t-e 's# -I# -I$(AOSP_ABSOLUTE_PATH)/#g' \\\n+\t\t-e 's# -isystem# -isystem$(AOSP_ABSOLUTE_PATH)/#g' \\\n+\t\t-e \"s# #','#g\" $(MESON_GEN_DIR)/import_includes && \\\n+\tsed -i \"s#<_IMPORT_INCLUDES>#$$(cat $(MESON_GEN_DIR)/import_includes)#g\" $(MESON_GEN_DIR)/aosp_cross\n+endef\n+define m-c-includes\n+<_IMPORT_INCLUDES> $(m-c-includes-common)\n+endef\n+endif\n+\n+define m-c-abs-includes\n+ $(subst $(space)-isystem,$(space)-isystem$(AOSP_ABSOLUTE_PATH)/, \\\n+ $(subst $(space)-I, -I$(AOSP_ABSOLUTE_PATH)/, \\\n+ $(subst $(space)-I$(space),$(space)-I, \\\n+ $(subst $(space)-isystem$(space),$(space)-isystem, \\\n+ $(strip $(m-c-includes))))))\n+endef\n+\n+$(MESON_GEN_FILES_TARGET): MESON_GEN_PKGCONFIGS:=$(MESON_GEN_PKGCONFIGS)\n+$(MESON_GEN_FILES_TARGET): MESON_GEN_DIR:=$(MESON_GEN_DIR)\n+$(MESON_GEN_FILES_TARGET): $(sort $(shell find -L $(LIBCAMERA_TOP) -not -path '*/\\.*'))\n+\tmkdir -p $(dir $@)\n+\techo -e \"[properties]\\n\" \\\n+\t\t\"c_args = [$(foreach flag, $(call filter-c-flags,$(m-c-flags) $(m-c-abs-includes)),'$(flag)', )'']\\n\" \\\n+\t\t\"cpp_args = [$(foreach flag, $(call filter-c-flags,$(m-cpp-flags) $(m-c-abs-includes)),'$(flag)', )'']\\n\" \\\n+\t\t\"c_link_args = [$(foreach flag, $(m-lld-flags-cleaned),'$(flag)',)'']\\n\" \\\n+\t\t\"cpp_link_args = [$(foreach flag, $(m-lld-flags-cleaned),'$(flag)',)'']\\n\" \\\n+\t\t\"needs_exe_wrapper = true\\n\" \\\n+\t\t\"[binaries]\\n\" \\\n+\t\t\"ar = '$(AOSP_ABSOLUTE_PATH)/$($($(M_TARGET_PREFIX))TARGET_AR)'\\n\" \\\n+\t\t\"c = [$(foreach arg,$(PRIVATE_CC),'$(subst prebuilts/,$(AOSP_ABSOLUTE_PATH)/prebuilts/,$(arg))',)'']\\n\" \\\n+\t\t\"cpp = [$(foreach arg,$(PRIVATE_CXX),'$(subst prebuilts/,$(AOSP_ABSOLUTE_PATH)/prebuilts/,$(arg))',)'']\\n\" \\\n+\t\t\"c_ld = 'lld'\\n\" \\\n+\t\t\"cpp_ld = 'lld'\\n\\n\" \\\n+\t\t\"pkgconfig = ['env', 'PKG_CONFIG_LIBDIR=' + '$(AOSP_ABSOLUTE_PATH)/$(MESON_GEN_DIR)', '/usr/bin/pkg-config']\\n\\n\" \\\n+\t\t\"llvm-config = '/dev/null'\\n\" \\\n+\t\t\"[host_machine]\\n\" \\\n+\t\t\"system = 'linux'\\n\" \\\n+\t\t\"cpu_family = '$(MESON_CPU_FAMILY)'\\n\" \\\n+\t\t\"cpu = '$(MESON_CPU_FAMILY)'\\n\" \\\n+\t\t\"endian = 'little'\" > $(dir $@)/aosp_cross\n+\n+\t#\n+\t$(foreach pkg, $(MESON_GEN_PKGCONFIGS), $(call create-pkgconfig,$(dir $@),$(word 1, $(subst :, ,$(pkg))),$(word 2, $(subst :, ,$(pkg)))))\n+\ttouch $@\n+\n+$(MESON_OUT_DIR)/.build.timestamp: MESON_GEN_NINJA:=$(MESON_GEN_NINJA)\n+$(MESON_OUT_DIR)/.build.timestamp: MESON_BUILD:=$(MESON_BUILD)\n+$(MESON_OUT_DIR)/.build.timestamp: $(MESON_GEN_FILES_TARGET) $(link_deps)\n+\trm -rf $(dir $@)\n+\tmkdir -p $(dir $@)\n+\tmkdir -p $(dir $@)/build\n+\t# Meson will update timestamps in sources directory, continuously retriggering the build\n+\t# even if nothing changed. Copy sources into intermediate dir to avoid this effect.\n+\tcp -r $(LIBCAMERA_TOP)/* $(dir $@)\n+\t$(MESON_GEN_NINJA)\n+\t$(MESON_BUILD)\n+\ttouch $@\n+\n+$(MESON_OUT_DIR)/install/.install.timestamp: MESON_BUILD:=$(MESON_BUILD)\n+$(MESON_OUT_DIR)/install/.install.timestamp: $(MESON_OUT_DIR)/.build.timestamp\n+\trm -rf $(dir $@)\n+\tmkdir -p $(dir $@)\n+\tDESTDIR=$(AOSP_ABSOLUTE_PATH)/$(dir $@) $(MESON_BUILD) install\n+\ttouch $@\n+\n+$(LIBCAMERA_BINS): $(MESON_OUT_DIR)/install/.install.timestamp\n+\techo \"Build $@\"\n+\ttouch $@\n", "prefixes": [ "libcamera-devel", "09/11" ] }