xref: /illumos-gate/usr/src/cmd/sgs/Makefile (revision dcdeca0a948b9d3139743db085d193c9db8ff2a3)
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# Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved.
23# Copyright 2016 RackTop Systems.
24# Copyright 2017 Joyent, Inc.
25# Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
26#
27
28include		$(SRC)/cmd/Makefile.cmd
29
30# Note: Why SUBDIRS-common isn't sorted alphabetically
31#
32# The items under SGS are not independent of each other.
33# They must be built in an order that ensures that
34# all dependencies of an item have been built before the
35# item itself.
36#
37SUBDIRS-common= libconv		\
38		.WAIT		\
39		libdl		\
40		libelf		\
41		liblddbg	\
42		.WAIT		\
43		libld		\
44		libldmake	\
45		libldstab	\
46		librtld		\
47		libcrle		\
48		.WAIT		\
49		0@0		\
50		ld		\
51		ldd		\
52		lddstub		\
53		rtld		\
54		link_audit	\
55		.WAIT		\
56		librtld_db	\
57		ldprof		\
58		pvs		\
59		crle		\
60		ar		\
61		dump		\
62		elfdump		\
63		elfedit		\
64		elfwrap		\
65		error		\
66		gprof		\
67		lari		\
68		lex		\
69		lorder		\
70		m4		\
71		mcs		\
72		moe		\
73		nm		\
74		prof		\
75		ranlib		\
76		size		\
77		symorder	\
78		tsort		\
79		unifdef		\
80		yacc
81
82SUBDIRS-i386=
83SUBDIRS-sparc=	rtld.4.x
84
85SUBDIRS=	$(SUBDIRS-common) $(SUBDIRS-$(MACH))
86
87# Messaging support
88#
89POSUBDIRS=	m4		nm	tsort		yacc
90POFILE=		sgs.po
91POFILES=	$(POSUBDIRS:%=%/%.po)
92
93MSGSUBDIRS=	ld		ldd		libld		liblddbg \
94		libldstab	librtld		rtld		libelf \
95		ldprof		libcrle		pvs		elfdump	\
96		elfedit		crle		moe		lari \
97		librtld_db	elfwrap		ar
98
99MSGDIR=		messages
100
101
102all :=		TARGET= all
103install :=	TARGET= install
104clean :=	TARGET= clean
105clobber :=	TARGET= clobber
106delete :=	TARGET= delete
107lint :=		TARGET= lint
108_msg :=		TARGET= catalog
109_msg_gettext :=	TARGET= catalog
110_msg_sgsmsg :=	TARGET= catalog
111chkmsg :=	TARGET= chkmsg
112
113
114.KEEP_STATE:
115
116.PARALLEL:	$(SUBDIRS)
117
118all install:	native-add .WAIT $(SUBDIRS)
119
120include		$(SRC)/cmd/Makefile.targ
121
122# Messaging support
123#
124_msg: _msg_gettext _msg_sgsmsg
125
126_msg_gettext: $(MSGDOMAIN)/$(POFILE)
127
128# $(MACH)/sgsmsg must be built before we can descend into $(MSGDIR)
129_msg_sgsmsg: native-add .WAIT $(MSGDIR)
130
131$(MSGDOMAIN)/$(POFILE): \
132		$(MSGDOMAIN) $(POFILE)
133
134$(POFILE):	$(POSUBDIRS)
135		$(RM) $(POFILE)
136		cat $(POFILES) > $(POFILE)
137
138$(MSGDIR):	$(MSGSUBDIRS) FRC
139		@ cd $@; pwd; $(MAKE) $(TARGET)
140
141chkmsg:		libconv $(MSGSUBDIRS) FRC
142
143check:		chkmsg
144
145# built from lib/Makefile
146install_lib:	FRC
147		@ cd lex; pwd; $(MAKE) $@
148		@ cd yacc; pwd; $(MAKE) $@
149
150lint:
151
152delete \
153clean clobber:	native-clobber .WAIT $(SUBDIRS) $(MSGDIR)
154
155$(SUBDIRS):	FRC
156		@ cd $@; pwd; $(MAKE) $(TARGET)
157
158
159# Integration of ld and ld.so.1 in some developement cycles requires that both
160# of these modules be built using the new ld.  This `native' target allows us
161# to build a local ld which will then be used to build the delivered version of
162# itself and ld.so.1.  Once this new functionality appears in the standard ld
163# this target can be disabled.
164
165native-add:	FRC
166		@ cd tools/$(MACH); pwd; $(MAKE) native
167		@ cd libconv/$(MACH); pwd; $(MAKE)
168		@ cd libelf/$(MACH); pwd; $(MAKE) native
169		@ cd liblddbg/$(MACH); pwd; $(MAKE) native
170		@ cd libldstab/$(MACH); pwd; $(MAKE) native
171		@ cd libld/$(MACH); pwd; $(MAKE) native
172		@ cd ld/$(MACH); pwd; $(MAKE) native
173
174native-clobber:
175		@ cd tools; pwd; $(MAKE) $(TARGET)
176		$(RM) -r proto/$(MACH)
177
178FRC:
179
180#
181# Cross-reference customization: ignore the directories named by XRPRUNE,
182# and tweak the file globs slightly.
183#
184XRPRUNE=	rtld.4.x packages abi
185XRADD=		*.msg mapfile*
186XRDEL=		Makefile* kobj_*
187
188#
189# Establish a set of directories for xref to search.  As there are duplicates
190# of things like headers, and only one file will be added to the xref database,
191# we want xref to list the source file.
192#
193XRDIRS=		. \
194		../../common/elfcap \
195		../../head \
196		../../uts/common/krtld \
197		../../uts/common/sys \
198		../../uts/sparc/sys \
199		../../uts/sparc/krtld \
200		../../uts/intel/ia32/krtld \
201		../../uts/intel/amd64/krtld
202
203xref:		FRC
204		@ $(RM) cscope.*
205		xref -p -x cscope
206