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