Patch Detail
Show a patch.
GET /api/1.1/patches/17709/?format=api
{ "id": 17709, "url": "https://patchwork.libcamera.org/api/1.1/patches/17709/?format=api", "web_url": "https://patchwork.libcamera.org/patch/17709/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/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": "<20221027224135.348115-9-nicholas@rothemail.net>", "date": "2022-10-27T22:41:33", "name": "[libcamera-devel,v4,08/10] android: add makefiles to build inline with AOSP", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "6abef6b957b7cea89ab2a0342de563095f07bb86", "submitter": { "id": 97, "url": "https://patchwork.libcamera.org/api/1.1/people/97/?format=api", "name": "Nicolas Dufresne via libcamera-devel", "email": "libcamera-devel@lists.libcamera.org" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/17709/mbox/", "series": [ { "id": 3581, "url": "https://patchwork.libcamera.org/api/1.1/series/3581/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3581", "date": "2022-10-27T22:41:26", "name": "[libcamera-devel,v4,01/10] ipa: workaround libcxx duration limitation", "version": 4, "mbox": "https://patchwork.libcamera.org/series/3581/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/17709/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/17709/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 8E42BBDB16\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 27 Oct 2022 22:41:55 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 16E7662FA5;\n\tFri, 28 Oct 2022 00:41:55 +0200 (CEST)", "from mail-oa1-x30.google.com (mail-oa1-x30.google.com\n\t[IPv6:2001:4860:4864:20::30])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3266862FB7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 28 Oct 2022 00:41:47 +0200 (CEST)", "by mail-oa1-x30.google.com with SMTP id\n\t586e51a60fabf-13b6c1c89bdso4265871fac.13\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 27 Oct 2022 15:41:47 -0700 (PDT)", "from nroth-pc.attlocal.net\n\t([2600:1700:20:20c0:6a4b:7aa7:dda2:75cb])\n\tby smtp.gmail.com with ESMTPSA id\n\tr20-20020a056830419400b006619533d1ddsm976825otu.76.2022.10.27.15.41.44\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 27 Oct 2022 15:41:45 -0700 (PDT)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1666910515;\n\tbh=uYdZd5ooHVKC5fykrTFeNa3vGKYdFi9HN0ca8IDJYbQ=;\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=xF3nEfk8FquvSRAkYvF2uoEXtb6kg1k2psn9WOKG/3ca0+fJgaPCQzLTtZr6zi1vM\n\tQw+A8DDKQD7wZGvc3qYfSTWuTLC5QJrNQcLbG8gpeHxNqq2rZZIV640vo2QeOJkBfd\n\taodUIBgfxJy0xYWW/o3XZI3Un+n8/a4aIuhrBwN89Llzo5fn+V0iVDmJvdocUnjmyT\n\th2G0+Q9xJpGgSxrHb7t8uNRXdjtQTrcVbtANC8F0lSHVql0mrNAzmjIMYmW3UkP82S\n\t+EfaW9iJ7afbYAP06HESZCG1b9pHwnkI8rkGyQUhEchbG5TLu09S3kIw9zfN+Cdejl\n\t9z3WqXkc6PZsw==", "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=OrR17ZcndUu6E8+nQhvZfP/G7yO3m+iusFv1/hMho8o=;\n\tb=fyu7ZpZrV6qBrdECnuk9etbBmRbAGdyEKtJsmnmrWsF3aP71JWcUZGnC++39X8+Pzk\n\te4m7/goUXJ5QM/iY9CI1+SIzlJe0/x88CFAjvT4xVMYvlix9TzcB0yy/+qHWpVBo4iqf\n\tzdiaWN2YvHqLUud3RR78l9FNRL9WXiu5lHI5gIIt5Aw7v74pAJuhll3O6GHQHK0xwVjG\n\tyiaND0CzjnGVXDdRNU60F9VN6vxY5eBsgLYbV5zquQ406IvjFicxGqxKhwKyoMvJxMoZ\n\tjCw8Sk3vZ9KITwLNYvXcf5XHpJjXSrZbayYIO/55Nn+w2PSg74qF6vIGZHOsTX6Rnvbm\n\tR85Q==" ], "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=\"fyu7ZpZr\"; \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=OrR17ZcndUu6E8+nQhvZfP/G7yO3m+iusFv1/hMho8o=;\n\tb=pH2E4oBb73PMETRB18keyuOtrdGTyVcHsGDs6Q/fz/cDohmpOCPVsRXXtGzMl7uNfd\n\tBFGLyVJUaRKqxlYO5o/K9eZscXLNIyHlorXe3eQ5/mn52GZ6FXmT/NlPUSC5psc1b3Nz\n\tULAjGN6xn+PaiE/+I+YjQj8xZUjQdBpiEBnj71tsKO7BPQeSOOBm+MTLCjLq7cyHpwgd\n\tKLGj1mQuiocoxbWL6sUij+PZWVU5Q+H7aUBz5rFCRNUtj3w5qx5l45/8dp8uj0oq0cH3\n\ti0XcPrM5I1ii8Na0LFGP8TSnVpwOldxXO2SFe4uaJ/mtRUebnEMJ4G4/k+roYWox2tpI\n\tZ2OA==", "X-Gm-Message-State": "ACrzQf0VMXNgiUFUw82BT0gv9dFhuqdU1Xs/aaAtZlsBIblnclDYWDkQ\n\tKK4T/B7j43JIhMFeLipyNAajSQw8Hglwr+u9", "X-Google-Smtp-Source": "AMsMyM5IgxU23/MFkUlTd6y8q/Ux3Lrz0XHs1V4KyJppW0cpOSAdWNJcBc+u7Q77GoRqtW9FvcPCZg==", "X-Received": "by 2002:a05:6870:e990:b0:13a:eda9:d12d with SMTP id\n\tr16-20020a056870e99000b0013aeda9d12dmr6966232oao.128.1666910505338; \n\tThu, 27 Oct 2022 15:41:45 -0700 (PDT)", "To": "libcamera-devel@lists.libcamera.org", "Date": "Thu, 27 Oct 2022 17:41:33 -0500", "Message-Id": "<20221027224135.348115-9-nicholas@rothemail.net>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20221027224135.348115-1-nicholas@rothemail.net>", "References": "<20221027224135.348115-1-nicholas@rothemail.net>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v4 08/10] android: add makefiles to build\n\tinline 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\nCurrently, while libcamera advertises Android support, there is no easy\nway to integrate libcamera into an Android distribution.\n\nThis commit adds makefiles that allow libcamera to build inline with\nAOSP, with one example of how to do so documented in [0].\n\nNote that meson_cross.mk is adapted from the Mesa project [1].\n\nAs Android support matures, it will be useful to document how to\nintegrate libcamera for distribution owners [Bug].\n\n[0] https://docs.google.com/document/d/1Sly_VH3w6wFIdE72WXijQegoHZh8IxEnJ9m0hH7GodU/edit\n[1] https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/android/mesa3d_cross.mk\nBug https://bugs.libcamera.org/show_bug.cgi?id=164\n\nSigned-off-by: Nichoals Roth <nicholas@rothemail.net>\n---\n android/Android.mk | 86 ++++++++++++\n android/meson_cross.mk | 298 +++++++++++++++++++++++++++++++++++++++++\n 2 files changed, 384 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..7a222f9c\n--- /dev/null\n+++ b/android/meson_cross.mk\n@@ -0,0 +1,298 @@\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-Dwerror=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 -stdlib=libc++,, \\\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", "v4", "08/10" ] }