xref: /illumos-gate/usr/src/lib/libc/Makefile (revision 09e2ab34f6c69b170fe7478e8b011d6bb505e0d9)
17c478bd9Sstevel@tonic-gate#
27c478bd9Sstevel@tonic-gate# CDDL HEADER START
37c478bd9Sstevel@tonic-gate#
47c478bd9Sstevel@tonic-gate# The contents of this file are subject to the terms of the
5f808c858Sraf# Common Development and Distribution License (the "License").
680ab886dSwesolows# You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate#
87c478bd9Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate# See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate# and limitations under the License.
127c478bd9Sstevel@tonic-gate#
137c478bd9Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate#
197c478bd9Sstevel@tonic-gate# CDDL HEADER END
207c478bd9Sstevel@tonic-gate#
217c478bd9Sstevel@tonic-gate#
221e49577aSRod Evans# Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
237c478bd9Sstevel@tonic-gate#
244297a3b0SGarrett D'Amore# Copyright 2010 Nexenta Systems, Inc.  All rights reserved.
254297a3b0SGarrett D'Amore# Use is subject to license terms.
26*09e2ab34SAndy Fiddaman# Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
277c478bd9Sstevel@tonic-gate#
287c478bd9Sstevel@tonic-gate
297c478bd9Sstevel@tonic-gateLIBBASENAME=	libc
307c478bd9Sstevel@tonic-gateLIBRARY=	$(LIBBASENAME:%=%.a)
317c478bd9Sstevel@tonic-gateVERS=		.1
327c478bd9Sstevel@tonic-gate
337c478bd9Sstevel@tonic-gate# Note that we build libc_pic.a for the benefit of building
347c478bd9Sstevel@tonic-gate# ld.so.1, but we do not install it.  Only ld.so.1 needs it
357c478bd9Sstevel@tonic-gate# and it must be built in the same workspace as libc.
367c478bd9Sstevel@tonic-gateLIB_PIC= libc_pic.a
377c478bd9Sstevel@tonic-gate
387c478bd9Sstevel@tonic-gateROOTLIB=	$(ROOT)/usr/lib
397c478bd9Sstevel@tonic-gateROOTFS_LIB=	$(ROOT)/lib
407c478bd9Sstevel@tonic-gateROOTLIB64=	$(ROOTLIB)/$(MACH64)
417c478bd9Sstevel@tonic-gateROOTFS_LIB64=	$(ROOTFS_LIB)/$(MACH64)
427c478bd9Sstevel@tonic-gate
437c478bd9Sstevel@tonic-gateROOTVARIANTDIR=	$(ROOTLIB)/libc
44b1593d50SJason BeloroROOTVARIANTDIR64=	$(ROOTLIB64)/libc
457c478bd9Sstevel@tonic-gate
467c478bd9Sstevel@tonic-gate# include common library definitions
477c478bd9Sstevel@tonic-gateinclude ../Makefile.lib
487c478bd9Sstevel@tonic-gate
497c478bd9Sstevel@tonic-gate#
507c478bd9Sstevel@tonic-gate# on some architectures, we build multiple libc variants
517c478bd9Sstevel@tonic-gate#
527c478bd9Sstevel@tonic-gateVAR1 =		hwcap1
537c478bd9Sstevel@tonic-gateVAR2 =		hwcap2
54843e1988SjohnlevVAR3 =		hwcap3
557c478bd9Sstevel@tonic-gate
56b1593d50SJason BeloroVARBLD_1=	$(MACH:sparc=sparc)
57b1593d50SJason BeloroVARBLD=		$(VARBLD_1:i386=)
58b1593d50SJason Beloro
59b1593d50SJason BeloroVARBLD64_1=	$(MACH:sparc=sparcv9)
60b1593d50SJason BeloroVARBLD64=	$(VARBLD64_1:i386=)
61b1593d50SJason Beloro
627c478bd9Sstevel@tonic-gateVAR1_DYNLIB =	$(LIBRARY:%.a=%_$(VAR1).so$(VERS))
63b1593d50SJason BeloroVAR1_BLDDIR =	$(MACH)_$(VAR1)/$(VARBLD)
647c478bd9Sstevel@tonic-gateVAR2_DYNLIB =	$(LIBRARY:%.a=%_$(VAR2).so$(VERS))
65b1593d50SJason BeloroVAR2_BLDDIR =	$(MACH)_$(VAR2)/$(VARBLD)
66843e1988SjohnlevVAR3_DYNLIB =	$(LIBRARY:%.a=%_$(VAR3).so$(VERS))
67b1593d50SJason BeloroVAR3_BLDDIR =	$(MACH)_$(VAR3)/$(VARBLD)
68b1593d50SJason Beloro
69b1593d50SJason BeloroVAR1_DYNLIB64 =	$(LIBRARY:%.a=%_$(VAR1).so$(VERS))
70b1593d50SJason BeloroVAR1_BLDDIR64 =	$(MACH)_$(VAR1)/$(VARBLD64)
717c478bd9Sstevel@tonic-gate
72843e1988Sjohnlevi386_VARIANTS=	$(VAR1) $(VAR2) $(VAR3)
731e49577aSRod Evanssparc_VARIANTS=
741e49577aSRod Evanssparcv9_VARIANTS=
751e49577aSRod Evans
761e49577aSRod Evansi386_COMP=
771e49577aSRod Evanssparc_COMP=	capabilities
781e49577aSRod Evans
791e49577aSRod EvansMACH_COMP=	$($(MACH)_COMP)
807c478bd9Sstevel@tonic-gate
81a7123019Skucharski386_ETC=	$(MACH)/etc
82a7123019Skucharsksparc_ETC=
83a7123019Skucharsk
847c478bd9Sstevel@tonic-gateVARIANTS=	$($(MACH)_VARIANTS)
85b1593d50SJason BeloroVARIANT_SUBDIRS	= $(VARIANTS:%=$(MACH)_%/$(VARBLD))
86b1593d50SJason Beloro
87b1593d50SJason BeloroVARIANTS64=	$($(MACH64)_VARIANTS)
88b1593d50SJason BeloroVARIANT_SUBDIRS64	= $(VARIANTS64:%=$(MACH)_%/$(VARBLD64))
897c478bd9Sstevel@tonic-gate
901e49577aSRod EvansSUBDIRS=	$(MACH_CAP) $(MACH) $(MACH_ETC) $(VARIANT_SUBDIRS)
91c242ec1bSRoger A. Faulkner$(BUILD64)SUBDIRS += $(MACH64) $(VARIANT_SUBDIRS64)
927c478bd9Sstevel@tonic-gate
93*09e2ab34SAndy FiddamanLIBS =		$(DYNLIB)
947c478bd9Sstevel@tonic-gate
95*09e2ab34SAndy FiddamanROOTLIBS64=	$(ROOTLIBDIR64)/$(DYNLIB)
96*09e2ab34SAndy FiddamanMACHLIBS64=	$(MACH64)/$(DYNLIB)
97b1593d50SJason BeloroVARIANTLIBS=	$(VARIANTS:%=$(MACH)_%/$(VARBLD)/$(LIBBASENAME)_%.so.1)
98b1593d50SJason BeloroVARIANTLIBS64=	$(VARIANTS64:%=$(MACH)_%/$(VARBLD64)/$(LIBBASENAME)_%.so.1)
997c478bd9Sstevel@tonic-gateROOTVARIANTLIBS= $(VARIANTS:%=$(ROOTVARIANTDIR)/$(LIBBASENAME)_%.so.1)
100b1593d50SJason BeloroROOTVARIANTLIBS64= $(VARIANTS64:%=$(ROOTVARIANTDIR64)/$(LIBBASENAME)_%.so.1)
1017c478bd9Sstevel@tonic-gate
1027c478bd9Sstevel@tonic-gate# definitions for install_h target
103*09e2ab34SAndy FiddamanBASEHDRS=	getxby_door.h
1047c478bd9Sstevel@tonic-gateCHECKHDRS=	$(BASEHDRS:%.h=port/gen/%.check)
1057c478bd9Sstevel@tonic-gateHDRS=		$(BASEHDRS)
1067c478bd9Sstevel@tonic-gate
107b6805bf7SGordon RossCLOBBERFILES += THIRDPARTYLICENSE extract-copyright
108b6805bf7SGordon Ross
1097c478bd9Sstevel@tonic-gate# install rules for install_h target
1107c478bd9Sstevel@tonic-gate$(ROOTHDRDIR)/%: port/gen/%
1117c478bd9Sstevel@tonic-gate	$(INS.file)
1127c478bd9Sstevel@tonic-gate
1137c478bd9Sstevel@tonic-gate$(ROOTLIBDIR)/$(DYNLIB)	:=	FILEMODE = 755
1147c478bd9Sstevel@tonic-gate$(ROOTLIBDIR64)/$(DYNLIB) :=	FILEMODE = 755
1157c478bd9Sstevel@tonic-gate$(ROOTFS_LIBDIR)/$(DYNLIB)	:=	FILEMODE = 755
1167c478bd9Sstevel@tonic-gate$(ROOTFS_LIBDIR64)/$(DYNLIB)	:=	FILEMODE = 755
1177c478bd9Sstevel@tonic-gate
1187c478bd9Sstevel@tonic-gate$(ROOTVARIANTDIR)			:= FILEMODE= 755
1197c478bd9Sstevel@tonic-gate$(ROOTVARIANTDIR)/$(VAR1_DYNLIB)	:= FILEMODE= 755
1207c478bd9Sstevel@tonic-gate$(ROOTVARIANTDIR)/$(VAR2_DYNLIB)	:= FILEMODE= 755
121843e1988Sjohnlev$(ROOTVARIANTDIR)/$(VAR3_DYNLIB)	:= FILEMODE= 755
1227c478bd9Sstevel@tonic-gate
123b1593d50SJason Beloro$(ROOTVARIANTDIR64)			:= FILEMODE= 755
124b1593d50SJason Beloro$(ROOTVARIANTDIR64)/$(VAR1_DYNLIB64)	:= FILEMODE= 755
125b1593d50SJason Beloro
1267c478bd9Sstevel@tonic-gate.KEEP_STATE:
1277c478bd9Sstevel@tonic-gate
1286a3e8e86SRichard Loweall:	all_h lib32 $(BUILD64) .WAIT lib64 .WAIT etc THIRDPARTYLICENSE
1296b5e5868SGarrett D'Amore
1306b5e5868SGarrett D'AmoreTHIRDPARTYLICENSE: extract-copyright
1316b5e5868SGarrett D'Amore	$(RM) $@
1326b5e5868SGarrett D'Amore	./extract-copyright . > $@
133a7123019Skucharsk
134a7123019Skucharsketc:	$($(MACH)_ETC)
1357c478bd9Sstevel@tonic-gate
1361e49577aSRod Evanslib32:	$(MACH_COMP) $(MACHLIBS) $(MACH)/$(LIB_PIC) $(VARIANTLIBS)
13759f081edSraf	@if $(ELFDUMP) -r $(MACH)/$(DYNLIB) | $(GREP) -w environ ; then \
13859f081edSraf		$(ECHO) "Error: Invalid reference to environ" ; \
13959f081edSraf		$(ECHO) "Error: See comments in port/gen/env_data.c" ; \
14059f081edSraf		exit 1; \
14159f081edSraf	fi
1427c478bd9Sstevel@tonic-gate
1431e49577aSRod Evanslib64:	$(MACH_COMP) $(MACHLIBS64) $(MACH64)/$(LIB_PIC) $(VARIANTLIBS64)
14459f081edSraf	@if $(ELFDUMP) -r $(MACH64)/$(DYNLIB) | $(GREP) -w environ ; then \
14559f081edSraf		$(ECHO) "Error: Invalid reference to environ" ; \
14659f081edSraf		$(ECHO) "Error: See comments in port/gen/env_data.c" ; \
14759f081edSraf		exit 1; \
14859f081edSraf	fi
1497c478bd9Sstevel@tonic-gate
1506c1891eaSGarrett D'Amore$(MACH)/assym.h $(MACH64)/assym.h:
1516c1891eaSGarrett D'Amore	@cd $(@D); $(MAKE) assym.h
1520b54b18cSChristopher Kiick
1537c478bd9Sstevel@tonic-gate$(VARIANTLIBS): FRC
1547c478bd9Sstevel@tonic-gate	@cd $(@D); pwd; VERSION='$(VERSION)' $(MAKE) $(@F)
1557c478bd9Sstevel@tonic-gate
156b1593d50SJason Beloro$(VARIANTLIBS64): FRC
157b1593d50SJason Beloro	@cd $(@D); pwd; VERSION='$(VERSION)' $(MAKE) $(@F)
158b1593d50SJason Beloro
159a7123019Skucharsk$($(MACH)_ETC): FRC
160a7123019Skucharsk	@cd $(@); pwd; $(MAKE) $(TARGET)
161a7123019Skucharsk
1621e49577aSRod Evans$($(MACH)_COMP): FRC
1631e49577aSRod Evans	@cd $(@); pwd; $(MAKE) $(TARGET)
1641e49577aSRod Evans
1657c478bd9Sstevel@tonic-gateinstall:	all			\
166a7123019Skucharsk		etc			\
1677c478bd9Sstevel@tonic-gate		inslib32		\
1687c478bd9Sstevel@tonic-gate		$(BUILD64) inslib64
1697c478bd9Sstevel@tonic-gate
170*09e2ab34SAndy Fiddamaninslib32:	$(ROOTFS_LIBS) $(ROOTFS_LINKS) $(ROOTVARIANTLIBS)
1717c478bd9Sstevel@tonic-gate
172*09e2ab34SAndy Fiddamaninslib64:	$(ROOTFS_LIBS64) $(ROOTFS_LINKS64) $(ROOTVARIANTLIBS64)
1737c478bd9Sstevel@tonic-gate
174ac823a0fSJon Tibbleinstall_h: all_h $(ROOTHDRS)
175ac823a0fSJon Tibble
176ac823a0fSJon Tibbleall_h:	$(MACH)/assym.h $(MACH64)/assym.h
1777c478bd9Sstevel@tonic-gate
1787c478bd9Sstevel@tonic-gatecheck:	$(CHECKHDRS)
1797c478bd9Sstevel@tonic-gate
1807c478bd9Sstevel@tonic-gate$(ROOTFS_LIB)/%: $(MACH)/%
1817c478bd9Sstevel@tonic-gate	$(INS.file)
1827c478bd9Sstevel@tonic-gate$(ROOTFS_LIBDIR)/$(LIBLINKS): $(ROOTFS_LIBDIR)/$(LIBLINKS)$(VERS)
1837c478bd9Sstevel@tonic-gate	$(INS.liblink)
1847c478bd9Sstevel@tonic-gate$(ROOTFS_LIB64)/%: $(MACH64)/%
1857c478bd9Sstevel@tonic-gate	$(INS.file)
1867c478bd9Sstevel@tonic-gate$(ROOTFS_LIBDIR64)/$(LIBLINKS): $(ROOTFS_LIBDIR64)/$(LIBLINKS)$(VERS)
1877c478bd9Sstevel@tonic-gate	$(INS.liblink)
1887c478bd9Sstevel@tonic-gate
1897c478bd9Sstevel@tonic-gate$(ROOTVARIANTDIR): $(ROOTLIB)
1907c478bd9Sstevel@tonic-gate	$(INS.dir)
1917c478bd9Sstevel@tonic-gate$(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR1_BLDDIR)/%
1927c478bd9Sstevel@tonic-gate	$(INS.file)
1937c478bd9Sstevel@tonic-gate$(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR2_BLDDIR)/%
1947c478bd9Sstevel@tonic-gate	$(INS.file)
195843e1988Sjohnlev$(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR3_BLDDIR)/%
196843e1988Sjohnlev	$(INS.file)
1977c478bd9Sstevel@tonic-gate
198b1593d50SJason Beloro$(ROOTVARIANTDIR64): $(ROOTLIB64)
199b1593d50SJason Beloro	$(INS.dir)
200b1593d50SJason Beloro$(ROOTVARIANTDIR64)/%: $(ROOTVARIANTDIR64) $(VAR1_BLDDIR64)/%
201b1593d50SJason Beloro	$(INS.file)
202b1593d50SJason Beloro
2037c478bd9Sstevel@tonic-gate$(MACH)/$(LIB_PIC): FRC
2047c478bd9Sstevel@tonic-gate	@cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
2057c478bd9Sstevel@tonic-gate$(MACH64)/$(LIB_PIC): FRC
2067c478bd9Sstevel@tonic-gate	@cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
2077c478bd9Sstevel@tonic-gate
2087c478bd9Sstevel@tonic-gateall	:=	TARGET= all
2097c478bd9Sstevel@tonic-gateinstall	:=	TARGET= install
2107c478bd9Sstevel@tonic-gateclean	:=	TARGET= clean
2117c478bd9Sstevel@tonic-gateclobber	:=	TARGET= clobber
2127c478bd9Sstevel@tonic-gatelint	:=	TARGET= lint
2137c478bd9Sstevel@tonic-gate
2147c478bd9Sstevel@tonic-gate.PARALLEL:	$(SUBDIRS)
2157c478bd9Sstevel@tonic-gate
216f808c858Sraf$(SUBDIRS): FRC
2177c478bd9Sstevel@tonic-gate	@cd $@; pwd; VERSION='$(VERSION)' $(MAKE) $(TARGET)
2187c478bd9Sstevel@tonic-gate
219b6805bf7SGordon Rossclean: $(SUBDIRS)
220b6805bf7SGordon Rossclobber: $(SUBDIRS) etc clobber_local
221b6805bf7SGordon Rossclobber_local:
222b6805bf7SGordon Ross	$(RM) $(CLOBBERFILES)
2237c478bd9Sstevel@tonic-gate
224*09e2ab34SAndy Fiddamanlint:
2257c478bd9Sstevel@tonic-gate
2267c478bd9Sstevel@tonic-gate_msg:	$(MSGDOMAIN) catalog
2277c478bd9Sstevel@tonic-gate
2287c478bd9Sstevel@tonic-gatecatalog:
2297c478bd9Sstevel@tonic-gate	sh ./makelibccatalog.sh $(MSGDOMAIN)
2307c478bd9Sstevel@tonic-gate
2317c478bd9Sstevel@tonic-gate$(MSGDOMAIN):
2327c478bd9Sstevel@tonic-gate	$(INS.dir)
2337c478bd9Sstevel@tonic-gate
2347c478bd9Sstevel@tonic-gatecscope.out tags: FRC
2357c478bd9Sstevel@tonic-gate	$(XREF) -x $@
2367c478bd9Sstevel@tonic-gate
2377c478bd9Sstevel@tonic-gateFRC:
2387c478bd9Sstevel@tonic-gate# include MACH-specific library targets
2397c478bd9Sstevel@tonic-gateinclude ../Makefile.mach
240