chicken-scheme: split library and refactor

Split library into a separate package and refactor Makefile.

Strip all executable binaries without stripping the library that's
used by the compiler.

Add SPDX license identifier.

Signed-off-by: George Sapkin <george@sapk.in>
This commit is contained in:
George Sapkin
2025-12-22 00:40:01 +02:00
parent e00c01fd7d
commit 5b4e4bf3c5

View File

@@ -1,15 +1,12 @@
# Copyright (C) 2019-2020 Jerônimo Cordoni Pellegrini <j_p@aleph0.info>
#
# This file is free software, licensed under the GNU General Public License v3
# or later.
# See /LICENSE for details
#
# SPDX-License-Identifier: GPL-3.0-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=chicken-scheme
PKG_VERSION:=5.2.0
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_BUILD_DIR:=$(BUILD_DIR)/chicken-$(PKG_VERSION)
PKG_SOURCE:=chicken-$(PKG_VERSION).tar.gz
@@ -22,120 +19,120 @@ PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
MAKE_FLAGS += \
C_COMPILER="$(TARGET_CC)" \
C_COMPILER_OPTIMIZATION_OPTIONS="$(TARGET_CFLAGS)" \
LINKER="$(TARGET_CC)" \
PLATFORM=linux \
PREFIX=/usr
SSTRIP:=$(STRIP)
STRIP:=:
RSTRIP:=:
define Package/chicken-scheme/Default
TITLE:=Chicken Scheme
SECTION:=lang
CATEGORY:=Languages
URL:=https://call-cc.org
endef
define Package/chicken-scheme/description/Default
Chicken is an implementation of the Scheme language. It is portable,
efficient, and supports the R5RS and R7RS (work in progress) standards, and
many extensions.
Chicken can be used as a scripting language to automate tasks.
For more information, please refer to the Chicken Scheme website at
https://call-cc.org.
endef
define Package/libchicken
$(call Package/chicken-scheme/Default)
TITLE+= library
ABI_VERSION:=11
endef
##
## chicken-scheme-interpreter
##
define Package/libchicken/description
$(call Package/chicken-scheme/description/Default)
This package contains the library.
endef
define Package/chicken-scheme-interpreter
$(call Package/chicken-scheme/Default)
TITLE+=interpreter only
TITLE+= interpreter only
CONFLICTS:=chicken-scheme-full
DEPENDS:=+libchicken
EXTRA_DEPENDS:=libchicken (=$(PKG_VERSION)-r$(PKG_RELEASE))
endef
define Package/chicken-scheme-interpreter/description
Chicken is an implementation of the Scheme language. It is portable, efficient, and supports
the R5RS and R7RS (work in progress) standards, and many extensions.
Chicken can be used as a scripting language to automate tasks.
This package contains the interpreter, 'csi', only --
the compiler and the package installer are not included because they depend on a C compiler.
For more information, please refer to the Chicken Scheme website at https://call-cc.org.
$(call Package/chicken-scheme/description/Default)
This package contains the interpreter, 'csi', only -- the compiler and the
package installer are not included because they depend on a C compiler.
endef
MAKE_FLAGS += PLATFORM=linux C_COMPILER="$(TARGET_CC)" LINKER="$(TARGET_CC)" PREFIX=/usr C_COMPILER_OPTIMIZATION_OPTIONS="$(TARGET_CFLAGS)"
# not installed:
# - csc and chicken, the compiler
# - the include dir (only useful with the compiler)
# - install, uninstall, status, and chicken-do, which deal with modules
# (installation of more modules depends on the compiler)
# - profiler
# - feathers, the debugger
# - libchicken.a, the static library
define Package/chicken-scheme-interpreter/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_DIR) $(1)/usr/lib/chicken/$(ABI_VERSION)
$(INSTALL_BIN) $(PKG_BUILD_DIR)/csi $(1)/usr/bin/
$(CP) $(PKG_BUILD_DIR)/libchicken.so.$(ABI_VERSION) $(1)/usr/lib/
$(CP) $(PKG_BUILD_DIR)/libchicken.so $(1)/usr/lib/
$(CP) $(PKG_BUILD_DIR)/*.import.so $(1)/usr/lib/chicken/$(ABI_VERSION)/
$(CP) $(PKG_BUILD_DIR)/types.db $(1)/usr/lib/chicken/$(ABI_VERSION)/
endef
$(eval $(call BuildPackage,chicken-scheme-interpreter))
##
## chicken-scheme-full
##
# mips-openwrt-linux-musl-gcc dowsn't seem to link with libchicken.so.
# already tried -lchicken and passing /usr/lib/libchicken.so on the command
# line.
# also tried -Wl,-R/usr/lib,-R/usr/lib/chicken/$(ABI_VERSION)
#
# current solution: we do not strip binaries in chicken-scheme-full
# we do this by unsetting STRIP and RSTRIP, *and* reloading rules.mk
#
STRIP:=:
RSTRIP:=:
include $(TOPDIR)/rules.mk
# csc depends on gcc; chicken-install uses the 'install' command from coreutils
define Package/chicken-scheme-full
$(call Package/chicken-scheme/Default)
TITLE+=full package
# csc depends on gcc; chicken-install uses the 'install' command from coreutils
DEPENDS:=gcc coreutils-install
TITLE+= full package
DEPENDS:=+coreutils-install +gcc +libchicken
EXTRA_DEPENDS:=libchicken (=$(PKG_VERSION)-r$(PKG_RELEASE))
endef
define Package/chicken-scheme-full/description
Chicken is an implementation of the Scheme language. It is portable, efficient, and supports
the R5RS and R7RS (work in progress) standards, and many extensions.
Chicken can be used as a scripting language to automate tasks.
This package contains the interpreter, 'csi'; the compiler, 'csc';
the tools for installing and removing eggs (modules); the profiler and
the debugger.
$(call Package/chicken-scheme/description/Default)
This package contains the interpreter, 'csi'; the compiler, 'csc'; the tools
for installing and removing eggs (modules); the profiler and the debugger.
Note that this package depends on gcc, which is quite large (more than 100Mb).
For more information, please refer to the Chicken Scheme website at https://call-cc.org.
endef
define Build/Compile
$(call Build/Compile/Default)
$(SSTRIP) $(PKG_BUILD_DIR)/chicken
$(SSTRIP) $(PKG_BUILD_DIR)/chicken-do
$(SSTRIP) $(PKG_BUILD_DIR)/chicken-install
$(SSTRIP) $(PKG_BUILD_DIR)/chicken-profile
$(SSTRIP) $(PKG_BUILD_DIR)/chicken-status
$(SSTRIP) $(PKG_BUILD_DIR)/chicken-uninstall
$(SSTRIP) $(PKG_BUILD_DIR)/csc
$(SSTRIP) $(PKG_BUILD_DIR)/csi
endef
define Package/libchicken/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/libchicken.so{,.$(ABI_VERSION)} $(1)/usr/lib
$(INSTALL_DIR) $(1)/usr/lib/chicken/$(ABI_VERSION)
$(CP) $(PKG_BUILD_DIR)/*.import.so $(1)/usr/lib/chicken/$(ABI_VERSION)
$(CP) $(PKG_BUILD_DIR)/types.db $(1)/usr/lib/chicken/$(ABI_VERSION)
endef
define Package/chicken-scheme-interpreter/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/csi $(1)/usr/bin
endef
# not installed:
# - libchicken.a, the static library
define Package/chicken-scheme-full/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_DIR) $(1)/usr/lib/chicken/$(ABI_VERSION)
$(INSTALL_DIR) $(1)/usr/include/chicken
$(INSTALL_DIR) $(1)/usr/share/chicken
$(INSTALL_BIN) $(PKG_BUILD_DIR)/csi $(1)/usr/bin/
$(CP) $(PKG_BUILD_DIR)/libchicken.so.$(ABI_VERSION) $(1)/usr/lib/
$(CP) $(PKG_BUILD_DIR)/libchicken.so $(1)/usr/lib/
$(CP) $(PKG_BUILD_DIR)/*.import.so $(1)/usr/lib/chicken/$(ABI_VERSION)/
$(CP) $(PKG_BUILD_DIR)/types.db $(1)/usr/lib/chicken/$(ABI_VERSION)/
# csc
$(INSTALL_BIN) $(PKG_BUILD_DIR)/csc $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken $(1)/usr/bin/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/chicken.h $(1)/usr/include/chicken/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/chicken-config.h $(1)/usr/include/chicken/
# chicken-install
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-install $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-uninstall $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-status $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-do $(1)/usr/bin/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/setup.defaults $(1)/usr/share/chicken/
# profile
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-profile $(1)/usr/bin/
# feathers
$(INSTALL_BIN) $(PKG_BUILD_DIR)/feathers.tcl $(1)/usr/share/chicken/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/feathers $(1)/usr/bin/
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-do $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-install $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-profile $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-status $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-uninstall $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/csc $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/csi $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/feathers $(1)/usr/bin
$(INSTALL_DIR) $(1)/usr/include/chicken
$(INSTALL_DATA) $(PKG_BUILD_DIR)/chicken.h $(1)/usr/include/chicken
$(INSTALL_DATA) $(PKG_BUILD_DIR)/chicken-config.h $(1)/usr/include/chicken
$(INSTALL_DIR) $(1)/usr/share/chicken
$(INSTALL_BIN) $(PKG_BUILD_DIR)/feathers.tcl $(1)/usr/share/chicken
$(INSTALL_DATA) $(PKG_BUILD_DIR)/setup.defaults $(1)/usr/share/chicken
endef
$(eval $(call BuildPackage,chicken-scheme-full))
$(eval $(call BuildPackage,chicken-scheme-interpreter))
$(eval $(call BuildPackage,libchicken))