Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Alsey Coleman Miller <alseycmiller@gmail.com>
To: buildroot@buildroot.org
Cc: Alsey Miller <alseycmiller@gmail.com>,
	Samuel Martin <s.martin49@gmail.com>
Subject: [Buildroot] [PATCH 2/4] package/libdispatch: add libdispatch package
Date: Tue, 29 Mar 2022 18:50:57 +0000	[thread overview]
Message-ID: <20220329185059.943889-2-alseycmiller@gmail.com> (raw)
In-Reply-To: <20220329185059.943889-1-alseycmiller@gmail.com>

Signed-off-by: Alsey Coleman Miller <alseycmiller@gmail.com>
---
 package/Config.in                    |  1 +
 package/libdispatch/Config.in        | 43 ++++++++++++++++++++++
 package/libdispatch/libdispatch.hash |  1 +
 package/libdispatch/libdispatch.mk   | 53 ++++++++++++++++++++++++++++
 4 files changed, 98 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/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..a3b441ba36
--- /dev/null
+++ b/package/libdispatch/libdispatch.mk
@@ -0,0 +1,53 @@
+### 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_SUPPORTS_CMAKE_TOOLCHAIN = 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.35.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  reply	other threads:[~2022-03-29 18:51 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-29 18:50 [Buildroot] [PATCH 1/4] package/pkg-cmake: allow overriding toolchain Alsey Coleman Miller
2022-03-29 18:50 ` Alsey Coleman Miller [this message]
2022-03-29 18:50 ` [Buildroot] [PATCH 3/4] package/libdispatch: add fix for 32-bit arm Alsey Coleman Miller
2023-02-06 11:26   ` Arnout Vandecappelle
2022-03-29 18:50 ` [Buildroot] [PATCH 4/4] DEVELOPERS: add Alsey Miller for libdispatch Alsey Coleman Miller
2022-03-29 19:17 ` [Buildroot] [PATCH 1/4] package/pkg-cmake: allow overriding toolchain Alsey Miller
2022-03-29 19:26   ` James Hilliard
2022-03-29 19:58     ` Alsey Miller
2022-03-29 20:10       ` James Hilliard
2022-03-29 23:19         ` Alsey Miller
2022-06-20 23:14           ` James Hilliard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220329185059.943889-2-alseycmiller@gmail.com \
    --to=alseycmiller@gmail.com \
    --cc=buildroot@buildroot.org \
    --cc=s.martin49@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox