0
|
1 |
#
|
|
2 |
# CDDL HEADER START
|
|
3 |
#
|
|
4 |
# The contents of this file are subject to the terms of the
|
|
5 |
# Common Development and Distribution License (the "License").
|
|
6 |
# You may not use this file except in compliance with the License.
|
|
7 |
#
|
|
8 |
# You can obtain a copy of the license at $(SRC)/OPENSOLARIS.LICENSE
|
|
9 |
# or http://www.opensolaris.org/os/licensing.
|
|
10 |
# See the License for the specific language governing permissions
|
|
11 |
# and limitations under the License.
|
|
12 |
#
|
|
13 |
# When distributing Covered Code, include this CDDL HEADER in each
|
|
14 |
# file and include the License file at $(SRC)/OPENSOLARIS.LICENSE.
|
|
15 |
# If applicable, add the following below this CDDL HEADER, with the
|
|
16 |
# fields enclosed by brackets "[]" replaced with your own identifying
|
|
17 |
# information: Portions Copyright [yyyy] [name of copyright owner]
|
|
18 |
#
|
|
19 |
# CDDL HEADER END
|
|
20 |
#
|
|
21 |
#
|
|
22 |
# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
|
|
23 |
# Use is subject to license terms.
|
|
24 |
#
|
|
25 |
# ident "@(#)Makefile.master 1.0 06/03/07 SMI"
|
|
26 |
#
|
|
27 |
|
|
28 |
MACH :sh= echo ${MACH-`uname -p`}
|
|
29 |
MACH64:sh = isainfo -k
|
|
30 |
|
|
31 |
#
|
|
32 |
# Global path variables - change these to suit your own build environment
|
|
33 |
#
|
|
34 |
|
|
35 |
# Base directory where compilers are located.
|
|
36 |
SPRO_VROOT= /opt/SUNWspro
|
|
37 |
|
|
38 |
# List of all our locales - if you need to add/remove any, do it here
|
|
39 |
|
|
40 |
ALL_LOCALES = ar_EG ar_SA bg_BG ca cs_CZ da_DK da_DK de_DE de_AT de_CH de_LU el_GR el_CY \
|
|
41 |
en_AU en_CA en_GB en_IE en_MT en_NZ en_US es_ES es_AR es_BO es_CL es_CO es_CR es_EC es_GT \
|
|
42 |
es_MX es_NI es_PA es_PE es_PY es_SV es_UY es_VE et_EE fi_FI fr_FR fr_BE fr_CA fr_CH fr_LU \
|
|
43 |
he_IL hi_IN hr_HR hu_HU is_IS it_IT ja_JP ko_KR lt_LT lv_LV mk_MK nb_NO nl_NL nl_BE nn_NO \
|
|
44 |
no_NO no_NY pl_PL pt_PT pt_BR ro_RO ru_RU sh_BA sk_SK sl_SI sq_AL sr_CS sr_SP sr_YU sv_SE \
|
|
45 |
ta_IN th_TH tr_TR zh_CN zh_HK zh_TW iconv
|
|
46 |
|
|
47 |
# Method version - the suffix for all shared objects
|
|
48 |
METHOD_VERSION = 3
|
|
49 |
|
|
50 |
#
|
|
51 |
# End global variables - you shouldn't need to change anything from here down
|
|
52 |
#
|
|
53 |
|
|
54 |
|
|
55 |
# the location of the built pkgs
|
|
56 |
DEST = $(SRC)/dist/$(MACH)
|
|
57 |
|
|
58 |
# the location of the built binary-only tarballs
|
|
59 |
TB_DEST = $(SRC)/dist/closed_tarballs
|
|
60 |
|
|
61 |
# the location of the pkg building files
|
|
62 |
ROOT = $(SRC)/proto/$(MACH)
|
|
63 |
PKGROOT = $(ROOT)/pkgroot
|
|
64 |
FILEROOT = $(ROOT)/fileroot
|
|
65 |
|
|
66 |
|
|
67 |
# BUILD_TOOLS is the root of all tools including compilers.
|
|
68 |
# ONBLD_TOOLS is the root of all the tools that are part of SUNWonbld.
|
|
69 |
|
|
70 |
BUILD_TOOLS= /ws/onnv-tools
|
|
71 |
ONBLD_TOOLS= $(BUILD_TOOLS)/onbld
|
|
72 |
|
|
73 |
JAVA_ROOT= /usr/java
|
|
74 |
|
|
75 |
SFW_ROOT= /usr/sfw
|
|
76 |
SFWINCDIR= $(SFW_ROOT)/include
|
|
77 |
SFWLIBDIR= $(SFW_ROOT)/lib
|
|
78 |
SFWLIBDIR64= $(SFW_ROOT)/lib/$(MACH64)
|
|
79 |
|
|
80 |
RPCGEN= /usr/bin/rpcgen
|
|
81 |
STABS= $(ONBLD_TOOLS)/bin/$(MACH)/stabs
|
|
82 |
ECHO= echo
|
|
83 |
INS= /usr/sbin/install -f
|
|
84 |
INSDIR= /usr/sbin/install -d
|
|
85 |
TRUE= true
|
|
86 |
TR = /usr/bin/tr
|
|
87 |
SYMLINK= /usr/bin/ln -s
|
|
88 |
LN= /usr/bin/ln
|
|
89 |
CHMOD= /usr/bin/chmod
|
|
90 |
CHOWN= $(TRUE)
|
|
91 |
CHGRP= $(TRUE)
|
|
92 |
COMPRESS= /usr/bin/compress
|
|
93 |
MV= /usr/bin/mv -f
|
|
94 |
RM= /usr/bin/rm -f
|
|
95 |
GREP= /usr/bin/grep
|
|
96 |
SED= /usr/bin/sed
|
|
97 |
NAWK= /usr/bin/nawk
|
|
98 |
CP= /usr/bin/cp -f
|
|
99 |
MCS= /usr/ccs/bin/mcs
|
|
100 |
CAT= /usr/bin/cat
|
|
101 |
M4= /usr/ccs/bin/m4
|
|
102 |
STRIP= /usr/ccs/bin/strip
|
|
103 |
LEX= /usr/ccs/bin/lex
|
|
104 |
YACC= /usr/ccs/bin/yacc
|
|
105 |
CPP= /usr/lib/cpp
|
|
106 |
JAVAC= $(JAVA_ROOT)/bin/javac
|
|
107 |
JAVAH= $(JAVA_ROOT)/bin/javah
|
|
108 |
JAVADOC= $(JAVA_ROOT)/bin/javadoc
|
|
109 |
RMIC= $(JAVA_ROOT)/bin/rmic
|
|
110 |
JAR= $(JAVA_ROOT)/bin/jar
|
|
111 |
GENOFFSETS= $(ONBLD_TOOLS)/bin/genoffsets
|
|
112 |
CTFCVTPTBL= $(ONBLD_TOOLS)/bin/ctfcvtptbl
|
|
113 |
CTFFINDMOD= $(ONBLD_TOOLS)/bin/ctffindmod
|
|
114 |
XREF= $(ONBLD_TOOLS)/bin/xref
|
|
115 |
FIND= /usr/bin/find
|
|
116 |
PERL= /usr/bin/perl
|
|
117 |
SORT= /usr/bin/sort
|
|
118 |
TOUCH= /usr/bin/touch
|
|
119 |
WC= /usr/bin/wc
|
|
120 |
XARGS= /usr/bin/xargs
|
|
121 |
ELFSIGN= /usr/bin/elfsign
|
|
122 |
PKGMK= pkgmk
|
|
123 |
TAR= /usr/bin/tar -cf
|
|
124 |
LD= /usr/ccs/bin/ld
|
|
125 |
BDFTOPCF = /usr/openwin/bin/bdftopcf
|
|
126 |
|
|
127 |
# MACH must be set in the shell environment per uname -p on the build host
|
|
128 |
# More specific architecture variables should be set in lower makefiles.
|
|
129 |
#
|
|
130 |
# MACH64 is derived from MACH, and BUILD64 is set to `#' for
|
|
131 |
# architectures on which we do not build 64-bit versions.
|
|
132 |
# (There are no such architectures at the moment.)
|
|
133 |
#
|
|
134 |
# Set BUILD64=# in the environment to disable 64-bit amd64
|
|
135 |
# builds on i386 machines.
|
|
136 |
|
|
137 |
MACH64_1= $(MACH:sparc=sparcv9)
|
|
138 |
MACH64= $(MACH64_1:i386=amd64)
|
|
139 |
|
|
140 |
MACH32_1= $(MACH:sparc=sparcv7)
|
|
141 |
MACH32= $(MACH32_1:i386=i86)
|
|
142 |
|
|
143 |
sparc_BUILD64=
|
|
144 |
i386_BUILD64=
|
|
145 |
BUILD64= $($(MACH)_BUILD64)
|
|
146 |
|
|
147 |
#
|
|
148 |
# C compiler mode. Future compilers may change the default on us,
|
|
149 |
# so force extended ANSI mode globally. Lower level makefiles can
|
|
150 |
# override this by setting CCMODE.
|
|
151 |
#
|
|
152 |
CCMODE= -Xa
|
|
153 |
CCMODE64= -Xa
|
|
154 |
|
|
155 |
#
|
|
156 |
# C compiler verbose mode. This is so we can enable it globally,
|
|
157 |
# but turn it off in the lower level makefiles of things we cannot
|
|
158 |
# (or aren't going to) fix.
|
|
159 |
#
|
|
160 |
CCVERBOSE= -v
|
|
161 |
|
|
162 |
# set this to the secret flag "-Wc,-Qiselect-v9abiwarn=1" to get warnings
|
|
163 |
# from the compiler about places the -xarch=v9 may differ from -xarch=v9c.
|
|
164 |
V9ABIWARN=
|
|
165 |
|
|
166 |
# set this to the secret flag "-Wc,-Qiselect-regsym=0" to disable register
|
|
167 |
# symbols (used to detect conflicts between objects that use global registers)
|
|
168 |
# we disable this now for safety, and because genunix doesn't link with
|
|
169 |
# this feature (the v9 default) enabled.
|
|
170 |
#
|
|
171 |
# REGSYM is separate since the C++ driver syntax is different.
|
|
172 |
CCREGSYM= -Wc,-Qiselect-regsym=0
|
|
173 |
CCCREGSYM= -Qoption cg -Qiselect-regsym=0
|
|
174 |
|
|
175 |
#
|
|
176 |
# generate 32-bit addresses in the v9 kernel. Saves memory.
|
|
177 |
CCABS32= -Wc,-xcode=abs32
|
|
178 |
|
|
179 |
# One optimization the compiler might perform is to turn this:
|
|
180 |
# #pragma weak foo
|
|
181 |
# extern int foo;
|
|
182 |
# if (&foo)
|
|
183 |
# foo = 5;
|
|
184 |
# into
|
|
185 |
# foo = 5;
|
|
186 |
# Since we do some of this (foo might be referenced in common kernel code
|
|
187 |
# but provided only for some cpu modules or platforms), we disable this
|
|
188 |
# optimization.
|
|
189 |
#
|
|
190 |
sparc_CCUNBOUND = -Wd,-xsafe=unboundsym
|
|
191 |
i386_CCUNBOUND =
|
|
192 |
CCUNBOUND = $($(MACH)_CCUNBOUND)
|
|
193 |
|
|
194 |
#
|
|
195 |
# compiler '-xarch' flag. This is here to centralize it and make it
|
|
196 |
# overridable for testing.
|
|
197 |
sparc_XARCH= -xarch=v8
|
|
198 |
sparcv9_XARCH= -xarch=v9
|
|
199 |
i386_XARCH=
|
|
200 |
amd64_XARCH= -xarch=amd64 -Ui386 -U__i386
|
|
201 |
|
|
202 |
# assembler '-xarch' flag. Different from compiler '-xarch' flag.
|
|
203 |
sparc_AS_XARCH= -xarch=v8
|
|
204 |
sparcv9_AS_XARCH= -xarch=v9
|
|
205 |
i386_AS_XARCH=
|
|
206 |
amd64_AS_XARCH= -xarch=amd64 -P -Ui386 -U__i386
|
|
207 |
|
|
208 |
#
|
|
209 |
# These flags define what we need to be 'standalone' i.e. -not- part
|
|
210 |
# of the rather more cosy userland environment. This basically means
|
|
211 |
# the kernel.
|
|
212 |
#
|
|
213 |
# XX64 future versions of gcc will make -mcmodel=kernel imply -mno-red-zone
|
|
214 |
#
|
|
215 |
sparc_STAND_FLAGS= -_gcc=-ffreestanding
|
|
216 |
sparcv9_STAND_FLAGS= -_gcc=-ffreestanding
|
|
217 |
i386_STAND_FLAGS= -_gcc=-ffreestanding
|
|
218 |
amd64_STAND_FLAGS= -Wu,-xmodel=kernel
|
|
219 |
|
|
220 |
SAVEARGS= -Wu,-save_args
|
|
221 |
amd64_STAND_FLAGS += $(SAVEARGS)
|
|
222 |
|
|
223 |
STAND_FLAGS_32 = $($(MACH)_STAND_FLAGS)
|
|
224 |
STAND_FLAGS_64 = $($(MACH64)_STAND_FLAGS)
|
|
225 |
|
|
226 |
#
|
|
227 |
# disable the incremental linker
|
|
228 |
ILDOFF= -xildoff
|
|
229 |
#
|
|
230 |
XDEPEND= -xdepend
|
|
231 |
XFFLAG= -xF
|
|
232 |
XESS= -xs
|
|
233 |
XSTRCONST= -xstrconst
|
|
234 |
|
|
235 |
#
|
|
236 |
# turn warnings into errors (C)
|
|
237 |
CERRWARN = -errtags=yes -errwarn=%all
|
|
238 |
CERRWARN += -erroff=E_EMPTY_TRANSLATION_UNIT
|
|
239 |
CERRWARN += -erroff=E_STATEMENT_NOT_REACHED
|
|
240 |
|
|
241 |
#
|
|
242 |
# turn warnings into errors (C++)
|
|
243 |
CCERRWARN= -xwe
|
|
244 |
|
|
245 |
# C99 mode
|
|
246 |
C99_ENABLE= -xc99=%all
|
|
247 |
C99_DISABLE= -xc99=%none
|
|
248 |
C99MODE= $(C99_DISABLE)
|
|
249 |
C99LMODE= $(C99MODE:-xc99%=-Xc99%)
|
|
250 |
|
|
251 |
# In most places, assignments to these macros should be appended with +=
|
|
252 |
# (CPPFLAGS.master allows values to be prepended to CPPFLAGS).
|
|
253 |
sparc_CFLAGS= $(sparc_XARCH)
|
|
254 |
sparcv9_CFLAGS= $(sparcv9_XARCH) -dalign $(CCVERBOSE) $(V9ABIWARN) $(CCREGSYM)
|
|
255 |
i386_CFLAGS= $(i386_XARCH)
|
|
256 |
amd64_CFLAGS= $(amd64_XARCH)
|
|
257 |
|
|
258 |
sparc_ASFLAGS= $(sparc_AS_XARCH)
|
|
259 |
sparcv9_ASFLAGS=$(sparcv9_AS_XARCH)
|
|
260 |
i386_ASFLAGS= $(i386_AS_XARCH)
|
|
261 |
amd64_ASFLAGS= $(amd64_AS_XARCH)
|
|
262 |
|
|
263 |
#
|
|
264 |
sparc_COPTFLAG= -xO3
|
|
265 |
sparcv9_COPTFLAG= -xO3
|
|
266 |
i386_COPTFLAG= -xO3
|
|
267 |
amd64_COPTFLAG= -xO3
|
|
268 |
|
|
269 |
COPTFLAG= $($(MACH)_COPTFLAG)
|
|
270 |
COPTFLAG64= $($(MACH64)_COPTFLAG)
|
|
271 |
|
|
272 |
#
|
|
273 |
# tradeoff time for space (smaller is better)
|
|
274 |
#
|
|
275 |
sparc_SPACEFLAG = -xspace -W0,-Lt -W2,-Rcond_elim
|
|
276 |
sparcv9_SPACEFLAG = -xspace -W0,-Lt -W2,-Rcond_elim
|
|
277 |
i386_SPACEFLAG = -xspace
|
|
278 |
amd64_SPACEFLAG =
|
|
279 |
|
|
280 |
SPACEFLAG = $($(MACH)_SPACEFLAG)
|
|
281 |
SPACEFLAG64 = $($(MACH64)_SPACEFLAG)
|
|
282 |
|
|
283 |
sparc_XREGSFLAG = -xregs=no%appl
|
|
284 |
sparcv9_XREGSFLAG = -xregs=no%appl
|
|
285 |
i386_XREGSFLAG =
|
|
286 |
amd64_XREGSFLAG =
|
|
287 |
|
|
288 |
XREGSFLAG = $($(MACH)_XREGSFLAG)
|
|
289 |
XREGSFLAG64 = $($(MACH64)_XREGSFLAG)
|
|
290 |
|
|
291 |
CFLAGS= $(COPTFLAG) $($(MACH)_CFLAGS) $(SPACEFLAG) $(CCMODE) \
|
|
292 |
$(ILDOFF) $(CERRWARN) $(C99MODE) $(CCUNBOUND)
|
|
293 |
CFLAGS64= $(COPTFLAG64) $($(MACH64)_CFLAGS) $(SPACEFLAG64) $(CCMODE64) \
|
|
294 |
$(ILDOFF) $(CERRWARN) $(C99MODE) $(CCUNBOUND)
|
|
295 |
NATIVE_CFLAGS= $(COPTFLAG) $($(NATIVE_MACH)_CFLAGS) $(CCMODE) \
|
|
296 |
$(ILDOFF) $(CERRWARN) $(C99MODE) $($(NATIVE_MACH)_CCUNBOUND)
|
|
297 |
|
|
298 |
DTEXTDOM=-DTEXT_DOMAIN=\"$(TEXT_DOMAIN)\" # For messaging.
|
|
299 |
DTS_ERRNO=-D_TS_ERRNO
|
|
300 |
CPPFLAGS.master=$(DTEXTDOM) $(DTS_ERRNO) \
|
|
301 |
$(ENVCPPFLAGS1) $(ENVCPPFLAGS2) $(ENVCPPFLAGS3) $(ENVCPPFLAGS4)
|
|
302 |
CPPFLAGS= $(CPPFLAGS.master)
|
|
303 |
AS_CPPFLAGS= $(CPPFLAGS.master)
|
|
304 |
JAVAFLAGS= -deprecation
|
|
305 |
#
|
|
306 |
# This is overwritten by local Makefile when PROG is a list.
|
|
307 |
#
|
|
308 |
POFILE= $(PROG).po
|
|
309 |
|
|
310 |
sparc_CCFLAGS= -cg92 -compat=4 \
|
|
311 |
-Qoption ccfe -messages=no%anachronism \
|
|
312 |
$(CCERRWARN)
|
|
313 |
sparcv9_CCFLAGS= $(sparcv9_XARCH) -dalign -compat=5 \
|
|
314 |
-Qoption ccfe -messages=no%anachronism \
|
|
315 |
-Qoption ccfe -features=no%conststrings \
|
|
316 |
$(CCCREGSYM) \
|
|
317 |
$(CCERRWARN)
|
|
318 |
i386_CCFLAGS= -compat=4 \
|
|
319 |
-Qoption ccfe -messages=no%anachronism \
|
|
320 |
-Qoption ccfe -features=no%conststrings \
|
|
321 |
$(CCERRWARN)
|
|
322 |
amd64_CCFLAGS= $(amd64_XARCH) -compat=5 \
|
|
323 |
-Qoption ccfe -messages=no%anachronism \
|
|
324 |
-Qoption ccfe -features=no%conststrings \
|
|
325 |
$(CCERRWARN)
|
|
326 |
|
|
327 |
sparc_CCOPTFLAG= -O
|
|
328 |
sparcv9_CCOPTFLAG= -O
|
|
329 |
i386_CCOPTFLAG= -O
|
|
330 |
amd64_CCOPTFLAG= -O
|
|
331 |
|
|
332 |
CCOPTFLAG= $($(MACH)_CCOPTFLAG)
|
|
333 |
CCOPTFLAG64= $($(MACH64)_CCOPTFLAG)
|
|
334 |
CCFLAGS= $(CCOPTFLAG) $($(MACH)_CCFLAGS)
|
|
335 |
CCFLAGS64= $(CCOPTFLAG64) $($(MACH64)_CCFLAGS)
|
|
336 |
|
|
337 |
# For some future builds, NATIVE_MACH and MACH might be different.
|
|
338 |
# Therefore, NATIVE_MACH needs to be redefined in the
|
|
339 |
# environment as `uname -p` to override this macro.
|
|
340 |
#
|
|
341 |
# For now at least, we cross-compile amd64 on i386 machines.
|
|
342 |
NATIVE_MACH= $(MACH:amd64=i386)
|
|
343 |
|
|
344 |
# Define native compilation macros
|
|
345 |
#
|
|
346 |
|
|
347 |
# Specify platform compiler versions for languages
|
|
348 |
# that we use (currently only c and c++).
|
|
349 |
#
|
|
350 |
sparc_CC= $(SPRO_VROOT)/bin/cc
|
|
351 |
sparc_CCC= $(SPRO_VROOT)/bin/CC
|
|
352 |
sparc_CPP= /usr/ccs/lib/cpp
|
|
353 |
sparc_LD= /usr/ccs/bin/ld
|
|
354 |
sparc_LINT= $(SPRO_VROOT)/bin/lint
|
|
355 |
|
|
356 |
sparcv9_CC= $(SPRO_VROOT)/bin/cc
|
|
357 |
sparcv9_CCC= $(SPRO_VROOT)/bin/CC
|
|
358 |
sparcv9_CPP= /usr/ccs/lib/cpp
|
|
359 |
sparcv9_LD= /usr/ccs/bin/ld
|
|
360 |
sparcv9_LINT= $(SPRO_VROOT)/bin/lint
|
|
361 |
|
|
362 |
# We compile 32-bit objects with cc by default
|
|
363 |
i386_CC= $(SPRO_VROOT)/bin/cc
|
|
364 |
i386_CCC= $(SPRO_VROOT)/bin/CC
|
|
365 |
i386_CPP= /usr/ccs/lib/cpp
|
|
366 |
i386_LD= /usr/ccs/bin/ld
|
|
367 |
i386_LINT= $(SPRO_VROOT)/bin/lint
|
|
368 |
|
|
369 |
# We compile 64-bit objects with cc by default
|
|
370 |
amd64_CC= $(SPRO_VROOT)/bin/cc
|
|
371 |
amd64_CCC= $(SPRO_VROOT)/bin/CC
|
|
372 |
amd64_CPP= /usr/ccs/lib/cpp
|
|
373 |
amd64_LD= /usr/ccs/bin/ld
|
|
374 |
amd64_LINT= $(SPRO_VROOT)/bin/lint
|
|
375 |
|
|
376 |
NATIVECC= $($(NATIVE_MACH)_CC)
|
|
377 |
NATIVECCC= $($(NATIVE_MACH)_CCC)
|
|
378 |
NATIVECPP= $($(NATIVE_MACH)_CPP)
|
|
379 |
NATIVELD= $($(NATIVE_MACH)_LD)
|
|
380 |
NATIVELINT= $($(NATIVE_MACH)_LINT)
|
|
381 |
|
|
382 |
#
|
|
383 |
# Makefile.master.64 overrides these settings
|
|
384 |
#
|
|
385 |
CC= $(NATIVECC)
|
|
386 |
CCC= $(NATIVECCC)
|
|
387 |
CPP= $(NATIVECPP)
|
|
388 |
LD= $(NATIVELD)
|
|
389 |
LINT= $(NATIVELINT)
|
|
390 |
|
|
391 |
#
|
|
392 |
# Optimization CFLAG
|
|
393 |
#
|
|
394 |
|
|
395 |
CFLAG_OPT = -D_REENTRANT
|
|
396 |
|
|
397 |
CFLAG_OPT += $(SPACEFLAG) $(C99MODE) $(ILDOFF) $(CCUNBOUND)
|
|
398 |
|
|
399 |
CFLAG_OPT_64:sh=if [ "`isainfo -k`" = "sparcv9" ]; then \
|
|
400 |
echo "-xarch=v9 -dalign -D`/usr/bin/uname -p`" ;\
|
|
401 |
elif [ "`isainfo -k`" = "amd64" ]; then \
|
|
402 |
echo "-xarch=amd64" ;\
|
|
403 |
else \
|
|
404 |
echo ""; \
|
|
405 |
fi
|
|
406 |
|
|
407 |
CFLAG_OPT_64 += $(CFLAG_OPT)
|
|
408 |
|
|
409 |
|