diff -r bf52ef48020c -r 94ae4d75524c components/stdcxx/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/stdcxx/Makefile Thu Jul 14 11:26:11 2011 -0700 @@ -0,0 +1,273 @@ +# +# 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) 2011, Oracle and/or its affiliates. All rights reserved. +# +include ../../make-rules/shared-macros.mk + +PATH=$(dir $(CC)):/usr/gnu/bin:/usr/bin + +COMPONENT_NAME= stdcxx +COMPONENT_VERSION= 4.2.1 +COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION) +COMPONENT_PROJECT_URL= http://stdcxx.apache.org/ +COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.gz +COMPONENT_ARCHIVE_HASH= sha1:38efa30958222b2733f22098b3db09161d2e6c8c +COMPONENT_ARCHIVE_URL= http://www.apache.org/dist/stdcxx/$(COMPONENT_ARCHIVE) + +include ../../make-rules/prep.mk +include ../../make-rules/configure.mk +include ../../make-rules/ips.mk + +ISA_PATCH_DIR_32 = $(WS_TOP)/components/stdcxx/isa_patches/$(MACH) +ISA_PATCH_DIR_64 = $(WS_TOP)/components/stdcxx/isa_patches/$(MACH64) +ISA_PATCH_DIR = $(ISA_PATCH_DIR_$(BITS)) + +ISA_PATCHES_$(MACH) = \ + $(ISA_PATCH_DIR)/1034-sunpro.config.$(MACH).patch \ + $(ISA_PATCH_DIR)/1035-GNUmakefile.tst.$(MACH).patch \ + $(ISA_PATCH_DIR)/1036-GNUmakefile.rwt.$(MACH).patch \ + $(ISA_PATCH_DIR)/1037-GNUmakefile.lib.$(MACH).patch \ + $(ISA_PATCH_DIR)/1038-GNUmakefile.ph.$(MACH).patch \ + $(ISA_PATCH_DIR)/1039-GNUmakefile.exm.$(MACH).patch \ + $(ISA_PATCH_DIR)/1040-GNUmakefile.cfg.$(MACH).patch \ + $(ISA_PATCH_DIR)/1041-GNUmakefile.bin.$(MACH).patch + +ISA_PATCHES_$(MACH64) = \ + $(ISA_PATCH_DIR)/1034-sunpro.config.$(MACH64).patch \ + $(ISA_PATCH_DIR)/1035-GNUmakefile.tst.$(MACH64).patch \ + $(ISA_PATCH_DIR)/1036-GNUmakefile.rwt.$(MACH64).patch \ + $(ISA_PATCH_DIR)/1037-GNUmakefile.lib.$(MACH64).patch \ + $(ISA_PATCH_DIR)/1038-GNUmakefile.ph.$(MACH64).patch \ + $(ISA_PATCH_DIR)/1039-GNUmakefile.exm.$(MACH64).patch \ + $(ISA_PATCH_DIR)/1040-GNUmakefile.cfg.$(MACH64).patch \ + $(ISA_PATCH_DIR)/1041-GNUmakefile.bin.$(MACH64).patch + +ISA_PATCHES_32 = $(ISA_PATCHES_$(MACH)) +ISA_PATCHES_64 = $(ISA_PATCHES_$(MACH64)) +ISA_PATCHES = $(ISA_PATCHES_$(BITS)) + +PATCH_LEVEL = 1 + +TOPDIR = $(COMPONENT_DIR)/$(COMPONENT_SRC) +LOCAL_BUILDDIR = $(TOPDIR)/build +MARG = -m$(BITS) +PICFLAG = -KPIC -DPIC + +# Please see the README file in this directory for a detailed explanation +# about these flags, what they do, and why we need them. +FLAGS_sparc = -m32 -xarch=sparcvis -xmemalign=8i +FLAGS_sparcv9 = -m64 -xarch=sparcvis -xmemalign=16i +FLAGS_i386 = -m32 -xarch=386 +FLAGS_amd64 = -m64 -xarch=generic +CFLAGS_sparc = -Xc -features=extinl -xvis=yes +CFLAGS_sparc += -xregs=no%appl -xbuiltin=%none -xO4 $(PICFLAG) +CFLAGS_i386 = -Xc -features=extinl -xregs=no%frameptr +CFLAGS_i386 += -xO3 -xbuiltin=%none $(PICFLAG) + +CFLAGS_32 = $(FLAGS_$(MACH)) $(CFLAGS_$(MACH)) +CFLAGS_64 = $(FLAGS_$(MACH64)) $(CFLAGS_$(MACH)) + +CXXFLAGS_sparc = -xvis=yes -xregs=no%appl -xO4 +CXXFLAGS_sparc += -xbuiltin=%none $(PICFLAG) +CXXFLAGS_i386 = -xregs=no%frameptr -xO3 -xbuiltin=%none $(PICFLAG) +CFLAGS_GENERIC += -xc99=%all +CFLAGS_GENERIC += -mt -D_REENTRANT -DNDEBUG +CFLAGS_GENERIC += -D__EXTENSIONS__ -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +CFLAGS_GENERIC += -D_XPG6 -D_XOPEN_SOURCE=600 -D_POSIX_PTHREAD_SEMANTICS +CFLAGS_GENERIC += -D_POSIX_C_SOURCE=200112L -D__XOPEN_OR_POSIX +CFLAGS_GENERIC += -D_STRICT_STDC -D_STRICT_STDC__ -D_STDC_C99 -D_ISOC99_SOURCE +CFLAGS_GENERIC += -D_IN_BUILD_STDCXX +CFLAGS_GENERIC += $(CFLAGS_$(BITS)) +CFLAGS = $(CFLAGS_GENERIC) + +CXXFLAGS_GENERIC = -library=Cstd -library=Crun -norunpath +CXXFLAGS_GENERIC += -Qoption ccfe ++boolflag:sunwcch=false +CXXFLAGS_GENERIC += -Qoption ccfe +d2,-xgeninl=system +CXXFLAGS_GENERIC += -Qoption ccfe -expand=10000 +CXXFLAGS_GENERIC += -features=except,rtti,export,extensions,nestedaccess,tmplife,tmplrefstatic +CXXFLAGS_GENERIC += -instances=global +CXXFLAGS_GENERIC += -template=geninlinefuncs +CXXFLAGS_GENERIC += -verbose=template +CXXFLAGS_GENERIC += $(CXXFLAGS_$(MACH)) +CXXFLAGS_GENERIC += -xlang=c99 +CXXFLAGS_GENERIC += -xbuiltin=%none +CXXFLAGS_GENERIC += -xinline= +CXXFLAGS_GENERIC += -xlibmieee +CXXFLAGS_GENERIC += -xustr=ascii_utf16_ushort +CXXFLAGS_GENERIC += -z ignore $(PICFLAG) +CXXFLAGS_GENERIC += -mt -D_REENTRANT -DNDEBUG +CXXFLAGS_GENERIC += -D_IN_BUILD_STDCXX +CXXFLAGS_GENERIC += -D__EXTENSIONS__ +CXXFLAGS_GENERIC += -D_LARGEFILE_SOURCE +CXXFLAGS_GENERIC += -D_FILE_OFFSET_BITS=64 +CXXFLAGS_GENERIC += -D_XOPEN_SOURCE=500 +CXXFLAGS_GENERIC += -D_XPG5 +CXXFLAGS_GENERIC += -D_POSIX_PTHREAD_SEMANTICS -s +CXXFLAGS_GENERIC += +w2 -errtags -erroff=hidef + +CXXFLAGS_32 = $(FLAGS_$(MACH)) +CXXFLAGS_64 = $(FLAGS_$(MACH64)) + +CXXFLAGS = $(CXXFLAGS_$(BITS)) $(CXXFLAGS_$(MACH)) $(CXXFLAGS_GENERIC) + +CPPFLAGS = -I$(TOPDIR)/include/ansi +CPPFLAGS += -I$(TOPDIR)/include/tr1 +CPPFLAGS += -I$(TOPDIR)/include + +# -mt will automatically pass -lthread unless we pass -lpthread +# on link line. -lthread causes regressions. see man CC(1) and -mt. +# -lumem must be passed before -lc. +LDFLAGS = -lpthread -lumem -lm -lc -s -z ignore + +# We cannot have -B direct +LD_OPTIONS = -M /usr/lib/ld/map.noexstk -M /usr/lib/ld/map.noexdata +LD_OPTIONS += -M /usr/lib/ld/map.pagealign +LD_OPTIONS += -lpthread -lumem -lm -lc -s -z ignore + +# If I name it NLSPATH, gmake insists on getting its value from the +# running environment. Also, it all has to be on one line. += prepends +# a whitespace. +BUILD_NLSPATH = :%N.cat:/usr/lib/locale/%L/%N.cat:/usr/share/locale/%L/%N.cat:$(BUILD_DIR_$(BITS))/lib/rwstderr.cat + +CONFIGURE_ENV = CC="$(CC)" +CONFIGURE_ENV += CXX="$(CXX)" +CONFIGURE_ENV += CFLAGS="$(CFLAGS)" +CONFIGURE_ENV += CPPFLAGS="$(CPPFLAGS)" +CONFIGURE_ENV += CXXFLAGS="$(CXXFLAGS)" +CONFIGURE_ENV += LDFLAGS="$(LDFLAGS)" +CONFIGURE_ENV += LD_OPTIONS="$(LD_OPTIONS)" +CONFIGURE_ENV += LD="$(CXX) $(CXXFLAGS) $(LDFLAGS)" +CONFIGURE_ENV += MAKE="$(MAKE)" +CONFIGURE_ENV += TOPDIR="$(TOPDIR)" +CONFIGURE_ENV += MAKEFLAGS="" + +CONFIGURE_OPTIONS = $(MARG) +CONFIGURE_OPTIONS += -topdir=$(TOPDIR) +CONFIGURE_OPTIONS += -builddir=$(LOCAL_BUILDDIR) + +GCP = /usr/gnu/bin/cp + +COMPONENT_BUILD_ENV = MAKEFLAGS="" +COMPONENT_BUILD_ENV += MAKELEVEL="" +COMPONENT_BUILD_ENV += SHELL="/bin/bash" +COMPONENT_BUILD_ENV += NLSPATH="$(BUILD_NLSPATH)" + +PKG_PROTO_DIRS += $(COMPONENT_DIR)/$(COMPONENT_SRC)-32 +PKG_PROTO_DIRS += $(COMPONENT_DIR)/$(COMPONENT_SRC)-64 + +COMPONENT_PREP_ACTION = \ + ( if test -f $(TOPDIR)/.unpacked ; then \ + cd $(TOPDIR) ; \ + else $(UNPACK) $(UNPACK_ARGS) $(COMPONENT_ARCHIVE) ; \ + $(TOUCH) $(TOPDIR)/.unpacked ; \ + cd $(TOPDIR) ; \ + fi ; \ + list='$(ISA_PATCHES)' ; for f in $$list ; do \ + $(GPATCH) $(GPATCH_FLAGS) <$$f ; \ + done ) + +COMPONENT_PRE_CONFIGURE_ACTION = \ + ( if test -f $(TOPDIR)/.unpacked ; then \ + cd $(TOPDIR) ; \ + else $(UNPACK) $(UNPACK_ARGS) $(COMPONENT_ARCHIVE) ; \ + $(TOUCH) $(TOPDIR)/.unpacked ; \ + cd $(TOPDIR) ; \ + list1='$(ISA_PATCHES)' ; for f in $$list1 ; do \ + $(GPATCH) $(GPATCH_FLAGS) <$$f ; \ + done ; \ + list2='$(PATCHES)' ; for f in $$list2 ; do \ + $(GPATCH) $(GPATCH_FLAGS) <$(COMPONENT_DIR)/$$f ; \ + done ; \ + $(TOUCH) $(TOPDIR)/.patched ; \ + fi ; \ + $(CP) -Rp $(COMPONENT_DIR)/Solaris . ; \ + $(CP) -p ./Solaris/configure . ; \ + $(TOUCH) -acm ./configure ; \ + $(CHMOD) 0755 ./configure ) + +COMPONENT_POST_CONFIGURE_ACTION = \ + ( $(CLONEY) $(TOPDIR) $(@D) ; \ + find ./$(COMPONENT_SRC) -type f -name "*.~1~" \ + -exec chmod 0644 {} \; > /dev/null 2>&1 ) + +COMPONENT_POST_BUILD_ACTION = \ + ( cd $(BUILD_DIR_$(BITS))/build ; \ + $(GMAKE) locales ; \ + cd $(TOPDIR) ; \ + $(CP) -p $(COMPONENT_DIR)/Solaris/fix_nls_symlinks.sh . ; \ + $(CHMOD) 0755 fix_nls_symlinks.sh ; \ + $(SHELL) ./fix_nls_symlinks.sh ; \ + cd $(COMPONENT_DIR) ; \ + $(GCP) -rpd $(COMPONENT_SRC) $(COMPONENT_SRC)-$(BITS) ; \ + $(RM) -rf $(COMPONENT_SRC) ) + +build: $(BUILD_32) $(BUILD_64) + +install: $(BUILD_DIR_32)/.built $(BUILD_DIR_64)/.built + $(CP) $(COMPONENT_DIR)/Solaris/install.sh $(COMPONENT_DIR)/ + $(CHMOD) 0755 $(COMPONENT_DIR)/install.sh + $(MKDIR) $(PROTO_DIR)/usr + ( $(SHELL) $(COMPONENT_DIR)/install.sh \ + -prefix=$(PROTO_DIR)/usr \ + -builddir=$(BUILD_DIR_32) \ + -componentdir=$(COMPONENT_DIR) \ + -componentsrc=$(COMPONENT_SRC) \ + -srcdir=$(TOPDIR)-32 ) + ( $(SHELL) $(COMPONENT_DIR)/install.sh \ + -prefix=$(PROTO_DIR)/usr \ + -builddir=$(BUILD_DIR_64) \ + -componentdir=$(COMPONENT_DIR) \ + -componentsrc=$(COMPONENT_SRC) \ + -srcdir=$(TOPDIR)-64 \ + -mach64=$(MACH64) ) + test -d $(TOPDIR) || $(MKDIR) $(TOPDIR) + +test: + test -d $(BUILD_DIR_32) || echo "$(BUILD_DIR_32) does not exist!" + test -d $(BUILD_DIR_64) || echo "$(BUILD_DIR_64) does not exist!" + $(CP) -p $(COMPONENT_DIR)/Solaris/prep_build_area.sh \ + $(COMPONENT_DIR)/ + $(CHMOD) 0755 $(COMPONENT_DIR)/prep_build_area.sh + $(SHELL) $(COMPONENT_DIR)/prep_build_area.sh -m32 \ + -builddir=$(BUILD_DIR_32) \ + -srcdir=$(TOPDIR)-32 + $(SHELL) $(COMPONENT_DIR)/prep_build_area.sh -m64 \ + -builddir=$(BUILD_DIR_64) \ + -srcdir=$(TOPDIR)-64 + ( cd $(BUILD_DIR_32)/build/tests ; \ + $(CP) -p $(COMPONENT_DIR)/Solaris/run_tests.sh . ; \ + $(CHMOD) 0755 run_tests.sh ; \ + $(SHELL) ./run_tests.sh > \ + $(COMPONENT_DIR)/runtests-$(MACH).out 2>&1 ) + ( cd $(BUILD_DIR_64)/build/tests ; \ + $(CP) -p $(COMPONENT_DIR)/Solaris/run_tests.sh . ; \ + $(CHMOD) 0755 run_tests.sh ; \ + $(SHELL) ./run_tests.sh > \ + $(COMPONENT_DIR)/runtests-$(MACH64).out 2>&1 ) + +clean:: + $(RM) -r $(COMPONENT_SRC) $(COMPONENT_SRC)-32 $(COMPONENT_SRC)-64 + $(RM) -f *.sed *.out + +BUILD_PKG_DEPENDENCIES = $(BUILD_TOOLS) + +include ../../make-rules/depend.mk +