Makefile revision b6805bf78d2bbbeeaea8909a05623587b42d58b3
0N/A#
2362N/A# CDDL HEADER START
0N/A#
0N/A# The contents of this file are subject to the terms of the
0N/A# Common Development and Distribution License (the "License").
0N/A# You may not use this file except in compliance with the License.
2362N/A#
0N/A# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2362N/A# or http://www.opensolaris.org/os/licensing.
0N/A# See the License for the specific language governing permissions
0N/A# and limitations under the License.
0N/A#
0N/A# When distributing Covered Code, include this CDDL HEADER in each
0N/A# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
0N/A# If applicable, add the following below this CDDL HEADER, with the
0N/A# fields enclosed by brackets "[]" replaced with your own identifying
0N/A# information: Portions Copyright [yyyy] [name of copyright owner]
0N/A#
0N/A# CDDL HEADER END
0N/A#
2362N/A#
2362N/A# Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
2362N/A#
0N/A# Copyright 2010 Nexenta Systems, Inc. All rights reserved.
0N/A# Use is subject to license terms.
0N/A#
0N/A
0N/ALIBBASENAME= libc
0N/ALIBRARY= $(LIBBASENAME:%=%.a)
0N/AVERS= .1
0N/A
0N/A# Note that we build libc_pic.a for the benefit of building
0N/A# ld.so.1, but we do not install it. Only ld.so.1 needs it
0N/A# and it must be built in the same workspace as libc.
0N/ALIB_PIC= libc_pic.a
0N/A
0N/AROOTLIB= $(ROOT)/usr/lib
0N/AROOTFS_LIB= $(ROOT)/lib
0N/AROOTLIB64= $(ROOTLIB)/$(MACH64)
0N/AROOTFS_LIB64= $(ROOTFS_LIB)/$(MACH64)
0N/A
0N/AROOTVARIANTDIR= $(ROOTLIB)/libc
0N/AROOTVARIANTDIR64= $(ROOTLIB64)/libc
0N/A
0N/AROOTFS_LINTDIR= $(ROOTFS_LIB)
0N/AROOTFS_LINTDIR64= $(ROOTFS_LIB64)
0N/AROOTFS_LINTLIB= $(ROOTFS_LINTDIR)/$(LINTLIB)
0N/AROOTFS_LINTLIB64= $(ROOTFS_LINTDIR64)/$(LINTLIB)
0N/A
0N/A# include common library definitions
0N/Ainclude ../Makefile.lib
0N/A
0N/A#
0N/A# on some architectures, we build multiple libc variants
0N/A#
0N/AVAR1 = hwcap1
0N/AVAR2 = hwcap2
0N/AVAR3 = hwcap3
0N/A
0N/AVARBLD_1= $(MACH:sparc=sparc)
0N/AVARBLD= $(VARBLD_1:i386=)
0N/A
0N/AVARBLD64_1= $(MACH:sparc=sparcv9)
0N/AVARBLD64= $(VARBLD64_1:i386=)
0N/A
0N/AVAR1_DYNLIB = $(LIBRARY:%.a=%_$(VAR1).so$(VERS))
0N/AVAR1_BLDDIR = $(MACH)_$(VAR1)/$(VARBLD)
0N/AVAR2_DYNLIB = $(LIBRARY:%.a=%_$(VAR2).so$(VERS))
0N/AVAR2_BLDDIR = $(MACH)_$(VAR2)/$(VARBLD)
0N/AVAR3_DYNLIB = $(LIBRARY:%.a=%_$(VAR3).so$(VERS))
0N/AVAR3_BLDDIR = $(MACH)_$(VAR3)/$(VARBLD)
0N/A
0N/AVAR1_DYNLIB64 = $(LIBRARY:%.a=%_$(VAR1).so$(VERS))
0N/AVAR1_BLDDIR64 = $(MACH)_$(VAR1)/$(VARBLD64)
0N/A
0N/Ai386_VARIANTS= $(VAR1) $(VAR2) $(VAR3)
0N/Asparc_VARIANTS=
0N/Asparcv9_VARIANTS=
0N/A
0N/Ai386_COMP=
0N/Asparc_COMP= capabilities
0N/A
0N/AMACH_COMP= $($(MACH)_COMP)
0N/A
0N/Ai386_ETC= $(MACH)/etc
0N/Asparc_ETC=
0N/A
0N/AVARIANTS= $($(MACH)_VARIANTS)
0N/AVARIANT_SUBDIRS = $(VARIANTS:%=$(MACH)_%/$(VARBLD))
0N/A
0N/AVARIANTS64= $($(MACH64)_VARIANTS)
0N/AVARIANT_SUBDIRS64 = $(VARIANTS64:%=$(MACH)_%/$(VARBLD64))
0N/A
0N/ASUBDIRS= $(MACH_CAP) $(MACH) $(MACH_ETC) $(VARIANT_SUBDIRS)
0N/A$(BUILD64)SUBDIRS += $(MACH64) $(VARIANT_SUBDIRS64)
0N/A
0N/ALIBS = $(DYNLIB) $(LINTLIB)
0N/A
0N/AROOTLIBS64= $(ROOTLIBDIR64)/$(DYNLIB) $(ROOTLIBDIR64)/$(LINTLIB)
0N/AMACHLIBS64= $(MACH64)/$(DYNLIB) $(MACH64)/$(LINTLIB)
0N/AVARIANTLIBS= $(VARIANTS:%=$(MACH)_%/$(VARBLD)/$(LIBBASENAME)_%.so.1)
0N/AVARIANTLIBS64= $(VARIANTS64:%=$(MACH)_%/$(VARBLD64)/$(LIBBASENAME)_%.so.1)
0N/AROOTVARIANTLIBS= $(VARIANTS:%=$(ROOTVARIANTDIR)/$(LIBBASENAME)_%.so.1)
0N/AROOTVARIANTLIBS64= $(VARIANTS64:%=$(ROOTVARIANTDIR64)/$(LIBBASENAME)_%.so.1)
0N/A
0N/A# definitions for install_h target
0N/ABASEHDRS= getxby_door.h
0N/ACHECKHDRS= $(BASEHDRS:%.h=port/gen/%.check)
0N/AHDRS= $(BASEHDRS)
0N/A
CLOBBERFILES += THIRDPARTYLICENSE extract-copyright
# install rules for install_h target
$(ROOTHDRDIR)/%: port/gen/%
$(INS.file)
$(ROOTLIBDIR)/$(DYNLIB) := FILEMODE = 755
$(ROOTLIBDIR64)/$(DYNLIB) := FILEMODE = 755
$(ROOTFS_LIBDIR)/$(DYNLIB) := FILEMODE = 755
$(ROOTFS_LIBDIR64)/$(DYNLIB) := FILEMODE = 755
$(ROOTVARIANTDIR) := FILEMODE= 755
$(ROOTVARIANTDIR)/$(VAR1_DYNLIB) := FILEMODE= 755
$(ROOTVARIANTDIR)/$(VAR2_DYNLIB) := FILEMODE= 755
$(ROOTVARIANTDIR)/$(VAR3_DYNLIB) := FILEMODE= 755
$(ROOTVARIANTDIR64) := FILEMODE= 755
$(ROOTVARIANTDIR64)/$(VAR1_DYNLIB64) := FILEMODE= 755
.KEEP_STATE:
all: all_h lib32 $(BUILD64) .WAIT lib64 .WAIT etc THIRDPARTYLICENSE
THIRDPARTYLICENSE: extract-copyright
$(RM) $@
./extract-copyright . > $@
etc: $($(MACH)_ETC)
lib32: $(MACH_COMP) $(MACHLIBS) $(MACH)/$(LIB_PIC) $(VARIANTLIBS)
@if $(ELFDUMP) -r $(MACH)/$(DYNLIB) | $(GREP) -w environ ; then \
$(ECHO) "Error: Invalid reference to environ" ; \
$(ECHO) "Error: See comments in port/gen/env_data.c" ; \
exit 1; \
fi
lib64: $(MACH_COMP) $(MACHLIBS64) $(MACH64)/$(LIB_PIC) $(VARIANTLIBS64)
@if $(ELFDUMP) -r $(MACH64)/$(DYNLIB) | $(GREP) -w environ ; then \
$(ECHO) "Error: Invalid reference to environ" ; \
$(ECHO) "Error: See comments in port/gen/env_data.c" ; \
exit 1; \
fi
$(MACH)/assym.h $(MACH64)/assym.h:
@cd $(@D); $(MAKE) assym.h
$(VARIANTLIBS): FRC
@cd $(@D); pwd; VERSION='$(VERSION)' $(MAKE) $(@F)
$(VARIANTLIBS64): FRC
@cd $(@D); pwd; VERSION='$(VERSION)' $(MAKE) $(@F)
$($(MACH)_ETC): FRC
@cd $(@); pwd; $(MAKE) $(TARGET)
$($(MACH)_COMP): FRC
@cd $(@); pwd; $(MAKE) $(TARGET)
install: all \
etc \
inslib32 \
$(BUILD64) inslib64
inslib32: $(ROOTFS_LIBS) $(ROOTFS_LINKS) $(ROOTFS_LINT) \
$(ROOTFS_LINTLIB) \
$(ROOTVARIANTLIBS)
inslib64: $(ROOTFS_LIBS64) $(ROOTFS_LINKS64) \
$(ROOTFS_LINTLIB64) \
$(ROOTVARIANTLIBS64)
install_h: all_h $(ROOTHDRS)
all_h: $(MACH)/assym.h $(MACH64)/assym.h
check: $(CHECKHDRS)
$(ROOTFS_LIB)/%: $(MACH)/%
$(INS.file)
$(ROOTFS_LIBDIR)/$(LIBLINKS): $(ROOTFS_LIBDIR)/$(LIBLINKS)$(VERS)
$(INS.liblink)
$(ROOTFS_LIB64)/%: $(MACH64)/%
$(INS.file)
$(ROOTFS_LIBDIR64)/$(LIBLINKS): $(ROOTFS_LIBDIR64)/$(LIBLINKS)$(VERS)
$(INS.liblink)
$(ROOTVARIANTDIR): $(ROOTLIB)
$(INS.dir)
$(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR1_BLDDIR)/%
$(INS.file)
$(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR2_BLDDIR)/%
$(INS.file)
$(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR3_BLDDIR)/%
$(INS.file)
$(ROOTVARIANTDIR64): $(ROOTLIB64)
$(INS.dir)
$(ROOTVARIANTDIR64)/%: $(ROOTVARIANTDIR64) $(VAR1_BLDDIR64)/%
$(INS.file)
# install rule for lint library target
$(ROOTFS_LINTDIR)/%: port/%
$(INS.file)
$(ROOTFS_LINTDIR64)/%: port/%
$(INS.file)
$(ROOTFS_LINTDIR)/%: $(MACH)/%
$(INS.file)
$(ROOTFS_LINTDIR64)/%: $(MACH64)/%
$(INS.file)
$(LINTLIB):
@cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $@
$(LINTLIB64):
@cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $@
$(MACH)/$(LIB_PIC): FRC
@cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
$(MACH64)/$(LIB_PIC): FRC
@cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
all := TARGET= all
install := TARGET= install
clean := TARGET= clean
clobber := TARGET= clobber
lint := TARGET= lint
.PARALLEL: $(SUBDIRS)
$(SUBDIRS): FRC
@cd $@; pwd; VERSION='$(VERSION)' $(MAKE) $(TARGET)
clean: $(SUBDIRS)
clobber: $(SUBDIRS) etc clobber_local
clobber_local:
$(RM) $(CLOBBERFILES)
lint: $(SUBDIRS)
_msg: $(MSGDOMAIN) catalog
catalog:
sh ./makelibccatalog.sh $(MSGDOMAIN)
$(MSGDOMAIN):
$(INS.dir)
cscope.out tags: FRC
$(XREF) -x $@
FRC:
# include MACH-specific library targets
include ../Makefile.mach