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