Print this page
1235 Use symbol capabilities to eliminate libc_hwcap*
   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 (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.

  23 #
  24 # Copyright 2010 Nexenta Systems, Inc.  All rights reserved.
  25 # Use is subject to license terms.
  26 #
  27 
  28 LIBBASENAME=    libc
  29 LIBRARY=        $(LIBBASENAME:%=%.a)
  30 VERS=           .1
  31 
  32 # Note that we build libc_pic.a for the benefit of building
  33 # ld.so.1, but we do not install it.  Only ld.so.1 needs it
  34 # and it must be built in the same workspace as libc.
  35 LIB_PIC= libc_pic.a
  36 
  37 ROOTLIB=        $(ROOT)/usr/lib
  38 ROOTFS_LIB=     $(ROOT)/lib
  39 ROOTLIB64=      $(ROOTLIB)/$(MACH64)
  40 ROOTFS_LIB64=   $(ROOTFS_LIB)/$(MACH64)
  41 
  42 ROOTVARIANTDIR= $(ROOTLIB)/libc
  43 ROOTVARIANTDIR64=       $(ROOTLIB64)/libc
  44 
  45 ROOTFS_LINTDIR=         $(ROOTFS_LIB)
  46 ROOTFS_LINTDIR64=       $(ROOTFS_LIB64)
  47 ROOTFS_LINTLIB=         $(ROOTFS_LINTDIR)/$(LINTLIB)
  48 ROOTFS_LINTLIB64=       $(ROOTFS_LINTDIR64)/$(LINTLIB)
  49 
  50 # include common library definitions
  51 include ../Makefile.lib
  52 
  53 #
  54 # on some architectures, we build multiple libc variants
  55 #
  56 VAR1 =          hwcap1
  57 VAR2 =          hwcap2
  58 VAR3 =          hwcap3
  59 
  60 VARBLD_1=       $(MACH:sparc=sparc)
  61 VARBLD=         $(VARBLD_1:i386=)
  62 
  63 VARBLD64_1=     $(MACH:sparc=sparcv9)
  64 VARBLD64=       $(VARBLD64_1:i386=)
  65 
  66 VAR1_DYNLIB =   $(LIBRARY:%.a=%_$(VAR1).so$(VERS))
  67 VAR1_BLDDIR =   $(MACH)_$(VAR1)/$(VARBLD)
  68 VAR2_DYNLIB =   $(LIBRARY:%.a=%_$(VAR2).so$(VERS))
  69 VAR2_BLDDIR =   $(MACH)_$(VAR2)/$(VARBLD)
  70 VAR3_DYNLIB =   $(LIBRARY:%.a=%_$(VAR3).so$(VERS))
  71 VAR3_BLDDIR =   $(MACH)_$(VAR3)/$(VARBLD)
  72 
  73 VAR1_DYNLIB64 = $(LIBRARY:%.a=%_$(VAR1).so$(VERS))
  74 VAR1_BLDDIR64 = $(MACH)_$(VAR1)/$(VARBLD64)
  75 
  76 i386_VARIANTS=  $(VAR1) $(VAR2) $(VAR3)
  77 sparc_VARIANTS=
  78 sparcv9_VARIANTS=
  79 
  80 i386_COMP=
  81 sparc_COMP=     capabilities
  82 
  83 MACH_COMP=      $($(MACH)_COMP)
  84 
  85 i386_ETC=       $(MACH)/etc
  86 sparc_ETC=
  87 
  88 VARIANTS=       $($(MACH)_VARIANTS)
  89 VARIANT_SUBDIRS = $(VARIANTS:%=$(MACH)_%/$(VARBLD))
  90 
  91 VARIANTS64=     $($(MACH64)_VARIANTS)
  92 VARIANT_SUBDIRS64       = $(VARIANTS64:%=$(MACH)_%/$(VARBLD64))
  93 
  94 SUBDIRS=        $(MACH_CAP) $(MACH) $(MACH_ETC) $(VARIANT_SUBDIRS)
  95 $(BUILD64)SUBDIRS += $(MACH64) $(VARIANT_SUBDIRS64)
  96 
  97 LIBS =          $(DYNLIB) $(LINTLIB)
  98 
  99 ROOTLIBS64=     $(ROOTLIBDIR64)/$(DYNLIB) $(ROOTLIBDIR64)/$(LINTLIB)
 100 MACHLIBS64=     $(MACH64)/$(DYNLIB) $(MACH64)/$(LINTLIB)
 101 VARIANTLIBS=    $(VARIANTS:%=$(MACH)_%/$(VARBLD)/$(LIBBASENAME)_%.so.1)
 102 VARIANTLIBS64=  $(VARIANTS64:%=$(MACH)_%/$(VARBLD64)/$(LIBBASENAME)_%.so.1)
 103 ROOTVARIANTLIBS= $(VARIANTS:%=$(ROOTVARIANTDIR)/$(LIBBASENAME)_%.so.1)
 104 ROOTVARIANTLIBS64= $(VARIANTS64:%=$(ROOTVARIANTDIR64)/$(LIBBASENAME)_%.so.1)
 105 
 106 # definitions for install_h target
 107 BASEHDRS=       getxby_door.h 
 108 CHECKHDRS=      $(BASEHDRS:%.h=port/gen/%.check)
 109 HDRS=           $(BASEHDRS)
 110 
 111 CLOBBERFILES += THIRDPARTYLICENSE extract-copyright
 112 
 113 # install rules for install_h target
 114 $(ROOTHDRDIR)/%: port/gen/%
 115         $(INS.file)
 116 
 117 $(ROOTLIBDIR)/$(DYNLIB) :=      FILEMODE = 755
 118 $(ROOTLIBDIR64)/$(DYNLIB) :=    FILEMODE = 755
 119 $(ROOTFS_LIBDIR)/$(DYNLIB)      :=      FILEMODE = 755
 120 $(ROOTFS_LIBDIR64)/$(DYNLIB)    :=      FILEMODE = 755
 121 
 122 $(ROOTVARIANTDIR)                       := FILEMODE= 755
 123 $(ROOTVARIANTDIR)/$(VAR1_DYNLIB)        := FILEMODE= 755
 124 $(ROOTVARIANTDIR)/$(VAR2_DYNLIB)        := FILEMODE= 755
 125 $(ROOTVARIANTDIR)/$(VAR3_DYNLIB)        := FILEMODE= 755
 126 
 127 $(ROOTVARIANTDIR64)                     := FILEMODE= 755
 128 $(ROOTVARIANTDIR64)/$(VAR1_DYNLIB64)    := FILEMODE= 755
 129 
 130 .KEEP_STATE:
 131 
 132 all:    all_h lib32 $(BUILD64) .WAIT lib64 .WAIT etc THIRDPARTYLICENSE
 133 
 134 THIRDPARTYLICENSE: extract-copyright
 135         $(RM) $@
 136         ./extract-copyright . > $@
 137 
 138 etc:    $($(MACH)_ETC)
 139 
 140 lib32:  $(MACH_COMP) $(MACHLIBS) $(MACH)/$(LIB_PIC) $(VARIANTLIBS)
 141         @if $(ELFDUMP) -r $(MACH)/$(DYNLIB) | $(GREP) -w environ ; then \
 142                 $(ECHO) "Error: Invalid reference to environ" ; \
 143                 $(ECHO) "Error: See comments in port/gen/env_data.c" ; \
 144                 exit 1; \
 145         fi
 146 
 147 lib64:  $(MACH_COMP) $(MACHLIBS64) $(MACH64)/$(LIB_PIC) $(VARIANTLIBS64)
 148         @if $(ELFDUMP) -r $(MACH64)/$(DYNLIB) | $(GREP) -w environ ; then \
 149                 $(ECHO) "Error: Invalid reference to environ" ; \
 150                 $(ECHO) "Error: See comments in port/gen/env_data.c" ; \
 151                 exit 1; \
 152         fi
 153 
 154 $(MACH)/assym.h $(MACH64)/assym.h:
 155         @cd $(@D); $(MAKE) assym.h
 156 
 157 $(VARIANTLIBS): FRC
 158         @cd $(@D); pwd; VERSION='$(VERSION)' $(MAKE) $(@F)
 159 
 160 $(VARIANTLIBS64): FRC
 161         @cd $(@D); pwd; VERSION='$(VERSION)' $(MAKE) $(@F)
 162 
 163 $($(MACH)_ETC): FRC
 164         @cd $(@); pwd; $(MAKE) $(TARGET)
 165 
 166 $($(MACH)_COMP): FRC
 167         @cd $(@); pwd; $(MAKE) $(TARGET)
 168 
 169 install:        all                     \
 170                 etc                     \
 171                 inslib32                \
 172                 $(BUILD64) inslib64
 173 
 174 inslib32:       $(ROOTFS_LIBS) $(ROOTFS_LINKS) $(ROOTFS_LINT) \
 175                 $(ROOTFS_LINTLIB) \
 176                 $(ROOTVARIANTLIBS)
 177 
 178 inslib64:       $(ROOTFS_LIBS64) $(ROOTFS_LINKS64) \
 179                 $(ROOTFS_LINTLIB64) \
 180                 $(ROOTVARIANTLIBS64)
 181 
 182 install_h: all_h $(ROOTHDRS)
 183 
 184 all_h:  $(MACH)/assym.h $(MACH64)/assym.h
 185 
 186 check:  $(CHECKHDRS)
 187 
 188 $(ROOTFS_LIB)/%: $(MACH)/%
 189         $(INS.file)
 190 $(ROOTFS_LIBDIR)/$(LIBLINKS): $(ROOTFS_LIBDIR)/$(LIBLINKS)$(VERS)
 191         $(INS.liblink)
 192 $(ROOTFS_LIB64)/%: $(MACH64)/%
 193         $(INS.file)
 194 $(ROOTFS_LIBDIR64)/$(LIBLINKS): $(ROOTFS_LIBDIR64)/$(LIBLINKS)$(VERS)
 195         $(INS.liblink)
 196 
 197 $(ROOTVARIANTDIR): $(ROOTLIB)
 198         $(INS.dir)
 199 $(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR1_BLDDIR)/%
 200         $(INS.file)
 201 $(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR2_BLDDIR)/%
 202         $(INS.file)
 203 $(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR3_BLDDIR)/%
 204         $(INS.file)
 205 
 206 $(ROOTVARIANTDIR64): $(ROOTLIB64)
 207         $(INS.dir)
 208 $(ROOTVARIANTDIR64)/%: $(ROOTVARIANTDIR64) $(VAR1_BLDDIR64)/%
 209         $(INS.file)
 210 
 211 # install rule for lint library target
 212 $(ROOTFS_LINTDIR)/%: port/%
 213         $(INS.file)
 214 $(ROOTFS_LINTDIR64)/%: port/%
 215         $(INS.file)
 216 $(ROOTFS_LINTDIR)/%: $(MACH)/%
 217         $(INS.file)
 218 $(ROOTFS_LINTDIR64)/%: $(MACH64)/%
 219         $(INS.file)
 220 
 221 $(LINTLIB):
 222         @cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $@
 223 $(LINTLIB64):
 224         @cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $@
 225 
 226 $(MACH)/$(LIB_PIC): FRC
 227         @cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
 228 $(MACH64)/$(LIB_PIC): FRC
 229         @cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
 230 


   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 #
  23 # Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
  24 # Copyright 2017 Nexenta Systems, Inc.
  25 #



  26 
  27 LIBBASENAME=    libc
  28 LIBRARY=        $(LIBBASENAME:%=%.a)
  29 VERS=           .1
  30 
  31 # Note that we build libc_pic.a for the benefit of building
  32 # ld.so.1, but we do not install it.  Only ld.so.1 needs it
  33 # and it must be built in the same workspace as libc.
  34 LIB_PIC= libc_pic.a
  35 
  36 ROOTLIB=        $(ROOT)/usr/lib
  37 ROOTFS_LIB=     $(ROOT)/lib
  38 ROOTLIB64=      $(ROOTLIB)/$(MACH64)
  39 ROOTFS_LIB64=   $(ROOTFS_LIB)/$(MACH64)
  40 



  41 ROOTFS_LINTDIR=         $(ROOTFS_LIB)
  42 ROOTFS_LINTDIR64=       $(ROOTFS_LIB64)
  43 ROOTFS_LINTLIB=         $(ROOTFS_LINTDIR)/$(LINTLIB)
  44 ROOTFS_LINTLIB64=       $(ROOTFS_LINTDIR64)/$(LINTLIB)
  45 
  46 # include common library definitions
  47 include ../Makefile.lib
  48 
  49 i386_COMP=      capabilities



























  50 sparc_COMP=     capabilities
  51 
  52 MACH_COMP=      $($(MACH)_COMP)
  53 
  54 i386_ETC=       $(MACH)/etc
  55 sparc_ETC=
  56 
  57 SUBDIRS=        $(MACH_CAP) $(MACH) $(MACH_ETC) $(BUILD64) $(MACH64)

  58 






  59 LIBS =          $(DYNLIB) $(LINTLIB)
  60 
  61 ROOTLIBS64=     $(ROOTLIBDIR64)/$(DYNLIB) $(ROOTLIBDIR64)/$(LINTLIB)
  62 MACHLIBS64=     $(MACH64)/$(DYNLIB) $(MACH64)/$(LINTLIB)




  63 
  64 # definitions for install_h target
  65 BASEHDRS=       getxby_door.h
  66 CHECKHDRS=      $(BASEHDRS:%.h=port/gen/%.check)
  67 HDRS=           $(BASEHDRS)
  68 
  69 CLOBBERFILES += THIRDPARTYLICENSE extract-copyright
  70 
  71 # install rules for install_h target
  72 $(ROOTHDRDIR)/%: port/gen/%
  73         $(INS.file)
  74 
  75 $(ROOTLIBDIR)/$(DYNLIB) :=      FILEMODE = 755
  76 $(ROOTLIBDIR64)/$(DYNLIB) :=    FILEMODE = 755
  77 $(ROOTFS_LIBDIR)/$(DYNLIB) :=   FILEMODE = 755
  78 $(ROOTFS_LIBDIR64)/$(DYNLIB) := FILEMODE = 755
  79 








  80 .KEEP_STATE:
  81 
  82 all:    all_h lib32 $(BUILD64) .WAIT lib64 .WAIT etc THIRDPARTYLICENSE
  83 
  84 THIRDPARTYLICENSE: extract-copyright
  85         $(RM) $@
  86         ./extract-copyright . > $@
  87 
  88 etc:    $($(MACH)_ETC)
  89 
  90 lib32:  $(MACH_COMP) $(MACHLIBS) $(MACH)/$(LIB_PIC)
  91         @if $(ELFDUMP) -r $(MACH)/$(DYNLIB) | $(GREP) -w environ ; then \
  92                 $(ECHO) "Error: Invalid reference to environ" ; \
  93                 $(ECHO) "Error: See comments in port/gen/env_data.c" ; \
  94                 exit 1; \
  95         fi
  96 
  97 lib64:  $(MACH_COMP) $(MACHLIBS64) $(MACH64)/$(LIB_PIC)
  98         @if $(ELFDUMP) -r $(MACH64)/$(DYNLIB) | $(GREP) -w environ ; then \
  99                 $(ECHO) "Error: Invalid reference to environ" ; \
 100                 $(ECHO) "Error: See comments in port/gen/env_data.c" ; \
 101                 exit 1; \
 102         fi
 103 
 104 $(MACH)/assym.h $(MACH64)/assym.h:
 105         @cd $(@D); $(MAKE) assym.h
 106 






 107 $($(MACH)_ETC): FRC
 108         @cd $(@); pwd; $(MAKE) $(TARGET)
 109 
 110 $($(MACH)_COMP): FRC
 111         @cd $(@); pwd; $(MAKE) $(TARGET)
 112 
 113 install:        all                     \
 114                 etc                     \
 115                 inslib32                \
 116                 $(BUILD64) inslib64
 117 
 118 inslib32:       $(ROOTFS_LIBS) $(ROOTFS_LINKS) $(ROOTFS_LINT) $(ROOTFS_LINTLIB)


 119 
 120 inslib64:       $(ROOTFS_LIBS64) $(ROOTFS_LINKS64) $(ROOTFS_LINTLIB64)


 121 
 122 install_h: all_h $(ROOTHDRS)
 123 
 124 all_h:  $(MACH)/assym.h $(MACH64)/assym.h
 125 
 126 check:  $(CHECKHDRS)
 127 
 128 $(ROOTFS_LIB)/%: $(MACH)/%
 129         $(INS.file)
 130 $(ROOTFS_LIBDIR)/$(LIBLINKS): $(ROOTFS_LIBDIR)/$(LIBLINKS)$(VERS)
 131         $(INS.liblink)
 132 $(ROOTFS_LIB64)/%: $(MACH64)/%
 133         $(INS.file)
 134 $(ROOTFS_LIBDIR64)/$(LIBLINKS): $(ROOTFS_LIBDIR64)/$(LIBLINKS)$(VERS)
 135         $(INS.liblink)
 136 














 137 # install rule for lint library target
 138 $(ROOTFS_LINTDIR)/%: port/%
 139         $(INS.file)
 140 $(ROOTFS_LINTDIR64)/%: port/%
 141         $(INS.file)
 142 $(ROOTFS_LINTDIR)/%: $(MACH)/%
 143         $(INS.file)
 144 $(ROOTFS_LINTDIR64)/%: $(MACH64)/%
 145         $(INS.file)
 146 
 147 $(LINTLIB):
 148         @cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $@
 149 $(LINTLIB64):
 150         @cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $@
 151 
 152 $(MACH)/$(LIB_PIC): FRC
 153         @cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
 154 $(MACH64)/$(LIB_PIC): FRC
 155         @cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
 156