# # 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) 1999, 2010, Oracle and/or its affiliates. All rights reserved. # Copyright 2020 Joyent, Inc. # # Definitions common to tool source. # include $(SRC)/Makefile.master include $(SRC)/Makefile.native FILEMODE= 0555 TOOLS= $(SRC)/tools TOOLS_PROTO= $(TOOLS)/proto/root_$(MACH)-nd ROOTOPT= $(TOOLS_PROTO)/opt ROOTONBLD= $(ROOTOPT)/onbld # Hammerhead: Override ONBLD_TOOLS during tools build to use just-built tools # This allows tools like sgsmsg to be used by other tools (libconv) that depend on them ONBLD_TOOLS= $(ROOTONBLD) ROOTONBLDBIN= $(ROOTONBLD)/bin ROOTONBLDBINMACH= $(ROOTONBLD)/bin/$(MACH) ROOTONBLDBINMACH64= $(ROOTONBLD)/bin/$(MACH64) ROOTONBLDETC= $(ROOTONBLD)/etc ROOTONBLDLIB= $(ROOTONBLD)/lib ROOTONBLDLIBMACH= $(ROOTONBLD)/lib/$(MACH) ROOTONBLDLIBMACH64= $(ROOTONBLD)/lib/$(MACH)/64 ROOTONBLDLIBPERL= $(ROOTONBLD)/lib/perl ROOTONBLDLIBPY= $(ROOTONBLD)/lib/python ROOTONBLDENV= $(ROOTONBLD)/env ROOTONBLDMAN= $(ROOTONBLD)/man ROOTONBLDMAN1ONBLD= $(ROOTONBLD)/man/man1onbld ROOTONBLDETCABI= $(ROOTONBLD)/etc/abi ROOTONBLDETCEXCEPT= $(ROOTONBLD)/etc/exception_lists ROOTONBLDSHARE= $(ROOTONBLD)/share ROOTONBLDSHLIB= $(ROOTONBLD)/share/lib ROOTONBLDSHLIBCCS= $(ROOTONBLD)/share/lib/ccs # Hammerhead: Flag that we're building tools (not target binaries). # Used by Makefile.cmd to skip target-specific LDFLAGS like PT_INTERP. _BUILDING_TOOLS = 1 CERRWARN += -Wno-unknown-pragmas # Hammerhead: Legacy tools have 32/64-bit portability issues (int/pointer size) CERRWARN += -Wno-int-to-pointer-cast CERRWARN += -Wno-pointer-to-int-cast CPPFLAGS= -D_TS_ERRNO ELFSIGN_O= $(TRUE) LDLIBS= # Hammerhead: Use GNU ld wrapper to avoid mapfile format incompatibility # with illumos ld when GCC adds its own mapfiles (libgcc-unwind.map). # LD_ALTEXEC forces GCC to use the specified linker at runtime. # The wrapper translates illumos-style flags (-M mapfile, -z ignore, etc.) # to GNU ld equivalents. # Note: -fuse-ld=bfd doesn't work when GCC is configured --without-gnu-ld export LD_ALTEXEC = /usr/local/bin/gnu-ld-wrapper LDFLAGS= $(MAPFILE.NES:%=-Wl,-M%) $(MAPFILE.NED:%=-Wl,-M%) \ $(MAPFILE.PGA:%=-Wl,-M%) \ $(BDIRECT) NATIVE_LIBS += libc.so # Hammerhead: Use GNU ld for shared library linking (via LD_ALTEXEC above) GSHARED = -shared # # To work around a bootstrapping problem, we don't assume that the # compiler or environment are properly configured to make the stack # protector work. Disable it right now for the tools. # STACKPROTECT = none ROOTONBLDPROG= $(PROG:%=$(ROOTONBLDBIN)/%) ROOTONBLDSCRIPTS= $(SCRIPTS:%=$(ROOTONBLDBIN)/%) ROOTONBLDMACHPROG= $(PROG:%=$(ROOTONBLDBINMACH)/%) ROOTONBLDMACH64PROG= $(PROG:%=$(ROOTONBLDBINMACH64)/%) ROOTONBLDSHFILES= $(SHFILES:%=$(ROOTONBLDBIN)/%) ROOTONBLDMAKEFILES= $(MAKEFILES:%=$(ROOTONBLDBIN)/%) ROOTONBLDMACHSHFILES= $(SHFILES:%=$(ROOTONBLDBINMACH)/%) ROOTONBLDMACHBINARIES= $(BINARIES:%=$(ROOTONBLDBINMACH)/%) ROOTONBLDETCFILES= $(ETCFILES:%=$(ROOTONBLDETC)/%) ROOTONBLDENVFILES= $(ENVFILES:%=$(ROOTONBLDENV)/%) ROOTONBLDPERLFILES= $(PERLFILES:%=$(ROOTONBLDBIN)/%) ROOTONBLDPERLMODULES= $(PERLMODULES:%=$(ROOTONBLDLIBPERL)/%) ROOTONBLDPYFILES= $(PYFILES:%=$(ROOTONBLDBIN)/%) ROOTONBLDMAN1ONBLDFILES=$(MAN1ONBLDFILES:%=$(ROOTONBLDMAN1ONBLD)/%) ROOTONBLDABIAUDITFILES= $(ABI_AUDITFILES:%=$(ROOTONBLDETCABI)/%) ROOTONBLDEXCEPTFILES= $(EXCEPTFILES:%=$(ROOTONBLDETCEXCEPT)/%) $(ROOTONBLDETCABI)/%: % $(INS.file) $(ROOTONBLDETCEXCEPT)/%: $(CODEMGR_WS)/exception_lists/% $(INS.file) $(ROOTONBLDBIN)/%: % $(INS.file) $(ROOTONBLDBINMACH)/%: % $(INS.file) $(ROOTONBLDBINMACH64)/%: % $(INS.file) $(ROOTONBLDETC)/%: % $(INS.file) $(ROOTONBLDLIBPERL)/%: % $(INS.file) $(ROOTONBLDMAN1ONBLD)/%: % $(INS.file) $(ROOTONBLDENV)/%: % $(INS.file)