Cross Reference: /solaris-userland/components/emacs/Makefile
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
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
176N/A# The contents of this file are subject to the terms of the 176N/A# Common Development and Distribution License (the "License"). 176N/A# You may not use this file except in compliance with the License. 176N/A# See the License for the specific language governing permissions 176N/A# and limitations under the License. 176N/A# When distributing Covered Code, include this CDDL HEADER in each 176N/A# If applicable, add the following below this CDDL HEADER, with the 176N/A# fields enclosed by brackets "[]" replaced with your own identifying 176N/A# information: Portions Copyright [yyyy] [name of copyright owner] 5674N/A# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. 5078N/A# As Solaris always has a 64-bit kernel, and 64-bit emacs can handle larger 5078N/A# files, we only build and deliver 64-bit binaries. 5680N/A# The upstream emacs distribution does not have tests to be run 6686N/A# Depends on newer cairo, which cannot be updated in S11. 5078N/A# We build three different variants of emacs for our users. 176N/A# contains the platform name. Although the name is platform dependent, 176N/A# the files inside it are the same on all platforms. By adding this 176N/A# to the pkgmogrify macros, we can write our manifests in a portable way. 176N/A# LD_OPTIONS is defined to apply desirable link-editor options to Userland 176N/A# components. Non-executable stack and data break sparc emacs. 176N/A# Uncomment this for debugging only. It configures emacs to run from the 4789N/A# local proto instead of from its final installed location. This is useful 4789N/A# for initial bringup of new emacs versions, but can only be used up through 176N/A#CONFIGURE_PREFIX = $(PROTO_DIR)/usr 5078N/A# The configure script runs the pkg-config command. This allows it to 5078N/A# find the non-default GnuTLS v3 library. 5078N/A# Never use xmkmf to find X11 libraries from autoconf. They are all available 5078N/A# from standard system locations, and we don't want the ld -L option that 176N/A# configure options common to all variants of emacs that we want to build. 4789N/A# Disable gsettings and dbus. gsettings causes numerous startup errors 4789N/A# line 416: assertion 'source != NULL' failed 4789N/A# without providing much benefit on Solaris. dbus does not offer sufficient 4789N/A# utility for Solaris to be worth the negative interactions with ssh, where 4789N/A# the session blocks on exit due to dbus holding an open port. 4789N/A# ASLR should remain disabled for emacs. ASLR undermines emacs's dumping 4789N/A# code, which requires every execution to have the same mappings. Since 4789N/A# emacs is not network facing, or run with elevated privileges, this is 7243N/A# Similarly, emacs cannot cope with a non-executable stack and with a protected 176N/A# variant specific configure options 176N/A# we need to build all variants, but only have to install one in order 176N/A# to get the common files shared by all. We use COMPONENT_POST_INSTALL_ACTION 176N/A# to remove unwanted files, copy the emacs binaries from the other tookit 176N/A# builds into place, and install the additional files we provide. 176N/A# Note that this tweaking is not required, as the proto need not match 176N/A# the packaging. However, doing it this way allows us to examine the proto 176N/A# as a finished and complete product, simplifies debugging emacs, and 176N/A# facilitates the use of 'gmake sample-manifest'. 4789N/A# Remove existing emacs executable from usr/bin. We install the binaries 2134N/A# etags could arguably go into /usr/bin, but we'd like to preserve the 2134N/A# both of the ones we're delivering, with Exuberant Ctags. Putting both 2134N/A# emacs tags programs in /usr/gnu/bin helps that, and is a simpler story. 176N/A# this is that we do not install update-game-score as setuid, and 176N/A# therefore the game files are not usable. This the same decision made 176N/A# by Debian, among others. 4789N/A# Provide manpages for the emacs variants, which are our creation, referring 2134N/A# the reader to the main emacs(1) manpage. 4789N/A# live at the topmost node of the Info hierarchy. Emacs builds them, as 4789N/A# presumably do all GNU packages, but on Solaris, they are delivered by 4789N/A# By default, emacs is configured to compress lisp files, manpages, and info 4789N/A# files. The option to disable that (--without-compress-install) has no 4789N/A# granularity --- it's all or nothing. For Solaris, we want to compress lisp 4789N/A# sources, but not the others. It's simplest to let everything be compressed. 4789N/A# and then explicitly decompress the manpages and info files. 4966N/A# Desktop packages differ slightly between S11 & S12: list union to allow 4966N/A# for BUILD_TYPE=evaluation and normal builds.