Home | History | Annotate | Download | only in libc
      1     0    stevel #
      2     0    stevel # CDDL HEADER START
      3     0    stevel #
      4     0    stevel # The contents of this file are subject to the terms of the
      5  2522       raf # Common Development and Distribution License (the "License").
      6  1717  wesolows # You may not use this file except in compliance with the License.
      7     0    stevel #
      8     0    stevel # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
      9     0    stevel # or http://www.opensolaris.org/os/licensing.
     10     0    stevel # See the License for the specific language governing permissions
     11     0    stevel # and limitations under the License.
     12     0    stevel #
     13     0    stevel # When distributing Covered Code, include this CDDL HEADER in each
     14     0    stevel # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     15     0    stevel # If applicable, add the following below this CDDL HEADER, with the
     16     0    stevel # fields enclosed by brackets "[]" replaced with your own identifying
     17     0    stevel # information: Portions Copyright [yyyy] [name of copyright owner]
     18     0    stevel #
     19     0    stevel # CDDL HEADER END
     20     0    stevel #
     21     0    stevel #
     22  9202     Jason # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     23     0    stevel # Use is subject to license terms.
     24     0    stevel #
     25     0    stevel #
     26     0    stevel 
     27     0    stevel LIBBASENAME=	libc
     28     0    stevel LIBRARY=	$(LIBBASENAME:%=%.a)
     29     0    stevel VERS=		.1
     30     0    stevel 
     31     0    stevel # Note that we build libc_pic.a for the benefit of building
     32     0    stevel # ld.so.1, but we do not install it.  Only ld.so.1 needs it
     33     0    stevel # and it must be built in the same workspace as libc.
     34     0    stevel LIB_PIC= libc_pic.a
     35     0    stevel 
     36     0    stevel ROOTLIB=	$(ROOT)/usr/lib
     37     0    stevel ROOTFS_LIB=	$(ROOT)/lib
     38     0    stevel ROOTLIB64=	$(ROOTLIB)/$(MACH64)
     39     0    stevel ROOTFS_LIB64=	$(ROOTFS_LIB)/$(MACH64)
     40     0    stevel 
     41     0    stevel ROOTVARIANTDIR=	$(ROOTLIB)/libc
     42  9202     Jason ROOTVARIANTDIR64=	$(ROOTLIB64)/libc
     43     0    stevel 
     44     0    stevel ROOTFS_LINTDIR=		$(ROOTFS_LIB)
     45     0    stevel ROOTFS_LINTDIR64=	$(ROOTFS_LIB64)
     46     0    stevel ROOTFS_LINTLIB=		$(ROOTFS_LINTDIR)/$(LINTLIB)
     47     0    stevel ROOTFS_LINTLIB64=	$(ROOTFS_LINTDIR64)/$(LINTLIB)
     48     0    stevel 
     49     0    stevel # include common library definitions
     50     0    stevel include ../Makefile.lib
     51     0    stevel 
     52     0    stevel #
     53     0    stevel # on some architectures, we build multiple libc variants
     54     0    stevel #
     55     0    stevel VAR1 =		hwcap1
     56     0    stevel VAR2 =		hwcap2
     57  5084   johnlev VAR3 =		hwcap3
     58     0    stevel 
     59  9202     Jason VARBLD_1=	$(MACH:sparc=sparc)
     60  9202     Jason VARBLD=		$(VARBLD_1:i386=)
     61  9202     Jason 
     62  9202     Jason VARBLD64_1=	$(MACH:sparc=sparcv9)
     63  9202     Jason VARBLD64=	$(VARBLD64_1:i386=)
     64  9202     Jason 
     65     0    stevel VAR1_DYNLIB =	$(LIBRARY:%.a=%_$(VAR1).so$(VERS))
     66  9202     Jason VAR1_BLDDIR =	$(MACH)_$(VAR1)/$(VARBLD)
     67     0    stevel VAR2_DYNLIB =	$(LIBRARY:%.a=%_$(VAR2).so$(VERS))
     68  9202     Jason VAR2_BLDDIR =	$(MACH)_$(VAR2)/$(VARBLD)
     69  5084   johnlev VAR3_DYNLIB =	$(LIBRARY:%.a=%_$(VAR3).so$(VERS))
     70  9202     Jason VAR3_BLDDIR =	$(MACH)_$(VAR3)/$(VARBLD)
     71  9202     Jason 
     72  9202     Jason VAR1_DYNLIB64 =	$(LIBRARY:%.a=%_$(VAR1).so$(VERS))
     73  9202     Jason VAR1_BLDDIR64 =	$(MACH)_$(VAR1)/$(VARBLD64)
     74     0    stevel 
     75  5084   johnlev i386_VARIANTS=	$(VAR1) $(VAR2) $(VAR3)
     76  9202     Jason sparc_VARIANTS= $(VAR1)
     77  9202     Jason sparcv9_VARIANTS= $(VAR1)
     78     0    stevel 
     79   772  kucharsk i386_ETC=	$(MACH)/etc
     80   772  kucharsk sparc_ETC=
     81   772  kucharsk 
     82     0    stevel VARIANTS=	$($(MACH)_VARIANTS)
     83  9202     Jason VARIANT_SUBDIRS	= $(VARIANTS:%=$(MACH)_%/$(VARBLD))
     84  9202     Jason 
     85  9202     Jason VARIANTS64=	$($(MACH64)_VARIANTS)
     86  9202     Jason VARIANT_SUBDIRS64	= $(VARIANTS64:%=$(MACH)_%/$(VARBLD64))
     87     0    stevel 
     88   772  kucharsk SUBDIRS=	$(MACH) $(MACH_ETC) $(VARIANT_SUBDIRS)
     89  9264     Roger $(BUILD64)SUBDIRS += $(MACH64) $(VARIANT_SUBDIRS64)
     90     0    stevel 
     91     0    stevel LIBS =		$(DYNLIB) $(LINTLIB)
     92     0    stevel 
     93     0    stevel ROOTLIBS64=	$(ROOTLIBDIR64)/$(DYNLIB) $(ROOTLIBDIR64)/$(LINTLIB)
     94     0    stevel MACHLIBS64=	$(MACH64)/$(DYNLIB) $(MACH64)/$(LINTLIB)
     95  9202     Jason VARIANTLIBS=	$(VARIANTS:%=$(MACH)_%/$(VARBLD)/$(LIBBASENAME)_%.so.1)
     96  9202     Jason VARIANTLIBS64=	$(VARIANTS64:%=$(MACH)_%/$(VARBLD64)/$(LIBBASENAME)_%.so.1)
     97     0    stevel ROOTVARIANTLIBS= $(VARIANTS:%=$(ROOTVARIANTDIR)/$(LIBBASENAME)_%.so.1)
     98  9202     Jason ROOTVARIANTLIBS64= $(VARIANTS64:%=$(ROOTVARIANTDIR64)/$(LIBBASENAME)_%.so.1)
     99     0    stevel 
    100     0    stevel # definitions for install_h target
    101     0    stevel BASEHDRS=	getxby_door.h 
    102     0    stevel CHECKHDRS=	$(BASEHDRS:%.h=port/gen/%.check)
    103     0    stevel HDRS=		$(BASEHDRS)
    104     0    stevel 
    105     0    stevel # install rules for install_h target
    106     0    stevel $(ROOTHDRDIR)/%: port/gen/%
    107     0    stevel 	$(INS.file)
    108     0    stevel 
    109     0    stevel $(ROOTLIBDIR)/$(DYNLIB)	:=	FILEMODE = 755
    110     0    stevel $(ROOTLIBDIR64)/$(DYNLIB) :=	FILEMODE = 755
    111     0    stevel $(ROOTFS_LIBDIR)/$(DYNLIB)	:=	FILEMODE = 755
    112     0    stevel $(ROOTFS_LIBDIR64)/$(DYNLIB)	:=	FILEMODE = 755
    113     0    stevel 
    114     0    stevel $(ROOTVARIANTDIR)			:= FILEMODE= 755
    115     0    stevel $(ROOTVARIANTDIR)/$(VAR1_DYNLIB)	:= FILEMODE= 755
    116     0    stevel $(ROOTVARIANTDIR)/$(VAR2_DYNLIB)	:= FILEMODE= 755
    117  5084   johnlev $(ROOTVARIANTDIR)/$(VAR3_DYNLIB)	:= FILEMODE= 755
    118  9202     Jason 
    119  9202     Jason $(ROOTVARIANTDIR64)			:= FILEMODE= 755
    120  9202     Jason $(ROOTVARIANTDIR64)/$(VAR1_DYNLIB64)	:= FILEMODE= 755
    121     0    stevel 
    122     0    stevel .KEEP_STATE:
    123     0    stevel 
    124  2522       raf all:	check_i18n .WAIT lib32 $(BUILD64) .WAIT lib64 .WAIT etc
    125  1167    kupfer 
    126  1167    kupfer check_i18n:
    127  1219       raf 	@if [ ! -f $(ROOTFS_LIBDIR)/libc_i18n.a -o \
    128  1167    kupfer 	    ! -f $(ROOTFS_LIBDIR64)/libc_i18n.a ]; then \
    129  1167    kupfer 		if [ "$$CLOSED_IS_PRESENT" = no ]; then \
    130  1167    kupfer 			$(ECHO) "Warning: closed binaries not" \
    131  1167    kupfer 			    "properly unpacked." >&2;\
    132  1167    kupfer 			$(ECHO) "Missing libc_i18n.a" >&2; \
    133  1167    kupfer 			exit 1; \
    134  1167    kupfer 		else \
    135  1167    kupfer 			$(ECHO) "Warning: libc_i18n.a must be built" \
    136  1167    kupfer 			    "before libc can be built." >&2; \
    137  1167    kupfer 			exit 1; \
    138  1167    kupfer 		fi \
    139  1167    kupfer 	fi
    140   772  kucharsk 
    141   772  kucharsk etc:	$($(MACH)_ETC)
    142     0    stevel 
    143     0    stevel lib32:	$(MACHLIBS) $(MACH)/$(LIB_PIC) $(VARIANTLIBS)
    144  1219       raf 	mkdir -p $(MACH)/i18n_pics
    145  1219       raf 	cd $(MACH)/i18n_pics ; $(AR) -x $(ROOTFS_LIBDIR)/libc_i18n.a
    146  6879       raf 	@if $(ELFDUMP) -r $(MACH)/$(DYNLIB) | $(GREP) -w environ ; then \
    147  6879       raf 		$(ECHO) "Error: Invalid reference to environ" ; \
    148  6879       raf 		$(ECHO) "Error: See comments in port/gen/env_data.c" ; \
    149  6879       raf 		exit 1; \
    150  6879       raf 	fi
    151     0    stevel 
    152  9202     Jason lib64:	$(MACHLIBS64) $(MACH64)/$(LIB_PIC) $(VARIANTLIBS64)
    153  1219       raf 	mkdir -p $(MACH64)/i18n_pics
    154  1219       raf 	cd $(MACH64)/i18n_pics ; $(AR) -x $(ROOTFS_LIBDIR64)/libc_i18n.a
    155  6879       raf 	@if $(ELFDUMP) -r $(MACH64)/$(DYNLIB) | $(GREP) -w environ ; then \
    156  6879       raf 		$(ECHO) "Error: Invalid reference to environ" ; \
    157  6879       raf 		$(ECHO) "Error: See comments in port/gen/env_data.c" ; \
    158  6879       raf 		exit 1; \
    159  6879       raf 	fi
    160     0    stevel 
    161     0    stevel $(VARIANTLIBS): FRC
    162  9202     Jason 	@cd $(@D); pwd; VERSION='$(VERSION)' $(MAKE) $(@F)
    163  9202     Jason 
    164  9202     Jason $(VARIANTLIBS64): FRC
    165     0    stevel 	@cd $(@D); pwd; VERSION='$(VERSION)' $(MAKE) $(@F)
    166     0    stevel 
    167   772  kucharsk $($(MACH)_ETC): FRC
    168   772  kucharsk 	@cd $(@); pwd; $(MAKE) $(TARGET)
    169   772  kucharsk 
    170     0    stevel install:	all			\
    171   772  kucharsk 		etc			\
    172     0    stevel 		inslib32		\
    173     0    stevel 		$(BUILD64) inslib64
    174     0    stevel 
    175     0    stevel inslib32:	$(ROOTFS_LIBS) $(ROOTFS_LINKS) $(ROOTFS_LINT) \
    176     0    stevel 		$(ROOTFS_LINTLIB) \
    177     0    stevel 		$(ROOTVARIANTLIBS)
    178     0    stevel 
    179     0    stevel inslib64:	$(ROOTFS_LIBS64) $(ROOTFS_LINKS64) \
    180  9202     Jason 		$(ROOTFS_LINTLIB64) \
    181  9202     Jason 		$(ROOTVARIANTLIBS64)
    182     0    stevel 
    183     0    stevel install_h: $(ROOTHDRS)
    184     0    stevel 
    185     0    stevel check:	$(CHECKHDRS)
    186     0    stevel 
    187     0    stevel $(ROOTFS_LIB)/%: $(MACH)/%
    188     0    stevel 	$(INS.file)
    189     0    stevel $(ROOTFS_LIBDIR)/$(LIBLINKS): $(ROOTFS_LIBDIR)/$(LIBLINKS)$(VERS)
    190     0    stevel 	$(INS.liblink)
    191     0    stevel $(ROOTFS_LIB64)/%: $(MACH64)/%
    192     0    stevel 	$(INS.file)
    193     0    stevel $(ROOTFS_LIBDIR64)/$(LIBLINKS): $(ROOTFS_LIBDIR64)/$(LIBLINKS)$(VERS)
    194     0    stevel 	$(INS.liblink)
    195     0    stevel 
    196     0    stevel $(ROOTVARIANTDIR): $(ROOTLIB)
    197     0    stevel 	$(INS.dir)
    198     0    stevel $(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR1_BLDDIR)/%
    199     0    stevel 	$(INS.file)
    200     0    stevel $(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR2_BLDDIR)/%
    201     0    stevel 	$(INS.file)
    202  5084   johnlev $(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR3_BLDDIR)/%
    203  9202     Jason 	$(INS.file)
    204  9202     Jason 
    205  9202     Jason $(ROOTVARIANTDIR64): $(ROOTLIB64)
    206  9202     Jason 	$(INS.dir)
    207  9202     Jason $(ROOTVARIANTDIR64)/%: $(ROOTVARIANTDIR64) $(VAR1_BLDDIR64)/%
    208  5084   johnlev 	$(INS.file)
    209     0    stevel 
    210     0    stevel # install rule for lint library target
    211     0    stevel $(ROOTFS_LINTDIR)/%: port/%
    212     0    stevel 	$(INS.file)
    213     0    stevel $(ROOTFS_LINTDIR64)/%: port/%
    214     0    stevel 	$(INS.file)
    215     0    stevel $(ROOTFS_LINTDIR)/%: $(MACH)/%
    216     0    stevel 	$(INS.file)
    217     0    stevel $(ROOTFS_LINTDIR64)/%: $(MACH64)/%
    218     0    stevel 	$(INS.file)
    219     0    stevel 
    220     0    stevel $(LINTLIB):
    221     0    stevel 	@cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $@
    222     0    stevel $(LINTLIB64):
    223     0    stevel 	@cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $@
    224     0    stevel 
    225     0    stevel $(MACH)/$(LIB_PIC): FRC
    226     0    stevel 	@cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
    227     0    stevel $(MACH64)/$(LIB_PIC): FRC
    228     0    stevel 	@cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
    229     0    stevel 
    230     0    stevel all	:=	TARGET= all
    231     0    stevel install	:=	TARGET= install
    232     0    stevel clean	:=	TARGET= clean
    233     0    stevel clobber	:=	TARGET= clobber
    234     0    stevel lint	:=	TARGET= lint
    235     0    stevel 
    236     0    stevel .PARALLEL:	$(SUBDIRS)
    237     0    stevel 
    238  2522       raf $(SUBDIRS): FRC
    239     0    stevel 	@cd $@; pwd; VERSION='$(VERSION)' $(MAKE) $(TARGET)
    240     0    stevel 
    241  2522       raf clean clobber: $(SUBDIRS)
    242  1219       raf 	$(RM) -r $(MACH)/i18n_pics
    243  1219       raf 	$(BUILD64)$(RM) -r $(MACH64)/i18n_pics
    244     0    stevel 
    245     0    stevel lint: $(SUBDIRS)
    246     0    stevel 
    247     0    stevel _msg:	$(MSGDOMAIN) catalog
    248     0    stevel 
    249     0    stevel catalog:
    250     0    stevel 	sh ./makelibccatalog.sh $(MSGDOMAIN)
    251     0    stevel 
    252     0    stevel $(MSGDOMAIN):
    253     0    stevel 	$(INS.dir)
    254     0    stevel 
    255     0    stevel cscope.out tags: FRC
    256     0    stevel 	$(XREF) -x $@
    257     0    stevel 
    258     0    stevel FRC:
    259     0    stevel # include MACH-specific library targets
    260     0    stevel include ../Makefile.mach
    261