Makefile revision 5680
402N/A#
402N/A# CDDL HEADER START
402N/A#
402N/A# The contents of this file are subject to the terms of the
402N/A# Common Development and Distribution License (the "License").
402N/A# You may not use this file except in compliance with the License.
402N/A#
402N/A# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
402N/A# or http://www.opensolaris.org/os/licensing.
402N/A# See the License for the specific language governing permissions
402N/A# and limitations under the License.
402N/A#
402N/A# When distributing Covered Code, include this CDDL HEADER in each
402N/A# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
402N/A# If applicable, add the following below this CDDL HEADER, with the
402N/A# fields enclosed by brackets "[]" replaced with your own identifying
402N/A# information: Portions Copyright [yyyy] [name of copyright owner]
402N/A#
402N/A# CDDL HEADER END
402N/A#
3817N/A
402N/A#
814N/A# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
814N/A#
814N/ABUILD_BITS= 64_and_32
1780N/A# we really need to use studio so we don't like that
814N/A# parfait is clang/llvm in disguise
402N/Aexport PARFAIT_BUILD=no
402N/Ainclude ../../make-rules/shared-macros.mk
402N/A
402N/APATH=$(dir $(CC)):$(GNUBIN):$(USRBINDIR)
402N/A
402N/ACOMPONENT_NAME= stdcxx
618N/ACOMPONENT_VERSION= 4.2.1
402N/ACOMPONENT_PROJECT_URL= http://stdcxx.apache.org/
402N/ACOMPONENT_ARCHIVE_HASH= \
402N/A sha256:00854223cbd947bf1bd85d9dabd1b2829706d9062e0007d5022082a5e4b7e15e
844N/ACOMPONENT_ARCHIVE_URL= http://www.apache.org/dist/stdcxx/$(COMPONENT_ARCHIVE)
844N/ACOMPONENT_BUGDB= library/libstdcxx
402N/A
1407N/ATPNO= 9048
402N/A
2899N/ACLEAN_PATHS += install.sh
2899N/A
814N/AINSTALL_TARGET=
814N/Ainclude $(WS_MAKE_RULES)/common.mk
3817N/A
3817N/ASUNPRO_VERSION := $(shell $(CXX) -V 2>&1 | head -n1 \
3817N/A | sed 's/.*C++ *\([^ ]*\).*/\1/')
402N/ASUNPRO_MAJOR_VERSION := $(shell echo $(SUNPRO_VERSION) | cut -f1 -d'.')
402N/ASUNPRO_MINOR_VERSION := $(shell echo $(SUNPRO_VERSION) | cut -f2 -d'.')
402N/A
402N/ATEMPLATE_FLAGS := -template=geninlinefuncs
402N/A
402N/Aifeq ($(shell expr $(SUNPRO_MAJOR_VERSION) = 5 \& \
402N/A $(SUNPRO_MINOR_VERSION) \> 12),1)
402N/A TEMPLATE_FLAGS := -template=geninlinefuncs,extdef
402N/A COMPONENT_TEST_MASTER = \
402N/A $(COMPONENT_TEST_RESULTS_DIR)/results-$(BITS).master.SS12.4
402N/Aendif
402N/A
402N/AISA_PATCH_DIR_32 = $(WS_TOP)/components/stdcxx/isa_patches/$(MACH)
402N/AISA_PATCH_DIR_64 = $(WS_TOP)/components/stdcxx/isa_patches/$(MACH64)
402N/AISA_PATCH_DIR = $(ISA_PATCH_DIR_$(BITS))
402N/A
402N/AISA_PATCHES_$(MACH) = \
402N/A $(ISA_PATCH_DIR)/1034-sunpro.config.$(MACH).patch \
402N/A $(ISA_PATCH_DIR)/1035-GNUmakefile.tst.$(MACH).patch \
402N/A $(ISA_PATCH_DIR)/1036-GNUmakefile.rwt.$(MACH).patch \
402N/A $(ISA_PATCH_DIR)/1037-GNUmakefile.lib.$(MACH).patch \
402N/A $(ISA_PATCH_DIR)/1038-GNUmakefile.ph.$(MACH).patch \
402N/A $(ISA_PATCH_DIR)/1039-GNUmakefile.exm.$(MACH).patch \
402N/A $(ISA_PATCH_DIR)/1040-GNUmakefile.cfg.$(MACH).patch \
402N/A $(ISA_PATCH_DIR)/1041-GNUmakefile.bin.$(MACH).patch
402N/A
402N/AISA_PATCHES_$(MACH64) = \
402N/A $(ISA_PATCH_DIR)/1034-sunpro.config.$(MACH64).patch \
402N/A $(ISA_PATCH_DIR)/1035-GNUmakefile.tst.$(MACH64).patch \
402N/A $(ISA_PATCH_DIR)/1036-GNUmakefile.rwt.$(MACH64).patch \
402N/A $(ISA_PATCH_DIR)/1037-GNUmakefile.lib.$(MACH64).patch \
402N/A $(ISA_PATCH_DIR)/1038-GNUmakefile.ph.$(MACH64).patch \
402N/A $(ISA_PATCH_DIR)/1039-GNUmakefile.exm.$(MACH64).patch \
402N/A $(ISA_PATCH_DIR)/1040-GNUmakefile.cfg.$(MACH64).patch \
402N/A $(ISA_PATCH_DIR)/1041-GNUmakefile.bin.$(MACH64).patch
402N/A
402N/AISA_PATCHES_32 = $(ISA_PATCHES_$(MACH))
402N/AISA_PATCHES_64 = $(ISA_PATCHES_$(MACH64))
402N/AISA_PATCHES = $(ISA_PATCHES_$(BITS))
402N/A
402N/ATOPDIR = $(COMPONENT_DIR)/$(COMPONENT_SRC)
402N/ALOCAL_BUILDDIR = $(TOPDIR)/build
402N/A
459N/A# Please see the README file in this directory for a detailed explanation
402N/A# about these flags, what they do, and why we need them.
402N/AFLAGS_sparc = -m32 -xarch=sparcvis -xmemalign=8i
402N/AFLAGS_sparcv9 = -m64 -xarch=sparcvis -xmemalign=16i
402N/AFLAGS_i386 = -m32 -xarch=386
402N/AFLAGS_amd64 = -m64 -xarch=generic
402N/ACFLAGS_sparc = -Xc -features=extinl -xvis=yes
402N/ACFLAGS_sparc += -Qoption cg -xregs=no%appl -xbuiltin=%none -xO4 $(PICFLAG)
402N/ACFLAGS_i386 = -Xc -features=extinl -xregs=no%frameptr
402N/ACFLAGS_i386 += -xO3 -xbuiltin=%none $(CC_PIC)
402N/A
402N/ACFLAGS_32 = $(FLAGS_$(MACH)) $(CFLAGS_$(MACH))
402N/ACFLAGS_64 = $(FLAGS_$(MACH64)) $(CFLAGS_$(MACH))
402N/A
402N/ACXXFLAGS_sparc = -xvis=yes -xregs=no%appl -xO4
402N/ACXXFLAGS_sparc += -xbuiltin=%none $(PICFLAG)
402N/ACXXFLAGS_i386 = -xregs=no%frameptr -xO3 -xbuiltin=%none $(PICFLAG)
402N/ACFLAGS_GENERIC += -xc99=%all
402N/ACFLAGS_GENERIC += -mt -D_REENTRANT -DNDEBUG
402N/ACFLAGS_GENERIC += -D__EXTENSIONS__ -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
402N/ACFLAGS_GENERIC += -D_XPG6 -D_XOPEN_SOURCE=600 -D_POSIX_PTHREAD_SEMANTICS
402N/ACFLAGS_GENERIC += -D_POSIX_C_SOURCE=200112L -D__XOPEN_OR_POSIX
402N/ACFLAGS_GENERIC += -D_STRICT_STDC -D_STRICT_STDC__ -D_STDC_C99 -D_ISOC99_SOURCE
402N/ACFLAGS_GENERIC += -D_IN_BUILD_STDCXX
402N/ACFLAGS_GENERIC += $(CFLAGS_$(BITS))
402N/ACFLAGS = $(CFLAGS_GENERIC)
402N/A
402N/ACXXFLAGS_GENERIC = -library=Cstd -library=Crun -norunpath
402N/ACXXFLAGS_GENERIC += -Qoption ccfe ++boolflag:sunwcch=false
402N/ACXXFLAGS_GENERIC += -Qoption ccfe +d2,-xgeninl=system
402N/ACXXFLAGS_GENERIC += -Qoption ccfe -expand=10000
402N/ACXXFLAGS_GENERIC += -Qoption ccfe -abiopt=mangle6
402N/ACXXFLAGS_GENERIC += -features=except,rtti,export,extensions,nestedaccess,tmplife,tmplrefstatic
402N/ACXXFLAGS_GENERIC += -instances=global
402N/ACXXFLAGS_GENERIC += $(TEMPLATE_FLAGS)
402N/ACXXFLAGS_GENERIC += $(CXXFLAGS_$(MACH))
402N/ACXXFLAGS_GENERIC += -xlang=c99
402N/ACXXFLAGS_GENERIC += -xbuiltin=%none
402N/ACXXFLAGS_GENERIC += -xinline=
402N/ACXXFLAGS_GENERIC += -xlibmieee
402N/ACXXFLAGS_GENERIC += $(LD_Z_IGNORE) $(PICFLAG)
402N/ACXXFLAGS_GENERIC += -mt -D_REENTRANT -DNDEBUG
402N/ACXXFLAGS_GENERIC += -D_IN_BUILD_STDCXX
402N/ACXXFLAGS_GENERIC += -D__EXTENSIONS__
402N/ACXXFLAGS_GENERIC += -D_LARGEFILE_SOURCE
402N/ACXXFLAGS_GENERIC += -D_FILE_OFFSET_BITS=64
402N/ACXXFLAGS_GENERIC += -D_XOPEN_SOURCE=500
402N/ACXXFLAGS_GENERIC += -D_XPG5
402N/ACXXFLAGS_GENERIC += -D_POSIX_PTHREAD_SEMANTICS -s
402N/ACXXFLAGS_GENERIC += +w2 -errtags -erroff=hidef
402N/A
402N/ACXXFLAGS_32 = $(FLAGS_$(MACH))
402N/ACXXFLAGS_64 = $(FLAGS_$(MACH64))
402N/A
402N/ACXXFLAGS = $(CXXFLAGS_$(BITS)) $(CXXFLAGS_$(MACH)) $(CXXFLAGS_GENERIC)
402N/A
402N/ACPPFLAGS = -I$(TOPDIR)/include/ansi
402N/ACPPFLAGS += -I$(TOPDIR)/include/tr1
402N/ACPPFLAGS += -I$(TOPDIR)/include
402N/A
402N/A# -mt will automatically pass -lthread unless we pass -lpthread
402N/A# on link line. -lthread causes regressions. see man CC(1) and -mt.
402N/A# -lumem must be passed before -lc.
402N/ALDFLAGS = -lpthread -lumem -lm -lc -s $(LD_Z_IGNORE)
402N/A
402N/A# We cannot have -B direct
402N/ALD_OPTIONS = -M /usr/lib/ld/map.noexstk -M /usr/lib/ld/map.noexdata
402N/ALD_OPTIONS += -M /usr/lib/ld/map.pagealign
402N/ALD_OPTIONS += -lpthread -lumem -lm -lc -s $(LD_Z_IGNORE)
402N/A
402N/A# If I name it NLSPATH, gmake insists on getting its value from the
402N/A# running environment. Also, it all has to be on one line. += prepends
402N/A# a whitespace.
402N/ABUILD_NLSPATH = :%N.cat:/usr/lib/locale/%L/%N.cat:/usr/share/locale/%L/%N.cat:$(BUILD_DIR_$(BITS))/lib/rwstderr.cat
402N/A
402N/ACONFIGURE_ENV += LD_OPTIONS="$(LD_OPTIONS)"
402N/ACONFIGURE_ENV += LD="$(CXX) $(CXXFLAGS) $(LDFLAGS)"
402N/ACONFIGURE_ENV += MAKE="$(MAKE)"
402N/ACONFIGURE_ENV += TOPDIR="$(TOPDIR)"
402N/ACONFIGURE_ENV += MAKEFLAGS=""
402N/A
402N/ACONFIGURE_OPTIONS = $(CC_BITS)
402N/ACONFIGURE_OPTIONS += -topdir=$(TOPDIR)
402N/ACONFIGURE_OPTIONS += -builddir=$(LOCAL_BUILDDIR)
402N/A
402N/AGCP = /usr/gnu/bin/cp
402N/A
402N/ACOMPONENT_BUILD_ENV = MAKEFLAGS=""
402N/ACOMPONENT_BUILD_ENV += MAKELEVEL=""
402N/ACOMPONENT_BUILD_ENV += SHELL="/bin/bash"
402N/ACOMPONENT_BUILD_ENV += NLSPATH="$(BUILD_NLSPATH)"
402N/A
402N/APKG_PROTO_DIRS += $(COMPONENT_DIR)/$(COMPONENT_SRC)-32
402N/APKG_PROTO_DIRS += $(COMPONENT_DIR)/$(COMPONENT_SRC)-64
402N/A
402N/ACOMPONENT_PREP_ACTION = \
402N/A ( if test -f $(TOPDIR)/.unpacked ; then \
402N/A cd $(TOPDIR) ; \
402N/A else $(UNPACK) $(UNPACK_ARGS) $(COMPONENT_ARCHIVE) ; \
402N/A $(TOUCH) $(TOPDIR)/.unpacked ; \
402N/A cd $(TOPDIR) ; \
402N/A fi ; \
402N/A list='$(ISA_PATCHES)' ; for f in $$list ; do \
402N/A $(GPATCH) $(GPATCH_FLAGS) <$$f ; \
402N/A done )
402N/A
402N/ACOMPONENT_PRE_CONFIGURE_ACTION = \
402N/A ( if test -f $(TOPDIR)/.unpacked ; then \
402N/A cd $(TOPDIR) ; \
402N/A else $(UNPACK) $(UNPACK_ARGS) $(COMPONENT_ARCHIVE) ; \
402N/A $(TOUCH) $(TOPDIR)/.unpacked ; \
402N/A cd $(TOPDIR) ; \
402N/A list1='$(ISA_PATCHES)' ; for f in $$list1 ; do \
402N/A $(GPATCH) $(GPATCH_FLAGS) <$$f ; \
402N/A done ; \
402N/A list2='$(PATCHES)' ; for f in $$list2 ; do \
402N/A $(GPATCH) $(GPATCH_FLAGS) <$(COMPONENT_DIR)/$$f ; \
402N/A done ; \
402N/A $(TOUCH) $(TOPDIR)/.patched ; \
402N/A fi ; \
402N/A $(CP) -Rp $(COMPONENT_DIR)/Solaris . ; \
402N/A $(CP) -p ./Solaris/configure . ; \
402N/A $(TOUCH) -acm ./configure ; \
402N/A $(CHMOD) 0755 ./configure )
402N/A
402N/ACOMPONENT_POST_CONFIGURE_ACTION = \
402N/A ( $(CLONEY) $(TOPDIR) $(@D) ; \
402N/A find ./$(COMPONENT_SRC) -type f -name "*.~1~" \
402N/A -exec chmod 0644 {} \; > /dev/null 2>&1 )
402N/A
402N/ACOMPONENT_POST_BUILD_ACTION = \
402N/A ( cd $(BUILD_DIR_$(BITS))/build ; \
402N/A $(GMAKE) locales ; \
402N/A cd $(TOPDIR) ; \
402N/A $(CP) -p $(COMPONENT_DIR)/Solaris/fix_nls_symlinks.sh . ; \
402N/A $(CHMOD) 0755 fix_nls_symlinks.sh ; \
402N/A $(SHELL) ./fix_nls_symlinks.sh ; \
402N/A cd $(COMPONENT_DIR) ; \
402N/A $(GCP) -rpd $(COMPONENT_SRC) $(COMPONENT_SRC)-$(BITS) ; \
402N/A $(RM) -rf $(COMPONENT_SRC) )
402N/A
3353N/ACOMPONENT_PRE_TEST_ACTION = \
3353N/A $(CP) -p $(COMPONENT_DIR)/Solaris/prep_build_area.sh \
3353N/A $(COMPONENT_DIR)/ ; \
3353N/A $(CHMOD) 0755 $(COMPONENT_DIR)/prep_build_area.sh ; \
3353N/A $(SHELL) $(COMPONENT_DIR)/prep_build_area.sh $(CC_BITS) \
3353N/A -builddir=$(BUILD_DIR)/$(MACH$(BITS)) \
3353N/A -srcdir=$(TOPDIR)-$(BITS)
3353N/ACOMPONENT_TEST_DIR = $(BUILD_DIR)/$(MACH$(BITS))/build/tests
3353N/ACOMPONENT_TEST_CMD = \
3353N/A $(CP) -p $(COMPONENT_DIR)/Solaris/run_tests.sh . ; \
3353N/A $(CHMOD) 0755 run_tests.sh ; \
3353N/A $(SHELL) ./run_tests.sh
3353N/A
3353N/ACOMPONENT_TEST_TARGETS =
3353N/A
1938N/Ainstall: $(BUILD_DIR_32)/.built $(BUILD_DIR_64)/.built
1938N/A $(CP) $(COMPONENT_DIR)/Solaris/install.sh $(COMPONENT_DIR)/
3477N/A $(CHMOD) 0755 $(COMPONENT_DIR)/install.sh
3477N/A $(MKDIR) $(PROTO_DIR)/usr
3477N/A ( $(SHELL) $(COMPONENT_DIR)/install.sh \
402N/A -prefix=$(PROTO_DIR)/usr \
402N/A -builddir=$(BUILD_DIR_32) \
402N/A -componentdir=$(COMPONENT_DIR) \
402N/A -componentsrc=$(COMPONENT_SRC) \
402N/A -srcdir=$(TOPDIR)-32 )
402N/A ( $(SHELL) $(COMPONENT_DIR)/install.sh \
402N/A -prefix=$(PROTO_DIR)/usr \
402N/A -builddir=$(BUILD_DIR_64) \
402N/A -componentdir=$(COMPONENT_DIR) \
402N/A -componentsrc=$(COMPONENT_SRC) \
402N/A -srcdir=$(TOPDIR)-64 \
402N/A -mach64=$(MACH64) )
402N/A test -d $(TOPDIR) || $(MKDIR) $(TOPDIR)
402N/A
402N/ACLEAN_PATHS += $(COMPONENT_SRC)-32 $(COMPONENT_SRC)-64
402N/A
402N/Aclean::
402N/A $(RM) -f *.sed *.out
402N/A
402N/A
3353N/AREQUIRED_PACKAGES += system/library/c++-runtime
402N/AREQUIRED_PACKAGES += system/library/math
402N/A