components/gcc4/Makefile
changeset 6923 338aea22bf22
parent 5784 b08ada1b6001
child 7245 934578b959f0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gcc4/Makefile	Fri Sep 16 23:33:54 2016 -0500
@@ -0,0 +1,158 @@
+#
+# 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) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+#
+export PARFAIT_BUILD=no
+BUILD_BITS= 32
+COMPILER= gcc
+include ../../make-rules/shared-macros.mk
+
+GCC_ROOT=/usr/gcc/4.9
+
+COMPONENT_NAME=		gcc
+COMPONENT_VERSION=	4.9.4
+COMPONENT_PROJECT_URL=	http://gcc.gnu.org/
+COMPONENT_ARCHIVE_HASH= \
+    sha256:1680f92781b92cbdb57d7e4f647c650678c594154cb0d707fd9a994424a9860d
+COMPONENT_ARCHIVE_URL=	http://ftp.gnu.org/gnu/gcc/$(COMPONENT_SRC)/$(COMPONENT_ARCHIVE)
+COMPONENT_BUGDB=        utility/gnu-compiler
+
+TPNO=			31051
+
+# Use gcc's default flags instead of userland's.
+CFLAGS=
+CPPFLAGS=
+CXXFLAGS=
+
+CC += -std=gnu89
+
+include $(WS_MAKE_RULES)/common.mk
+
+# The GNU compiler wants the GNU utilities.
+PATH=$(GNUBIN):$(USRBINDIR):$(USRDIR)/perl5/bin
+
+PARCH =         $(MACH:i386=i386-pc)
+GNU_ARCH =      $(PARCH:sparc=sparc-sun)-solaris$(SOLARIS_VERSION)
+
+PKG_MACROS +=   GNU_ARCH="$(GNU_ARCH)"
+
+VERSION_NUMBERS = $(subst ., ,$(COMPONENT_VERSION))
+GCC_VERSION=$(word 1,$(VERSION_NUMBERS)).$(word 2,$(VERSION_NUMBERS))
+PKG_MACROS +=	GCC_VERSION=$(GCC_VERSION)
+PKG_MACROS +=	GCC_V=$(word 1,$(VERSION_NUMBERS))$(word 2,$(VERSION_NUMBERS))
+PKG_MACROS +=	GCC_BASEDIR=$(CONFIGURE_PREFIX)
+
+# direct binding causes various testsuite failures
+LD_B_DIRECT=
+
+# /usr/lib/ld/map.noexdata destroys Intel
+LD_MAP_NOEXDATA.i386=
+
+# /usr/lib/ld/map.noexbss destroys SPARC
+LD_MAP_NOEXBSS.sparc=
+
+# for some reason the fixincludes target fails with bash on Solaris.
+CONFIG_SHELL = /bin/sh
+MAKESHELL = /bin/sh
+COMPONENT_BUILD_ENV += SHELL=$(CONFIG_SHELL)
+COMPONENT_BUILD_ENV += MAKESHELL=$(MAKESHELL)
+
+CONFIGURE_PREFIX =	/usr/gcc/4.9
+CONFIGURE_INFODIR =	$(CONFIGURE_PREFIX)/share/info
+
+CONFIGURE_OPTIONS +=	--infodir=$(CONFIGURE_INFODIR)
+CONFIGURE_OPTIONS +=	--libexecdir=$(CONFIGURE_PREFIX)/lib
+CONFIGURE_OPTIONS +=	--enable-languages="c,c++,fortran,objc"
+CONFIGURE_OPTIONS +=	--enable-shared
+CONFIGURE_OPTIONS +=	--enable-initfini-array
+CONFIGURE_OPTIONS +=	--disable-rpath
+CONFIGURE_OPTIONS +=	--with-system-zlib
+CONFIGURE_OPTIONS +=	--with-build-config=no
+CONFIGURE_OPTIONS +=	--with-gmp-include=$(USRINCDIR)/gmp
+CONFIGURE_OPTIONS +=	--with-mpfr-include=$(USRINCDIR)/mpfr
+CONFIGURE_OPTIONS +=	--without-gnu-ld --with-ld=$(USRBINDIR)/ld
+CONFIGURE_OPTIONS +=	--with-gnu-as --with-as=$(GNUBIN)/as
+
+# If the compiler used to build matches the compiler being built, there is no
+# need for a 3 stage build.
+ifneq ($(shell $(CC) --version | grep $(COMPONENT_VERSION)),)
+CONFIGURE_OPTIONS +=    --disable-bootstrap
+else
+COMPONENT_BUILD_TARGETS=bootstrap
+endif
+
+CONFIGURE_OPTIONS +=	BOOT_CFLAGS='-g -O2'
+
+# This is the target and it must be last
+CONFIGURE_OPTIONS +=    $(GNU_ARCH)
+
+
+CONFIGURE_ENV     += PYTHON="$(PYTHON)"
+
+# compile python modules
+COMPONENT_POST_INSTALL_ACTION = \
+	( gfind $(PROTO_DIR)$(CONFIGURE_PREFIX) -name '*.py' | \
+	  xargs -n 1 dirname | sort -u | \
+	  xargs $(PYTHON) -m compileall )
+
+# To ensure that all tests that are expected to pass actually
+# pass, we have to increase the stacksize limit to at least
+# 16MB. Otherwise we'll get spurious failures in the test
+# harness (gcc.c-torture/compile/limits-exprparen.c and others).
+# With the soft stacksize limit set to 16384 we get reasonably good
+# test results.
+COMPONENT_PRE_TEST_ACTION = ulimit -Ss 16384
+COMPONENT_TEST_ARGS = -k -i
+COMPONENT_TEST_TARGETS = check check-target
+
+COMPONENT_TEST_ENV += TCL_LIBRARY="$(USRLIBDIR)/tcl8.5"
+
+# We don't have DejaGNU in S11.
+ifeq ($(OS_VERSION), 5.12)
+  COMPONENT_TEST_ENV += DEJAGNULIBS="$(USRSHAREDIR)/dejagnu"
+endif
+
+COMPONENT_TEST_TRANSFORMS += \
+	'-e "s|\(Test Run By\).*|\1|" ' \
+	'-e "/\(Missing header fix: \).*/d" ' \
+	'-e "/\(\\*\\*\\* complex.h\).*/d" ' \
+	'-e "/\(\\*\\*\\* math.h\).*/d" ' \
+	'-e "/\(\\*\\*\\* stdio.h\).*/d" '
+
+# Master test results are different between x86 and SPARC.
+COMPONENT_TEST_MASTER = \
+	$(COMPONENT_TEST_RESULTS_DIR)/results-$(MACH).master
+
+REQUIRED_PACKAGES += developer/gcc-49
+REQUIRED_PACKAGES += developer/test/dejagnu
+REQUIRED_PACKAGES += library/cloog
+REQUIRED_PACKAGES += library/gmp
+REQUIRED_PACKAGES += library/isl
+REQUIRED_PACKAGES += library/mpc
+REQUIRED_PACKAGES += library/mpfr
+REQUIRED_PACKAGES += library/zlib
+REQUIRED_PACKAGES += runtime/tcl-8
+REQUIRED_PACKAGES += shell/bash
+REQUIRED_PACKAGES += shell/ksh93
+REQUIRED_PACKAGES += system/library/gcc/gcc-c-runtime
+REQUIRED_PACKAGES += system/library/math