* [Buildroot] [PATCH 1/2] package/libdispatch: add libdispatch package
@ 2022-03-29 21:54 Alsey Coleman Miller
2022-03-29 21:54 ` [Buildroot] [PATCH 2/2] package/libdispatch: add fix for 32-bit arm Alsey Coleman Miller
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Alsey Coleman Miller @ 2022-03-29 21:54 UTC (permalink / raw)
To: buildroot; +Cc: Alsey Miller, James Hillard, Samuel Martin
Signed-off-by: Alsey Coleman Miller <alseycmiller@gmail.com>
---
DEVELOPERS | 3 ++
package/Config.in | 1 +
package/libdispatch/Config.in | 43 +++++++++++++++++++++++
package/libdispatch/libdispatch.hash | 1 +
package/libdispatch/libdispatch.mk | 52 ++++++++++++++++++++++++++++
5 files changed, 100 insertions(+)
create mode 100644 package/libdispatch/Config.in
create mode 100644 package/libdispatch/libdispatch.hash
create mode 100644 package/libdispatch/libdispatch.mk
diff --git a/DEVELOPERS b/DEVELOPERS
index a66b9d7eee..555ec0175b 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -122,6 +122,9 @@ F: boot/opensbi/
F: configs/hifive_unleashed_defconfig
F: package/xen/
+N: Alsey Miller <alseycmiller@gmail.com>
+F: package/libdispatch/
+
N: Alvaro G. M <alvaro.gamez@hazent.com>
F: package/dcron/
F: package/libxmlrpc/
diff --git a/package/Config.in b/package/Config.in
index 0d5d763180..e217ff5282 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1968,6 +1968,7 @@ menu "Other"
source "package/libcrossguid/Config.in"
source "package/libcsv/Config.in"
source "package/libdaemon/Config.in"
+ source "package/libdispatch/Config.in"
source "package/libeastl/Config.in"
source "package/libee/Config.in"
source "package/libev/Config.in"
diff --git a/package/libdispatch/Config.in b/package/libdispatch/Config.in
new file mode 100644
index 0000000000..f4fa5e47fb
--- /dev/null
+++ b/package/libdispatch/Config.in
@@ -0,0 +1,43 @@
+config BR2_PACKAGE_LIBDISPATCH_ARCH_SUPPORTS
+ bool
+ default y if BR2_x86_64
+ default y if BR2_aarch64
+ default y if BR2_arm
+ default y if BR2_powerpc
+ default y if BR2_mips
+ default y if BR2_mipsel
+ default y if BR2_mips64
+ default y if BR2_mips64el
+ default y if BR2_RISCV_64
+
+config BR2_PACKAGE_LIBDISPATCH_TARGET_ARCH
+ string
+ default "aarch64" if BR2_aarch64
+ default "armv5" if BR2_ARM_CPU_ARMV5
+ default "armv6" if BR2_ARM_CPU_ARMV6
+ default "armv7" if BR2_ARM_CPU_ARMV7A
+ default "x86_64" if BR2_x86_64
+ default "powerpc" if BR2_powerpc
+ default "mips" if BR2_mips
+ default "mipsel" if BR2_mipsel
+ default "mips64" if BR2_mips64
+ default "mips64el" if BR2_mips64el
+ default "riscv64" if BR2_RISCV_64
+
+config BR2_PACKAGE_LIBDISPATCH
+ bool "libdispatch"
+ depends on BR2_PACKAGE_LIBDISPATCH_ARCH_SUPPORTS
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ depends on !BR2_STATIC_LIBS
+ depends on BR2_TOOLCHAIN_USES_GLIBC
+ select BR2_PACKAGE_LIBBSD
+
+ help
+ Grand Central Dispatch (GCD or libdispatch) provides comprehensive support for concurrent code execution on multicore hardware.
+
+ http://swift.org
+
+comment "libdispatch needs a toolchain w/ Glibc, wchar, threads, C++, dynamic library"
+ depends on BR2_PACKAGE_LIBDISPATCH_ARCH_SUPPORTS
+ depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \
+ || BR2_STATIC_LIBS || !BR2_USE_WCHAR
\ No newline at end of file
diff --git a/package/libdispatch/libdispatch.hash b/package/libdispatch/libdispatch.hash
new file mode 100644
index 0000000000..64543b56eb
--- /dev/null
+++ b/package/libdispatch/libdispatch.hash
@@ -0,0 +1 @@
+sha256 d2bbfb5b98d129caa2c6bd7662c850bf57cb434572d09844b56641c4558906ab libdispatch-swift-5.6-RELEASE.tar.gz
diff --git a/package/libdispatch/libdispatch.mk b/package/libdispatch/libdispatch.mk
new file mode 100644
index 0000000000..79fc4f7780
--- /dev/null
+++ b/package/libdispatch/libdispatch.mk
@@ -0,0 +1,52 @@
+### Grand Central Dispatch
+LIBDISPATCH_VERSION = 5.6
+LIBDISPATCH_SITE = $(call github,apple,swift-corelibs-libdispatch,swift-$(LIBDISPATCH_VERSION)-RELEASE)
+LIBDISPATCH_LICENSE = Apache-2.0
+LIBDISPATCH_LICENSE_FILES = LICENSE
+LIBDISPATCH_INSTALL_STAGING = YES
+LIBDISPATCH_SUPPORTS_IN_SOURCE_BUILD = NO
+LIBDISPATCH_DEPENDENCIES = host-clang host-lld libbsd
+
+LIBDISPATCH_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LIBDISPATCH_TARGET_ARCH))
+LIBDISPATCH_CLANG_PATH = $(HOST_DIR)/bin
+
+ifeq ($(LIBDISPATCH_TARGET_ARCH),armv7)
+LIBDISPATCH_TARGET_NAME = armv7-unknown-linux-gnueabihf
+else ifeq ($(LIBDISPATCH_TARGET_ARCH),armv6)
+LIBDISPATCH_TARGET_NAME = armv6-unknown-linux-gnueabihf
+else ifeq ($(LIBDISPATCH_TARGET_ARCH),armv5)
+LIBDISPATCH_TARGET_NAME = armv5-unknown-linux-gnueabi
+else
+LIBDISPATCH_TARGET_NAME = $(LIBDISPATCH_TARGET_ARCH)-unknown-linux-gnu
+endif
+
+ifeq ($(LIBDISPATCH_TARGET_ARCH),armv5)
+LIBDISPATCH_EXTRA_FLAGS = -march=armv5te
+else ifeq ($(LIBDISPATCH_TARGET_ARCH),riscv64)
+LIBDISPATCH_EXTRA_FLAGS = -mno-relax -mabi=lp64 -march=rv64imac -mfloat-abi=soft
+else ifeq ($(LIBDISPATCH_TARGET_ARCH),mipsel)
+LIBDISPATCH_EXTRA_FLAGS = -msoft-float
+else ifeq ($(LIBDISPATCH_TARGET_ARCH),mips64el)
+LIBDISPATCH_EXTRA_FLAGS = -msoft-float
+else ifeq ($(LIBDISPATCH_TARGET_ARCH),powerpc)
+LIBDISPATCH_EXTRA_FLAGS = -mcpu=7400
+else
+LIBDISPATCH_EXTRA_FLAGS =
+endif
+
+LIBDISPATCH_CONF_OPTS += \
+ -DLibRT_LIBRARIES="${STAGING_DIR}/usr/lib/librt.a" \
+ -DCMAKE_C_COMPILER=$(LIBDISPATCH_CLANG_PATH)/clang \
+ -DCMAKE_CXX_COMPILER=$(LIBDISPATCH_CLANG_PATH)/clang++ \
+ -DCMAKE_C_FLAGS="-w -fuse-ld=lld $(LIBDISPATCH_EXTRA_FLAGS) -target $(LIBDISPATCH_TARGET_NAME) --sysroot=$(STAGING_DIR) -I$(STAGING_DIR)/usr/include -B$(STAGING_DIR)/usr/lib -B$(HOST_DIR)/lib/gcc/$(GNU_TARGET_NAME)/$(call qstrip,$(BR2_GCC_VERSION)) -L$(HOST_DIR)/lib/gcc/$(GNU_TARGET_NAME)/$(call qstrip,$(BR2_GCC_VERSION))" \
+ -DCMAKE_C_LINK_FLAGS="-target $(LIBDISPATCH_TARGET_NAME) --sysroot=$(STAGING_DIR)" \
+ -DCMAKE_CXX_FLAGS="-w -fuse-ld=lld $(LIBDISPATCH_EXTRA_FLAGS) -target $(LIBDISPATCH_TARGET_NAME) --sysroot=$(STAGING_DIR) -I$(STAGING_DIR)/usr/include -I$(HOST_DIR)/$(GNU_TARGET_NAME)/include/c++/$(call qstrip,$(BR2_GCC_VERSION))/ -I$(HOST_DIR)/$(GNU_TARGET_NAME)/include/c++/$(call qstrip,$(BR2_GCC_VERSION))/$(GNU_TARGET_NAME) -B$(STAGING_DIR)/usr/lib -B$(HOST_DIR)/lib/gcc/$(GNU_TARGET_NAME)/$(call qstrip,$(BR2_GCC_VERSION)) -L$(HOST_DIR)/lib/gcc/$(GNU_TARGET_NAME)/$(call qstrip,$(BR2_GCC_VERSION))" \
+ -DCMAKE_CXX_LINK_FLAGS="-target $(LIBDISPATCH_TARGET_NAME) --sysroot=$(STAGING_DIR)" \
+
+define LIBDISPATCH_INSTALL_TARGET_CMDS
+ (cd $(LIBDISPATCH_BUILDDIR) && \
+ cp ./*.so $(TARGET_DIR)/usr/lib/ \
+ )
+endef
+
+$(eval $(cmake-package))
--
2.30.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 2/2] package/libdispatch: add fix for 32-bit arm
2022-03-29 21:54 [Buildroot] [PATCH 1/2] package/libdispatch: add libdispatch package Alsey Coleman Miller
@ 2022-03-29 21:54 ` Alsey Coleman Miller
2022-03-29 21:57 ` [Buildroot] [PATCH 1/2] package/libdispatch: add libdispatch package Alsey Miller
2023-02-06 11:24 ` Arnout Vandecappelle
2 siblings, 0 replies; 4+ messages in thread
From: Alsey Coleman Miller @ 2022-03-29 21:54 UTC (permalink / raw)
To: buildroot; +Cc: Alsey Miller, James Hillard, Samuel Martin
Signed-off-by: Alsey Coleman Miller <alseycmiller@gmail.com>
---
package/libdispatch/arm-yield.patch | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 package/libdispatch/arm-yield.patch
diff --git a/package/libdispatch/arm-yield.patch b/package/libdispatch/arm-yield.patch
new file mode 100644
index 0000000000..fa7cf7cce4
--- /dev/null
+++ b/package/libdispatch/arm-yield.patch
@@ -0,0 +1,13 @@
+diff --git a/src/shims/yield.c b/src/shims/yield.c
+index 43f0017..d0c5fff 100644
+--- a/src/shims/yield.c
++++ b/src/shims/yield.c
+@@ -36,7 +36,7 @@ void *
+ _dispatch_wait_for_enqueuer(void **ptr)
+ {
+ #if !DISPATCH_HW_CONFIG_UP
+-#if defined(__arm__) || defined(__arm64__)
++#if (defined(__arm__) && defined(__APPLE__)) || defined(__arm64__)
+ int spins = DISPATCH_WAIT_SPINS_WFE;
+ void *value;
+ while (unlikely(spins-- > 0)) {
--
2.30.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH 1/2] package/libdispatch: add libdispatch package
2022-03-29 21:54 [Buildroot] [PATCH 1/2] package/libdispatch: add libdispatch package Alsey Coleman Miller
2022-03-29 21:54 ` [Buildroot] [PATCH 2/2] package/libdispatch: add fix for 32-bit arm Alsey Coleman Miller
@ 2022-03-29 21:57 ` Alsey Miller
2023-02-06 11:24 ` Arnout Vandecappelle
2 siblings, 0 replies; 4+ messages in thread
From: Alsey Miller @ 2022-03-29 21:57 UTC (permalink / raw)
To: buildroot; +Cc: James Hillard, Samuel Martin
[-- Attachment #1.1: Type: text/plain, Size: 7344 bytes --]
This patch successfully builds with https://patchwork.ozlabs.org/project/buildroot/patch/20220322232224.2842266-5-james.hilliard1@gmail.com/ <https://patchwork.ozlabs.org/project/buildroot/patch/20220322232224.2842266-5-james.hilliard1@gmail.com/> applied. Although its not required for this package, I suggest merging https://patchwork.ozlabs.org/project/buildroot/patch/20220329145904.63900-1-andreynech@gmail.com/ <https://patchwork.ozlabs.org/project/buildroot/patch/20220329145904.63900-1-andreynech@gmail.com/> as well.
> On Mar 29, 2022, at 2:54 PM, Alsey Coleman Miller <alseycmiller@gmail.com> wrote:
>
> Signed-off-by: Alsey Coleman Miller <alseycmiller@gmail.com>
> ---
> DEVELOPERS | 3 ++
> package/Config.in | 1 +
> package/libdispatch/Config.in | 43 +++++++++++++++++++++++
> package/libdispatch/libdispatch.hash | 1 +
> package/libdispatch/libdispatch.mk | 52 ++++++++++++++++++++++++++++
> 5 files changed, 100 insertions(+)
> create mode 100644 package/libdispatch/Config.in
> create mode 100644 package/libdispatch/libdispatch.hash
> create mode 100644 package/libdispatch/libdispatch.mk
>
> diff --git a/DEVELOPERS b/DEVELOPERS
> index a66b9d7eee..555ec0175b 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -122,6 +122,9 @@ F: boot/opensbi/
> F: configs/hifive_unleashed_defconfig
> F: package/xen/
>
> +N: Alsey Miller <alseycmiller@gmail.com>
> +F: package/libdispatch/
> +
> N: Alvaro G. M <alvaro.gamez@hazent.com>
> F: package/dcron/
> F: package/libxmlrpc/
> diff --git a/package/Config.in b/package/Config.in
> index 0d5d763180..e217ff5282 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1968,6 +1968,7 @@ menu "Other"
> source "package/libcrossguid/Config.in"
> source "package/libcsv/Config.in"
> source "package/libdaemon/Config.in"
> + source "package/libdispatch/Config.in"
> source "package/libeastl/Config.in"
> source "package/libee/Config.in"
> source "package/libev/Config.in"
> diff --git a/package/libdispatch/Config.in b/package/libdispatch/Config.in
> new file mode 100644
> index 0000000000..f4fa5e47fb
> --- /dev/null
> +++ b/package/libdispatch/Config.in
> @@ -0,0 +1,43 @@
> +config BR2_PACKAGE_LIBDISPATCH_ARCH_SUPPORTS
> + bool
> + default y if BR2_x86_64
> + default y if BR2_aarch64
> + default y if BR2_arm
> + default y if BR2_powerpc
> + default y if BR2_mips
> + default y if BR2_mipsel
> + default y if BR2_mips64
> + default y if BR2_mips64el
> + default y if BR2_RISCV_64
> +
> +config BR2_PACKAGE_LIBDISPATCH_TARGET_ARCH
> + string
> + default "aarch64" if BR2_aarch64
> + default "armv5" if BR2_ARM_CPU_ARMV5
> + default "armv6" if BR2_ARM_CPU_ARMV6
> + default "armv7" if BR2_ARM_CPU_ARMV7A
> + default "x86_64" if BR2_x86_64
> + default "powerpc" if BR2_powerpc
> + default "mips" if BR2_mips
> + default "mipsel" if BR2_mipsel
> + default "mips64" if BR2_mips64
> + default "mips64el" if BR2_mips64el
> + default "riscv64" if BR2_RISCV_64
> +
> +config BR2_PACKAGE_LIBDISPATCH
> + bool "libdispatch"
> + depends on BR2_PACKAGE_LIBDISPATCH_ARCH_SUPPORTS
> + depends on BR2_TOOLCHAIN_HAS_THREADS
> + depends on !BR2_STATIC_LIBS
> + depends on BR2_TOOLCHAIN_USES_GLIBC
> + select BR2_PACKAGE_LIBBSD
> +
> + help
> + Grand Central Dispatch (GCD or libdispatch) provides comprehensive support for concurrent code execution on multicore hardware.
> +
> + http://swift.org
> +
> +comment "libdispatch needs a toolchain w/ Glibc, wchar, threads, C++, dynamic library"
> + depends on BR2_PACKAGE_LIBDISPATCH_ARCH_SUPPORTS
> + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \
> + || BR2_STATIC_LIBS || !BR2_USE_WCHAR
> \ No newline at end of file
> diff --git a/package/libdispatch/libdispatch.hash b/package/libdispatch/libdispatch.hash
> new file mode 100644
> index 0000000000..64543b56eb
> --- /dev/null
> +++ b/package/libdispatch/libdispatch.hash
> @@ -0,0 +1 @@
> +sha256 d2bbfb5b98d129caa2c6bd7662c850bf57cb434572d09844b56641c4558906ab libdispatch-swift-5.6-RELEASE.tar.gz
> diff --git a/package/libdispatch/libdispatch.mk b/package/libdispatch/libdispatch.mk
> new file mode 100644
> index 0000000000..79fc4f7780
> --- /dev/null
> +++ b/package/libdispatch/libdispatch.mk
> @@ -0,0 +1,52 @@
> +### Grand Central Dispatch
> +LIBDISPATCH_VERSION = 5.6
> +LIBDISPATCH_SITE = $(call github,apple,swift-corelibs-libdispatch,swift-$(LIBDISPATCH_VERSION)-RELEASE)
> +LIBDISPATCH_LICENSE = Apache-2.0
> +LIBDISPATCH_LICENSE_FILES = LICENSE
> +LIBDISPATCH_INSTALL_STAGING = YES
> +LIBDISPATCH_SUPPORTS_IN_SOURCE_BUILD = NO
> +LIBDISPATCH_DEPENDENCIES = host-clang host-lld libbsd
> +
> +LIBDISPATCH_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LIBDISPATCH_TARGET_ARCH))
> +LIBDISPATCH_CLANG_PATH = $(HOST_DIR)/bin
> +
> +ifeq ($(LIBDISPATCH_TARGET_ARCH),armv7)
> +LIBDISPATCH_TARGET_NAME = armv7-unknown-linux-gnueabihf
> +else ifeq ($(LIBDISPATCH_TARGET_ARCH),armv6)
> +LIBDISPATCH_TARGET_NAME = armv6-unknown-linux-gnueabihf
> +else ifeq ($(LIBDISPATCH_TARGET_ARCH),armv5)
> +LIBDISPATCH_TARGET_NAME = armv5-unknown-linux-gnueabi
> +else
> +LIBDISPATCH_TARGET_NAME = $(LIBDISPATCH_TARGET_ARCH)-unknown-linux-gnu
> +endif
> +
> +ifeq ($(LIBDISPATCH_TARGET_ARCH),armv5)
> +LIBDISPATCH_EXTRA_FLAGS = -march=armv5te
> +else ifeq ($(LIBDISPATCH_TARGET_ARCH),riscv64)
> +LIBDISPATCH_EXTRA_FLAGS = -mno-relax -mabi=lp64 -march=rv64imac -mfloat-abi=soft
> +else ifeq ($(LIBDISPATCH_TARGET_ARCH),mipsel)
> +LIBDISPATCH_EXTRA_FLAGS = -msoft-float
> +else ifeq ($(LIBDISPATCH_TARGET_ARCH),mips64el)
> +LIBDISPATCH_EXTRA_FLAGS = -msoft-float
> +else ifeq ($(LIBDISPATCH_TARGET_ARCH),powerpc)
> +LIBDISPATCH_EXTRA_FLAGS = -mcpu=7400
> +else
> +LIBDISPATCH_EXTRA_FLAGS =
> +endif
> +
> +LIBDISPATCH_CONF_OPTS += \
> + -DLibRT_LIBRARIES="${STAGING_DIR}/usr/lib/librt.a" \
> + -DCMAKE_C_COMPILER=$(LIBDISPATCH_CLANG_PATH)/clang \
> + -DCMAKE_CXX_COMPILER=$(LIBDISPATCH_CLANG_PATH)/clang++ \
> + -DCMAKE_C_FLAGS="-w -fuse-ld=lld $(LIBDISPATCH_EXTRA_FLAGS) -target $(LIBDISPATCH_TARGET_NAME) --sysroot=$(STAGING_DIR) -I$(STAGING_DIR)/usr/include -B$(STAGING_DIR)/usr/lib -B$(HOST_DIR)/lib/gcc/$(GNU_TARGET_NAME)/$(call qstrip,$(BR2_GCC_VERSION)) -L$(HOST_DIR)/lib/gcc/$(GNU_TARGET_NAME)/$(call qstrip,$(BR2_GCC_VERSION))" \
> + -DCMAKE_C_LINK_FLAGS="-target $(LIBDISPATCH_TARGET_NAME) --sysroot=$(STAGING_DIR)" \
> + -DCMAKE_CXX_FLAGS="-w -fuse-ld=lld $(LIBDISPATCH_EXTRA_FLAGS) -target $(LIBDISPATCH_TARGET_NAME) --sysroot=$(STAGING_DIR) -I$(STAGING_DIR)/usr/include -I$(HOST_DIR)/$(GNU_TARGET_NAME)/include/c++/$(call qstrip,$(BR2_GCC_VERSION))/ -I$(HOST_DIR)/$(GNU_TARGET_NAME)/include/c++/$(call qstrip,$(BR2_GCC_VERSION))/$(GNU_TARGET_NAME) -B$(STAGING_DIR)/usr/lib -B$(HOST_DIR)/lib/gcc/$(GNU_TARGET_NAME)/$(call qstrip,$(BR2_GCC_VERSION)) -L$(HOST_DIR)/lib/gcc/$(GNU_TARGET_NAME)/$(call qstrip,$(BR2_GCC_VERSION))" \
> + -DCMAKE_CXX_LINK_FLAGS="-target $(LIBDISPATCH_TARGET_NAME) --sysroot=$(STAGING_DIR)" \
> +
> +define LIBDISPATCH_INSTALL_TARGET_CMDS
> + (cd $(LIBDISPATCH_BUILDDIR) && \
> + cp ./*.so $(TARGET_DIR)/usr/lib/ \
> + )
> +endef
> +
> +$(eval $(cmake-package))
> --
> 2.30.2
>
[-- Attachment #1.2: Type: text/html, Size: 14656 bytes --]
[-- Attachment #2: Type: text/plain, Size: 150 bytes --]
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH 1/2] package/libdispatch: add libdispatch package
2022-03-29 21:54 [Buildroot] [PATCH 1/2] package/libdispatch: add libdispatch package Alsey Coleman Miller
2022-03-29 21:54 ` [Buildroot] [PATCH 2/2] package/libdispatch: add fix for 32-bit arm Alsey Coleman Miller
2022-03-29 21:57 ` [Buildroot] [PATCH 1/2] package/libdispatch: add libdispatch package Alsey Miller
@ 2023-02-06 11:24 ` Arnout Vandecappelle
2 siblings, 0 replies; 4+ messages in thread
From: Arnout Vandecappelle @ 2023-02-06 11:24 UTC (permalink / raw)
To: Alsey Coleman Miller, buildroot; +Cc: James Hillard, Samuel Martin
Hi Alsey,
Sorry for the extremely late feedback on this. There were a few issues with
your contribution and I wasn't able to fix them up myself, so I marked the
series as Changes Requested. See below for my comments.
On 29/03/2022 23:54, Alsey Coleman Miller wrote:
> Signed-off-by: Alsey Coleman Miller <alseycmiller@gmail.com>
> ---
> DEVELOPERS | 3 ++
> package/Config.in | 1 +
> package/libdispatch/Config.in | 43 +++++++++++++++++++++++
> package/libdispatch/libdispatch.hash | 1 +
> package/libdispatch/libdispatch.mk | 52 ++++++++++++++++++++++++++++
> 5 files changed, 100 insertions(+)
> create mode 100644 package/libdispatch/Config.in
> create mode 100644 package/libdispatch/libdispatch.hash
> create mode 100644 package/libdispatch/libdispatch.mk
>
> diff --git a/DEVELOPERS b/DEVELOPERS
> index a66b9d7eee..555ec0175b 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -122,6 +122,9 @@ F: boot/opensbi/
> F: configs/hifive_unleashed_defconfig
> F: package/xen/
>
> +N: Alsey Miller <alseycmiller@gmail.com>
> +F: package/libdispatch/
> +
> N: Alvaro G. M <alvaro.gamez@hazent.com>
> F: package/dcron/
> F: package/libxmlrpc/
> diff --git a/package/Config.in b/package/Config.in
> index 0d5d763180..e217ff5282 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1968,6 +1968,7 @@ menu "Other"
> source "package/libcrossguid/Config.in"
> source "package/libcsv/Config.in"
> source "package/libdaemon/Config.in"
> + source "package/libdispatch/Config.in"
> source "package/libeastl/Config.in"
> source "package/libee/Config.in"
> source "package/libev/Config.in"
> diff --git a/package/libdispatch/Config.in b/package/libdispatch/Config.in
> new file mode 100644
> index 0000000000..f4fa5e47fb
> --- /dev/null
> +++ b/package/libdispatch/Config.in
> @@ -0,0 +1,43 @@
> +config BR2_PACKAGE_LIBDISPATCH_ARCH_SUPPORTS
> + bool
> + default y if BR2_x86_64
> + default y if BR2_aarch64
> + default y if BR2_arm
> + default y if BR2_powerpc
> + default y if BR2_mips
> + default y if BR2_mipsel
> + default y if BR2_mips64
> + default y if BR2_mips64el
> + default y if BR2_RISCV_64
Please add an explanation in the commit log about where this range of
supported architectures comes from.
Also, I expect that on ARM and possibly powerpc there are tighter constraints
than this.
> +config BR2_PACKAGE_LIBDISPATCH_TARGET_ARCH
> + string
> + default "aarch64" if BR2_aarch64
> + default "armv5" if BR2_ARM_CPU_ARMV5
> + default "armv6" if BR2_ARM_CPU_ARMV6
> + default "armv7" if BR2_ARM_CPU_ARMV7A
We also have armv7m and armv4 which are not covered here.
> + default "x86_64" if BR2_x86_64
> + default "powerpc" if BR2_powerpc
> + default "mips" if BR2_mips
> + default "mipsel" if BR2_mipsel
> + default "mips64" if BR2_mips64
> + default "mips64el" if BR2_mips64el
> + default "riscv64" if BR2_RISCV_64
You can simplify BR2_PACKAGE_LIBDISPATCH_ARCH_SUPPORTS like this:
config BR2_PACKAGE_LIBDISPATCH_ARCH_SUPPORTS
bool
default y
depends on BR2_PACKAGE_LIBDISPATCH_TARGET_ARCH != ""
> +
> +config BR2_PACKAGE_LIBDISPATCH
> + bool "libdispatch"
> + depends on BR2_PACKAGE_LIBDISPATCH_ARCH_SUPPORTS
> + depends on BR2_TOOLCHAIN_HAS_THREADS
> + depends on !BR2_STATIC_LIBS
> + depends on BR2_TOOLCHAIN_USES_GLIBC
Again, please explain in the commit message where the glibc dependency comes from.
> + select BR2_PACKAGE_LIBBSD
Please include the libbsd dependencies (as far as they're not covered by the
libdispatch dependencies themselves):
depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS # libbsd
depends on BR2_USE_WCHAR # libbsd
> +
> + help
> + Grand Central Dispatch (GCD or libdispatch) provides comprehensive support for concurrent code execution on multicore hardware.
Please wrap at 72 columns (where the tab counts as 8 spaces).
utils/check-package will warn about this.
> +
> + http://swift.org
Is there no URL specific to libdispatch?
> +
> +comment "libdispatch needs a toolchain w/ Glibc, wchar, threads, C++, dynamic library"
> + depends on BR2_PACKAGE_LIBDISPATCH_ARCH_SUPPORTS
> + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \
There is no C++ dependency in the package itself...
> + || BR2_STATIC_LIBS || !BR2_USE_WCHAR
> \ No newline at end of file
Please add a newline at the end of the file.
> diff --git a/package/libdispatch/libdispatch.hash b/package/libdispatch/libdispatch.hash
> new file mode 100644
> index 0000000000..64543b56eb
> --- /dev/null
> +++ b/package/libdispatch/libdispatch.hash
> @@ -0,0 +1 @@
> +sha256 d2bbfb5b98d129caa2c6bd7662c850bf57cb434572d09844b56641c4558906ab libdispatch-swift-5.6-RELEASE.tar.gz
Please add a hash for the license files.
> diff --git a/package/libdispatch/libdispatch.mk b/package/libdispatch/libdispatch.mk
> new file mode 100644
> index 0000000000..79fc4f7780
> --- /dev/null
> +++ b/package/libdispatch/libdispatch.mk
> @@ -0,0 +1,52 @@
> +### Grand Central Dispatch
> +LIBDISPATCH_VERSION = 5.6
> +LIBDISPATCH_SITE = $(call github,apple,swift-corelibs-libdispatch,swift-$(LIBDISPATCH_VERSION)-RELEASE)
I guess this is a swift-specific fork of libdispatch? If yes, then the swift
bit should probably still be in _VERSION, i.e.
LIBDISPATH_VERSION = swift-5.6
Alternatively, the package should be named something like libdispatch-swift.
> +LIBDISPATCH_LICENSE = Apache-2.0
> +LIBDISPATCH_LICENSE_FILES = LICENSE
> +LIBDISPATCH_INSTALL_STAGING = YES
> +LIBDISPATCH_SUPPORTS_IN_SOURCE_BUILD = NO
> +LIBDISPATCH_DEPENDENCIES = host-clang host-lld libbsd
clang and lld (if they're supposed to build for the target) need a dependency
on BR2_PACKAGE_LLVM_ARCH_SUPPORTS and BR2_HOST_GCC_AT_LEAST_5
Also you should select BR2_PACKAGE_HOST_LLD in Config.in.
> +
> +LIBDISPATCH_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LIBDISPATCH_TARGET_ARCH))
> +LIBDISPATCH_CLANG_PATH = $(HOST_DIR)/bin
It's not worth adding a variable for this, just use $(HOST_DIR)/bin directly
below.
> +
> +ifeq ($(LIBDISPATCH_TARGET_ARCH),armv7)
> +LIBDISPATCH_TARGET_NAME = armv7-unknown-linux-gnueabihf
> +else ifeq ($(LIBDISPATCH_TARGET_ARCH),armv6)
> +LIBDISPATCH_TARGET_NAME = armv6-unknown-linux-gnueabihf
> +else ifeq ($(LIBDISPATCH_TARGET_ARCH),armv5)
> +LIBDISPATCH_TARGET_NAME = armv5-unknown-linux-gnueabi
> +else
> +LIBDISPATCH_TARGET_NAME = $(LIBDISPATCH_TARGET_ARCH)-unknown-linux-gnu
Instead of defining this here, define it like that in LIBDISPATCH_TARGET_ARCH
directly, i.e. include the unknown-linux-gnu* in
BR2_PACKAGE_LIBDISPATCH_TARGET_ARCH.
> +endif
> +
> +ifeq ($(LIBDISPATCH_TARGET_ARCH),armv5)
> +LIBDISPATCH_EXTRA_FLAGS = -march=armv5te
Not all our armv5 variants are armv5te I believe...
> +else ifeq ($(LIBDISPATCH_TARGET_ARCH),riscv64)
> +LIBDISPATCH_EXTRA_FLAGS = -mno-relax -mabi=lp64 -march=rv64imac -mfloat-abi=soft
Having to specify all of this sounds very very wrong. We define the ABI and
arch elsewhere depending on config options, if you're overriding here it's not
going to be compatible with libc.
I'm not sure about the -mno-relax, that might be needed. But please document
in the commit message why.
> +else ifeq ($(LIBDISPATCH_TARGET_ARCH),mipsel)
> +LIBDISPATCH_EXTRA_FLAGS = -msoft-float
> +else ifeq ($(LIBDISPATCH_TARGET_ARCH),mips64el)
> +LIBDISPATCH_EXTRA_FLAGS = -msoft-float
Again, floating point ABI should be defined in our ABI definition or it's not
going to be compatible. If it requires soft float, we need to depend on
BR2_MIPS_SOFT_FLOAT in Config.in.
-msoft-float and other ABI options are passed along by the toolchain wrapper,
so if these are somehow needed in EXTRA_FLAGS after all, something somewhere is
really broken. This needs to be analyzed and explained in detail.
> +else ifeq ($(LIBDISPATCH_TARGET_ARCH),powerpc)
> +LIBDISPATCH_EXTRA_FLAGS = -mcpu=7400
We support many, many other powerpc CPUs, so please explain why this is needed
and why it works on all other CPUs.
> +else
> +LIBDISPATCH_EXTRA_FLAGS =
> +endif
> +
> +LIBDISPATCH_CONF_OPTS += \
> + -DLibRT_LIBRARIES="${STAGING_DIR}/usr/lib/librt.a" \
> + -DCMAKE_C_COMPILER=$(LIBDISPATCH_CLANG_PATH)/clang \
> + -DCMAKE_CXX_COMPILER=$(LIBDISPATCH_CLANG_PATH)/clang++ \
> + -DCMAKE_C_FLAGS="-w -fuse-ld=lld $(LIBDISPATCH_EXTRA_FLAGS) -target $(LIBDISPATCH_TARGET_NAME) --sysroot=$(STAGING_DIR) -I$(STAGING_DIR)/usr/include -B$(STAGING_DIR)/usr/lib -B$(HOST_DIR)/lib/gcc/$(GNU_TARGET_NAME)/$(call qstrip,$(BR2_GCC_VERSION)) -L$(HOST_DIR)/lib/gcc/$(GNU_TARGET_NAME)/$(call qstrip,$(BR2_GCC_VERSION))" \
Please wrap this extremely long line. Also, since it's reused for CXX flags,
it probably makes sense to define a variable for this.
-fuse-ld should probably be given a full path to $(HOST_DIR)/bin/lld instead
of relying on $PATH.
--sysroot, -I, -B, -L options shouldn't be needed, they should already be part
of the toolchain wrapper. However, the toolchain wrapper for clang is fairly
recent and doesn't see that much use, so something may be missing there. Still,
if there is a problem, it should probably be handled in the toolchain wrapper an
not here.
> + -DCMAKE_C_LINK_FLAGS="-target $(LIBDISPATCH_TARGET_NAME) --sysroot=$(STAGING_DIR)" \
Again, --sysrot should already be handled by the toolchain wrapper.
> + -DCMAKE_CXX_FLAGS="-w -fuse-ld=lld $(LIBDISPATCH_EXTRA_FLAGS) -target $(LIBDISPATCH_TARGET_NAME) --sysroot=$(STAGING_DIR) -I$(STAGING_DIR)/usr/include -I$(HOST_DIR)/$(GNU_TARGET_NAME)/include/c++/$(call qstrip,$(BR2_GCC_VERSION))/ -I$(HOST_DIR)/$(GNU_TARGET_NAME)/include/c++/$(call qstrip,$(BR2_GCC_VERSION))/$(GNU_TARGET_NAME) -B$(STAGING_DIR)/usr/lib -B$(HOST_DIR)/lib/gcc/$(GNU_TARGET_NAME)/$(call qstrip,$(BR2_GCC_VERSION)) -L$(HOST_DIR)/lib/gcc/$(GNU_TARGET_NAME)/$(call qstrip,$(BR2_GCC_VERSION))" \
> + -DCMAKE_CXX_LINK_FLAGS="-target $(LIBDISPATCH_TARGET_NAME) --sysroot=$(STAGING_DIR)" \
> +
> +define LIBDISPATCH_INSTALL_TARGET_CMDS
> + (cd $(LIBDISPATCH_BUILDDIR) && \
> + cp ./*.so $(TARGET_DIR)/usr/lib/ \
Doesn't the CMakeLists.txt have proper install commands? If not, please
document in the commit message.
Also, no need to cd, just do
cp $(LIBDISPATCH_BUILDDIR)/*.so $(TARGET_DIR)/usr/lib/
Regards,
Arnout
> + )
> +endef
> +
> +$(eval $(cmake-package))
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-02-06 11:24 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-29 21:54 [Buildroot] [PATCH 1/2] package/libdispatch: add libdispatch package Alsey Coleman Miller
2022-03-29 21:54 ` [Buildroot] [PATCH 2/2] package/libdispatch: add fix for 32-bit arm Alsey Coleman Miller
2022-03-29 21:57 ` [Buildroot] [PATCH 1/2] package/libdispatch: add libdispatch package Alsey Miller
2023-02-06 11:24 ` Arnout Vandecappelle
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.