1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
|
#
# Copyright (C) David Kuehling <dvdkhlng TA gmx TOD de>
#
# License GPLv2 or later. NO WARRANTY.
#
# OpenWRT package for the complete GNU Emacs editor
include $(TOPDIR)/rules.mk
PKG_NAME:=emacs
PKG_VERSION:=23.2
PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=ftp://ftp.fu-berlin.de/pub/gnu/emacs/ \
@GNU/emacs/
PKG_MD5SUM:=b6691852dae0bc142b3c12749f6b7ade
PKG_INSTALL:=1
PKG_FIXUP:=libtool
PKG_BUILD_DEPENDS:= emacs/host libtool/host
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
define Package/emacs/Default
SUBMENU:=Emacs
SECTION:=utils
CATEGORY:=Utilities
TITLE:=The GNU Emacs Editor a.k.a. \"Emacs OS\"
URL:=http://www.gnu.org/software/emacs/
# SUBMENU:=Editors
endef
define Package/emacs/Default/description
GNU Emacs is an extensible, customizable text editor — and more.
At its core is an interpreter for Emacs Lisp, a dialect of the
Lisp programming language with extensions to support text editing.
endef
define Package/emacs
$(call Package/emacs/Default)
DEPENDS:=+libncurses +emacs-data
TITLE+= (executable)
endef
define Package/emacs/description
$(call Package/emacs/Default/description)
This package contains the Emacs executable files
endef
define Package/emacs-data
$(call Package/emacs/Default)
TITLE+= (compiled lisp)
endef
define Package/emacs-data/description
$(call Package/emacs/Default/description)
This package contains the compiled Lisp files needed to run Emacs.
endef
define Package/emacs-ja-dic
$(call Package/emacs/Default)
TITLE+= (japanese input dictionary)
DEPENDS:=+emacs
endef
define Package/emacs-ja-dic/description
$(call Package/emacs/Default/description)
This package contains the japanese dictionary used to input japanese Kanji
via Hiragana->Kanji conversion (\'set-input-method japanese\'). This
dictionary is huge, so huge that emacs won\'t be able to load it on systems
with 32MB or fewer RAM.
endef
define Package/emacs-el
$(call Package/emacs/Default)
TITLE+= (lisp source)
endef
define Package/emacs-el/description
$(call Package/emacs/Default/description)
This package contains the Lisp source files of Emacs that can queried via
C-h f in case provided documentation of an Emacs function is insufficient.
endef
EMACS_STRIPTEASE_ARGS = \
--without-x \
--without-xpm \
--without-jpeg \
--without-gif \
--without-png \
--without-rsvg \
--without-xft \
--without-libotf \
--without-dbus \
--without-gconf
HOST_CONFIGURE_ARGS += $(EMACS_STRIPTEASE_ARGS)
CONFIGURE_ARGS += $(EMACS_STRIPTEASE_ARGS)
MAKE_FLAGS += "LD=$(TARGET_CROSS)gcc"
## Don't try that: lowering PURESIZE makes Emacs' RAM usage explode! Maybe
## something about Elisp garbage collection!?
#TARGET_CPPFLAGS += -DPURESIZE=16
## Keep emacs build system from doing all kinds nasty tricks that won't work
## (well) with openwrt and uclibc. Especially keep it from attempting to
## manually configure crt* startup file linking. We won't be able to 'dump'
## during cross-compile anyway. Dumping inside the target system seems not
## possible due to lack of RAM. Note that we also need to sanitize the
## Makefile using 'sed' below.
TARGET_CPPFLAGS += -DCANNOT_DUMP -DNO_REMAP -DORDINARY_LINK
define Build/Prepare
$(call Build/Prepare/Default)
endef
define Host/Configure
$(call Host/Configure/Default)
endef
## On the host, we only compile and install minimum Emacs components used for
## bootstrapping
define Host/Compile
export LD_LIBRARY_PATH=$(STAGING_DIR_HOST)/lib; \
$(call Host/Compile/Default)
endef
define Host/Install
$(call Host/Install/Default)
$(INSTALL_BIN) $(HOST_BUILD_DIR)/lib-src/make-docfile $(STAGING_DIR_HOST)/bin/emacs-make-docfile
$(INSTALL_BIN) $(HOST_BUILD_DIR)/src/prefix-args $(STAGING_DIR_HOST)/bin/emacs-prefix-args
endef
define Build/Configure
$(call Build/Configure/Default)
endef
define Build/Compile
$(call Build/Compile/Default, -C lib-src -o test-distrib)
ln -sf $(STAGING_DIR_HOST)/bin/emacs-make-docfile $(PKG_BUILD_DIR)/lib-src/make-docfile
ln -sf $(STAGING_DIR_HOST)/bin/emacs-prefix-args $(PKG_BUILD_DIR)/src/prefix-args
sed -ie 's;\(TEMACS_LDFLAGS\|STARTFILES\) =.*;\1 =;' $(PKG_BUILD_DIR)/src/Makefile
# sed -ie 's; /usr/lib/crt[^ ]\+; $(TOOLCHAIN_DIR)/usr/lib/crt;g' $(PKG_BUILD_DIR)/src/Makefile
sed -ie 's; /usr/lib/crt[^ ]\+; ;g' $(PKG_BUILD_DIR)/src/Makefile
sed -ie 's;\(#.*PATH_DUMPLOADSEARCH\).*$$$$;\1 PATH_LOADSEARCH;' $(PKG_BUILD_DIR)/src/epaths.h
$(call Build/Compile/Default, -C src -o lib-src -o prefix-args -o ../lib-src/make-docfile temacs ../etc/DOC)
cp -v $(PKG_BUILD_DIR)/src/temacs $(PKG_BUILD_DIR)/src/emacs
$(call Build/Compile/Default, -C lisp EMACS=$(STAGING_DIR_HOST)/bin/emacs)
$(call Build/Compile/Default, -C leim BUILT-EMACS=$(STAGING_DIR_HOST)/bin/emacs)
endef
define Build/Install
sed -ie 's;./src/emacs\( --version\);$(STAGING_DIR_HOST)/bin/emacs \1;g' \
$(PKG_BUILD_DIR)/Makefile
$(call Build/Install/Default,install-arch-indep install-arch-dep install-leim INSTALL_STRIP=-s "MFLAGS=-o test-distrib")
$(INSTALL_DATA) ./files/site-start.el $(PKG_INSTALL_DIR)/usr/share/emacs/$(PKG_VERSION)/site-lisp
endef
define Package/emacs/install
$(INSTALL_DIR) $(1)/usr
cp -r $(PKG_INSTALL_DIR)/usr/{bin,lib} $(1)/usr
endef
define Package/emacs-data/install
$(INSTALL_DIR) $(1)/
(cd $(PKG_INSTALL_DIR)/ && \
tar -cf - --exclude "*.el.gz" \
--exclude "images" \
--exclude "refcards" \
--exclude "schema" \
--exclude "NEWS*" \
--exclude "ja-dic" \
usr/share) \
| (cd $(1)/ && tar -xvf -)
endef
define Package/emacs-ja-dic/install
$(INSTALL_DIR) $(1)/usr
(cd $(PKG_INSTALL_DIR)/usr && tar -cf - \
--exclude "*.el.gz" share/emacs/$(PKG_VERSION)/leim/ja-dic) \
| (cd $(1)/usr && tar -xvf -)
endef
define Package/emacs-el/install
$(INSTALL_DIR) $(1)/usr
(cd $(PKG_INSTALL_DIR)/usr && find share -name "*.el.gz" \
| tar -cf - -T - --exclude "ja-dic" ) \
| (cd $(1)/usr && tar -xvf -)
endef
$(eval $(call HostBuild))
$(eval $(call BuildPackage,emacs))
$(eval $(call BuildPackage,emacs-data))
$(eval $(call BuildPackage,emacs-ja-dic))
$(eval $(call BuildPackage,emacs-el))
# The following comments configure the Emacs editor. Just ignore them.
# Local Variables:
# compile-command: "make -C ~/h/src/qi/openwrt-xburst package/emacs/compile -j2 V=99"
# End:
|