xref: /illumos-gate/usr/src/cmd/sgs/Makefile.com (revision fa79a855d371dfcb29461ad6ebaf48a458bf9f14)
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 usr/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 usr/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#
23# Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
24# Copyright 2016 RackTop Systems.
25#
26
27.KEEP_STATE:
28.KEEP_STATE_FILE: .make.state.$(MACH)
29
30
31include		$(SRC)/cmd/sgs/Makefile.var
32
33SRCBASE =	../../../..
34
35i386_ARCH =	intel
36sparc_ARCH =	sparc
37
38ARCH =		$($(MACH)_ARCH)
39
40# Establish any global flags.
41
42# Setting DEBUG = -DDEBUG (or "make DEBUG=-DDEBUG ...") enables ASSERT()
43# checking.  This is automatically enabled for DEBUG builds, not for non-debug
44# builds.  Unset the global CSTD_GNU89 flag to insure we uncover all compiler
45# warnings/errors.
46DEBUG =
47$(NOT_RELEASE_BUILD)DEBUG = -DDEBUG
48
49CSTD_GNU89 =	$(CSTD_GNU99)
50
51CFLAGS +=	$(CCVERBOSE) $(DEBUG) $(XFFLAG)
52CFLAGS64 +=	$(CCVERBOSE) $(DEBUG) $(XFFLAG)
53
54CERRWARN +=	-_gcc=-Wno-type-limits
55CERRWARN +=	-_gcc=-Wno-parentheses
56CERRWARN +=	-_gcc=-Wno-unused-value
57
58#
59# Location of the shared elfcap code
60#
61ELFCAP=		$(SRC)/common/elfcap
62
63# Reassign CPPFLAGS so that local search paths are used before any parent
64# $ROOT paths.
65CPPFLAGS =	-I. -I../common -I../../include -I../../include/$(MACH) \
66		$(CPPFLAGS.master) -I$(ELFCAP)
67
68# PICS64 is unique to our environment
69$(PICS64) :=	sparc_CFLAGS += -xregs=no%appl $(C_PICFLAGS)
70$(PICS64) :=	sparcv9_CFLAGS += -xregs=no%appl $(C_PICFLAGS)
71$(PICS64) :=	CPPFLAGS += -DPIC -D_REENTRANT
72
73LDFLAGS +=	$(ZIGNORE)
74DYNFLAGS +=	$(ZIGNORE)
75
76# Establish the local tools, proto and package area.
77
78SGSHOME =	$(SRC)/cmd/sgs
79SGSPROTO =	$(SGSHOME)/proto/$(MACH)
80SGSTOOLS =	$(SGSHOME)/tools
81SGSMSGID =	$(SGSHOME)/messages
82SGSMSGDIR =	$(SGSHOME)/messages/$(MACH)
83SGSONLD =	$(ROOT)/opt/SUNWonld
84SGSRPATH =	/usr/lib
85SGSRPATH64 =	$(SGSRPATH)/$(MACH64)
86
87# Mimic the structure of an installed system.
88
89SGSLIBDIR =	$(SGSPROTO)/lib
90SGSPREFIX =	$(SGSPROTO)/usr
91SGSBINDIR =	$(SGSPREFIX)/bin
92
93#
94# Macros to be used to include link against libconv and include vernote.o
95#
96VERSREF =	-ulink_ver_string
97
98LDLIBDIR =	-L$(SGSHOME)/libld/$(MACH)
99LDLIBDIR64 =	-L$(SGSHOME)/libld/$(MACH64)
100
101CONVLIBDIR =	-L$(SGSHOME)/libconv/$(MACH)
102CONVLIBDIR64 =	-L$(SGSHOME)/libconv/$(MACH64)
103
104ELFLIBDIR =	-L$(SGSHOME)/libelf/$(MACH)
105ELFLIBDIR64 =	-L$(SGSHOME)/libelf/$(MACH64)
106
107LDDBGLIBDIR =	-L$(SGSHOME)/liblddbg/$(MACH)
108LDDBGLIBDIR64 =	-L$(SGSHOME)/liblddbg/$(MACH64)
109
110
111# The cmd/Makefile.com and lib/Makefile.com define TEXT_DOMAIN.  We don't need
112# this definition as the sgs utilities obtain their domain via sgsmsg(1l).
113
114DTEXTDOM =
115
116# Define any generic sgsmsg(1l) flags.  The default message generation system
117# is to use gettext(3i), add the -C flag to switch to catgets(3c).
118
119SGSMSG =		$(SGSTOOLS)/$(MACH)/sgsmsg
120SGSMSG_PIGLATIN_NL =	perl $(SGSTOOLS)/common/sgsmsg_piglatin_nl.pl
121CHKMSG =		$(SGSTOOLS)/chkmsg.sh
122
123SGSMSGVFLAG =
124SGSMSGFLAGS =	$(SGSMSGVFLAG) -i $(SGSMSGID)/sgs.ident
125CHKMSGFLAGS =	$(SGSMSGTARG:%=-m %) $(SGSMSGCHK:%=-m %)
126
127# Native targets should use the minimum of ld(1) flags to allow building on
128# previous releases.  We use mapfiles to scope, but don't bother versioning.
129
130native :=	DYNFLAGS = -R$(SGSLIBDIR) -L$(SGSLIBDIR) $(ZNOVERSION) \
131			$(HSONAME)
132
133# Comment out the following two lines to have the sgs built from the system
134# link-editor, rather than the local proto link-editor.
135CC_USE_PROTO =	-Yl,$(SGSBINDIR)
136LD_USE_PROTO =	$(SGSBINDIR)/
137
138#
139# lint-related stuff
140#
141LIBNAME32 =	$(LIBNAME:%=%32)
142LIBNAME64 =	$(LIBNAME:%=%64)
143LIBNAMES =	$(LIBNAME32) $(LIBNAME64)
144
145SGSLINTOUT =	lint.out
146LINTOUT1 =	lint.out.1
147LINTOUT32 =	lint.out.32
148LINTOUT64 =	lint.out.64
149LINTOUTS =	$(SGSLINTOUT) $(LINTOUT1) $(LINTOUT32) $(LINTOUT64)
150
151LINTLIBSRC =	$(LINTLIB:%.ln=%)
152LINTLIB32 =	$(LINTLIB:%.ln=%32.ln)
153LINTLIB64 =	$(LINTLIB:%.ln=%64.ln)
154LINTLIBS =	$(LINTLIB32) $(LINTLIB64)
155
156LINTFLAGS =	-m -errtags=yes -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED
157LINTFLAGS64 =	-m -errtags=yes -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED \
158		    $(VAR_LINTFLAGS64)
159
160#
161# When building a lint library, no other lint libraries are verified as
162# dependencies, nor is the stardard C lint library processed.  All dependency
163# verification is carried out through linting the sources themselves.
164#
165$(LINTLIB) :=	LINTFLAGS += -n
166$(LINTLIB) :=	LINTFLAGS64 += -n
167
168$(LINTLIB32) :=	LINTFLAGS += -n
169$(LINTLIB32) :=	LINTFLAGS64 += -n
170$(LINTLIB64) :=	LINTFLAGS += -n
171$(LINTLIB64) :=	LINTFLAGS64 += -n
172
173#
174# These libraries have two resulting lint libraries.  If a dependency is
175# declared using these variables, the substitution for the 32/64 versions at
176# lint time happens automatically (see Makefile.targ).
177#
178LD_LIB =	-lld
179LD_LIB32 =	-lld32
180LD_LIB64 =	-lld64
181
182LDDBG_LIB =	-llddbg
183LDDBG_LIB32 =	-llddbg32
184LDDBG_LIB64 =	-llddbg64
185
186CONV_LIB =	-lconv
187CONV_LIB32 =	-lconv32
188CONV_LIB64 =	-lconv64
189