10Sstevel@tonic-gate# 20Sstevel@tonic-gate# CDDL HEADER START 30Sstevel@tonic-gate# 40Sstevel@tonic-gate# The contents of this file are subject to the terms of the 52522Sraf# Common Development and Distribution License (the "License"). 61717Swesolows# You may not use this file except in compliance with the License. 70Sstevel@tonic-gate# 80Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 90Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing. 100Sstevel@tonic-gate# See the License for the specific language governing permissions 110Sstevel@tonic-gate# and limitations under the License. 120Sstevel@tonic-gate# 130Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each 140Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 150Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the 160Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying 170Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner] 180Sstevel@tonic-gate# 190Sstevel@tonic-gate# CDDL HEADER END 200Sstevel@tonic-gate# 210Sstevel@tonic-gate# 2212719SRod.Evans@Sun.COM# Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved. 230Sstevel@tonic-gate# 240Sstevel@tonic-gate# 250Sstevel@tonic-gate 260Sstevel@tonic-gateLIBBASENAME= libc 270Sstevel@tonic-gateLIBRARY= $(LIBBASENAME:%=%.a) 280Sstevel@tonic-gateVERS= .1 290Sstevel@tonic-gate 300Sstevel@tonic-gate# Note that we build libc_pic.a for the benefit of building 310Sstevel@tonic-gate# ld.so.1, but we do not install it. Only ld.so.1 needs it 320Sstevel@tonic-gate# and it must be built in the same workspace as libc. 330Sstevel@tonic-gateLIB_PIC= libc_pic.a 340Sstevel@tonic-gate 350Sstevel@tonic-gateROOTLIB= $(ROOT)/usr/lib 360Sstevel@tonic-gateROOTFS_LIB= $(ROOT)/lib 370Sstevel@tonic-gateROOTLIB64= $(ROOTLIB)/$(MACH64) 380Sstevel@tonic-gateROOTFS_LIB64= $(ROOTFS_LIB)/$(MACH64) 390Sstevel@tonic-gate 400Sstevel@tonic-gateROOTVARIANTDIR= $(ROOTLIB)/libc 419202SJason.Beloro@Sun.COMROOTVARIANTDIR64= $(ROOTLIB64)/libc 420Sstevel@tonic-gate 430Sstevel@tonic-gateROOTFS_LINTDIR= $(ROOTFS_LIB) 440Sstevel@tonic-gateROOTFS_LINTDIR64= $(ROOTFS_LIB64) 450Sstevel@tonic-gateROOTFS_LINTLIB= $(ROOTFS_LINTDIR)/$(LINTLIB) 460Sstevel@tonic-gateROOTFS_LINTLIB64= $(ROOTFS_LINTDIR64)/$(LINTLIB) 470Sstevel@tonic-gate 480Sstevel@tonic-gate# include common library definitions 490Sstevel@tonic-gateinclude ../Makefile.lib 500Sstevel@tonic-gate 510Sstevel@tonic-gate# 520Sstevel@tonic-gate# on some architectures, we build multiple libc variants 530Sstevel@tonic-gate# 540Sstevel@tonic-gateVAR1 = hwcap1 550Sstevel@tonic-gateVAR2 = hwcap2 565084SjohnlevVAR3 = hwcap3 570Sstevel@tonic-gate 589202SJason.Beloro@Sun.COMVARBLD_1= $(MACH:sparc=sparc) 599202SJason.Beloro@Sun.COMVARBLD= $(VARBLD_1:i386=) 609202SJason.Beloro@Sun.COM 619202SJason.Beloro@Sun.COMVARBLD64_1= $(MACH:sparc=sparcv9) 629202SJason.Beloro@Sun.COMVARBLD64= $(VARBLD64_1:i386=) 639202SJason.Beloro@Sun.COM 640Sstevel@tonic-gateVAR1_DYNLIB = $(LIBRARY:%.a=%_$(VAR1).so$(VERS)) 659202SJason.Beloro@Sun.COMVAR1_BLDDIR = $(MACH)_$(VAR1)/$(VARBLD) 660Sstevel@tonic-gateVAR2_DYNLIB = $(LIBRARY:%.a=%_$(VAR2).so$(VERS)) 679202SJason.Beloro@Sun.COMVAR2_BLDDIR = $(MACH)_$(VAR2)/$(VARBLD) 685084SjohnlevVAR3_DYNLIB = $(LIBRARY:%.a=%_$(VAR3).so$(VERS)) 699202SJason.Beloro@Sun.COMVAR3_BLDDIR = $(MACH)_$(VAR3)/$(VARBLD) 709202SJason.Beloro@Sun.COM 719202SJason.Beloro@Sun.COMVAR1_DYNLIB64 = $(LIBRARY:%.a=%_$(VAR1).so$(VERS)) 729202SJason.Beloro@Sun.COMVAR1_BLDDIR64 = $(MACH)_$(VAR1)/$(VARBLD64) 730Sstevel@tonic-gate 745084Sjohnlevi386_VARIANTS= $(VAR1) $(VAR2) $(VAR3) 7512719SRod.Evans@Sun.COMsparc_VARIANTS= 7612719SRod.Evans@Sun.COMsparcv9_VARIANTS= 7712719SRod.Evans@Sun.COM 7812719SRod.Evans@Sun.COMi386_COMP= 7912719SRod.Evans@Sun.COMsparc_COMP= capabilities 8012719SRod.Evans@Sun.COM 8112719SRod.Evans@Sun.COMMACH_COMP= $($(MACH)_COMP) 820Sstevel@tonic-gate 83772Skucharski386_ETC= $(MACH)/etc 84772Skucharsksparc_ETC= 85772Skucharsk 860Sstevel@tonic-gateVARIANTS= $($(MACH)_VARIANTS) 879202SJason.Beloro@Sun.COMVARIANT_SUBDIRS = $(VARIANTS:%=$(MACH)_%/$(VARBLD)) 889202SJason.Beloro@Sun.COM 899202SJason.Beloro@Sun.COMVARIANTS64= $($(MACH64)_VARIANTS) 909202SJason.Beloro@Sun.COMVARIANT_SUBDIRS64 = $(VARIANTS64:%=$(MACH)_%/$(VARBLD64)) 910Sstevel@tonic-gate 9212719SRod.Evans@Sun.COMSUBDIRS= $(MACH_CAP) $(MACH) $(MACH_ETC) $(VARIANT_SUBDIRS) 939264SRoger.Faulkner@Sun.COM$(BUILD64)SUBDIRS += $(MACH64) $(VARIANT_SUBDIRS64) 940Sstevel@tonic-gate 950Sstevel@tonic-gateLIBS = $(DYNLIB) $(LINTLIB) 960Sstevel@tonic-gate 970Sstevel@tonic-gateROOTLIBS64= $(ROOTLIBDIR64)/$(DYNLIB) $(ROOTLIBDIR64)/$(LINTLIB) 980Sstevel@tonic-gateMACHLIBS64= $(MACH64)/$(DYNLIB) $(MACH64)/$(LINTLIB) 999202SJason.Beloro@Sun.COMVARIANTLIBS= $(VARIANTS:%=$(MACH)_%/$(VARBLD)/$(LIBBASENAME)_%.so.1) 1009202SJason.Beloro@Sun.COMVARIANTLIBS64= $(VARIANTS64:%=$(MACH)_%/$(VARBLD64)/$(LIBBASENAME)_%.so.1) 1010Sstevel@tonic-gateROOTVARIANTLIBS= $(VARIANTS:%=$(ROOTVARIANTDIR)/$(LIBBASENAME)_%.so.1) 1029202SJason.Beloro@Sun.COMROOTVARIANTLIBS64= $(VARIANTS64:%=$(ROOTVARIANTDIR64)/$(LIBBASENAME)_%.so.1) 1030Sstevel@tonic-gate 1040Sstevel@tonic-gate# definitions for install_h target 1050Sstevel@tonic-gateBASEHDRS= getxby_door.h 1060Sstevel@tonic-gateCHECKHDRS= $(BASEHDRS:%.h=port/gen/%.check) 1070Sstevel@tonic-gateHDRS= $(BASEHDRS) 1080Sstevel@tonic-gate 1090Sstevel@tonic-gate# install rules for install_h target 1100Sstevel@tonic-gate$(ROOTHDRDIR)/%: port/gen/% 1110Sstevel@tonic-gate $(INS.file) 1120Sstevel@tonic-gate 1130Sstevel@tonic-gate$(ROOTLIBDIR)/$(DYNLIB) := FILEMODE = 755 1140Sstevel@tonic-gate$(ROOTLIBDIR64)/$(DYNLIB) := FILEMODE = 755 1150Sstevel@tonic-gate$(ROOTFS_LIBDIR)/$(DYNLIB) := FILEMODE = 755 1160Sstevel@tonic-gate$(ROOTFS_LIBDIR64)/$(DYNLIB) := FILEMODE = 755 1170Sstevel@tonic-gate 1180Sstevel@tonic-gate$(ROOTVARIANTDIR) := FILEMODE= 755 1190Sstevel@tonic-gate$(ROOTVARIANTDIR)/$(VAR1_DYNLIB) := FILEMODE= 755 1200Sstevel@tonic-gate$(ROOTVARIANTDIR)/$(VAR2_DYNLIB) := FILEMODE= 755 1215084Sjohnlev$(ROOTVARIANTDIR)/$(VAR3_DYNLIB) := FILEMODE= 755 1220Sstevel@tonic-gate 1239202SJason.Beloro@Sun.COM$(ROOTVARIANTDIR64) := FILEMODE= 755 1249202SJason.Beloro@Sun.COM$(ROOTVARIANTDIR64)/$(VAR1_DYNLIB64) := FILEMODE= 755 1259202SJason.Beloro@Sun.COM 1260Sstevel@tonic-gate.KEEP_STATE: 1270Sstevel@tonic-gate 1282522Srafall: check_i18n .WAIT lib32 $(BUILD64) .WAIT lib64 .WAIT etc 1291167Skupfer 1301167Skupfercheck_i18n: 1311219Sraf @if [ ! -f $(ROOTFS_LIBDIR)/libc_i18n.a -o \ 1321167Skupfer ! -f $(ROOTFS_LIBDIR64)/libc_i18n.a ]; then \ 1331167Skupfer if [ "$$CLOSED_IS_PRESENT" = no ]; then \ 1341167Skupfer $(ECHO) "Warning: closed binaries not" \ 1351167Skupfer "properly unpacked." >&2;\ 1361167Skupfer $(ECHO) "Missing libc_i18n.a" >&2; \ 1371167Skupfer exit 1; \ 1381167Skupfer else \ 1391167Skupfer $(ECHO) "Warning: libc_i18n.a must be built" \ 1401167Skupfer "before libc can be built." >&2; \ 1411167Skupfer exit 1; \ 1421167Skupfer fi \ 1431167Skupfer fi 144772Skucharsk 145772Skucharsketc: $($(MACH)_ETC) 1460Sstevel@tonic-gate 14712719SRod.Evans@Sun.COMlib32: $(MACH_COMP) $(MACHLIBS) $(MACH)/$(LIB_PIC) $(VARIANTLIBS) 1481219Sraf mkdir -p $(MACH)/i18n_pics 1491219Sraf cd $(MACH)/i18n_pics ; $(AR) -x $(ROOTFS_LIBDIR)/libc_i18n.a 1506879Sraf @if $(ELFDUMP) -r $(MACH)/$(DYNLIB) | $(GREP) -w environ ; then \ 1516879Sraf $(ECHO) "Error: Invalid reference to environ" ; \ 1526879Sraf $(ECHO) "Error: See comments in port/gen/env_data.c" ; \ 1536879Sraf exit 1; \ 1546879Sraf fi 1550Sstevel@tonic-gate 156*13135SChris.Kiick@Sun.COM$(MACHLIBS): $(MACH_COMP) 157*13135SChris.Kiick@Sun.COM 15812719SRod.Evans@Sun.COMlib64: $(MACH_COMP) $(MACHLIBS64) $(MACH64)/$(LIB_PIC) $(VARIANTLIBS64) 1591219Sraf mkdir -p $(MACH64)/i18n_pics 1601219Sraf cd $(MACH64)/i18n_pics ; $(AR) -x $(ROOTFS_LIBDIR64)/libc_i18n.a 1616879Sraf @if $(ELFDUMP) -r $(MACH64)/$(DYNLIB) | $(GREP) -w environ ; then \ 1626879Sraf $(ECHO) "Error: Invalid reference to environ" ; \ 1636879Sraf $(ECHO) "Error: See comments in port/gen/env_data.c" ; \ 1646879Sraf exit 1; \ 1656879Sraf fi 1660Sstevel@tonic-gate 167*13135SChris.Kiick@Sun.COM$(MACHLIBS64): $(MACH_COMP) 168*13135SChris.Kiick@Sun.COM 1690Sstevel@tonic-gate$(VARIANTLIBS): FRC 1700Sstevel@tonic-gate @cd $(@D); pwd; VERSION='$(VERSION)' $(MAKE) $(@F) 1710Sstevel@tonic-gate 1729202SJason.Beloro@Sun.COM$(VARIANTLIBS64): FRC 1739202SJason.Beloro@Sun.COM @cd $(@D); pwd; VERSION='$(VERSION)' $(MAKE) $(@F) 1749202SJason.Beloro@Sun.COM 175772Skucharsk$($(MACH)_ETC): FRC 176772Skucharsk @cd $(@); pwd; $(MAKE) $(TARGET) 177772Skucharsk 17812719SRod.Evans@Sun.COM$($(MACH)_COMP): FRC 17912719SRod.Evans@Sun.COM @cd $(@); pwd; $(MAKE) $(TARGET) 18012719SRod.Evans@Sun.COM 1810Sstevel@tonic-gateinstall: all \ 182772Skucharsk etc \ 1830Sstevel@tonic-gate inslib32 \ 1840Sstevel@tonic-gate $(BUILD64) inslib64 1850Sstevel@tonic-gate 1860Sstevel@tonic-gateinslib32: $(ROOTFS_LIBS) $(ROOTFS_LINKS) $(ROOTFS_LINT) \ 1870Sstevel@tonic-gate $(ROOTFS_LINTLIB) \ 1880Sstevel@tonic-gate $(ROOTVARIANTLIBS) 1890Sstevel@tonic-gate 1900Sstevel@tonic-gateinslib64: $(ROOTFS_LIBS64) $(ROOTFS_LINKS64) \ 1919202SJason.Beloro@Sun.COM $(ROOTFS_LINTLIB64) \ 1929202SJason.Beloro@Sun.COM $(ROOTVARIANTLIBS64) 1930Sstevel@tonic-gate 1940Sstevel@tonic-gateinstall_h: $(ROOTHDRS) 1950Sstevel@tonic-gate 1960Sstevel@tonic-gatecheck: $(CHECKHDRS) 1970Sstevel@tonic-gate 1980Sstevel@tonic-gate$(ROOTFS_LIB)/%: $(MACH)/% 1990Sstevel@tonic-gate $(INS.file) 2000Sstevel@tonic-gate$(ROOTFS_LIBDIR)/$(LIBLINKS): $(ROOTFS_LIBDIR)/$(LIBLINKS)$(VERS) 2010Sstevel@tonic-gate $(INS.liblink) 2020Sstevel@tonic-gate$(ROOTFS_LIB64)/%: $(MACH64)/% 2030Sstevel@tonic-gate $(INS.file) 2040Sstevel@tonic-gate$(ROOTFS_LIBDIR64)/$(LIBLINKS): $(ROOTFS_LIBDIR64)/$(LIBLINKS)$(VERS) 2050Sstevel@tonic-gate $(INS.liblink) 2060Sstevel@tonic-gate 2070Sstevel@tonic-gate$(ROOTVARIANTDIR): $(ROOTLIB) 2080Sstevel@tonic-gate $(INS.dir) 2090Sstevel@tonic-gate$(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR1_BLDDIR)/% 2100Sstevel@tonic-gate $(INS.file) 2110Sstevel@tonic-gate$(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR2_BLDDIR)/% 2120Sstevel@tonic-gate $(INS.file) 2135084Sjohnlev$(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR3_BLDDIR)/% 2145084Sjohnlev $(INS.file) 2150Sstevel@tonic-gate 2169202SJason.Beloro@Sun.COM$(ROOTVARIANTDIR64): $(ROOTLIB64) 2179202SJason.Beloro@Sun.COM $(INS.dir) 2189202SJason.Beloro@Sun.COM$(ROOTVARIANTDIR64)/%: $(ROOTVARIANTDIR64) $(VAR1_BLDDIR64)/% 2199202SJason.Beloro@Sun.COM $(INS.file) 2209202SJason.Beloro@Sun.COM 2210Sstevel@tonic-gate# install rule for lint library target 2220Sstevel@tonic-gate$(ROOTFS_LINTDIR)/%: port/% 2230Sstevel@tonic-gate $(INS.file) 2240Sstevel@tonic-gate$(ROOTFS_LINTDIR64)/%: port/% 2250Sstevel@tonic-gate $(INS.file) 2260Sstevel@tonic-gate$(ROOTFS_LINTDIR)/%: $(MACH)/% 2270Sstevel@tonic-gate $(INS.file) 2280Sstevel@tonic-gate$(ROOTFS_LINTDIR64)/%: $(MACH64)/% 2290Sstevel@tonic-gate $(INS.file) 2300Sstevel@tonic-gate 2310Sstevel@tonic-gate$(LINTLIB): 2320Sstevel@tonic-gate @cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $@ 2330Sstevel@tonic-gate$(LINTLIB64): 2340Sstevel@tonic-gate @cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $@ 2350Sstevel@tonic-gate 2360Sstevel@tonic-gate$(MACH)/$(LIB_PIC): FRC 2370Sstevel@tonic-gate @cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC) 2380Sstevel@tonic-gate$(MACH64)/$(LIB_PIC): FRC 2390Sstevel@tonic-gate @cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC) 2400Sstevel@tonic-gate 2410Sstevel@tonic-gateall := TARGET= all 2420Sstevel@tonic-gateinstall := TARGET= install 2430Sstevel@tonic-gateclean := TARGET= clean 2440Sstevel@tonic-gateclobber := TARGET= clobber 2450Sstevel@tonic-gatelint := TARGET= lint 2460Sstevel@tonic-gate 2470Sstevel@tonic-gate.PARALLEL: $(SUBDIRS) 2480Sstevel@tonic-gate 2492522Sraf$(SUBDIRS): FRC 2500Sstevel@tonic-gate @cd $@; pwd; VERSION='$(VERSION)' $(MAKE) $(TARGET) 2510Sstevel@tonic-gate 2522522Srafclean clobber: $(SUBDIRS) 2531219Sraf $(RM) -r $(MACH)/i18n_pics 2541219Sraf $(BUILD64)$(RM) -r $(MACH64)/i18n_pics 2550Sstevel@tonic-gate 2560Sstevel@tonic-gatelint: $(SUBDIRS) 2570Sstevel@tonic-gate 2580Sstevel@tonic-gate_msg: $(MSGDOMAIN) catalog 2590Sstevel@tonic-gate 2600Sstevel@tonic-gatecatalog: 2610Sstevel@tonic-gate sh ./makelibccatalog.sh $(MSGDOMAIN) 2620Sstevel@tonic-gate 2630Sstevel@tonic-gate$(MSGDOMAIN): 2640Sstevel@tonic-gate $(INS.dir) 2650Sstevel@tonic-gate 2660Sstevel@tonic-gatecscope.out tags: FRC 2670Sstevel@tonic-gate $(XREF) -x $@ 2680Sstevel@tonic-gate 2690Sstevel@tonic-gateFRC: 2700Sstevel@tonic-gate# include MACH-specific library targets 2710Sstevel@tonic-gateinclude ../Makefile.mach 272