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 # Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  22 # Use is subject to license terms.
  23 # Copyright (c) 2013, Joyent, Inc.  All rights reserved.
  24 #
  25 
  26 VER =   gcc-4.4.4
  27 MPFR_VER =      mpfr-3.1.2
  28 GMP_VER =       gmp-5.1.1
  29 
  30 include ../Makefile.defs
  31 
  32 SEPARATE_BUILD =        yes
  33 
  34 GCC =   /opt/local/bin/gcc
  35 GXX =   /bin/false
  36 CFLAGS =        -nostdinc -isystem /usr/include -g -O2
  37 
  38 AUTOCONF_OPTS += \
  39         --with-ld=/usr/bin/ld \
  40         --without-gnu-ld \
  41         --with-gnu-as \
  42         --with-as=$(DESTDIR)/usr/gnu/bin/gas \
  43         --enable-languages="c,c++" \
  44         --enable-shared \
  45         --disable-nls
  46 
  47 AUTOCONF_ENV += \
  48         DESTDIR=$(DESTDIR) \
  49         MAKE=$(MAKE)
  50 
  51 OVERRIDES += \
  52         $(AUTOCONF_CFLAGS) \
  53         STAGE1_CFLAGS="$(CFLAGS)" \
  54         CFLAGS_FOR_TARGET="$(CFLAGS)"
  55 
  56 #
  57 # Unlike everything else, gcc is built to be a cross-compiler, really.  It
  58 # never runs on the target system, only the build system.  So it should not
  59 # be using the proto area's headers or libraries.  Its own libraries will be
  60 # built by the new compiler, and generally aren't using system headers anyway.
  61 # This is not really completely true; for example, libstdc++, and this will
  62 # need more work to be really right.  We only deliver the libraries.
  63 #
  64 AUTOCONF_CPPFLAGS =
  65 AUTOCONF_LIBS =
  66 GENLDFLAGS =
  67 
  68 PATCHES =       Patches/*
  69 ALL_TGT =       bootstrap
  70 
  71 include ../Makefile.targ
  72 include ../Makefile.targ.autoconf
  73 
  74 #
  75 # We could use the mpfr and gmp from the build system (since the compiler will
  76 # be run here), but there's no good way to make gcc build itself correctly if
  77 # we do.  There are two main problems:
  78 #
  79 # 1. Stage2 and later cc1 and company don't honour any combination of LDFLAGS,
  80 # LDFLAGS_FOR_TARGET, BOOT_LDFLAGS, STAGE2_LDFLAGS, etc.  So the only ways to
  81 # get these things built with -R/opt/local/lib are to use LD_OPTIONS which will
  82 # yield the wrong results for libraries or to hack configure.
  83 #
  84 # 2. Even if we could get -R/opt/local/lib into these programs without building
  85 # the libraries incorrectly, it would still be wrong.  The pkgsrc lib directory
  86 # on many systems contains libgcc_s.so.1; however, cc1 was built by the stage2
  87 # compiler and should find the libgcc that matches that compiler.  That happens
  88 # to be the one we just built, not the pkgsrc one.
  89 #
  90 # So Instead we have mpfr and gmp built as part of the gcc build itself.
  91 #
  92 $(AUTOCONF_OUT.32): | $(VER.32)/mpfr $(VER.32)/gmp
  93 
  94 $(VER.32)/mpfr: $(MPFR_VER).tar.gz | $(VER.32)
  95         -rm -rf $@
  96         mkdir -p .unpack32
  97         gtar x -C .unpack32 -z --no-same-owner -f $(MPFR_VER).tar.gz
  98         mv -f .unpack32/$(MPFR_VER) ./$@
  99         -rmdir .unpack32
 100         chmod 755 $@/configure
 101         touch $@/configure
 102 
 103 $(VER.32)/gmp: $(GMP_VER).tar.bz2 | $(VER.32)
 104         -rm -rf $@
 105         mkdir -p .unpack32
 106         gtar x -C .unpack32 -j --no-same-owner -f $(GMP_VER).tar.bz2
 107         mv -f .unpack32/$(GMP_VER) ./$@
 108         -rmdir .unpack32
 109         chmod 755 $@/configure
 110         touch $@/configure