Merge pull request #11353 from kvuorine/fwknop-fixes
[feed/packages.git] / lang / chicken-scheme / Makefile
1 # Copyright (C) 2019-2020 Jerônimo Cordoni Pellegrini <j_p@aleph0.info>
2 #
3 # This file is free software, licensed under the GNU General Public License v3
4 # or later.
5 # See /LICENSE for details
6 #
7
8 include $(TOPDIR)/rules.mk
9
10 PKG_NAME:=chicken-scheme
11 PKG_VERSION:=5.2.0
12 PKG_RELEASE:=2
13
14 PKG_BUILD_DIR:=$(BUILD_DIR)/chicken-$(PKG_VERSION)
15 PKG_SOURCE:=chicken-$(PKG_VERSION).tar.gz
16 PKG_SOURCE_URL:=https://code.call-cc.org/releases/$(PKG_VERSION)/
17 PKG_HASH:=819149c8ce7303a9b381d3fdc1d5765c5f9ac4dee6f627d1652f47966a8780fa
18 PKG_MAINTAINER:=Jeronimo Pellegrini <j_p@aleph0.info>
19
20 PKG_LICENSE:=BSD-3-Clause
21 PKG_LICENSE_FILES:=LICENSE
22
23 include $(INCLUDE_DIR)/package.mk
24
25
26
27
28 define Package/chicken-scheme/Default
29 SECTION:=lang
30 CATEGORY:=Languages
31 URL:=https://call-cc.org
32 ABI_VERSION:=11
33 endef
34
35
36 ##
37 ## chicken-scheme-interpreter
38 ##
39
40 define Package/chicken-scheme-interpreter
41 $(call Package/chicken-scheme/Default)
42 TITLE:=Chicken Scheme -- interpreter only
43 SECTION:=lang
44 CATEGORY:=Languages
45 endef
46
47 define Package/chicken-scheme-interpreter/description
48 Chicken is an implementation of the Scheme language. It is portable, efficient, and supports
49 the R5RS and R7RS (work in progress) standards, and many extensions.
50 Chicken can be used as a scripting language to automate tasks.
51 This package contains the interpreter, 'csi', only --
52 the compiler and the package installer are not included because they depend on a C compiler.
53 For more information, please refer to the Chicken Scheme website at https://call-cc.org.
54 endef
55
56 MAKE_FLAGS += PLATFORM=linux C_COMPILER=$(TARGET_CC) LINKER=$(TARGET_CC) PREFIX=/usr C_COMPILER_OPTIMIZATION_OPTIONS="$(TARGET_CFLAGS)"
57
58 # not installed:
59 # - csc and chicken, the compiler
60 # - the include dir (only useful with the compiler)
61 # - install, uninstall, status, and chicken-do, which deal with modules
62 # (installation of more modules depends on the compiler)
63 # - profiler
64 # - feathers, the debugger
65 # - libchicken.a, the static library
66 define Package/chicken-scheme-interpreter/install
67 $(INSTALL_DIR) $(1)/usr/bin
68 $(INSTALL_DIR) $(1)/usr/lib/chicken/$(ABI_VERSION)
69 $(INSTALL_BIN) $(PKG_BUILD_DIR)/csi $(1)/usr/bin/
70 $(CP) $(PKG_BUILD_DIR)/libchicken.so.$(ABI_VERSION) $(1)/usr/lib/
71 $(CP) $(PKG_BUILD_DIR)/libchicken.so $(1)/usr/lib/
72 $(CP) $(PKG_BUILD_DIR)/*.import.so $(1)/usr/lib/chicken/$(ABI_VERSION)/
73 $(CP) $(PKG_BUILD_DIR)/types.db $(1)/usr/lib/chicken/$(ABI_VERSION)/
74 endef
75
76 $(eval $(call BuildPackage,chicken-scheme-interpreter))
77
78
79
80 ##
81 ## chicken-scheme-full
82 ##
83
84 # mips-openwrt-linux-musl-gcc dowsn't seem to link with libchicken.so.
85 # already tried -lchicken and passing /usr/lib/libchicken.so on the command
86 # line.
87 # also tried -Wl,-R/usr/lib,-R/usr/lib/chicken/$(ABI_VERSION)
88 #
89 # current solution: we do not strip binaries in chicken-scheme-full
90 # we do this by unsetting STRIP and RSTRIP, *and* reloading rules.mk
91 #
92 STRIP:=:
93 RSTRIP:=:
94 include $(TOPDIR)/rules.mk
95
96 define Package/chicken-scheme-full
97 $(call Package/chicken-scheme/Default)
98 TITLE:=Chicken Scheme -- full package
99 SECTION:=lang
100 CATEGORY:=Languages
101 # csc depends on gcc; chicken-install uses the 'install' command from coreutils
102 EXTRA_DEPENDS:= gcc, coreutils-install
103 endef
104
105 define Package/chicken-scheme-full/description
106 Chicken is an implementation of the Scheme language. It is portable, efficient, and supports
107 the R5RS and R7RS (work in progress) standards, and many extensions.
108 Chicken can be used as a scripting language to automate tasks.
109 This package contains the interpreter, 'csi'; the compiler, 'csc';
110 the tools for installing and removing eggs (modules); the profiler and
111 the debugger.
112 Note that this package depends on gcc, which is quite large (more than 100Mb).
113 For more information, please refer to the Chicken Scheme website at https://call-cc.org.
114 endef
115
116
117 # not installed:
118 # - libchicken.a, the static library
119 define Package/chicken-scheme-full/install
120 $(INSTALL_DIR) $(1)/usr/bin
121 $(INSTALL_DIR) $(1)/usr/lib/chicken/$(ABI_VERSION)
122 $(INSTALL_DIR) $(1)/usr/include/chicken
123 $(INSTALL_DIR) $(1)/usr/share/chicken
124 $(INSTALL_BIN) $(PKG_BUILD_DIR)/csi $(1)/usr/bin/
125 $(CP) $(PKG_BUILD_DIR)/libchicken.so.$(ABI_VERSION) $(1)/usr/lib/
126 $(CP) $(PKG_BUILD_DIR)/libchicken.so $(1)/usr/lib/
127 $(CP) $(PKG_BUILD_DIR)/*.import.so $(1)/usr/lib/chicken/$(ABI_VERSION)/
128 $(CP) $(PKG_BUILD_DIR)/types.db $(1)/usr/lib/chicken/$(ABI_VERSION)/
129 # csc
130 $(INSTALL_BIN) $(PKG_BUILD_DIR)/csc $(1)/usr/bin/
131 $(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken $(1)/usr/bin/
132 $(INSTALL_DATA) $(PKG_BUILD_DIR)/chicken.h $(1)/usr/include/chicken/
133 $(INSTALL_DATA) $(PKG_BUILD_DIR)/chicken-config.h $(1)/usr/include/chicken/
134 # chicken-install
135 $(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-install $(1)/usr/bin/
136 $(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-uninstall $(1)/usr/bin/
137 $(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-status $(1)/usr/bin/
138 $(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-do $(1)/usr/bin/
139 $(INSTALL_DATA) $(PKG_BUILD_DIR)/setup.defaults $(1)/usr/share/chicken/
140 # profile
141 $(INSTALL_BIN) $(PKG_BUILD_DIR)/chicken-profile $(1)/usr/bin/
142 # feathers
143 $(INSTALL_BIN) $(PKG_BUILD_DIR)/feathers.tcl $(1)/usr/share/chicken/
144 $(INSTALL_BIN) $(PKG_BUILD_DIR)/feathers $(1)/usr/bin/
145 endef
146
147 $(eval $(call BuildPackage,chicken-scheme-full))