2N/A#
2N/A# CDDL HEADER START
2N/A#
2N/A# The contents of this file are subject to the terms of the
2N/A# Common Development and Distribution License (the "License").
2N/A# You may not use this file except in compliance with the License.
2N/A#
2N/A# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2N/A# or http://www.opensolaris.org/os/licensing.
2N/A# See the License for the specific language governing permissions
2N/A# and limitations under the License.
2N/A#
2N/A# When distributing Covered Code, include this CDDL HEADER in each
2N/A# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2N/A# If applicable, add the following below this CDDL HEADER, with the
2N/A# fields enclosed by brackets "[]" replaced with your own identifying
2N/A# information: Portions Copyright [yyyy] [name of copyright owner]
2N/A#
2N/A# CDDL HEADER END
2N/A#
6460N/A# Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
2N/A#
2N/A
32N/APATH=/usr/bin:/usr/gnu/bin
32N/A
313N/A# The location of an internal mirror of community source archives that we build
313N/A# in this gate. This mirror has been seeded to include "custom" source archives
313N/A# for a few components where the communities either no longer provide matching
313N/A# source archives or we have changes that aren't reflected in their archives or
313N/A# anywhere else.
313N/AINTERNAL_ARCHIVE_MIRROR = http://userland.us.oracle.com/source-archives
313N/A
313N/A# The location of an external mirror of community source archives that we build
313N/A# in this gate. The external mirror is a replica of the internal mirror.
2238N/AEXTERNAL_ARCHIVE_MIRROR =
6033N/A
313N/A
313N/A# Default to looking for source archives on the internal mirror and the external
313N/A# mirror before we hammer on the community source archive repositories.
313N/Aexport DOWNLOAD_SEARCH_PATH += $(INTERNAL_ARCHIVE_MIRROR)
2238N/Aifneq ($(strip $(EXTERNAL_ARCHIVE_MIRROR)),)
313N/Aexport DOWNLOAD_SEARCH_PATH += $(EXTERNAL_ARCHIVE_MIRROR)
2238N/Aendif
127N/A
127N/A# The workspace starts at the mercurial root
1622N/Aifeq ($(origin WS_TOP), undefined)
1622N/Aexport WS_TOP := $(shell hg root)
1622N/Aendif
127N/A
3996N/AWS_MACH = $(WS_TOP)/$(MACH)
3996N/AWS_LOGS = $(WS_MACH)/logs
3996N/AWS_REPO = $(WS_MACH)/repo
538N/AWS_TOOLS = $(WS_TOP)/tools
538N/AWS_MAKE_RULES = $(WS_TOP)/make-rules
538N/AWS_COMPONENTS = $(WS_TOP)/components
4561N/AWS_LICENSES = $(WS_TOP)/licenses
538N/AWS_INCORPORATIONS = $(WS_TOP)/incorporations
3996N/AWS_LINT_CACHE = $(WS_MACH)/pkglint-cache
538N/A
327N/A# we want our pkg piplines to fail if there is an error
327N/A# (like if pkgdepend fails in the middle of a pipe), but
327N/A# we don't want the builds or ./configure's failing as well.
327N/A# so we only set pipefail for the publish target and have
327N/A# to reset it for the others since they might be invoked
327N/A# as dependencies of publish.
327N/Aexport SHELLOPTS
327N/Abuild: SHELLOPTS=
327N/Atest: SHELLOPTS=
327N/Ainstall: SHELLOPTS=
327N/Apublish: SHELLOPTS=pipefail
327N/A
3996N/A# This can be overridden to avoid rebuilding when you touch a Makefile
3996N/AMAKEFILE_PREREQ = Makefile
3996N/A
2238N/A# some things don't build properly in non-C locales,
2238N/A# so lets stay there
2238N/Aexport LC_ALL=C
2238N/A
177N/ASHELL= /bin/bash
177N/A
3987N/A# We want "nightly" as our publisher, to match other consolidations and
3987N/A# facilitate migrations. G11N wants $(CONSOLIDATION)-localizable for
3987N/A# the localizable publisher.
2N/ACONSOLIDATION = userland
3987N/APUBLISHER ?= nightly
883N/APUBLISHER_LOCALIZABLE ?= $(CONSOLIDATION)-localizable
26N/A
38N/AROOT = /
38N/A
4519N/A# The changset and external source repo used in building the packages.
4519N/ACONSOLIDATION_CHANGESET=$(shell hg identify -i)
4519N/ACONSOLIDATION_REPOSITORY_URL=https://hg.java.net/hg/solaris-userland~gate
4519N/A
3996N/A# Native OS version
1622N/AOS_VERSION := $(shell uname -r)
26N/ASOLARIS_VERSION = $(OS_VERSION:5.%=2.%)
3996N/A# Target OS version
4493N/APKG_SOLARIS_VERSION ?= 0.5.11
3996N/A
477N/A
538N/Ainclude $(WS_MAKE_RULES)/ips-buildinfo.mk
38N/A
3996N/ACOMPILER ?= studio
6N/ABITS = 32
3778N/A
3985N/A# The default version should go last.
3985N/APYTHON_VERSION = 2.7
3985N/APYTHON2_VERSIONS = 2.6 2.7
3778N/APYTHON3_VERSIONS = 3.4
3778N/APYTHON_VERSIONS = $(PYTHON3_VERSIONS) $(PYTHON2_VERSIONS)
2N/A
34N/ABASS_O_MATIC = $(WS_TOOLS)/bass-o-matic
34N/A
94N/ACLONEY = $(WS_TOOLS)/cloney
94N/A
156N/ACONFIG_SHELL = /bin/bash
156N/A
34N/APKG_REPO = file:$(WS_REPO)
59N/A
1273N/ACOMPONENT_SRC_NAME = $(COMPONENT_NAME)
1273N/A
1622N/ACOMPONENT_DIR := $(shell pwd)
72N/ASOURCE_DIR = $(COMPONENT_DIR)/$(COMPONENT_SRC)
72N/ABUILD_DIR = $(COMPONENT_DIR)/build
59N/APROTO_DIR = $(BUILD_DIR)/prototype/$(MACH)
2N/A
85N/AETCDIR = /etc
61N/AUSRDIR = /usr
61N/ABINDIR = /bin
220N/ASBINDIR = /sbin
61N/ALIBDIR = /lib
61N/AUSRBINDIR = $(USRDIR)/bin
1762N/AUSRBINDIR64 = $(USRDIR)/bin/$(MACH64)
172N/AUSRSBINDIR = $(USRDIR)/sbin
61N/AUSRLIBDIR = $(USRDIR)/lib
61N/AUSRSHAREDIR = $(USRDIR)/share
220N/AUSRINCDIR = $(USRDIR)/include
220N/AUSRSHARELOCALEDIR = $(USRSHAREDIR)/locale
61N/AUSRSHAREMANDIR = $(USRSHAREDIR)/man
172N/AUSRSHAREDOCDIR = $(USRSHAREDIR)/doc
454N/AUSRSHARELIBDIR = $(USRSHAREDIR)/lib
61N/AUSRSHAREMAN1DIR = $(USRSHAREMANDIR)/man1
172N/AUSRSHAREMAN1MDIR = $(USRSHAREMANDIR)/man1m
61N/AUSRSHAREMAN3DIR = $(USRSHAREMANDIR)/man3
152N/AUSRSHAREMAN4DIR = $(USRSHAREMANDIR)/man4
74N/AUSRSHAREMAN5DIR = $(USRSHAREMANDIR)/man5
61N/AUSRLIBDIR64 = $(USRDIR)/lib/$(MACH64)
220N/APROTOBINDIR = $(PROTO_DIR)/$(BINDIR)
85N/APROTOETCDIR = $(PROTO_DIR)/$(ETCDIR)
172N/APROTOETCSECDIR = $(PROTO_DIR)/$(ETCDIR)/security
61N/APROTOUSRDIR = $(PROTO_DIR)/$(USRDIR)
172N/APROTOLIBDIR = $(PROTO_DIR)/$(LIBDIR)
61N/APROTOUSRBINDIR = $(PROTO_DIR)/$(USRBINDIR)
3996N/APROTOUSRBINDIR64 = $(PROTO_DIR)/$(USRBINDIR64)
172N/APROTOUSRSBINDIR = $(PROTO_DIR)/$(USRSBINDIR)
61N/APROTOUSRLIBDIR = $(PROTO_DIR)/$(USRLIBDIR)
61N/APROTOUSRLIBDIR64 = $(PROTO_DIR)/$(USRLIBDIR64)
220N/APROTOUSRINCDIR = $(PROTO_DIR)/$(USRINCDIR)
61N/APROTOUSRSHAREDIR = $(PROTO_DIR)/$(USRSHAREDIR)
454N/APROTOUSRSHARELIBDIR = $(PROTO_DIR)/$(USRSHARELIBDIR)
61N/APROTOUSRSHAREMANDIR = $(PROTO_DIR)/$(USRSHAREMANDIR)
172N/APROTOUSRSHAREDOCDIR = $(PROTO_DIR)/$(USRSHAREDOCDIR)
61N/APROTOUSRSHAREMAN1DIR = $(PROTO_DIR)/$(USRSHAREMAN1DIR)
172N/APROTOUSRSHAREMAN1MDIR = $(PROTO_DIR)/$(USRSHAREMAN1MDIR)
61N/APROTOUSRSHAREMAN3DIR = $(PROTO_DIR)/$(USRSHAREMAN3DIR)
152N/APROTOUSRSHAREMAN4DIR = $(PROTO_DIR)/$(USRSHAREMAN4DIR)
152N/APROTOUSRSHAREMAN5DIR = $(PROTO_DIR)/$(USRSHAREMAN5DIR)
220N/APROTOUSRSHARELOCALEDIR = $(PROTO_DIR)/$(USRSHARELOCALEDIR)
61N/A
61N/A
43N/ASFWBIN = /usr/sfw/bin
220N/ASFWINCLUDE = /usr/sfw/include
43N/ASFWLIB = /usr/sfw/lib
120N/ASFWLIB64 = /usr/sfw/lib/$(MACH64)
64N/ASFWSHARE = /usr/sfw/share
64N/ASFWSHAREMAN = /usr/sfw/share/man
64N/ASFWSHAREMAN1 = /usr/sfw/share/man/man1
43N/APROTOSFWBIN = $(PROTO_DIR)/$(SFWBIN)
43N/APROTOSFWLIB = $(PROTO_DIR)/$(SFWLIB)
120N/APROTOSFWLIB64 = $(PROTO_DIR)/$(SFWLIB64)
64N/APROTOSFWSHARE = $(PROTO_DIR)/$(SFWSHARE)
64N/APROTOSFWSHAREMAN = $(PROTO_DIR)/$(SFWSHAREMAN)
64N/APROTOSFWSHAREMAN1 = $(PROTO_DIR)/$(SFWSHAREMAN1)
220N/APROTOSFWINCLUDE = $(PROTO_DIR)/$(SFWINCLUDE)
64N/A
64N/AGNUBIN = /usr/gnu/bin
486N/AGNULIB = /usr/gnu/lib
486N/AGNULIB64 = /usr/gnu/lib/$(MACH64)
64N/AGNUSHARE = /usr/gnu/share
64N/AGNUSHAREMAN = /usr/gnu/share/man
64N/AGNUSHAREMAN1 = /usr/gnu/share/man/man1
64N/APROTOGNUBIN = $(PROTO_DIR)/$(GNUBIN)
64N/APROTOGNUSHARE = $(PROTO_DIR)/$(GNUSHARE)
64N/APROTOGNUSHAREMAN = $(PROTO_DIR)/$(GNUSHAREMAN)
64N/APROTOGNUSHAREMAN1 = $(PROTO_DIR)/$(GNUSHAREMAN1)
43N/A
16N/A# work around _TIME, _DATE, embedded date chatter in component builds
16N/A# to use, set TIME_CONSTANT in the component Makefile and add $(CONSTANT_TIME)
16N/A# to the appropriate {CONFIGURE|BUILD|INSTALL}_ENV
34N/ACONSTANT_TIME = LD_PRELOAD_32=$(WS_TOOLS)/time-$(MACH32).so
34N/ACONSTANT_TIME += LD_PRELOAD_64=$(WS_TOOLS)/time-$(MACH64).so
16N/ACONSTANT_TIME += TIME_CONSTANT=$(TIME_CONSTANT)
6N/A
12N/A# set MACH from uname -p to either sparc or i386
1622N/AMACH := $(shell uname -p)
12N/A
12N/A# set MACH32 from MACH to either sparcv7 or i86
12N/AMACH32_1 = $(MACH:sparc=sparcv7)
12N/AMACH32 = $(MACH32_1:i386=i86)
12N/A
12N/A# set MACH64 from MACH to either sparcv9 or amd64
12N/AMACH64_1 = $(MACH:sparc=sparcv9)
12N/AMACH64 = $(MACH64_1:i386=amd64)
12N/A
369N/ACONFIGURE_32 = $(BUILD_DIR_32)/.configured
369N/ACONFIGURE_64 = $(BUILD_DIR_64)/.configured
3781N/ACONFIGURE_32_and_64 = $(CONFIGURE_32) $(CONFIGURE_64)
369N/A
6033N/ABUILD_DIR_NO_ARCH = $(BUILD_DIR)/$(MACH)
61N/ABUILD_DIR_32 = $(BUILD_DIR)/$(MACH32)
61N/ABUILD_DIR_64 = $(BUILD_DIR)/$(MACH64)
61N/A
61N/ABUILD_32 = $(BUILD_DIR_32)/.built
61N/ABUILD_64 = $(BUILD_DIR_64)/.built
12N/ABUILD_32_and_64 = $(BUILD_32) $(BUILD_64)
181N/A$(BUILD_DIR_32)/.built: BITS=32
181N/A$(BUILD_DIR_64)/.built: BITS=64
12N/A
6033N/AINSTALL_NO_ARCH = $(BUILD_DIR_NO_ARCH)/.installed
61N/AINSTALL_32 = $(BUILD_DIR_32)/.installed
61N/AINSTALL_64 = $(BUILD_DIR_64)/.installed
12N/AINSTALL_32_and_64 = $(INSTALL_32) $(INSTALL_64)
279N/A$(BUILD_DIR_32)/.installed: BITS=32
279N/A$(BUILD_DIR_64)/.installed: BITS=64
181N/A
181N/A# set the default target for installation of the component
181N/ACOMPONENT_INSTALL_TARGETS = install
2N/A
4239N/A# set the default env command to use for test of the component
4239N/ACOMPONENT_TEST_ENV_CMD = $(ENV)
4239N/A
99N/ATEST_32 = $(BUILD_DIR_32)/.tested
99N/ATEST_64 = $(BUILD_DIR_64)/.tested
99N/ATEST_32_and_64 = $(TEST_32) $(TEST_64)
3996N/A
3996N/A$(BUILD_DIR_32)/.tested: BITS=32
3996N/A$(BUILD_DIR_64)/.tested: BITS=64
181N/A
181N/A# set the default target for test of the component
181N/ACOMPONENT_TEST_TARGETS = check
99N/A
40N/A# BUILD_TOOLS is the root of all tools not normally installed on the system.
844N/ABUILD_TOOLS ?= /ws/on11update-tools
40N/A
40N/ASPRO_ROOT = $(BUILD_TOOLS)/SUNWspro
43N/ASPRO_VROOT = $(SPRO_ROOT)/sunstudio12.1
40N/A
4275N/APARFAIT_ROOT = $(BUILD_TOOLS)/parfait/parfait-tools-1.6.1
3996N/APARFAIT_TOOLS= $(WS_TOOLS)/$(MACH)/parfait
3996N/APARFAIT_TOOLS_GCC3= $(PARFAIT_TOOLS)/gcc3
814N/APARFAIT= $(PARFAIT_ROOT)/bin/parfait
814N/Aexport PARFAIT_NATIVESUNCC=$(SPRO_VROOT)/bin/cc
814N/Aexport PARFAIT_NATIVESUNCXX=$(SPRO_VROOT)/bin/CC
814N/Aexport PARFAIT_NATIVEGCC=$(GCC_ROOT)/bin/gcc
814N/Aexport PARFAIT_NATIVEGXX=$(GCC_ROOT)/bin/g++
814N/A# for now
814N/Aexport PARFAIT_CLANG=0
814N/A
3996N/AGCC_ROOT = /usr/gcc/4.7
2238N/AGCC3_ROOT = /usr/sfw
2N/A
99N/ACC.studio.32 = $(SPRO_VROOT)/bin/cc
206N/ACXX.studio.32 = $(SPRO_VROOT)/bin/CC
2N/A
814N/A
99N/ACC.studio.64 = $(SPRO_VROOT)/bin/cc
206N/ACXX.studio.64 = $(SPRO_VROOT)/bin/CC
2N/A
151N/ACC.gcc.32 = $(GCC_ROOT)/bin/gcc
206N/ACXX.gcc.32 = $(GCC_ROOT)/bin/g++
2N/A
151N/ACC.gcc.64 = $(GCC_ROOT)/bin/gcc
206N/ACXX.gcc.64 = $(GCC_ROOT)/bin/g++
2N/A
3996N/ACC.gcc3.32 = $(GCC3_ROOT)/bin/gcc
3996N/ACXX.gcc3.32 = $(GCC3_ROOT)/bin/g++
2238N/A
3996N/ACC.gcc3.64 = $(GCC3_ROOT)/bin/gcc
3996N/ACXX.gcc3.64 = $(GCC3_ROOT)/bin/g++
2N/A
61N/Alint.32 = $(SPRO_VROOT)/bin/lint -m32
61N/Alint.64 = $(SPRO_VROOT)/bin/lint -m64
61N/A
61N/ALINT = $(lint.$(BITS))
61N/A
16N/ALD = /usr/bin/ld
16N/A
814N/Aifeq ($(strip $(PARFAIT_BUILD)),yes)
2238N/ACC.studio.32 = $(PARFAIT_TOOLS)/cc
2238N/ACXX.studio.32 = $(PARFAIT_TOOLS)/CC
2238N/ACC.studio.64 = $(PARFAIT_TOOLS)/cc
2238N/ACXX.studio.64 = $(PARFAIT_TOOLS)/CC
2238N/ACC.gcc.32 = $(PARFAIT_TOOLS)/gcc
2238N/ACXX.gcc.32 = $(PARFAIT_TOOLS)/g++
2238N/ACC.gcc.64 = $(PARFAIT_TOOLS)/gcc
2238N/ACXX.gcc.64 = $(PARFAIT_TOOLS)/g++
3996N/ACC.gcc3.32 = $(PARFAIT_TOOLS_GCC3)/gcc
3996N/ACXX.gcc3.32 = $(PARFAIT_TOOLS_GCC3)/g++
3996N/ACC.gcc3.64 = $(PARFAIT_TOOLS_GCC3)/gcc
3996N/ACXX.gcc3.64 = $(PARFAIT_TOOLS_GCC3)/g++
2238N/ALD = $(PARFAIT_TOOLS)/ld
814N/Aendif
814N/A
814N/ACC = $(CC.$(COMPILER).$(BITS))
814N/ACXX = $(CXX.$(COMPILER).$(BITS))
814N/A
2140N/ARUBY_VERSION = 1.9
2140N/ARUBY_LIB_VERSION = 1.9.1
2127N/ARUBY.1.9 = /usr/ruby/1.9/bin/ruby
4324N/ARUBY.2.1 = /usr/ruby/2.1/bin/ruby
2127N/ARUBY = $(RUBY.$(RUBY_VERSION))
3293N/A# Use the ruby lib versions to represent the RUBY_VERSIONS that
3293N/A# need to get built. This is done because during package transformations
3293N/A# both the ruby version and the ruby library version are needed.
3293N/ARUBY_VERSIONS = $(RUBY_LIB_VERSION)
2140N/A
3783N/APYTHON.2.6.VENDOR_PACKAGES.32 = /usr/lib/python2.6/vendor-packages
3783N/APYTHON.2.6.VENDOR_PACKAGES.64 = /usr/lib/python2.6/vendor-packages/64
3783N/APYTHON.2.6.VENDOR_PACKAGES = $(PYTHON.2.6.VENDOR_PACKAGES.$(BITS))
3783N/A
3783N/APYTHON.2.7.VENDOR_PACKAGES.32 = /usr/lib/python2.7/vendor-packages
3783N/APYTHON.2.7.VENDOR_PACKAGES.64 = /usr/lib/python2.7/vendor-packages/64
3783N/APYTHON.2.7.VENDOR_PACKAGES = $(PYTHON.2.7.VENDOR_PACKAGES.$(BITS))
3783N/A
3783N/APYTHON.3.4.VENDOR_PACKAGES.64 = /usr/lib/python3.4/vendor-packages/64
3783N/APYTHON.3.4.VENDOR_PACKAGES = $(PYTHON.3.4.VENDOR_PACKAGES.$(BITS))
3783N/A
148N/APYTHON_VENDOR_PACKAGES.32 = /usr/lib/python$(PYTHON_VERSION)/vendor-packages
148N/APYTHON_VENDOR_PACKAGES.64 = /usr/lib/python$(PYTHON_VERSION)/vendor-packages/64
148N/APYTHON_VENDOR_PACKAGES = $(PYTHON_VENDOR_PACKAGES.$(BITS))
148N/A
4225N/AUSRBIN.32 = /usr/bin
4225N/AUSRBIN.64 = /usr/bin/$(MACH64)
4225N/AUSRBIN = $(USRBIN.$(BITS))
2N/A
4225N/APYTHON.2.6.32 = $(USRBIN.32)/python2.6
4225N/APYTHON.2.6.64 = $(USRBIN.64)/python2.6
4225N/APYTHON.2.6 = $(USRBIN)/python2.6
4225N/A
4225N/APYTHON.2.7.32 = $(USRBIN.32)/python2.7
4225N/APYTHON.2.7.64 = $(USRBIN.64)/python2.7
4225N/APYTHON.2.7 = $(USRBIN)/python2.7
727N/A
3778N/A# Although we build Python 3 64-bit only, the BUILD_NO_ARCH macro is written
3778N/A# in such a way that we still need the .32 macro below. And since we build
3778N/A# 64-bit only, we stick it directly in usr/bin (i.e., the 32-bit path) rather
3778N/A# than the 64-bit path.
4225N/APYTHON.3.4.32 = $(USRBIN.32)/python3.4
4225N/APYTHON.3.4.64 = $(USRBIN.32)/python3.4
4225N/APYTHON.3.4 = $(USRBIN.32)/python3.4
3778N/A
1192N/APYTHON.32 = $(PYTHON.$(PYTHON_VERSION).32)
1192N/APYTHON.64 = $(PYTHON.$(PYTHON_VERSION).64)
148N/APYTHON = $(PYTHON.$(PYTHON_VERSION).$(BITS))
2N/A
146N/A# The default is site-packages, but that directory belongs to the end-user.
146N/A# Modules which are shipped by the OS but not with the core Python distribution
146N/A# belong in vendor-packages.
146N/APYTHON_LIB= /usr/lib/python$(PYTHON_VERSION)/vendor-packages
727N/APYTHON_DATA= $(PYTHON_LIB)
146N/A
4005N/AJAVA8_HOME = /usr/jdk/instances/jdk1.8.0
3996N/AJAVA7_HOME = /usr/jdk/instances/jdk1.7.0
4005N/AJAVA_HOME = $(JAVA8_HOME)
116N/A
260N/A# This is the default BUILD version of perl
260N/A# Not necessarily the system's default version, i.e. /usr/bin/perl
3996N/APERL_VERSION ?= 5.12
260N/A
260N/APERL_VERSIONS = 5.8.4 5.12
260N/A
3996N/APERL.5.8.4 = /usr/perl5/5.8.4/bin/perl
260N/APERL.5.12 = /usr/perl5/5.12/bin/perl
1767N/APERL.5.12-mt = /usr/perl5/5.12/bin/perl-threaded
260N/A
260N/APERL = $(PERL.$(PERL_VERSION))
127N/A
3996N/APERL_ARCH := $(shell $(PERL) -e 'use Config; print $$Config{archname}')
1767N/APERL_ARCH_FUNC= $(shell $(1) -e 'use Config; print $$Config{archname}')
260N/A# Optimally we should ask perl which C compiler was used but it doesn't
260N/A# result in a full path name. Only "c" is being recorded
260N/A# inside perl builds while we actually need a full path to
260N/A# the studio compiler.
3996N/A#PERL_CC := $(shell $(PERL) -e 'use Config; print $$Config{cc}')
3996N/APERL_OPTIMIZE :=$(shell $(PERL) -e 'use Config; print $$Config{optimize}')
260N/A
260N/APKG_MACROS += PERL_ARCH=$(PERL_ARCH)
260N/APKG_MACROS += PERL_VERSION=$(PERL_VERSION)
260N/A
1713N/A# This is the default BUILD version of tcl
1713N/A# Not necessarily the system's default version, i.e. /usr/bin/tclsh
1713N/ATCL_VERSION = 8.5
1713N/ATCLSH.8.5.i386.32 = /usr/bin/i86/tclsh8.5
1713N/ATCLSH.8.5.i386.64 = /usr/bin/amd64/tclsh8.5
1713N/ATCLSH.8.5.sparc.32 = /usr/bin/sparcv7/tclsh8.5
1713N/ATCLSH.8.5.sparc.64 = /usr/bin/sparcv9/tclsh8.5
1713N/ATCLSH = $(TCLSH.$(TCL_VERSION).$(MACH).$(BITS))
1713N/A
260N/ACCSMAKE = /usr/ccs/bin/make
6460N/AELFEDIT = /usr/bin/elfedit
2N/AGMAKE = /usr/gnu/bin/make
2N/AGPATCH = /usr/gnu/bin/patch
82N/APATCH_LEVEL = 1
99N/AGPATCH_BACKUP = --backup --version-control=numbered
99N/AGPATCH_FLAGS = -p$(PATCH_LEVEL) $(GPATCH_BACKUP)
302N/AGSED = /usr/gnu/bin/sed
3996N/AGDIFF = /usr/gnu/bin/diff
3996N/AGSORT = /usr/gnu/bin/sort
2N/A
105N/APKGREPO = /usr/bin/pkgrepo
2N/APKGSEND = /usr/bin/pkgsend
2238N/Aifeq ($(strip $(PKGLINT_COMPONENT)),)
3996N/APKGLINT = /usr/bin/pkglint
2238N/Aelse
3996N/APKGLINT = ${WS_TOOLS}/pkglint
2238N/Aendif
2N/A
160N/AACLOCAL = /usr/bin/aclocal-1.10
160N/AAUTOMAKE = /usr/bin/automake-1.10
160N/AAUTORECONF = /usr/bin/autoreconf
160N/A
165N/AKSH93 = /usr/bin/ksh93
2N/ATOUCH = /usr/bin/touch
2N/AMKDIR = /bin/mkdir -p
2N/ARM = /bin/rm -f
7N/ACP = /bin/cp -f
142N/AMV = /bin/mv -f
43N/ALN = /bin/ln
3996N/ACAT = /bin/cat
43N/ASYMLINK = /bin/ln -s
16N/AENV = /usr/bin/env
4239N/AGNU_ENV = /usr/gnu/bin/env
43N/AINSTALL = /usr/bin/ginstall
3996N/AGNU_GREP = /usr/gnu/bin/grep
138N/ACHMOD = /usr/bin/chmod
224N/ANAWK = /usr/bin/nawk
7088N/ATAR = /usr/bin/tar
224N/ATEE = /usr/bin/tee
61N/A
61N/AINS.dir= $(INSTALL) -d $@
61N/AINS.file= $(INSTALL) -m 444 $< $(@D)
61N/A
206N/APKG_CONFIG_PATH.32 = /usr/lib/pkgconfig
206N/APKG_CONFIG_PATH.64 = /usr/lib/$(MACH64)/pkgconfig
1192N/APKG_CONFIG_PATH = $(PKG_CONFIG_PATH.$(BITS))
206N/A
206N/A
61N/A#
99N/A# C preprocessor flag sets to ease feature selection. Add the required
99N/A# feature to your Makefile with CPPFLAGS += $(FEATURE_MACRO) and add to
99N/A# the component build with CONFIGURE_OPTIONS += CPPFLAGS="$(CPPFLAGS)" or
99N/A# similiar.
99N/A#
99N/A
99N/A# Enables visibility of some c99 math functions that aren't visible by default.
99N/A# What other side-effects are there?
99N/ACPP_C99_EXTENDED_MATH = -D_STDC_99
61N/A
99N/A# Enables large file support for components that have no other means of doing
99N/A# so. Use CPP_LARGEFILES and not the .32/.64 variety directly
1622N/ACPP_LARGEFILES.32 := $(shell getconf LFS_CFLAGS)
1622N/ACPP_LARGEFILES.64 := $(shell getconf LFS64_CFLAGS)
99N/ACPP_LARGEFILES = $(CPP_LARGEFILES.$(BITS))
61N/A
99N/A# Enables some #pragma redefine_extname to POSIX-compliant Standard C Library
99N/A# functions. Also avoids the component's #define _POSIX_C_SOURCE to some value
99N/A# we currently do not support.
99N/ACPP_POSIX = -D_POSIX_C_SOURCE=200112L -D_POSIX_PTHREAD_SEMANTICS
61N/A
61N/A# XPG6 mode. This option enables XPG6 conformance, plus extensions.
61N/A# Amongst other things, this option will cause system calls like
61N/A# popen (3C) and system (3C) to invoke the standards-conforming
99N/A# shell, /usr/xpg4/bin/sh, instead of /usr/bin/sh. Add studio_XPG6MODE to
99N/A# CFLAGS instead of using this directly
99N/ACPP_XPG6MODE= -D_XOPEN_SOURCE=600 -D__EXTENSIONS__=1 -D_XPG6
99N/A
200N/A# XPG5 mode. These options are specific for C++, where _XPG6,
200N/A# _XOPEN_SOURCE=600 and C99 are illegal. -D__EXTENSIONS__=1 is legal in C++.
200N/ACPP_XPG5MODE= -D_XOPEN_SOURCE=500 -D__EXTENSIONS__=1 -D_XPG5
99N/A
99N/A#
99N/A# Studio C compiler flag sets to ease feature selection. Add the required
99N/A# feature to your Makefile with CFLAGS += $(FEATURE_MACRO) and add to the
99N/A# component build with CONFIGURE_OPTIONS += CFLAGS="$(CFLAGS)" or similiar.
99N/A#
99N/A
99N/A# Generate 32/64 bit objects
99N/ACC_BITS = -m$(BITS)
99N/A
99N/A# Code generation instruction set and optimization 'hints'. Use studio_XBITS
99N/A# and not the .arch.bits variety directly.
99N/Astudio_XBITS.sparc.32 = -xtarget=ultra2 -xarch=sparcvis -xchip=ultra2
839N/Astudio_XBITS.sparc.64 =
839N/Aifneq ($(strip $(PARFAIT_BUILD)),yes)
839N/Astudio_XBITS.sparc.64 += -xtarget=ultra2
839N/Aendif
839N/Astudio_XBITS.sparc.64 += -xarch=sparcvis -xchip=ultra2
102N/Astudio_XBITS.i386.32 = -xchip=pentium
108N/Astudio_XBITS.i386.64 = -xchip=generic -Ui386 -U__i386
102N/Astudio_XBITS = $(studio_XBITS.$(MACH).$(BITS))
61N/A
99N/A# Turn on recognition of supported C99 language features and enable the 1999 C
99N/A# standard library semantics of routines that appear in both the 1990 and
99N/A# 1999 C standard. To use set studio_C99MODE=$(studio_99_ENABLE) in your
99N/A# component Makefile.
99N/Astudio_C99_ENABLE = -xc99=all
99N/A
99N/A# Turn off recognition of C99 language features, and do not enable the 1999 C
99N/A# standard library semantics of routines that appeared in both the 1990 and
99N/A# 1999 C standard. To use set studio_C99MODE=$(studio_99_DISABLE) in your
99N/A# component Makefile.
99N/Astudio_C99_DISABLE = -xc99=none
99N/A
99N/A# Use the compiler default 'xc99=all,no_lib'
99N/Astudio_C99MODE =
99N/A
200N/A# For C++, compatibility with C99 (which is technically illegal) is
200N/A# enabled in a different way. So, we must use a different macro for it.
200N/Astudio_cplusplus_C99_ENABLE = -xlang=c99
200N/A
200N/A# Turn it off.
200N/Astudio_cplusplus_C99_DISABLE =
200N/A
200N/A# And this is the macro you should actually use
200N/Astudio_cplusplus_C99MODE =
200N/A
99N/A# Allow zero-sized struct/union declarations and void functions with return
99N/A# statements.
99N/Astudio_FEATURES_EXTENSIONS = -features=extensions
99N/A
99N/A# Control the Studio optimization level.
102N/Astudio_OPT.sparc.32 = -xO4
102N/Astudio_OPT.sparc.64 = -xO4
102N/Astudio_OPT.i386.32 = -xO4
102N/Astudio_OPT.i386.64 = -xO4
102N/Astudio_OPT = $(studio_OPT.$(MACH).$(BITS))
99N/A
99N/A# Studio PIC code generation. Use CC_PIC instead to select PIC code generation.
99N/Astudio_PIC = -KPIC -DPIC
61N/A
61N/A# The Sun Studio 11 compiler has changed the behaviour of integer
61N/A# wrap arounds and so a flag is needed to use the legacy behaviour
61N/A# (without this flag panics/hangs could be exposed within the source).
99N/A# This is used through studio_IROPTS, not the 'sparc' variety.
99N/Astudio_IROPTS.sparc = -W2,-xwrap_int
102N/Astudio_IROPTS = $(studio_IROPTS.$(MACH))
99N/A
99N/A# Control register usage for generated code. SPARC ABI requires system
99N/A# libraries not to use application registers. x86 requires 'no%frameptr' at
99N/A# x04 or higher.
459N/A
459N/A# We should just use -xregs but we need to workaround 7030022. Note
459N/A# that we can't use the (documented) -Wc,-xregs workaround because
459N/A# libtool really hates -Wc and thinks it should be -Wl. Instead
459N/A# we use an (undocumented) option which actually happens to be what
459N/A# CC would use.
459N/Astudio_XREGS.sparc = -Qoption cg -xregs=no%appl
99N/Astudio_XREGS.i386 = -xregs=no%frameptr
102N/Astudio_XREGS = $(studio_XREGS.$(MACH))
99N/A
459N/Agcc_XREGS.sparc = -mno-app-regs
459N/Agcc_XREGS.i386 =
459N/Agcc_XREGS = $(gcc_XREGS.$(MACH))
459N/A
109N/A# Set data alignment on sparc to reasonable values, 8 byte alignment for 32 bit
109N/A# objects and 16 byte alignment for 64 bit objects. This is added to CFLAGS by
109N/A# default.
109N/Astudio_ALIGN.sparc.32 = -xmemalign=8s
109N/Astudio_ALIGN.sparc.64 = -xmemalign=16s
109N/Astudio_ALIGN = $(studio_ALIGN.$(MACH).$(BITS))
109N/A
109N/A# Studio shorthand for building multi-threaded code, enables -D_REENTRANT and
109N/A# linking with threadin support. This is added to CFLAGS by default, override
109N/A# studio_MT to turn this off.
109N/Astudio_MT = -mt
109N/A
99N/A# See CPP_XPG6MODE comment above.
99N/Astudio_XPG6MODE = $(studio_C99MODE) $(CPP_XPG6MODE)
99N/AXPG6MODE = $(studio_XPG6MODE)
99N/A
200N/A# See CPP_XPG5MODE comment above. You can only use this in C++, not in C99.
200N/Astudio_XPG5MODE = $(studio_cplusplus_C99MODE) $(CPP_XPG5MODE)
200N/AXPG5MODE = $(studio_XPG5MODE)
200N/A
99N/A# Default Studio C compiler flags. Add the required feature to your Makefile
99N/A# with CFLAGS += $(FEATURE_MACRO) and add to the component build with
99N/A# CONFIGURE_OPTIONS += CFLAGS="$(CFLAGS)" or similiar. In most cases, it
99N/A# should not be necessary to add CFLAGS to any environment other than the
99N/A# configure environment.
99N/ACFLAGS.studio += $(studio_OPT) $(studio_XBITS) $(studio_XREGS) \
109N/A $(studio_IROPTS) $(studio_C99MODE) $(studio_ALIGN) \
109N/A $(studio_MT)
61N/A
99N/A#
99N/A# GNU C compiler flag sets to ease feature selection. Add the required
99N/A# feature to your Makefile with CFLAGS += $(FEATURE_MACRO) and add to the
99N/A# component build with CONFIGURE_OPTIONS += CFLAGS="$(CFLAGS)" or similiar.
99N/A#
99N/A
99N/A# GCC Compiler optimization flag
99N/Agcc_OPT = -O3
99N/A
99N/A# GCC PIC code generation. Use CC_PIC instead to select PIC code generation.
99N/Agcc_PIC = -fPIC -DPIC
61N/A
99N/A# Generic macro for PIC code generation. Use this macro instead of the
99N/A# compiler specific variant.
99N/ACC_PIC = $($(COMPILER)_PIC)
99N/A
99N/A
99N/A# Default GNU C compiler flags. Add the required feature to your Makefile
99N/A# with CFLAGS += $(FEATURE_MACRO) and add to the component build with
99N/A# CONFIGURE_OPTIONS += CFLAGS="$(CFLAGS)" or similiar. In most cases, it
99N/A# should not be necessary to add CFLAGS to any environment other than the
99N/A# configure environment.
99N/ACFLAGS.gcc += $(gcc_OPT)
459N/ACFLAGS.gcc += $(gcc_XREGS)
3996N/ACFLAGS.gcc3 += $(gcc_OPT)
3996N/ACFLAGS.gcc3 += $(gcc_XREGS)
99N/A
99N/A
99N/A# Build 32 or 64 bit objects.
99N/ACFLAGS += $(CC_BITS)
99N/A
99N/A# Add compiler specific 'default' features
99N/ACFLAGS += $(CFLAGS.$(COMPILER))
61N/A
99N/A
206N/A# Studio C++ requires -norunpath to avoid adding its location into the RUNPATH
206N/A# to C++ applications.
206N/Astudio_NORUNPATH = -norunpath
206N/A
206N/A# To link in standard mode (the default mode) without any C++ libraries
206N/A# (except libCrun), use studio_LIBRARY_NONE in your component Makefile.
206N/Astudio_LIBRARY_NONE = -library=%none
206N/A
206N/A# Don't link C++ with any C++ Runtime or Standard C++ library
206N/Astudio_CXXLIB_NONE = -xnolib
206N/A
206N/A# Link C++ with the Studio C++ Runtime and Standard C++ library. This is the
206N/A# default for "standard" mode.
206N/Astudio_CXXLIB_CSTD = -library=Cstd,Crun
206N/A
206N/A# link C++ with the Studio C++ Runtime and Apache Standard C++ library
206N/Astudio_CXXLIB_APACHE = -library=stdcxx4,Crun
206N/A
206N/A# Add the C++ ABI compatibility flags for older ABI compatibility. The default
206N/A# is "standard mode" (-compat=5)
206N/Astudio_COMPAT_VERSION_4 = -compat=4
206N/A
206N/A# Tell the compiler that we don't want the studio runpath added to the
206N/A# linker flags. We never want the Studio location added to the RUNPATH.
206N/ACXXFLAGS += $($(COMPILER)_NORUNPATH)
206N/A
219N/A# Build 32 or 64 bit objects in C++ as well.
219N/ACXXFLAGS += $(CC_BITS)
219N/A
99N/A#
99N/A# Solaris linker flag sets to ease feature selection. Add the required
99N/A# feature to your Makefile with LDFLAGS += $(FEATURE_MACRO) and add to the
99N/A# component build with CONFIGURE_OPTIONS += LDFLAGS="$(LDFLAGS)" or similiar.
99N/A#
99N/A
206N/A# set the bittedness that we want to link
206N/ALD_BITS = -$(BITS)
206N/A
99N/A# Reduce the symbol table size, effectively conflicting with -g. We should
99N/A# get linker guidance here.
99N/ALD_Z_REDLOCSYM = -z redlocsym
99N/A
99N/A# Cause the linker to rescan archive libraries and resolve remaining unresolved
99N/A# symbols recursively until all symbols are resolved. Components should be
99N/A# linking in the libraries they need, in the required order. This should
99N/A# only be required if the component's native build is horribly broken.
99N/ALD_Z_RESCAN_NOW = -z rescan-now
99N/A
2238N/ALD_Z_TEXT = -z text
99N/A
806N/A# make sure that -lc is always present when building shared objects.
806N/ALD_DEF_LIBS += -lc
806N/A
99N/A# make sure all symbols are defined.
99N/ALD_Z_DEFS = -z defs
99N/A
170N/A# eliminate unreferenced dynamic dependencies
170N/ALD_Z_IGNORE = -z ignore
170N/A
2238N/A# eliminate comments
3996N/ALD_Z_STRIP_CLASS = -z strip-class=comment
2238N/A
99N/A# use direct binding
99N/ALD_B_DIRECT = -Bdirect
61N/A
2337N/A# use generic macro names for enabling/disabling ASLR
2337N/AASLR_ENABLE = -z aslr=enable
2337N/AASLR_DISABLE = -z aslr=disable
2337N/AASLR_NOT_APPLICABLE = -z aslr=disable
2337N/AASLR_MODE = $(ASLR_DISABLE)
2337N/A
2337N/A# by default, turn off Address Space Layout Randomization for ELF executables;
2337N/A# to explicitly enable ASLR, set ASLR_MODE = $(ASLR_ENABLE)
2337N/A# in that component's Makefile
2337N/ALD_Z_ASLR = $(ASLR_MODE)
2337N/A
99N/A#
99N/A# More Solaris linker flags that we want to be sure that everyone gets. This
99N/A# is automatically added to the calling environment during the 'build' and
99N/A# 'install' phases of the component build. Each individual feature can be
99N/A# turned off by adding FEATURE_MACRO= to the component Makefile.
99N/A#
99N/A
99N/A# Create a non-executable stack when linking.
176N/ALD_MAP_NOEXSTK.i386 = -M /usr/lib/ld/map.noexstk
176N/ALD_MAP_NOEXSTK.sparc = -M /usr/lib/ld/map.noexstk
99N/A
99N/A# Create a non-executable bss segment when linking.
99N/ALD_MAP_NOEXBSS = -M /usr/lib/ld/map.noexbss
61N/A
99N/A# Create a non-executable data segment when linking. Due to PLT needs, the
99N/A# data segment must be executable on sparc, but the bss does not.
99N/A# see mapfile comments for more information
99N/ALD_MAP_NOEXDATA.i386 = -M /usr/lib/ld/map.noexdata
99N/ALD_MAP_NOEXDATA.sparc = $(LD_MAP_NOEXBSS)
99N/A
99N/A# Page alignment
99N/ALD_MAP_PAGEALIGN = -M /usr/lib/ld/map.pagealign
61N/A
99N/A# Linker options to add when only building libraries
806N/ALD_OPTIONS_SO += $(LD_Z_TEXT) $(LD_Z_DEFS) $(LD_DEF_LIBS)
99N/A
99N/A# Default linker options that everyone should get. Do not add additional
99N/A# libraries to this macro, as it will apply to everything linked during the
99N/A# component build.
176N/ALD_OPTIONS += $(LD_MAP_NOEXSTK.$(MACH)) $(LD_MAP_NOEXDATA.$(MACH)) \
2238N/A $(LD_MAP_PAGEALIGN) $(LD_B_DIRECT) $(LD_Z_IGNORE) \
2238N/A $(LD_Z_STRIP_CLASS)
64N/A
2337N/A# only used on executables
2337N/ALD_EXEC_OPTIONS = $(LD_Z_ASLR)
2337N/A
62N/A# Environment variables and arguments passed into the build and install
64N/A# environment(s). These are the initial settings.
64N/ACOMPONENT_BUILD_ENV= \
2337N/A LD_OPTIONS="$(LD_OPTIONS)" \
2337N/A LD_EXEC_OPTIONS="$(LD_EXEC_OPTIONS)"
64N/ACOMPONENT_INSTALL_ENV= \
2337N/A LD_OPTIONS="$(LD_OPTIONS)" \
2337N/A LD_EXEC_OPTIONS="$(LD_EXEC_OPTIONS)"
64N/A
64N/A# Add any bit-specific settings
62N/ACOMPONENT_BUILD_ENV += $(COMPONENT_BUILD_ENV.$(BITS))
62N/ACOMPONENT_BUILD_ARGS += $(COMPONENT_BUILD_ARGS.$(BITS))
62N/ACOMPONENT_INSTALL_ENV += $(COMPONENT_INSTALL_ENV.$(BITS))
62N/ACOMPONENT_INSTALL_ARGS += $(COMPONENT_INSTALL_ARGS.$(BITS))
181N/A
206N/A# declare these phony so that we avoid filesystem conflicts.
814N/A.PHONY: prep build install publish test clean clobber parfait
206N/A
181N/A# If there are no tests to execute
181N/ANO_TESTS = test-nothing
181N/Atest-nothing:
181N/A @echo "There are no tests available at this time."
1273N/A
1273N/A# default behaviour for 'component-hook' target is to echo the component
1273N/A# name and version information, but more complex behaviour can be implemented
1273N/A# via command line setting of the COMPONENT_HOOK macro.
1273N/ACOMPONENT_HOOK ?= echo $(COMPONENT_NAME) $(COMPONENT_VERSION)
1273N/A
1273N/Acomponent-hook:
1273N/A @$(COMPONENT_HOOK)
3996N/A
3996N/A#
3996N/A# Packages with tools that are required to build Userland components
3996N/A#
3996N/AREQUIRED_PACKAGES += developer/build/gnu-make
3996N/AREQUIRED_PACKAGES += developer/build/make
3996N/Aifeq ($(COMPILER),gcc3)
3996N/AREQUIRED_PACKAGES += developer/gcc-3
3996N/Aendif
3996N/Aifeq ($(COMPILER),gcc)
3996N/AREQUIRED_PACKAGES += developer/gcc-47
3996N/Aendif
3996N/Aifeq ($(COMPILER),studio)
3996N/A# uncomment this line if you need to install Studio
3996N/A#REQUIRED_PACKAGES += developer/solarisstudio-123
3996N/Aendif
3996N/Aifeq ($(PARFAIT_BUILD),yes)
3996N/A# uncomment this line if you need to install Parfait
4275N/A#REQUIRED_PACKAGES += developer/parfait/parfait-tools-161
3996N/Aendif
3996N/AREQUIRED_PACKAGES += developer/versioning/mercurial
3996N/AREQUIRED_PACKAGES += file/gnu-findutils
3996N/AREQUIRED_PACKAGES += package/pkg
3996N/AREQUIRED_PACKAGES += runtime/python-27
3996N/AREQUIRED_PACKAGES += shell/bash
3996N/AREQUIRED_PACKAGES += shell/ksh93
3996N/AREQUIRED_PACKAGES += text/gawk
3996N/AREQUIRED_PACKAGES += text/gnu-grep
3996N/AREQUIRED_PACKAGES += text/gnu-sed
3996N/AREQUIRED_PACKAGES += developer/java/jdk-7
3996N/AREQUIRED_PACKAGES += security/sudo
3996N/A
3996N/Ainclude $(WS_MAKE_RULES)/environment.mk