# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2019, Joyent, Inc. # # # included to define local library targets # # conditional assignment of default permissions for the installed # DYNLIB/DYNLIBCCC. Set here and in Makefile.mach, instead of Makefile.lib, # because ROOTLIBDIR may be changed in the including makefile after it has # included Makefile.lib. # $(ROOTLIBDIR)/$(DYNLIB) : FILEMODE= 755 $(ROOTLIBDIR)/$(DYNLIBCCC) : FILEMODE= 755 $(ROOTFS_LIBDIR)/$(DYNLIB) : FILEMODE= 755 $(ROOTFS_LIBDIR)/$(DYNLIBCCC) : FILEMODE= 755 # Hammerhead: Only define 64-bit rules if paths differ from 32-bit # (with path flattening, ROOTLIBDIR64 == ROOTLIBDIR, causing warnings) ifneq ($(ROOTLIBDIR64),$(ROOTLIBDIR)) $(ROOTLIBDIR64)/$(DYNLIB) : FILEMODE= 755 $(ROOTLIBDIR64)/$(DYNLIBCCC) : FILEMODE= 755 endif $(ROOTLIBPC) $(ROOTLIBPC64) : FILEMODE= 444 # install rules $(ROOTHDRDIR)/%: $(HDRDIR)/% $(INS.file) $(ROOTLIBDIR)/%: % $(INS.file) ifneq ($(ROOTLIBDIR64),$(ROOTLIBDIR)) $(ROOTLIBDIR64)/%: % $(INS.file) endif $(ROOTFS_LIBDIR)/%: % $(INS.file) ifneq ($(ROOTFS_LIBDIR64),$(ROOTFS_LIBDIR)) $(ROOTFS_LIBDIR64)/%: % $(INS.file) endif # Hammerhead: Wrap in conditionals to avoid duplicate target warnings when empty ifneq ($(LIBLINKS),) $(ROOTLIBDIR)/$(LIBLINKS): $(ROOTLIBDIR)/$(LIBLINKS)$(VERS) $(INS.liblink) ifneq ($(ROOTLIBDIR64),$(ROOTLIBDIR)) $(ROOTLIBDIR64)/$(LIBLINKS): $(ROOTLIBDIR64)/$(LIBLINKS)$(VERS) $(INS.liblink64) endif endif ifneq ($(LIBLINKSCCC),) $(ROOTLIBDIR)/$(LIBLINKSCCC): $(ROOTLIBDIR)/$(LIBLINKSCCC)$(VERS) $(INS.liblinkccc) ifneq ($(ROOTLIBDIR64),$(ROOTLIBDIR)) $(ROOTLIBDIR64)/$(LIBLINKSCCC): $(ROOTLIBDIR64)/$(LIBLINKSCCC)$(VERS) $(INS.liblinkccc64) endif endif $(ROOTDEMODIRS): $(INS.dir) $(ROOTDEMODIRBASE)/%: $(DEMOFILESRCDIR)/% $(INS.file) # Hammerhead: Split dual-target rules for GNU Make compatibility # (dmake treats "a b:" as "match either", GNU Make treats it as grouped target) # Order-only prerequisites (| objs/pics) ensure directories exist before # compilation, preventing ctfconvert "failed to rename" errors in parallel builds. objs/%.o: $(SRCDIR)/%.c | objs $(COMPILE.c) -o $@ $< $(POST_PROCESS_O) pics/%.o: $(SRCDIR)/%.c | pics $(COMPILE.c) -o $@ $< $(POST_PROCESS_O) objs/%.o: $(SRCDIR)/%.cc | objs $(COMPILE.cc) -o $@ $< $(POST_PROCESS_CC_O) pics/%.o: $(SRCDIR)/%.cc | pics $(COMPILE.cc) -o $@ $< $(POST_PROCESS_CC_O) objs pics: -@mkdir -p $@ $(ROOTLIBPCDIR): $(INS.dir) # Hammerhead: Use order-only prerequisite for directory so $< points to PCFILE $(ROOTLIBPC): $(PCFILE) | $(ROOTLIBPCDIR) $(INS.file) ifneq ($(ROOTLIBPCDIR64),$(ROOTLIBPCDIR)) $(ROOTLIBPCDIR64): $(INS.dir) endif # Hammerhead: Use order-only prerequisite for directory so $< points to PCFILE ifneq ($(ROOTLIBPC64),$(ROOTLIBPC)) $(ROOTLIBPC64): $(PCFILE) | $(ROOTLIBPCDIR64) $(INS.file) endif %.pc: $(SRCDIR)/%.pc.in $(RM) $@; \ $(SED) -e "s@__LIBDIR__@$(PCLIBDIR)@g" \ -e "s@__VERSPKG__@$(VERSPKG)@g" \ < $< > $@ # Hammerhead: Enable GNU Make secondary expansion for $$(VAR) syntax .SECONDEXPANSION: $(LIBRARY): objs .WAIT $$(OBJS) $(BUILD.AR) $(POST_PROCESS_A) $(DYNLIB): $$(MAPFILES) $(DYNLIB): pics .WAIT $$(PICS) $$(ALTPICS) $$(EXTPICS) $(BUILD.SO) $(POST_PROCESS_SO) $(DYNLIBCCC): pics .WAIT $$(PICS) $$(ALTPICS) $$(EXTPICS) $(BUILDCCC.SO) $(POST_PROCESS_SO) $(TYPECHECK): $(TYPECHECK_LIB32) $(TYPECHECK_LIB64) $(TYPECHECK.lib) clobber: clean -$(RM) $(CLOBBERTARGFILES) clean: -$(RM) $(OBJS) $(PICS) $(DUPLICATE_SRC) $(CLEANFILES) $(ROOTCOMPATLINKS): $(RM) $@; $(SYMLINK) $(COMPATLINKTARGET) $@ ifneq ($(ROOTCOMPATLINKS64),$(ROOTCOMPATLINKS)) $(ROOTCOMPATLINKS64): $(RM) $@; $(SYMLINK) $(COMPATLINKTARGET) $@ endif