[Buildroot] [PATCH] package/libchicken: the chicken scheme programming environment
Woodrow Douglass
wdouglass at carnegierobotics.com
Wed Jan 18 12:28:40 UTC 2023
This package includes the runtime library and interpreter. In the
future I plan on packaging a cross-compiler for the host as well
Signed-off-by: Woodrow Douglass <wdouglass at carnegierobotics.com>
---
DEVELOPERS | 3 ++
package/Config.in | 1 +
package/libchicken/Config.in | 12 ++++++
package/libchicken/libchicken.mk | 71 ++++++++++++++++++++++++++++++++
4 files changed, 87 insertions(+)
create mode 100644 package/libchicken/Config.in
create mode 100644 package/libchicken/libchicken.mk
diff --git a/DEVELOPERS b/DEVELOPERS
index e8e0dffcd3..64d21ce2c5 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -3015,6 +3015,9 @@ F: package/python-pyusb/
N: Wojciech Niziński <niziak at spox.org>
F: package/fwup/
+N: Woodrow Douglass <wdouglass at carnegierobotics.com>
+F: package/libchicken
+
N: Xuanhao Shi <X15000177 at gmail.com>
F: boot/ti-k3-r5-loader/
diff --git a/package/Config.in b/package/Config.in
index 995dae2c57..c605abb6be 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -641,6 +641,7 @@ menu "Interpreter languages and scripting"
source "package/4th/Config.in"
source "package/enscript/Config.in"
source "package/erlang/Config.in"
+ source "package/libchicken/Config.in"
if BR2_PACKAGE_ERLANG
menu "Erlang libraries/modules"
source "package/erlang-base64url/Config.in"
diff --git a/package/libchicken/Config.in b/package/libchicken/Config.in
new file mode 100644
index 0000000000..173215cbef
--- /dev/null
+++ b/package/libchicken/Config.in
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_LIBCHICKEN
+ bool "chicken-scheme-runtime"
+ depends on BR2_USE_MMU
+ help
+ libchicken is the runtime library for chicken
+ scheme. https://call-cc.org
+
+config BR2_LIBCHICKEN_INSTALL_INTERPRETER
+ bool "chicken-scheme-interpreter"
+ depends on BR2_PACKAGE_LIBCHICKEN
+ help
+ csi is an interpreter for the Chicken Scheme dialect
diff --git a/package/libchicken/libchicken.mk b/package/libchicken/libchicken.mk
new file mode 100644
index 0000000000..a402706c73
--- /dev/null
+++ b/package/libchicken/libchicken.mk
@@ -0,0 +1,71 @@
+################################################################################
+#
+# libchicken
+#
+################################################################################
+
+LIBCHICKEN_VERSION = 5.3.0
+LIBCHICKEN_SITE = https://code.call-cc.org/releases/$(LIBCHICKEN_VERSION)
+LIBCHICKEN_SOURCE = chicken-$(LIBCHICKEN_VERSION).tar.gz
+LIBCHICKEN_LICENSE = BSD
+LIBCHICKEN_LICENSE_FILES = LICENSE
+LIBCHICKEN_INSTALL_STAGING = YES
+LIBCHICKEN_INSTALL_TARGET = YES
+
+LIBCHICKEN_MAKE_ARGUMENTS=ARCH= \
+ PREFIX=/usr \
+ PLATFORM=linux \
+ C_COMPILER=${TARGET_CC} \
+ CXX_COMPILER=${TARGET_CXX} \
+ LIBRARIAN=${TARGET_AR} \
+ DESTDIR=$(STAGING_DIR)
+
+# MAKE1 is used here because the install step will fail without it. Perhaps this'll be fixed upstream someday...
+LIBCHICKEN_MAKE = $(MAKE1)
+
+ifneq ($(BR2_ARCH),x86)
+ LIBCHICKEN_MAKE_ARGUMENTS += TARGET_FEATURES="-no-feature x86 -feature ${BR2_ARCH}"
+endif
+
+ifeq ($(BR2_STATIC_LIBS),y)
+ LIBCHICKEN_MAKE_ARGUMENTS += STATICBUILD=1
+endif
+
+
+define LIBCHICKEN_BUILD_CMDS
+ $(TARGET_MAKE_ENV) $(LIBCHICKEN_MAKE) -C $(@D) ${LIBCHICKEN_MAKE_ARGUMENTS} all
+endef
+
+define LIBCHICKEN_INSTALL_STAGING_CMDS
+ $(TARGET_MAKE_ENV) $(LIBCHICKEN_MAKE) -C $(@D) ${LIBCHICKEN_MAKE_ARGUMENTS} install
+endef
+
+define LIBCHICKEN_INSTALL_TARGET_LIBS_CMDS
+ $(INSTALL) -D -m 0755 $(@D)/libchicken.so.11 $(TARGET_DIR)/usr/lib
+ ln -srT $(TARGET_DIR)/usr/lib/libchicken.so.11 $(TARGET_DIR)/usr/lib/libchicken.so
+endef
+
+define LIBCHICKEN_INSTALL_TARGET_INTERPRETER_CMDS
+ $(INSTALL) -D -m 0755 $(@D)/csi $(TARGET_DIR)/usr/bin
+endef
+
+ifeq ($(BR2_LIBCHICKEN_INSTALL_INTERPRETER),y)
+ifneq ($(BR2_STATIC_LIBS),y)
+define LIBCHICKEN_INSTALL_TARGET_CMDS
+ $(LIBCHICKEN_INSTALL_TARGET_LIBS_CMDS)
+ $(LIBCHICKEN_INSTALL_TARGET_INTERPRETER_CMDS)
+endef
+else
+define LIBCHICKEN_INSTALL_TARGET_CMDS
+ $(LIBCHICKEN_INSTALL_TARGET_INTERPRETER_CMDS)
+endef
+endif
+else
+ifneq ($(BR2_STATIC_LIBS),y)
+define LIBCHICKEN_INSTALL_TARGET_CMDS
+ $(LIBCHICKEN_INSTALL_TARGET_LIBS_CMDS)
+endef
+endif
+endif
+
+$(eval $(generic-package))
--
2.20.1
More information about the buildroot
mailing list