|
root / base / usr / src / tools / Makefile.tools
Makefile.tools Makefile 136 lines 4.5 KB
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#
# 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)