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) 1996, 2010, Oracle and/or its affiliates. All rights reserved. 24# Copyright 2016 RackTop Systems. 25# 26 27.KEEP_STATE: 28.KEEP_STATE_FILE: .make.state.$(MACH) 29 30 31include $(SRC)/cmd/sgs/Makefile.var 32 33SRCBASE = ../../../.. 34 35i386_ARCH = intel 36sparc_ARCH = sparc 37 38ARCH = $($(MACH)_ARCH) 39 40# Establish any global flags. 41 42# Setting DEBUG = -DDEBUG (or "make DEBUG=-DDEBUG ...") enables ASSERT() 43# checking. This is automatically enabled for DEBUG builds, not for non-debug 44# builds. Unset the global C99_DISABLE flag to insure we uncover all compiler 45# warnings/errors. 46DEBUG = 47$(NOT_RELEASE_BUILD)DEBUG = -DDEBUG 48 49C99_DISABLE = $(C99_ENABLE) 50 51CFLAGS += $(CCVERBOSE) $(DEBUG) $(XFFLAG) 52CFLAGS64 += $(CCVERBOSE) $(DEBUG) $(XFFLAG) 53 54CERRWARN += -_gcc=-Wno-type-limits 55CERRWARN += -_gcc=-Wno-parentheses 56CERRWARN += -_gcc=-Wno-unused-value 57 58# 59# Location of the shared elfcap code 60# 61ELFCAP= $(SRC)/common/elfcap 62 63# Reassign CPPFLAGS so that local search paths are used before any parent 64# $ROOT paths. 65CPPFLAGS = -I. -I../common -I../../include -I../../include/$(MACH) \ 66 $(CPPFLAGS.master) -I$(ELFCAP) 67 68# PICS64 is unique to our environment 69$(PICS64) := sparc_CFLAGS += -xregs=no%appl -K pic 70$(PICS64) := sparcv9_CFLAGS += -xregs=no%appl -K pic 71$(PICS64) := CPPFLAGS += -DPIC -D_REENTRANT 72 73LDFLAGS += $(ZIGNORE) 74DYNFLAGS += $(ZIGNORE) 75 76# Establish the local tools, proto and package area. 77 78SGSHOME = $(SRC)/cmd/sgs 79SGSPROTO = $(SGSHOME)/proto/$(MACH) 80SGSTOOLS = $(SGSHOME)/tools 81SGSMSGID = $(SGSHOME)/messages 82SGSMSGDIR = $(SGSHOME)/messages/$(MACH) 83SGSONLD = $(ROOT)/opt/SUNWonld 84SGSRPATH = /usr/lib 85SGSRPATH64 = $(SGSRPATH)/$(MACH64) 86 87# Mimic the structure of an installed system. 88 89SGSLIBDIR = $(SGSPROTO)/lib 90SGSPREFIX = $(SGSPROTO)/usr 91SGSBINDIR = $(SGSPREFIX)/bin 92 93# 94# Macros to be used to include link against libconv and include vernote.o 95# 96VERSREF = -ulink_ver_string 97 98LDLIBDIR = -L$(SGSHOME)/libld/$(MACH) 99LDLIBDIR64 = -L$(SGSHOME)/libld/$(MACH64) 100 101CONVLIBDIR = -L$(SGSHOME)/libconv/$(MACH) 102CONVLIBDIR64 = -L$(SGSHOME)/libconv/$(MACH64) 103 104ELFLIBDIR = -L$(SGSHOME)/libelf/$(MACH) 105ELFLIBDIR64 = -L$(SGSHOME)/libelf/$(MACH64) 106 107LDDBGLIBDIR = -L$(SGSHOME)/liblddbg/$(MACH) 108LDDBGLIBDIR64 = -L$(SGSHOME)/liblddbg/$(MACH64) 109 110 111# The cmd/Makefile.com and lib/Makefile.com define TEXT_DOMAIN. We don't need 112# this definition as the sgs utilities obtain their domain via sgsmsg(1l). 113 114DTEXTDOM = 115 116# Define any generic sgsmsg(1l) flags. The default message generation system 117# is to use gettext(3i), add the -C flag to switch to catgets(3c). 118 119SGSMSG = $(SGSTOOLS)/$(MACH)/sgsmsg 120SGSMSG_PIGLATIN_NL = perl $(SGSTOOLS)/common/sgsmsg_piglatin_nl.pl 121CHKMSG = $(SGSTOOLS)/chkmsg.sh 122 123SGSMSGVFLAG = 124SGSMSGFLAGS = $(SGSMSGVFLAG) -i $(SGSMSGID)/sgs.ident 125CHKMSGFLAGS = $(SGSMSGTARG:%=-m %) $(SGSMSGCHK:%=-m %) 126 127# Native targets should use the minimum of ld(1) flags to allow building on 128# previous releases. We use mapfiles to scope, but don't bother versioning. 129 130native := DYNFLAGS = -R$(SGSLIBDIR) -L$(SGSLIBDIR) $(ZNOVERSION) \ 131 $(HSONAME) 132 133# Comment out the following two lines to have the sgs built from the system 134# link-editor, rather than the local proto link-editor. 135CC_USE_PROTO = -Yl,$(SGSBINDIR) 136LD_USE_PROTO = $(SGSBINDIR)/ 137 138# 139# lint-related stuff 140# 141LIBNAME32 = $(LIBNAME:%=%32) 142LIBNAME64 = $(LIBNAME:%=%64) 143LIBNAMES = $(LIBNAME32) $(LIBNAME64) 144 145SGSLINTOUT = lint.out 146LINTOUT1 = lint.out.1 147LINTOUT32 = lint.out.32 148LINTOUT64 = lint.out.64 149LINTOUTS = $(SGSLINTOUT) $(LINTOUT1) $(LINTOUT32) $(LINTOUT64) 150 151LINTLIBSRC = $(LINTLIB:%.ln=%) 152LINTLIB32 = $(LINTLIB:%.ln=%32.ln) 153LINTLIB64 = $(LINTLIB:%.ln=%64.ln) 154LINTLIBS = $(LINTLIB32) $(LINTLIB64) 155 156LINTFLAGS = -m -errtags=yes -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED 157LINTFLAGS64 = -m -errtags=yes -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED \ 158 $(VAR_LINTFLAGS64) 159 160# 161# When building a lint library, no other lint libraries are verified as 162# dependencies, nor is the stardard C lint library processed. All dependency 163# verification is carried out through linting the sources themselves. 164# 165$(LINTLIB) := LINTFLAGS += -n 166$(LINTLIB) := LINTFLAGS64 += -n 167 168$(LINTLIB32) := LINTFLAGS += -n 169$(LINTLIB32) := LINTFLAGS64 += -n 170$(LINTLIB64) := LINTFLAGS += -n 171$(LINTLIB64) := LINTFLAGS64 += -n 172 173# 174# These libraries have two resulting lint libraries. If a dependency is 175# declared using these variables, the substitution for the 32/64 versions at 176# lint time happens automatically (see Makefile.targ). 177# 178LD_LIB = -lld 179LD_LIB32 = -lld32 180LD_LIB64 = -lld64 181 182LDDBG_LIB = -llddbg 183LDDBG_LIB32 = -llddbg32 184LDDBG_LIB64 = -llddbg64 185 186CONV_LIB = -lconv 187CONV_LIB32 = -lconv32 188CONV_LIB64 = -lconv64 189