xref: /illumos-gate/usr/src/lib/libumem/Makefile.com (revision 0f1702c5201310f0529cd5abb77652e5e9b241b6)
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 2008 Sun Microsystems, Inc.  All rights reserved.
23# Use is subject to license terms.
24#
25# ident	"%Z%%M%	%I%	%E% SMI"
26#
27
28#
29# The build process for libumem is sightly different from that used by other
30# libraries, because libumem must be built in two flavors - as a standalone
31# for use by kmdb and as a normal library.  We use $(CURTYPE) to indicate the
32# current flavor being built.
33#
34
35LIBRARY = libumem.a
36STANDLIBRARY = libstandumem.so
37VERS = .1
38
39# By default, we build the shared library.  Construction of the standalone
40# is specifically requested by architecture-specific Makefiles.
41TYPES = library
42CURTYPE = library
43
44# This would be much prettier if a) Makefile.lib didn't reqire both $(SRCS) and
45# $(OBJECTS) to be set or b) make gave us a nice way to do basename in pattern
46# replacement definitions.
47
48# Files specific to the library version of libumem
49OBJECTS_library = \
50	init_lib.o \
51	umem_agent_support.o \
52	umem_fail.o \
53	umem_fork.o \
54	umem_update_thread.o \
55	vmem_mmap.o \
56	vmem_sbrk.o
57
58SRCS_library = $(OBJECTS_library:%.o=../common/%.c)
59
60# Files specific to the standalone version of libumem
61OBJECTS_standalone = \
62	init_stand.o \
63	stub_stand.o \
64	vmem_stand.o
65
66SRCS_standalone = $(OBJECTS_standalone:%.o=../common/%.c)
67
68# Architecture-dependent files common to both versions of libumem
69OBJECTS_common_isadep = \
70	asm_subr.o
71
72SRCS_common_isadep = \
73	$(ISASRCDIR)/asm_subr.s
74
75# Architecture-independent files common to both versions  of libumem
76OBJECTS_common_common = \
77	envvar.o \
78	getpcstack.o \
79	malloc.o \
80	misc.o \
81	vmem_base.o \
82	umem.o \
83	vmem.o
84
85SRCS_common_common = $(OBJECTS_common_common:%.o=../common/%.c)
86
87OBJECTS = \
88	$(OBJECTS_$(CURTYPE)) \
89	$(OBJECTS_common_isadep) \
90	$(OBJECTS_common_common)
91
92include ../../Makefile.lib
93include ../../Makefile.rootfs
94
95SRCS = \
96	$(SRCS_$(CURTYPE)) \
97	$(SRCS_common_isadep) \
98	$(SRCS_common_common)
99
100SRCDIR = ../common
101
102#
103# Used to verify that the standalone doesn't have any unexpected external
104# dependencies.
105#
106LINKTEST_OBJ = objs/linktest_stand.o
107
108CLOBBERFILES_standalone = $(LINKTEST_OBJ)
109CLOBBERFILES += $(CLOBBERFILES_$(CURTYPE))
110
111LIBS_standalone = $(STANDLIBRARY)
112LIBS_library = $(DYNLIB) $(LINTLIB)
113LIBS =	$(LIBS_$(CURTYPE))
114
115MAPFILE_SUPPLEMENTAL_standalone = ../common/stand_mapfile
116MAPFILE_SUPPLEMENTAL = $(MAPFILE_SUPPLEMENTAL_$(CURTYPE))
117
118LDLIBS +=	-lc
119
120LDFLAGS_standalone = $(ZNOVERSION) $(BREDUCE) -M../common/mapfile-vers \
121	-M$(MAPFILE_SUPPLEMENTAL) -dy -r
122LDFLAGS = $(LDFLAGS_$(CURTYPE))
123
124ASFLAGS_standalone = -DUMEM_STANDALONE
125ASFLAGS_library =
126ASFLAGS += -P $(ASFLAGS_$(CURTYPE)) -D_ASM
127
128$(LINTLIB) := SRCS = ../common/$(LINTSRC)
129
130# We want the thread-specific errno in the library, but we don't want it in
131# the standalone.  $(DTS_ERRNO) is designed to add -D_TS_ERRNO to $(CPPFLAGS),
132# in order to enable this feature.  Conveniently, -D_REENTRANT does the same
133# thing.  As such, we null out $(DTS_ERRNO) to ensure that the standalone
134# doesn't get it.
135DTS_ERRNO=
136
137# We need to rename some standard functions so we can easily implement them
138# in consumers.
139STAND_RENAMED_FUNCS= \
140	atomic_add_64 \
141	atomic_add_32_nv \
142	snprintf \
143	vsnprintf
144
145CPPFLAGS_standalone = -DUMEM_STANDALONE $(STAND_RENAMED_FUNCS:%=-D%=umem_%)
146CPPFLAGS_library = -D_REENTRANT
147CPPFLAGS +=	-I../common -I../../common/inc $(CPPFLAGS_$(CURTYPE))
148
149CFLAGS_standalone = $(STAND_FLAGS_32)
150CFLAGS_common =
151CFLAGS += $(CFLAGS_$(CURTYPE)) $(CFLAGS_common)
152
153CFLAGS64_standalone = $(STAND_FLAGS_64)
154CFLAGS64 += $(CCVERBOSE) $(CFLAGS64_$(CURTYPE)) $(CFLAGS64_common)
155
156INSTALL_DEPS_library =		$(ROOTLINKS) $(ROOTLINT) $(ROOTLIBS)
157
158#
159# turn off ptr-cast warnings, since we do them all the time
160#
161LINTFLAGS +=	-erroff=E_BAD_PTR_CAST_ALIGN
162LINTFLAGS64 +=	-erroff=E_BAD_PTR_CAST_ALIGN
163
164DYNFLAGS +=     $(ZINTERPOSE)
165
166.KEEP_STATE:
167