mirror of
https://github.com/openwrt/packages.git
synced 2026-04-15 19:02:09 +00:00
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:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user