diff --git a/README.md b/README.md index 268d42c..1985df6 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ # gcc +A compiler aimed at integrating all the optimizations and features necessary for a high-performance and stable development environment. +This package is required for all other GCC compilers, namely C++, Fortran, Objective C and Java. + diff --git a/ecj-latest.jar b/ecj-latest.jar new file mode 100644 index 0000000..8d5ed17 Binary files /dev/null and b/ecj-latest.jar differ diff --git a/gcc-4.0.2-BufferStrategy.patch b/gcc-4.0.2-BufferStrategy.patch new file mode 100644 index 0000000..abdbf7f --- /dev/null +++ b/gcc-4.0.2-BufferStrategy.patch @@ -0,0 +1,299 @@ +diff -Nru gcc-4.0.2.orig/libjava/java/awt/Window.java gcc-4.0.2/libjava/java/awt/Window.java +--- gcc-4.0.2.orig/libjava/java/awt/Window.java 2005-10-25 12:54:05.000000000 +0200 ++++ gcc-4.0.2/libjava/java/awt/Window.java 2005-10-25 16:19:42.000000000 +0200 +@@ -15,8 +15,8 @@ + + You should have received a copy of the GNU General Public License + along with GNU Classpath; see the file COPYING. If not, write to the +-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +-02111-1307 USA. ++Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++02110-1301 USA. + + Linking this library statically or dynamically with other modules is + making a combined work based on this library. Thus, the terms and +@@ -45,6 +45,7 @@ + import java.awt.event.WindowFocusListener; + import java.awt.event.WindowListener; + import java.awt.event.WindowStateListener; ++import java.awt.image.BufferStrategy; + import java.awt.peer.WindowPeer; + import java.lang.ref.Reference; + import java.lang.ref.WeakReference; +@@ -90,7 +91,8 @@ + + private transient boolean shown; + +- private transient Component windowFocusOwner; ++ // This is package-private to avoid an accessor method. ++ transient Component windowFocusOwner; + + /* + * The number used to generate the name returned by getName. +@@ -153,6 +155,9 @@ + } + } + }); ++ ++ GraphicsEnvironment g = GraphicsEnvironment.getLocalGraphicsEnvironment(); ++ graphicsConfiguration = g.getDefaultScreenDevice().getDefaultConfiguration(); + } + + Window(GraphicsConfiguration gc) +@@ -617,6 +622,8 @@ + || windowStateListener != null + || (eventMask & AWTEvent.WINDOW_EVENT_MASK) != 0)) + processEvent(e); ++ else if (e.id == ComponentEvent.COMPONENT_RESIZED) ++ validate (); + else + super.dispatchEventImpl(e); + } +@@ -739,7 +746,25 @@ + if (activeWindow == this) + return manager.getFocusOwner (); + else +- return windowFocusOwner; ++ return null; ++ } ++ ++ /** ++ * Returns the child component of this window that would receive ++ * focus if this window were to become focused. If the window ++ * already has the top-level focus, then this method returns the ++ * same component as getFocusOwner. If no child component has ++ * requested focus within the window, then the initial focus owner ++ * is returned. If this is a non-focusable window, this method ++ * returns null. ++ * ++ * @return the child component of this window that most recently had ++ * the focus, or null ++ * @since 1.4 ++ */ ++ public Component getMostRecentFocusOwner () ++ { ++ return windowFocusOwner; + } + + /** +@@ -771,12 +796,16 @@ + /** + * Tests whether or not this window is visible on the screen. + * ++ * In contrast to the normal behaviour of Container, which is that ++ * a container is showing if its parent is visible and showing, a Window ++ * is even showing, if its parent (i.e. an invisible Frame) is not showing. ++ * + * @return true if this window is visible, false + * otherwise. + */ + public boolean isShowing() + { +- return super.isShowing(); ++ return isVisible(); + } + + public void setLocationRelativeTo (Component c) +@@ -796,6 +825,157 @@ + } + + /** ++ * A BltBufferStrategy for windows. ++ */ ++ private class WindowBltBufferStrategy extends BltBufferStrategy ++ { ++ /** ++ * Creates a block transfer strategy for this window. ++ * ++ * @param numBuffers the number of buffers in this strategy ++ * @param accelerated true if the buffer should be accelerated, ++ * false otherwise ++ */ ++ WindowBltBufferStrategy(int numBuffers, boolean accelerated) ++ { ++ super(numBuffers, ++ new BufferCapabilities(new ImageCapabilities(accelerated), ++ new ImageCapabilities(accelerated), ++ BufferCapabilities.FlipContents.COPIED)); ++ } ++ } ++ ++ /** ++ * A FlipBufferStrategy for windows. ++ */ ++ private class WindowFlipBufferStrategy extends FlipBufferStrategy ++ { ++ /** ++ * Creates a flip buffer strategy for this window. ++ * ++ * @param numBuffers the number of buffers in this strategy ++ * ++ * @throws AWTException if the requested number of buffers is not ++ * supported ++ */ ++ WindowFlipBufferStrategy(int numBuffers) ++ throws AWTException ++ { ++ super(numBuffers, ++ new BufferCapabilities(new ImageCapabilities(true), ++ new ImageCapabilities(true), ++ BufferCapabilities.FlipContents.COPIED)); ++ } ++ } ++ ++ /** ++ * Creates a buffering strategy that manages how this window is ++ * repainted. This method attempts to create the optimum strategy ++ * based on the desired number of buffers. Hardware or software ++ * acceleration may be used. ++ * ++ * createBufferStrategy attempts different levels of optimization, ++ * but guarantees that some strategy with the requested number of ++ * buffers will be created even if it is not optimal. First it ++ * attempts to create a page flipping strategy, then an accelerated ++ * blitting strategy, then an unaccelerated blitting strategy. ++ * ++ * Calling this method causes any existing buffer strategy to be ++ * destroyed. ++ * ++ * @param numBuffers the number of buffers in this strategy ++ * ++ * @throws IllegalArgumentException if requested number of buffers ++ * is less than one ++ * @throws IllegalStateException if this window is not displayable ++ * ++ * @since 1.4 ++ */ ++ public void createBufferStrategy(int numBuffers) ++ { ++ if (numBuffers < 1) ++ throw new IllegalArgumentException("Window.createBufferStrategy: number" ++ + " of buffers is less than one"); ++ ++ if (!isDisplayable()) ++ throw new IllegalStateException("Window.createBufferStrategy: window is" ++ + " not displayable"); ++ ++ BufferStrategy newStrategy = null; ++ ++ // try a flipping strategy ++ try ++ { ++ newStrategy = new WindowFlipBufferStrategy(numBuffers); ++ } ++ catch (AWTException e) ++ { ++ } ++ ++ // fall back to an accelerated blitting strategy ++ if (newStrategy == null) ++ newStrategy = new WindowBltBufferStrategy(numBuffers, true); ++ ++ bufferStrategy = newStrategy; ++ } ++ ++ /** ++ * Creates a buffering strategy that manages how this window is ++ * repainted. This method attempts to create a strategy based on ++ * the specified capabilities and throws an exception if the ++ * requested strategy is not supported. ++ * ++ * Calling this method causes any existing buffer strategy to be ++ * destroyed. ++ * ++ * @param numBuffers the number of buffers in this strategy ++ * @param caps the requested buffering capabilities ++ * ++ * @throws AWTException if the requested capabilities are not ++ * supported ++ * @throws IllegalArgumentException if requested number of buffers ++ * is less than one or if caps is null ++ * ++ * @since 1.4 ++ */ ++ public void createBufferStrategy(int numBuffers, ++ BufferCapabilities caps) ++ { ++ if (numBuffers < 1) ++ throw new IllegalArgumentException("Window.createBufferStrategy: number" ++ + " of buffers is less than one"); ++ ++ if (caps == null) ++ throw new IllegalArgumentException("Window.createBufferStrategy:" ++ + " capabilities object is null"); ++ ++ // a flipping strategy was requested ++ if (caps.isPageFlipping()) ++ { ++ try ++ { ++ bufferStrategy = new WindowFlipBufferStrategy(numBuffers); ++ } ++ catch (AWTException e) ++ { ++ } ++ } ++ else ++ bufferStrategy = new WindowBltBufferStrategy(numBuffers, true); ++ } ++ ++ /** ++ * Returns the buffer strategy used by the window. ++ * ++ * @return the buffer strategy. ++ * @since 1.4 ++ */ ++ public BufferStrategy getBufferStrategy() ++ { ++ return bufferStrategy; ++ } ++ ++ /** + * @since 1.2 + * + * @deprecated +@@ -913,44 +1093,6 @@ + this.focusableWindowState = focusableWindowState; + } + +- // setBoundsCallback is needed so that when a user moves a window, +- // the Window's location can be updated without calling the peer's +- // setBounds method. When a user moves a window the peer window's +- // location is updated automatically and the windowing system sends +- // a message back to the application informing it of its updated +- // dimensions. We must update the AWT Window class with these new +- // dimensions. But we don't want to call the peer's setBounds +- // method, because the peer's dimensions have already been updated. +- // (Under X, having this method prevents Configure event loops when +- // moving windows: Component.setBounds -> peer.setBounds -> +- // postConfigureEvent -> Component.setBounds -> ... In some cases +- // Configure event loops cause windows to jitter back and forth +- // continuously). +- void setBoundsCallback (int x, int y, int w, int h) +- { +- if (this.x == x && this.y == y && width == w && height == h) +- return; +- invalidate(); +- boolean resized = width != w || height != h; +- boolean moved = this.x != x || this.y != y; +- this.x = x; +- this.y = y; +- width = w; +- height = h; +- if (resized && isShowing ()) +- { +- ComponentEvent ce = +- new ComponentEvent(this, ComponentEvent.COMPONENT_RESIZED); +- getToolkit().getSystemEventQueue().postEvent(ce); +- } +- if (moved && isShowing ()) +- { +- ComponentEvent ce = +- new ComponentEvent(this, ComponentEvent.COMPONENT_MOVED); +- getToolkit().getSystemEventQueue().postEvent(ce); +- } +- } +- + /** + * Generate a unique name for this window. + * diff --git a/gcc-4.0.2-failure_with_compound_literals.patch b/gcc-4.0.2-failure_with_compound_literals.patch new file mode 100644 index 0000000..f892a77 --- /dev/null +++ b/gcc-4.0.2-failure_with_compound_literals.patch @@ -0,0 +1,57 @@ +diff -Nru gcc-4.0.2.orig/gcc/c-decl.c gcc-4.0.2/gcc/c-decl.c +--- gcc-4.0.2.orig/gcc/c-decl.c 2005-11-14 10:43:28.000000000 +0100 ++++ gcc-4.0.2/gcc/c-decl.c 2005-11-14 10:52:53.000000000 +0100 +@@ -7527,6 +7527,7 @@ + c_write_global_declarations_1 (tree globals) + { + tree decl; ++ bool reconsider; + + /* Process the decls in the order they were written. */ + for (decl = globals; decl; decl = TREE_CHAIN (decl)) +@@ -7545,9 +7546,19 @@ + } + + wrapup_global_declaration_1 (decl); +- wrapup_global_declaration_2 (decl); +- check_global_declaration_1 (decl); + } ++ ++ do ++ { ++ reconsider = false; ++ for (decl = globals; decl; decl = TREE_CHAIN (decl)) ++ reconsider |= wrapup_global_declaration_2 (decl); ++ } ++ while (reconsider); ++ ++ for (decl = globals; decl; decl = TREE_CHAIN (decl)) ++ check_global_declaration_1 (decl); ++ + } + + /* A subroutine of c_write_global_declarations Emit debug information for each +diff -Nru gcc-4.0.2.orig/gcc/testsuite/gcc.c-torture/execute/20050929-1.c gcc-4.0.2/gcc/testsuite/gcc.c-torture/execute/20050929-1.c +--- gcc-4.0.2.orig/gcc/testsuite/gcc.c-torture/execute/20050929-1.c 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.0.2/gcc/testsuite/gcc.c-torture/execute/20050929-1.c 2005-11-14 10:53:43.000000000 +0100 +@@ -0,0 +1,20 @@ ++/* PR middle-end/24109 */ ++ ++extern void abort (void); ++ ++struct A { int i; int j; }; ++struct B { struct A *a; struct A *b; }; ++struct C { struct B *c; struct A *d; }; ++struct C e = { &(struct B) { &(struct A) { 1, 2 }, &(struct A) { 3, 4 } }, &(struct A) { 5, 6 } }; ++ ++int ++main (void) ++{ ++ if (e.c->a->i != 1 || e.c->a->j != 2) ++ abort (); ++ if (e.c->b->i != 3 || e.c->b->j != 4) ++ abort (); ++ if (e.d->i != 5 || e.d->j != 6) ++ abort (); ++ return 0; ++} diff --git a/gcc-4.0.2-zextract.patch b/gcc-4.0.2-zextract.patch new file mode 100644 index 0000000..f51e550 --- /dev/null +++ b/gcc-4.0.2-zextract.patch @@ -0,0 +1,25 @@ +diff -Nru gcc-4.0.2.orig/gcc/java/zextract.c gcc-4.0.2/gcc/java/zextract.c +--- gcc-4.0.2.orig/gcc/java/zextract.c 2005-10-21 12:02:51.000000000 +0200 ++++ gcc-4.0.2/gcc/java/zextract.c 2005-10-24 12:10:13.000000000 +0200 +@@ -287,6 +287,21 @@ + return -1; + if (read (zipf->fd, buffer, ECREC_SIZE+4) != ECREC_SIZE+4) + return -2; ++ if (buffer[0] != 'P' || strncmp ((const char *) &buffer[1], END_CENTRAL_SIG, 3)) { ++ /* We could not find the end-central-header signature, probably ++ because a zipfile comment is present. Scan backwards until we ++ find the signature. */ ++ if (lseek (zipf->fd, (long)(-ECREC_SIZE), SEEK_END) <= 0) ++ return -2; ++ while (buffer[0] != 'P' || strncmp ((const char *) &buffer[1], END_CENTRAL_SIG, 3)) { ++ if (lseek (zipf->fd, -5, SEEK_CUR) < 0) ++ return -2; ++ if (read (zipf->fd, buffer, 4) != 4) ++ return -2; ++ } ++ if (read (zipf->fd, buffer + 4, ECREC_SIZE) != ECREC_SIZE) ++ return -2; ++ } + zipf->count = makeword((const uch *) &buffer[TOTAL_ENTRIES_CENTRAL_DIR]); + zipf->dir_size = makelong((const uch *) &buffer[SIZE_CENTRAL_DIRECTORY]); + #define ALLOC xmalloc diff --git a/gcc-4.1.1-arm-t-linux.patch b/gcc-4.1.1-arm-t-linux.patch new file mode 100644 index 0000000..a125588 --- /dev/null +++ b/gcc-4.1.1-arm-t-linux.patch @@ -0,0 +1,50 @@ +diff -Nru gcc-4.1.1.orig/gcc/config/arm/t-linux gcc-4.1.1/gcc/config/arm/t-linux +--- gcc-4.1.1.orig/gcc/config/arm/t-linux 2004-05-15 14:41:35.000000000 +0200 ++++ gcc-4.1.1/gcc/config/arm/t-linux 2006-08-23 01:40:35.000000000 +0200 +@@ -1,15 +1,37 @@ + # Just for these, we omit the frame pointer since it makes such a big +-# difference. It is then pointless adding debugging. +-TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC +-LIBGCC2_DEBUG_CFLAGS = -g0 ++# difference. It is then pointless adding debugging. ++ ++TARGET_LIBGCC2_CFLAGS = -fno-inline -fomit-frame-pointer -fPIC -Dinhibit_libc ++LIBGCC2_DEBUG_CFLAGS = -g0 ++ ++# Don't build enquire ++ENQUIRE= + + LIB1ASMSRC = arm/lib1funcs.asm +-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx + +-# MULTILIB_OPTIONS = mhard-float/msoft-float +-# MULTILIB_DIRNAMES = hard-float soft-float ++LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls \ ++ _bb_init_func _call_via_rX _interwork_call_via_rX \ ++ _lshrdi3 _ashrdi3 _ashldi3 \ ++ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ ++ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ ++ _fixsfsi _fixunssfsi _floatdidf _floatdisf ++ ++MULTILIB_OPTIONS = mlittle-endian/mbig-endian mhard-float/msoft-float ++MULTILIB_DIRNAMES = le be hard-float soft-float ++MULTILIB_MATCHES = mbig-endian=mbe mlittle-endian=mle ++ ++EXTRA_MULTILIB_PARTS = crtbegin.o crtbeginS.o crtend.o crtendS.o crti.o crtn.o ++ ++LIBGCC = stmp-multilib ++INSTALL_LIBGCC = install-multilib ++ ++T_CFLAGS = -Dinhibit_libc + +-# EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o ++# Assemble startup files. ++$(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES) ++ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \ ++ -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/arm/crti.asm + +-# LIBGCC = stmp-multilib +-# INSTALL_LIBGCC = install-multilib ++$(T)crtn.o: $(srcdir)/config/arm/crtn.asm $(GCC_PASSES) ++ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \ ++ -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/arm/crtn.asm diff --git a/gcc-4.1.1-libgcc-softfloat-fix.patch b/gcc-4.1.1-libgcc-softfloat-fix.patch new file mode 100644 index 0000000..a2b2ba5 --- /dev/null +++ b/gcc-4.1.1-libgcc-softfloat-fix.patch @@ -0,0 +1,12 @@ +diff -Nru gcc-4.1.1.orig/gcc/config/arm/linux-elf.h gcc-4.1.1/gcc/config/arm/linux-elf.h +--- gcc-4.1.1.orig/gcc/config/arm/linux-elf.h 2005-10-10 03:04:31.000000000 +0200 ++++ gcc-4.1.1/gcc/config/arm/linux-elf.h 2006-08-23 10:06:25.000000000 +0200 +@@ -49,8 +49,6 @@ + %{shared:-lc} \ + %{!shared:%{profile:-lc_p}%{!profile:-lc}}" + +-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" +- + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #define LINUX_TARGET_LINK_SPEC "%{h*} %{version:-v} \ diff --git a/gcc-4.3.2-ecj1-wrapper b/gcc-4.3.2-ecj1-wrapper new file mode 100644 index 0000000..01f3a30 --- /dev/null +++ b/gcc-4.3.2-ecj1-wrapper @@ -0,0 +1,5 @@ +#!/bin/sh + +gij --classpath /usr/share/java/ecj.jar \ + org.eclipse.jdt.internal.compiler.batch.GCCMain \ + ${1+"$@"} diff --git a/gcc-4.4.0-pr39543.patch b/gcc-4.4.0-pr39543.patch new file mode 100644 index 0000000..0f643e7 --- /dev/null +++ b/gcc-4.4.0-pr39543.patch @@ -0,0 +1,298 @@ +--- gcc/fwprop.c.jj 2009-02-20 15:34:11.000000000 +0100 ++++ gcc/fwprop.c 2009-03-25 16:34:49.000000000 +0100 +@@ -1,5 +1,5 @@ + /* RTL-based forward propagation pass for GNU compiler. +- Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc. ++ Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Contributed by Paolo Bonzini and Steven Bosscher. + + This file is part of GCC. +@@ -852,6 +852,96 @@ forward_propagate_subreg (df_ref use, rt + return false; + } + ++static int ++check_reg_count_callback (rtx *px, void *data) ++{ ++ int *regnop = (int *) data; ++ ++ if (!REG_P (*px)) ++ return 0; ++ ++ if (*regnop < 0 || *regnop == (int) REGNO (*px)) ++ { ++ *regnop = REGNO (*px); ++ return 0; ++ } ++ ++ return 1; ++} ++ ++/* Try to replace USE with SRC (defined in DEF_INSN) in __asm. */ ++ ++static bool ++forward_propagate_asm (df_ref use, rtx def_set, rtx reg) ++{ ++ rtx use_insn = DF_REF_INSN (use), src, use_pat, asm_operands, new_rtx, *loc; ++ int regno, speed_p, i; ++ ++ gcc_assert ((DF_REF_FLAGS (use) & DF_REF_IN_NOTE) == 0); ++ ++ src = SET_SRC (def_set); ++ use_pat = PATTERN (use_insn); ++ ++ /* In __asm don't replace if src might need more registers than ++ reg, as that could increase register pressure on the __asm. */ ++ regno = -1; ++ if (for_each_rtx (&src, check_reg_count_callback, ®no) > 0) ++ return false; ++ ++ speed_p = optimize_bb_for_speed_p (BLOCK_FOR_INSN (use_insn)); ++ asm_operands = NULL_RTX; ++ switch (GET_CODE (use_pat)) ++ { ++ case ASM_OPERANDS: ++ asm_operands = use_pat; ++ break; ++ case SET: ++ loc = &SET_DEST (use_pat); ++ new_rtx = propagate_rtx (*loc, GET_MODE (*loc), reg, src, speed_p); ++ if (new_rtx) ++ validate_unshare_change (use_insn, loc, new_rtx, true); ++ asm_operands = SET_SRC (use_pat); ++ break; ++ case PARALLEL: ++ for (i = 0; i < XVECLEN (use_pat, 0); i++) ++ if (GET_CODE (XVECEXP (use_pat, 0, i)) == SET) ++ { ++ loc = &SET_DEST (XVECEXP (use_pat, 0, i)); ++ new_rtx = propagate_rtx (*loc, GET_MODE (*loc), reg, src, speed_p); ++ if (new_rtx) ++ validate_unshare_change (use_insn, loc, new_rtx, true); ++ asm_operands = SET_SRC (XVECEXP (use_pat, 0, i)); ++ } ++ else if (GET_CODE (XVECEXP (use_pat, 0, i)) == ASM_OPERANDS) ++ asm_operands = XVECEXP (use_pat, 0, i); ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ gcc_assert (asm_operands && GET_CODE (asm_operands) == ASM_OPERANDS); ++ for (i = 0; i < ASM_OPERANDS_INPUT_LENGTH (asm_operands); i++) ++ { ++ loc = &ASM_OPERANDS_INPUT (asm_operands, i); ++ new_rtx = propagate_rtx (*loc, GET_MODE (*loc), reg, src, speed_p); ++ if (new_rtx) ++ validate_unshare_change (use_insn, loc, new_rtx, true); ++ } ++ ++ if (num_changes_pending () == 0) ++ return false; ++ ++ if (!verify_changes (0)) ++ { ++ cancel_changes (0); ++ return 0; ++ } ++ ++ confirm_change_group (); ++ num_changes++; ++ return true; ++} ++ + /* Try to replace USE with SRC (defined in DEF_INSN) and simplify the + result. */ + +@@ -863,12 +953,16 @@ forward_propagate_and_simplify (df_ref u + rtx src, reg, new_rtx, *loc; + bool set_reg_equal; + enum machine_mode mode; ++ int asm_use = -1; + +- if (!use_set) ++ if (INSN_CODE (use_insn) < 0) ++ asm_use = asm_noperands (PATTERN (use_insn)); ++ ++ if (!use_set && asm_use < 0) + return false; + + /* Do not propagate into PC, CC0, etc. */ +- if (GET_MODE (SET_DEST (use_set)) == VOIDmode) ++ if (use_set && GET_MODE (SET_DEST (use_set)) == VOIDmode) + return false; + + /* If def and use are subreg, check if they match. */ +@@ -900,7 +994,7 @@ forward_propagate_and_simplify (df_ref u + if (MEM_P (src) && MEM_READONLY_P (src)) + { + rtx x = avoid_constant_pool_reference (src); +- if (x != src) ++ if (x != src && use_set) + { + rtx note = find_reg_note (use_insn, REG_EQUAL, NULL_RTX); + rtx old_rtx = note ? XEXP (note, 0) : SET_SRC (use_set); +@@ -911,6 +1005,9 @@ forward_propagate_and_simplify (df_ref u + return false; + } + ++ if (asm_use >= 0) ++ return forward_propagate_asm (use, def_set, reg); ++ + /* Else try simplifying. */ + + if (DF_REF_TYPE (use) == DF_REF_REG_MEM_STORE) +--- gcc/testsuite/gcc.target/i386/pr39543-1.c.jj 2009-03-25 16:40:18.000000000 +0100 ++++ gcc/testsuite/gcc.target/i386/pr39543-1.c 2009-03-25 16:40:50.000000000 +0100 +@@ -0,0 +1,52 @@ ++/* PR rtl-optimization/39543 */ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -fomit-frame-pointer" } */ ++ ++float __attribute__ ((aligned (16))) s0[128]; ++const float s1 = 0.707; ++float s2[8] __attribute__ ((aligned (16))); ++float s3[8] __attribute__ ((aligned (16))); ++float s4[16] __attribute__ ((aligned (16))); ++float s5[16] __attribute__ ((aligned (16))); ++ ++void ++foo (int k, float *x, float *y, const float *d, const float *z) ++{ ++ float *a, *b, *c, *e; ++ ++ a = x + 2 * k; ++ b = a + 2 * k; ++ c = b + 2 * k; ++ e = y + 2 * k; ++ __asm__ volatile ("" ++ : "=m" (x[0]), "=m" (b[0]), "=m" (a[0]), "=m" (c[0]) ++ : "m" (y[0]), "m" (y[k * 2]), "m" (x[0]), "m" (a[0]) ++ : "memory"); ++ for (;;) ++ { ++ __asm__ volatile ("" ++ : ++ : "m" (y[2]), "m" (d[2]), "m" (e[2]), "m" (z[2]) ++ : "memory"); ++ if (!--k) ++ break; ++ } ++ __asm__ volatile ("" ++ : "=m" (x[2]), "=m" (x[10]), "=m" (x[6]), "=m" (x[14]) ++ : "m" (y[2]), "m" (y[6]), "m" (x[2]), "m" (x[6]), ++ "m" (y[18]), "m" (s1) ++ : "memory"); ++} ++ ++void ++bar (float *a) ++{ ++ foo (4, a, a + 16, s2, s3); ++ foo (8, a, a + 32, s4, s5); ++} ++ ++void ++baz (void) ++{ ++ bar (s0); ++} +--- gcc/testsuite/gcc.target/i386/pr39543-2.c.jj 2009-03-25 16:40:18.000000000 +0100 ++++ gcc/testsuite/gcc.target/i386/pr39543-2.c 2009-03-25 16:40:38.000000000 +0100 +@@ -0,0 +1,51 @@ ++/* PR rtl-optimization/39543 */ ++/* { dg-do compile } */ ++/* { dg-options "-O3" } */ ++ ++float __attribute__ ((aligned (16))) s0[128]; ++const float s1 = 0.707; ++float s2[8] __attribute__ ((aligned (16))); ++float s3[8] __attribute__ ((aligned (16))); ++float s4[16] __attribute__ ((aligned (16))); ++float s5[16] __attribute__ ((aligned (16))); ++ ++void ++foo (int k, float *x, float *y, const float *d, const float *z) ++{ ++ float *a, *b, *c, *e; ++ ++ a = x + 2 * k; ++ b = a + 2 * k; ++ c = b + 2 * k; ++ e = y + 2 * k; ++ __asm__ volatile ("" ++ : "=m" (x[0]), "=m" (b[0]), "=m" (a[0]), "=m" (c[0]) ++ : "m" (y[0]), "m" (y[k * 2]), "m" (x[0]), "m" (a[0]) ++ : "memory"); ++ for (;;) ++ { ++ __asm__ volatile ("" ++ : ++ : "m" (y[2]), "m" (d[2]), "m" (e[2]), "m" (z[2]) ++ : "memory"); ++ if (!--k) ++ break; ++ } ++ __asm__ volatile ("" ++ : "=m" (x[2]), "=m" (x[10]), "=m" (x[6]), "=m" (x[14]) ++ : "m" (y[2]), "m" (y[6]), "m" (x[2]), "m" (x[6]), "m" (s1) ++ : "memory"); ++} ++ ++void ++bar (float *a) ++{ ++ foo (4, a, a + 16, s2, s3); ++ foo (8, a, a + 32, s4, s5); ++} ++ ++void ++baz (void) ++{ ++ bar (s0); ++} +--- gcc/testsuite/gcc.target/i386/pr39543-3.c.jj 2009-03-25 16:41:29.000000000 +0100 ++++ gcc/testsuite/gcc.target/i386/pr39543-3.c 2009-03-25 16:41:19.000000000 +0100 +@@ -0,0 +1,42 @@ ++/* PR rtl-optimization/39543 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int s[128]; ++ ++void ++f1 (void) ++{ ++ int i; ++ asm volatile ("# %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17" ++ : "=r" (i) ++ : "m" (s[0]), "m" (s[2]), "m" (s[4]), "m" (s[6]), "m" (s[8]), ++ "m" (s[10]), "m" (s[12]), "m" (s[14]), "m" (s[16]), "m" (s[18]), ++ "m" (s[20]), "m" (s[22]), "m" (s[24]), "m" (s[26]), "m" (s[28]), ++ "m" (s[30]), "m" (s[32])); ++ asm volatile ("# %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17" ++ : "=r" (i) ++ : "m" (s[0]), "m" (s[2]), "m" (s[4]), "m" (s[6]), "m" (s[8]), ++ "m" (s[10]), "m" (s[12]), "m" (s[14]), "m" (s[16]), "m" (s[18]), ++ "m" (s[20]), "m" (s[22]), "m" (s[24]), "m" (s[26]), "m" (s[28]), ++ "m" (s[30]), "m" (s[32])); ++} ++ ++void ++f2 (int *q) ++{ ++ int i; ++ int *p = q + 32; ++ asm volatile ("# %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17" ++ : "=r" (i) ++ : "m" (p[0]), "m" (p[2]), "m" (p[4]), "m" (p[6]), "m" (p[8]), ++ "m" (p[10]), "m" (p[12]), "m" (p[14]), "m" (p[16]), "m" (p[18]), ++ "m" (p[20]), "m" (p[22]), "m" (p[24]), "m" (p[26]), "m" (p[28]), ++ "m" (p[30]), "m" (p[32])); ++ asm volatile ("# %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17" ++ : "=r" (i) ++ : "m" (p[0]), "m" (p[2]), "m" (p[4]), "m" (p[6]), "m" (p[8]), ++ "m" (p[10]), "m" (p[12]), "m" (p[14]), "m" (p[16]), "m" (p[18]), ++ "m" (p[20]), "m" (p[22]), "m" (p[24]), "m" (p[26]), "m" (p[28]), ++ "m" (p[30]), "m" (p[32])); ++} diff --git a/gcc-4.4.3-cross_build_fix.patch b/gcc-4.4.3-cross_build_fix.patch new file mode 100644 index 0000000..edf988a --- /dev/null +++ b/gcc-4.4.3-cross_build_fix.patch @@ -0,0 +1,22 @@ +libstdc++-v3/ChangeLog: +2009-12-22 Ralf Wildenhues + + PR libstdc++/40974 + * include/c_compatibility/fenv.h (_GLIBCXX_FENV_H): + Turn off multiple inclusion guard for 'include_next '. + +diff --git a/libstdc++-v3/include/c_compatibility/fenv.h b/libstdc++-v3/include/c_compatibility/fenv.h +index 5db6d9d..ce56a95 100644 +--- a/libstdc++-v3/include/c_compatibility/fenv.h ++++ b/libstdc++-v3/include/c_compatibility/fenv.h +@@ -33,7 +33,10 @@ + + #include + #if _GLIBCXX_HAVE_FENV_H ++# undef _GLIBCXX_FENV_H + # include_next ++# undef _GLIBCXX_FENV_H ++# define _GLIBCXX_FENV_H 1 + #endif + + #ifdef __GXX_EXPERIMENTAL_CXX0X__ diff --git a/gcc-4.5.0-no_fixincludes.patch b/gcc-4.5.0-no_fixincludes.patch new file mode 100644 index 0000000..13eaa4a --- /dev/null +++ b/gcc-4.5.0-no_fixincludes.patch @@ -0,0 +1,12 @@ +diff -Nru gcc-4.5.0.orig//gcc/Makefile.in gcc-4.5.0/gcc/Makefile.in +--- gcc-4.5.0.orig//gcc/Makefile.in 2010-04-02 09:49:06.000000000 +0200 ++++ gcc-4.5.0/gcc/Makefile.in 2010-05-08 14:28:08.243216408 +0200 +@@ -3949,7 +3949,7 @@ + gcc_dir=`${PWD_COMMAND}` ; \ + export TARGET_MACHINE srcdir SHELL MACRO_LIST && \ + cd $(build_objdir)/fixincludes && \ +- $(SHELL) ./fixinc.sh "$${gcc_dir}/$${fix_dir}" \ ++ $(SHELL) -c true \ + $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) ); \ + rm -f $${fix_dir}/syslimits.h; \ + if [ -f $${fix_dir}/limits.h ]; then \ diff --git a/gcc-4.5.1-psignal_fix_bootstrap_build.patch b/gcc-4.5.1-psignal_fix_bootstrap_build.patch new file mode 100644 index 0000000..6902ec3 --- /dev/null +++ b/gcc-4.5.1-psignal_fix_bootstrap_build.patch @@ -0,0 +1,12 @@ +diff -Nru gcc-4.5.1.orig//libiberty/strsignal.c gcc-4.5.1/libiberty/strsignal.c +--- gcc-4.5.1.orig//libiberty/strsignal.c 2008-06-19 17:08:53.000000000 +0200 ++++ gcc-4.5.1/libiberty/strsignal.c 2010-09-23 20:00:01.972694593 +0200 +@@ -551,7 +551,7 @@ + #ifndef HAVE_PSIGNAL + + void +-psignal (int signo, char *message) ++psignal (int signo, const char *message) + { + if (signal_names == NULL) + { diff --git a/gcc-4.5.2-arm_define_ARM_PCS_and_ARM_PCS_VFP.patch b/gcc-4.5.2-arm_define_ARM_PCS_and_ARM_PCS_VFP.patch new file mode 100644 index 0000000..c64230a --- /dev/null +++ b/gcc-4.5.2-arm_define_ARM_PCS_and_ARM_PCS_VFP.patch @@ -0,0 +1,17 @@ +--- gcc-4.5.2.orig/gcc/config/arm/arm.h (revision 162381) ++++ gcc-4.5.2/gcc/config/arm/arm.h (working copy) +@@ -94,7 +94,13 @@ + if (arm_arch_iwmmxt) \ + builtin_define ("__IWMMXT__"); \ + if (TARGET_AAPCS_BASED) \ +- builtin_define ("__ARM_EABI__"); \ ++ { \ ++ if (TARGET_VFP && TARGET_HARD_FLOAT_ABI) \ ++ builtin_define ("__ARM_PCS_VFP"); \ ++ else \ ++ builtin_define ("__ARM_PCS"); \ ++ builtin_define ("__ARM_EABI__"); \ ++ } \ + } while (0) + + /* The various ARM cores. */ diff --git a/gcc-4.5.3-avr-new-devices.patch b/gcc-4.5.3-avr-new-devices.patch new file mode 100644 index 0000000..6ba9615 --- /dev/null +++ b/gcc-4.5.3-avr-new-devices.patch @@ -0,0 +1,216 @@ +diff -ur gcc-4.5.0-clean/gcc/config/avr/avr-devices.c gcc-4.5.0/gcc/config/avr/avr-devices.c +--- gcc-4.5.0-clean/gcc/config/avr/avr-devices.c 2009-07-18 04:49:03.000000000 +1000 ++++ gcc-4.5.0/gcc/config/avr/avr-devices.c 2010-07-09 23:32:45.000000000 +1000 +@@ -67,15 +67,21 @@ + { "attiny13", ARCH_AVR25, "__AVR_ATtiny13__", 1, 0x0060, "tn13" }, + { "attiny13a", ARCH_AVR25, "__AVR_ATtiny13A__", 1, 0x0060, "tn13a" }, + { "attiny2313", ARCH_AVR25, "__AVR_ATtiny2313__", 1, 0x0060, "tn2313" }, ++ { "attiny2313a", ARCH_AVR25, "__AVR_ATtiny2313A__", /*?*/1, 0x0060, "tn2313a" }, + { "attiny24", ARCH_AVR25, "__AVR_ATtiny24__", 1, 0x0060, "tn24" }, ++ { "attiny24a", ARCH_AVR25, "__AVR_ATtiny24A__", /*?*/1, 0x0060, "tn24a" }, ++ { "attiny4313", ARCH_AVR25, "__AVR_ATtiny4313__", /*?*/0, 0x0060, "tn44313" }, + { "attiny44", ARCH_AVR25, "__AVR_ATtiny44__", 0, 0x0060, "tn44" }, ++ { "attiny44a", ARCH_AVR25, "__AVR_ATtiny44A__", /*?*/0, 0x0060, "tn44a" }, + { "attiny84", ARCH_AVR25, "__AVR_ATtiny84__", 0, 0x0060, "tn84" }, + { "attiny25", ARCH_AVR25, "__AVR_ATtiny25__", 1, 0x0060, "tn25" }, + { "attiny45", ARCH_AVR25, "__AVR_ATtiny45__", 0, 0x0060, "tn45" }, + { "attiny85", ARCH_AVR25, "__AVR_ATtiny85__", 0, 0x0060, "tn85" }, + { "attiny261", ARCH_AVR25, "__AVR_ATtiny261__", 1, 0x0060, "tn261" }, ++ { "attiny261a", ARCH_AVR25, "__AVR_ATtiny261A__", /*?*/1, 0x0060, "tn261a" }, + { "attiny461", ARCH_AVR25, "__AVR_ATtiny461__", 0, 0x0060, "tn461" }, + { "attiny861", ARCH_AVR25, "__AVR_ATtiny861__", 0, 0x0060, "tn861" }, ++ { "attiny861a", ARCH_AVR25, "__AVR_ATtiny861A__", /*?*/0, 0x0060, "tn861a" }, + { "attiny43u", ARCH_AVR25, "__AVR_ATtiny43U__", 0, 0x0060, "tn43u" }, + { "attiny87", ARCH_AVR25, "__AVR_ATtiny87__", 0, 0x0100, "tn87" }, + { "attiny48", ARCH_AVR25, "__AVR_ATtiny48__", 0, 0x0100, "tn48" }, +@@ -102,9 +108,12 @@ + { "avr4", ARCH_AVR4, NULL, 0, 0x0060, "m8" }, + { "atmega8", ARCH_AVR4, "__AVR_ATmega8__", 0, 0x0060, "m8" }, + { "atmega48", ARCH_AVR4, "__AVR_ATmega48__", 0, 0x0100, "m48" }, ++ { "atmega48a", ARCH_AVR4, "__AVR_ATmega48A__", /*?*/0, 0x0100, "m48a" }, + { "atmega48p", ARCH_AVR4, "__AVR_ATmega48P__", 0, 0x0100, "m48p" }, + { "atmega88", ARCH_AVR4, "__AVR_ATmega88__", 0, 0x0100, "m88" }, ++ { "atmega88a", ARCH_AVR4, "__AVR_ATmega88A__", /*?*/0, 0x0100, "m88a" }, + { "atmega88p", ARCH_AVR4, "__AVR_ATmega88P__", 0, 0x0100, "m88p" }, ++ { "atmega88pa", ARCH_AVR4, "__AVR_ATmega88PA__", /*?*/0, 0x0100, "m88pa" }, + { "atmega8515", ARCH_AVR4, "__AVR_ATmega8515__", 0, 0x0060, "m8515" }, + { "atmega8535", ARCH_AVR4, "__AVR_ATmega8535__", 0, 0x0060, "m8535" }, + { "atmega8c1", ARCH_AVR4, "__AVR_ATmega8C1__", 0, 0x0100, "m8c1" }, +@@ -121,40 +130,62 @@ + /* Enhanced, > 8K, <= 64K. */ + { "avr5", ARCH_AVR5, NULL, 0, 0x0060, "m16" }, + { "atmega16", ARCH_AVR5, "__AVR_ATmega16__", 0, 0x0060, "m16" }, ++ { "atmega16a", ARCH_AVR5, "__AVR_ATmega16A__", /*?*/0, 0x0060, "m16a" }, + { "atmega161", ARCH_AVR5, "__AVR_ATmega161__", 0, 0x0060, "m161" }, + { "atmega162", ARCH_AVR5, "__AVR_ATmega162__", 0, 0x0100, "m162" }, + { "atmega163", ARCH_AVR5, "__AVR_ATmega163__", 0, 0x0060, "m163" }, ++ { "atmega164a", ARCH_AVR5, "__AVR_ATmega164A__", /*?*/0, 0x0100, "m164a" }, + { "atmega164p", ARCH_AVR5, "__AVR_ATmega164P__", 0, 0x0100, "m164p" }, + { "atmega165", ARCH_AVR5, "__AVR_ATmega165__", 0, 0x0100, "m165" }, ++ { "atmega165a", ARCH_AVR5, "__AVR_ATmega165A__", 0, 0x0100, "m165a" }, + { "atmega165p", ARCH_AVR5, "__AVR_ATmega165P__", 0, 0x0100, "m165p" }, + { "atmega168", ARCH_AVR5, "__AVR_ATmega168__", 0, 0x0100, "m168" }, ++ { "atmega168a", ARCH_AVR5, "__AVR_ATmega168A__", /*?*/0, 0x0100, "m168a" }, + { "atmega168p", ARCH_AVR5, "__AVR_ATmega168P__", 0, 0x0100, "m168p" }, + { "atmega169", ARCH_AVR5, "__AVR_ATmega169__", 0, 0x0100, "m169" }, ++ { "atmega169a", ARCH_AVR5, "__AVR_ATmega169A__", /*?*/0, 0x0100, "m169a" }, + { "atmega169p", ARCH_AVR5, "__AVR_ATmega169P__", 0, 0x0100, "m169p" }, ++ { "atmega169pa", ARCH_AVR5, "__AVR_ATmega169PA__", /*?*/0, 0x0100, "m169pa" }, + { "atmega32", ARCH_AVR5, "__AVR_ATmega32__", 0, 0x0060, "m32" }, + { "atmega323", ARCH_AVR5, "__AVR_ATmega323__", 0, 0x0060, "m323" }, ++ { "atmega324a", ARCH_AVR5, "__AVR_ATmega324A__", /*?*/0, 0x0100, "m324a" }, + { "atmega324p", ARCH_AVR5, "__AVR_ATmega324P__", 0, 0x0100, "m324p" }, ++ { "atmega324pa", ARCH_AVR5, "__AVR_ATmega324PA__", /*?*/0, 0x0100, "m324pa" }, + { "atmega325", ARCH_AVR5, "__AVR_ATmega325__", 0, 0x0100, "m325" }, + { "atmega325p", ARCH_AVR5, "__AVR_ATmega325P__", 0, 0x0100, "m325p" }, + { "atmega3250", ARCH_AVR5, "__AVR_ATmega3250__", 0, 0x0100, "m3250" }, + { "atmega3250p", ARCH_AVR5, "__AVR_ATmega3250P__", 0, 0x0100, "m3250p" }, ++ { "atmega328", ARCH_AVR5, "__AVR_ATmega328__", /*?*/0, 0x0100, "m328" }, + { "atmega328p", ARCH_AVR5, "__AVR_ATmega328P__", 0, 0x0100, "m328p" }, + { "atmega329", ARCH_AVR5, "__AVR_ATmega329__", 0, 0x0100, "m329" }, + { "atmega329p", ARCH_AVR5, "__AVR_ATmega329P__", 0, 0x0100, "m329p" }, ++ { "atmega329pa", ARCH_AVR5, "__AVR_ATmega329PA__", /*?*/0, 0x0100, "m329pa" }, + { "atmega3290", ARCH_AVR5, "__AVR_ATmega3290__", 0, 0x0100, "m3290" }, + { "atmega3290p", ARCH_AVR5, "__AVR_ATmega3290P__", 0, 0x0100, "m3290p" }, + { "atmega406", ARCH_AVR5, "__AVR_ATmega406__", 0, 0x0100, "m406" }, + { "atmega64", ARCH_AVR5, "__AVR_ATmega64__", 0, 0x0100, "m64" }, + { "atmega640", ARCH_AVR5, "__AVR_ATmega640__", 0, 0x0200, "m640" }, + { "atmega644", ARCH_AVR5, "__AVR_ATmega644__", 0, 0x0100, "m644" }, ++ { "atmega644a", ARCH_AVR5, "__AVR_ATmega644A__", /*?*/0, 0x0100, "m644a" }, + { "atmega644p", ARCH_AVR5, "__AVR_ATmega644P__", 0, 0x0100, "m644p" }, ++ { "atmega644pa", ARCH_AVR5, "__AVR_ATmega644PA__", /*?*/0, 0x0100, "m644pa" }, + { "atmega645", ARCH_AVR5, "__AVR_ATmega645__", 0, 0x0100, "m645" }, ++ { "atmega645a", ARCH_AVR5, "__AVR_ATmega645A__", /*?*/0, 0x0100, "m645a" }, ++ { "atmega645p", ARCH_AVR5, "__AVR_ATmega645P__", /*?*/0, 0x0100, "m645p" }, + { "atmega6450", ARCH_AVR5, "__AVR_ATmega6450__", 0, 0x0100, "m6450" }, ++ { "atmega6450a", ARCH_AVR5, "__AVR_ATmega6450A__", /*?*/0, 0x0100, "m6450a" }, ++ { "atmega6450p", ARCH_AVR5, "__AVR_ATmega6450P__", /*?*/0, 0x0100, "m6450p" }, + { "atmega649", ARCH_AVR5, "__AVR_ATmega649__", 0, 0x0100, "m649" }, ++ { "atmega649a", ARCH_AVR5, "__AVR_ATmega649A__", /*?*/0, 0x0100, "m649a" }, ++ { "atmega649p", ARCH_AVR5, "__AVR_ATmega649P__", /*?*/0, 0x0100, "m649p" }, + { "atmega6490", ARCH_AVR5, "__AVR_ATmega6490__", 0, 0x0100, "m6490" }, ++ { "atmega6490a", ARCH_AVR5, "__AVR_ATmega6490A__", /*?*/0, 0x0100, "m6490a" }, ++ { "atmega6490p", ARCH_AVR5, "__AVR_ATmega6490P__", /*?*/0, 0x0100, "m6490p" }, + { "atmega16hva", ARCH_AVR5, "__AVR_ATmega16HVA__", 0, 0x0100, "m16hva" }, ++ { "atmega16hva2", ARCH_AVR5, "__AVR_ATmega16HVA2__", /*?*/0, 0x0100, "m16hva2" }, + { "atmega16hvb", ARCH_AVR5, "__AVR_ATmega16HVB__", 0, 0x0100, "m16hvb" }, +- { "atmega32hvb", ARCH_AVR5, "__AVR_ATmega32HVB__", 0, 0x0100, "m23hvb" }, ++ { "atmega32hvb", ARCH_AVR5, "__AVR_ATmega32HVB__", 0, 0x0100, "m32hvb" }, ++ { "atmega64hve", ARCH_AVR5, "__AVR_ATmega64HVE__", /*?*/0, 0x0100, "m64hve" }, + { "at90can32", ARCH_AVR5, "__AVR_AT90CAN32__", 0, 0x0100, "can32" }, + { "at90can64", ARCH_AVR5, "__AVR_AT90CAN64__", 0, 0x0100, "can64" }, + { "at90pwm216", ARCH_AVR5, "__AVR_AT90PWM216__", 0, 0x0100, "90pwm216" }, +diff -ur gcc-4.5.0-clean/gcc/config/avr/t-avr gcc-4.5.0/gcc/config/avr/t-avr +--- gcc-4.5.0-clean/gcc/config/avr/t-avr 2009-12-25 07:32:38.000000000 +1100 ++++ gcc-4.5.0/gcc/config/avr/t-avr 2010-07-09 23:05:26.000000000 +1000 +@@ -81,16 +81,23 @@ + mmcu?avr25=mmcu?attiny13 \ + mmcu?avr25=mmcu?attiny13a \ + mmcu?avr25=mmcu?attiny2313 \ ++ mmcu?avr25=mmcu?attiny2313a \ + mmcu?avr25=mmcu?attiny24 \ +- mmcu?avr25=mmcu?attiny44 \ +- mmcu?avr25=mmcu?attiny84 \ ++ mmcu?avr25=mmcu?attiny24a \ + mmcu?avr25=mmcu?attiny25 \ +- mmcu?avr25=mmcu?attiny45 \ +- mmcu?avr25=mmcu?attiny85 \ + mmcu?avr25=mmcu?attiny261 \ ++ mmcu?avr25=mmcu?attiny261a \ ++ mmcu?avr25=mmcu?attiny4313 \ ++ mmcu?avr25=mmcu?attiny43u \ ++ mmcu?avr25=mmcu?attiny44 \ ++ mmcu?avr25=mmcu?attiny44a \ ++ mmcu?avr25=mmcu?attiny45 \ + mmcu?avr25=mmcu?attiny461 \ ++ mmcu?avr25=mmcu?attiny461a \ ++ mmcu?avr25=mmcu?attiny84 \ ++ mmcu?avr25=mmcu?attiny85 \ + mmcu?avr25=mmcu?attiny861 \ +- mmcu?avr25=mmcu?attiny43u \ ++ mmcu?avr25=mmcu?attiny861a \ + mmcu?avr25=mmcu?attiny87 \ + mmcu?avr25=mmcu?attiny48 \ + mmcu?avr25=mmcu?attiny88 \ +@@ -107,12 +114,15 @@ + mmcu?avr35=mmcu?attiny167 \ + mmcu?avr35=mmcu?attiny327 \ + mmcu?avr4=mmcu?atmega48 \ ++ mmcu?avr4=mmcu?atmega48a \ + mmcu?avr4=mmcu?atmega48p \ + mmcu?avr4=mmcu?atmega8 \ + mmcu?avr4=mmcu?atmega8515 \ + mmcu?avr4=mmcu?atmega8535 \ + mmcu?avr4=mmcu?atmega88 \ ++ mmcu?avr4=mmcu?atmega88a \ + mmcu?avr4=mmcu?atmega88p \ ++ mmcu?avr4=mmcu?atmega88pa \ + mmcu?avr4=mmcu?atmega8hva \ + mmcu?avr4=mmcu?atmega4hvd \ + mmcu?avr4=mmcu?atmega8hvd \ +@@ -125,16 +135,21 @@ + mmcu?avr4=mmcu?at90pwm3b \ + mmcu?avr4=mmcu?at90pwm81 \ + mmcu?avr5=mmcu?atmega16 \ ++ mmcu?avr5=mmcu?atmega16a \ + mmcu?avr5=mmcu?atmega161 \ + mmcu?avr5=mmcu?atmega162 \ + mmcu?avr5=mmcu?atmega163 \ ++ mmcu?avr5=mmcu?atmega164a \ + mmcu?avr5=mmcu?atmega164p \ + mmcu?avr5=mmcu?atmega165 \ ++ mmcu?avr5=mmcu?atmega165a \ + mmcu?avr5=mmcu?atmega165p \ + mmcu?avr5=mmcu?atmega168 \ + mmcu?avr5=mmcu?atmega168p \ + mmcu?avr5=mmcu?atmega169 \ ++ mmcu?avr5=mmcu?atmega169a \ + mmcu?avr5=mmcu?atmega169p \ ++ mmcu?avr5=mmcu?atmega169pa \ + mmcu?avr5=mmcu?atmega32 \ + mmcu?avr5=mmcu?atmega323 \ + mmcu?avr5=mmcu?atmega324p \ +@@ -142,21 +157,35 @@ + mmcu?avr5=mmcu?atmega325p \ + mmcu?avr5=mmcu?atmega3250 \ + mmcu?avr5=mmcu?atmega3250p \ ++ mmcu?avr5=mmcu?atmega328 \ + mmcu?avr5=mmcu?atmega328p \ + mmcu?avr5=mmcu?atmega329 \ + mmcu?avr5=mmcu?atmega329p \ ++ mmcu?avr5=mmcu?atmega329pa \ + mmcu?avr5=mmcu?atmega3290 \ + mmcu?avr5=mmcu?atmega3290p \ ++ mmcu?avr5=mmcu?atmega32hvb \ + mmcu?avr5=mmcu?atmega406 \ + mmcu?avr5=mmcu?atmega64 \ + mmcu?avr5=mmcu?atmega640 \ + mmcu?avr5=mmcu?atmega644 \ ++ mmcu?avr5=mmcu?atmega644a \ + mmcu?avr5=mmcu?atmega644p \ ++ mmcu?avr5=mmcu?atmega644pa \ + mmcu?avr5=mmcu?atmega645 \ ++ mmcu?avr5=mmcu?atmega645a \ ++ mmcu?avr5=mmcu?atmega645p \ + mmcu?avr5=mmcu?atmega6450 \ ++ mmcu?avr5=mmcu?atmega6450a \ ++ mmcu?avr5=mmcu?atmega6450p \ + mmcu?avr5=mmcu?atmega649 \ ++ mmcu?avr5=mmcu?atmega649a \ ++ mmcu?avr5=mmcu?atmega649p \ + mmcu?avr5=mmcu?atmega6490 \ ++ mmcu?avr5=mmcu?atmega6490a \ ++ mmcu?avr5=mmcu?atmega6490p \ + mmcu?avr5=mmcu?atmega16hva \ ++ mmcu?avr5=mmcu?atmega16hva2 \ + mmcu?avr5=mmcu?atmega16hvb \ + mmcu?avr5=mmcu?atmega32hvb \ + mmcu?avr5=mmcu?at90can32 \ +@@ -172,6 +201,7 @@ + mmcu?avr5=mmcu?atmega16u4 \ + mmcu?avr5=mmcu?atmega32u4 \ + mmcu?avr5=mmcu?atmega32u6 \ ++ mmcu?avr5=mmcu?atmega64hve \ + mmcu?avr5=mmcu?at90scr100 \ + mmcu?avr5=mmcu?at90usb646 \ + mmcu?avr5=mmcu?at90usb647 \ diff --git a/gcc-4.8.0-libffi-texinfo.patch b/gcc-4.8.0-libffi-texinfo.patch new file mode 100644 index 0000000..c954e44 --- /dev/null +++ b/gcc-4.8.0-libffi-texinfo.patch @@ -0,0 +1,19 @@ +--- gcc-4.8.0/libffi/doc/libffi.texi.orig 2013-03-27 14:30:44.349767608 +0100 ++++ gcc-4.8.0/libffi/doc/libffi.texi 2013-03-27 14:36:39.440125266 +0100 +@@ -360,7 +360,6 @@ + new @code{ffi_type} object for it. + + @tindex ffi_type +-@deftp ffi_type + The @code{ffi_type} has the following members: + @table @code + @item size_t size +@@ -376,8 +375,6 @@ + This is a @samp{NULL}-terminated array of pointers to @code{ffi_type} + objects. There is one element per field of the struct. + @end table +-@end deftp +- + + @node Type Example + @subsection Type Example diff --git a/gcc-shared-openmp.patch b/gcc-shared-openmp.patch new file mode 100644 index 0000000..c744427 --- /dev/null +++ b/gcc-shared-openmp.patch @@ -0,0 +1,14 @@ +diff -Naur ./libgomp/configure.tgt ../../gcc-4.2.0/libgomp/configure.tgt +--- ./libgomp/configure.tgt 2006-12-02 18:02:00.000000000 -0200 ++++ ../../gcc-4.2.0/libgomp/configure.tgt 2007-07-07 15:24:51.000000000 -0300 +@@ -17,8 +17,8 @@ + case "${target}" in + + *-*-linux*) +- XCFLAGS="${XCFLAGS} -ftls-model=initial-exec" +- XLDFLAGS="${XLDFLAGS} -Wl,-z,nodlopen" ++# XCFLAGS="${XCFLAGS} -ftls-model=initial-exec" ++# XLDFLAGS="${XLDFLAGS} -Wl,-z,nodlopen" + ;; + esac + fi diff --git a/gcc.spec b/gcc.spec new file mode 100644 index 0000000..57b2206 --- /dev/null +++ b/gcc.spec @@ -0,0 +1,1516 @@ +# openmamba cross platform gcc specfile + +%define target_cpu %(echo %{_target_platform} | cut -d- -f1) +%if "%{?_target_platform}" != "%{_host}" +# % define target_platform %{cross_target_cpu}-openmamba-linux-gnu +# % define target_cpu %{cross_target_cpu} + %define _as %{_target_platform}-as + %define _ld %{_target_platform}-ld + %if "%{target_cpu}" == "x86_64" + %define _lib lib64 + %endif +%else +# % define target_platform %{_target_platform} + %define target_cpu %{_target_cpu} + %define _as as + %define _ld ld +%endif + +%define gcc_branch %(echo %{version} | cut -d. -f 1-2) +#% define gcc_extraver -20050810 + +# use stage1 == 1 to have a gcc build not depending on +# glibc library; this is usually the first needed step in +# order to add support for a new (cross)target platform +%if "%{?stage1}" == "1" + %define bootstrap_append -stage1 + %define disable_cpp 1 + %define disable_doc 1 + %define disable_java 1 +%endif + +%if "%{?stage2}" == "1" + %define bootstrap_append -stage2 +%endif + +%define libstdcxx_name libstdc++6 +%define libgcj_name libgcj4 +%define java_home %{_jvmdir}/java-1.5.0-gcj-1.5.0.0/jre + +%define majver %(echo %version | cut -d. -f 1-2) + +Name: gcc +Version: 4.8.2 +Release: 1mamba +Summary: GNU Compiler Collection (C, C++, Fortran, Java, Ada) +Group: Applications/Development +Vendor: openmamba +Distribution: openmamba +Packager: Silvan Calarco +URL: http://gcc.gnu.org/ +Source: ftp://ftp.gnu.org/gnu/gcc/gcc-%{version}/gcc-%{version}%{?gcc_extraver}.tar.bz2 +Source1: ftp://sourceware.org/pub/java/ecj-latest.jar +Source2: gcc-4.3.2-ecj1-wrapper +Patch2: gcc4-java-nomulti.patch +Patch0: %{name}-4.5.0-no_fixincludes.patch +Patch1: %{name}-4.0.2-zextract.patch +Patch3: %{name}-4.0.2-BufferStrategy.patch +Patch4: %{name}-4.0.2-failure_with_compound_literals.patch +Patch5: %{name}-4.1.1-arm-t-linux.patch +Patch6: %{name}-4.1.1-libgcc-softfloat-fix.patch +Patch7: %{name}-shared-openmp.patch +Patch8: %{name}-4.4.0-pr39543.patch +Patch9: %{name}-4.4.3-cross_build_fix.patch +Patch11: %{name}-4.5.1-psignal_fix_bootstrap_build.patch +Patch12: %{name}-4.5.2-arm_define_ARM_PCS_and_ARM_PCS_VFP.patch +Patch13: %{name}-4.5.3-avr-new-devices.patch +Patch14: gcc-4.8.0-libffi-texinfo.patch +License: GPL +## AUTOBUILDREQ-BEGIN +## AUTOBUILDREQ-END +%if "%{?cross_target_cpu}" == "" +BuildRequires: binutils +%else +BuildRequires: cross-%{_target_platform}-binutils +%endif +BuildRequires: libz-devel +BuildRequires: gettext +BuildRequires: flex +BuildRequires: bison +BuildRequires: diffutils +BuildRequires: texinfo >= 4.6 +BuildRequires: libmpc-devel +BuildRequires: libmpfr-devel >= 2.1.2 +%if "%{_target_platform}" == "%{_build}" +BuildRequires: glibc-devel >= 2.5 +%if "%{?stage2}" != "1" +BuildRequires: tetex >= 3.0 +BuildRequires: libgtk2-devel >= 2.8.17 +BuildRequires: libalsa-devel >= 1.0.11 +%if "%{?disable_jack}" != "1" +BuildRequires: dssi-devel >= 0.9 +BuildRequires: libjack-devel >= 0.101.1 +%endif +%if "%{?disable_java}" != "1" +BuildRequires: zip +BuildRequires: fastjar +BuildRequires: jpackage-utils +%endif +%if "%{?disable_gjdoc}" != "1" +BuildRequires: antlr +%endif +BuildRequires: libcairo-devel >= 1.4.10 +BuildRequires: libxcb-util-devel >= 0.2 +%endif +#% else +# BuildRequires: cross-%{target_cpu}-glibc%{?glibc_require_append} >= 2.5 +%endif + +Requires(post):%{__install_info} +Requires: %{name}-cpp = %{version}-%{release} +Requires: libgcc >= %{version}-%{release} +Requires: binutils >= 2.16.1 +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +%description +A compiler aimed at integrating all the optimizations and features necessary for a high-performance and stable development environment. +This package is required for all other GCC compilers, namely C++, Fortran, Objective C and Java. + +%package -n gcc-multilib +Summary: gcc multilib package for building 32 bit applications on x86_64 architecture +Group: Applications/Development + +%description -n gcc-multilib +gcc multilib package for building 32 bit applications on x86_64 architecture. + +# +# GCC Library +# +%package -n libgcc +Summary: GNU C Library +Group: System/Libraries + +%description -n libgcc +The libgcc package contains GCC shared libraries for gcc %{gcc_branch}. + +# +# Preprocessor +# +%package cpp +Summary: The C Preprocessor +Group: Development/Libraries +#Requires: %{name} = %{version}-%{release} + +%description cpp +The C preprocessor is a `macro processor' which is used automatically by the C compiler to transform your program before actual compilation. +It is called a macro processor because it allows you to define `macros,' which are abbreviations for longer constructs. + +The C preprocessor provides four separate facilities that you can use as you see fit: + * Inclusion of header files. These are files of declarations that can be substituted into your program. + * Macro expansion. You can define 'macros,' which are abbreviations for arbitrary fragments of C code, and then the C preprocessor will replace the macros with their definitions throughout the program. + * Conditional compilation. Using special preprocessing directives, you can include or exclude parts of the program according to various conditions. + * Line control. If you use a program to combine or rearrange source files into an intermediate file which is then compiled, you can use line control to inform the compiler about where each source line originated. + +You should install this package if you are a programmer who is searching for such a macro processor. + +# +# C++ Compiler +# +%package c++ +Summary: C++ support for gcc +Group: Applications/Development +Requires: %{name} = %{version}-%{release} +Requires: %{libstdcxx_name} = %{version} +Requires: %{libstdcxx_name}-devel = %{version} + +%description c++ +This package adds C++ support to the GNU C compiler. It includes support for most of the current C++ specification, including templates and exception handling. It does include the static standard C++ library and C++ header files. +The library for dynamically linking programs is available separately. + +# +# C++ Library +# +%package -n %{libstdcxx_name} +Summary: GNU C++ library +Group: System/Libraries +Provides: libstdc++ + +%description -n %{libstdcxx_name} +This package contains the GCC Standard C++ Library v3, an ongoing project to implement the ISO/IEC 14882:1998 Standard C++ library. + +%package -n %{libstdcxx_name}-devel +Summary: GNU C++ library development files +Group: Development/Libraries +Requires: %{libstdcxx_name} = %{version}-%{release} + +%description -n %{libstdcxx_name}-devel +This is the GNU implementation of the standard C++ libraries. +This package includes the headers files and libraries needed for C++ development. + +%package -n %{libstdcxx_name}-debug +Summary: GNU C++ library debug files +Group: Development/Libraries +Requires: %{libstdcxx_name} = %{version}-%{release} + +%description -n %{libstdcxx_name}-debug +This is the GNU implementation of the standard C++ libraries. +This package includes the files used by gdb for debugging. + +# +# Java Compiler +# +%package java +Summary: Java support for gcc +Group: Applications/Development +Requires: %{libgcj_name} >= %{version} +Requires: %{libgcj_name}-devel >= %{version} +Provides: gjdoc +Obsoletes: gjdoc +Obsoletes: %{name}-java-tools + +%description java +This package adds experimental support for compiling Java(tm) programs and bytecode into native code. To use this you will also need the libgcj4 package. + +# +# Java Libraries +# +%package -n %{libgcj_name} +Summary: GNU Java runtime libraries +Group: System/Libraries +Provides: libgcj + +%description -n %{libgcj_name} +Runtime libraries for the GNU Java Compiler. The %{libgcj_name} includes parts of the Java Class Libraries, plus glue to connect the libraries to the compiler and the underlying OS. + +%package -n %{libgcj_name}-devel +Summary: Header files and libraries for Java development +Group: Development/Libraries +Requires: %{libgcj_name} = %{version}-%{release} +Provides: libgcj-devel + +%description -n %{libgcj_name}-devel +Development headers and libraries for the GNU Java Compiler. +The %{libgcj_name} includes parts of the Java Class Libraries, plus glue to connect the libraries to the compiler and the underlying OS. + +# +# Fortran 95 Compiler +# +%package fortran +Summary: Fortran 95 support for gcc +Group: Applications/Development +Requires: libgfortran = %{version}-%{release} +Requires: %{name} = %{version}-%{release} +Obsoletes: gcc-g77, gcc-gfortran + +%description fortran +This package adds support for compiling Fortran 95 programs with the GNU compiler. + +# +# Fortran 95 Libraries +# +%package -n libgfortran +Summary: Fortran 95 runtime libraries +Group: System/Libraries + +%description -n libgfortran +This package contains Fortran 95 shared library which is needed to run Fortran 95 dynamically linked programs. + +%package -n libitm +Summary: Transactional Memory library +Group: System/Libraries + +%description -n libitm +This package contains the GNU Transactional Memory library. + +%package -n libitm-devel +Summary: Development files for libitm +Group: Development/Libraries +Requires: libobjc = %{version}-%{release} + +%description -n libitm-devel +This package contains libitm static library and includes. + +%package -n libgomp +Summary: GNU OpenMP library +Group: System/Libraries + +%description -n libgomp +An implementation of OpenMP for the C, C++, and Fortran 95 compilers in the GNU Compiler Collection. + +%package -n libgomp-devel +Summary: Development headers and static library for libgomp +Group: Development/Libraries +Requires: libgomp = %{version}-%{release} + +%description -n libgomp-devel +An implementation of OpenMP for the C, C++, and Fortran 95 compilers in the GNU Compiler Collection. +This package contains development headers and static library for libgomp + +%package -n libobjc +Summary: Objective-C runtime library +Group: System/Libraries + +%description -n libobjc +This package contains Objective-C shared library which is needed to run Objective-C dynamically linked programs. + +%package -n libobjc-devel +Summary: Objective-C static library +Group: Development/Libraries +Requires: libobjc = %{version}-%{release} + +%description -n libobjc-devel +This package contains Objective-C static library and includes which are needed to build Objective-C statically linked programs. + +%package -n libmudflap +Summary: GCC mudflap support +Group: System/Libraries + +%description -n libmudflap +This package contains GCC shared support library which is needed for mudflap support. + +%package -n libmudflap-devel +Summary: GCC mudflap support +Group: Development/Libraries +Requires: libmudflap = %{version}-%{release} + +%description -n libmudflap-devel +This package contains headers and static libraries for building mudflap-instrumented programs. + +To instrument a non-threaded program, add -fmudflap option to GCC and when linking add -lmudflap, for threaded programs also add -fmudflapth and -lmudflapth. + +# +# libssp packages +# +%package -n libssp +Summary: GCC extension library for protecting applications from stack-smashing attacks +Group: System/Libraries + +%description -n libssp +GCC extension library for protecting applications from stack-smashing attacks. + +%package -n libssp-devel +Summary: GCC extension library for protecting applications from stack-smashing attacks +Group: Development/Libraries +Requires: libssp = %{version}-%{release} + +%description -n libssp-devel +GCC extension library for protecting applications from stack-smashing attacks. +This package contains static libraries and headers to be used for development. + +# +# libquadmath packages +# +%package -n libquadmath +Summary: GCC Quad-Precision (__float128) Math Library Application Programming Interface (API) +Group: System/Libraries + +%description -n libquadmath +GCC Quad-Precision (__float128) Math Library Application Programming Interface (API). + +%package -n libquadmath-devel +Summary: GCC Quad-Precision (__float128) Math Library Application Programming Interface (API) +Group: Development/Libraries +Requires: libquadmath = %{version}-%{release} + +%description -n libquadmath-devel +GCC Quad-Precision (__float128) Math Library Application Programming Interface (API). + +This package contains static libraries and headers to be used for development. + +%package -n libasan +Summary: GCC Address Sanitizer library +Group: System/Libraries + +%description -n libasan +This package contains the GCC Address Sanitizer library. + +%package -n libasan-devel +Summary: libasan development libraries and headers +Group: Development/Libraries +Requires: libasan = %{version}-%{release} + +%description -n libasan-devel +This package contains static libraries and headers to be used for development. + +%package -n libatomic +Summary: GCC Atomic library +Group: System/Libraries + +%description -n libatomic +This package contains the GCC Atomic library. + +%package -n libatomic-devel +Summary: libatimic development libraries and headers +Group: Development/Libraries +Requires: libatomic = %{version}-%{release} + +%description -n libatomic-devel +This package contains static libraries and headers to be used for development. + +# +# Documentation +# +%package doc +Group: Documentation +Summary: GCC documentation + +%description doc +GCC is a compiler suite aimed at integrating all the optimizations and features necessary for a high-performance and stable development environment. +This package contains the compiler documentation in INFO pages. + +%package -n cross-%{_target_platform}-%{name}%{?bootstrap_append} +Summary: Cross Platform gcc for %{_target_platform} +Group: Development/Tools +Requires: cross-%{_target_platform}-binutils +%if "%{?stage1}" != "1" +Obsoletes: cross-%{_target_platform}-%{name}-stage1 +%endif +AutoReqProv: no + +%description -n cross-%{_target_platform}-%{name}%{?bootstrap_append} +Cross Platform gcc for %{_target_platform}. + +%prep +%setup -n gcc-%{version}%{?gcc_extraver} -q -D -T +:<< ___EOF +%patch2 -p0 +sed -i -e 's/libjawt/libgcjawt/g' libjava/Makefile.{am,in} + +%patch0 -p1 +#%patch1 -p1 +#%patch3 -p1 +#%patch4 -p1 +#%patch5 -p1 +#%patch6 -p1 +#%patch7 -p1 +#%patch8 -p0 +%if "%{_target_platform}" != "%{_build}" +%patch9 -p1 +%endif + +# psignal_fix_bootstrap_build +%patch11 -p1 +#%patch12 -p1 +#%patch13 -p1 +%patch14 -p1 + +%build +:<< ____EOF +rm -rf ../%{name}-build +____EOF +mkdir ../%{name}-build && +cd ../%{name}-build + +slibdir=/%{_lib} + +# BUILD_LANGUAGES is only used in final (not staged) build +BUILD_LANGUAGES=c,objc,lto + +# FIXME: other languages: lto, obj-c++ + +%if "%{disable_cpp}" != "1" +# Fortran won't build cross platform (?) +BUILD_LANGUAGES="${BUILD_LANGUAGES},c++,obj-c++" +%endif +%if "%{disable_fortran}" != "1" +# Fortran won't build cross platform (?) +BUILD_LANGUAGES="${BUILD_LANGUAGES},fortran" +%endif +%if "%{disable_java}" != "1" +# Java depends on gdk +BUILD_LANGUAGES="${BUILD_LANGUAGES},java" +%endif + +case %{_target_platform} in + i386-*|i486-*|i586-*|i686-*|athlon-*) + ADDITIONAL_OPTS="--with-arch=i686" + ;; + ppc-* | powerpc-*) + ADDITIONAL_OPTS="" + ;; + arm-*) + ADDITIONAL_OPTS="" + #"--enable-multilib" + ;; + avr*) + ADDITIONAL_OPTS="--with-dwarf2" + BUILD_LANGUAGES="c,c++" + ;; + x86_64-*) + %if "%{_target_platform}" != "%{_host}" + ADDITIONAL_OPTS="--with-slibdir=/usr/%{_target_platform}/lib64 --disable-multilib" + %else + ADDITIONAL_OPTS="--with-slibdir=/lib64" + %endif + ;; + *) + echo "Error: target not supported." + exit 1 + ;; +esac + +%if "%{?stage1}" == "1" + +../gcc-%{version}%{?gcc_extraver}/configure \ + --host=%{_host} \ + --build=%{_build} \ + --target=%{_target_platform} \ + --prefix=%{_prefix} \ + --libdir=%{_libdir} \ + --infodir=%{_infodir} \ + --mandir=%{_mandir} \ + --disable-nls \ + --disable-shared \ + --disable-threads \ + --enable-languages=c,objc,fortran \ + --with-newlib \ + --without-headers \ + --disable-libmudflap \ + --disable-libssp \ + --disable-libgomp \ +%if "%{_target_platform}" != "%{_host}" + --with-local-prefix=/usr/%{_target_platform} \ +%endif + $ADDITIONAL_OPTS +make %{?_smp_mflags} +# all-gcc + +%else + + +CROSS_SYSTEM_HEADER_DIR=/usr/%{_target_platform}/include \ +../gcc-%{version}%{?gcc_extraver}/configure \ + --prefix=%{_prefix} \ + --libdir=%{_libdir} \ + --infodir=%{_infodir} \ + --mandir=%{_mandir} \ + --host=%{_host} \ + --build=%{_build} \ + --target=%{_target_platform} \ + --enable-shared \ + --enable-languages=$BUILD_LANGUAGES \ +%if "%{target_cpu}" != "avr" + --enable-threads=posix \ + --enable-__cxa_atexit \ + --enable-clocale=gnu \ + --x-includes=%{_includedir} \ + --x-libraries=%{_libdir} \ + --enable-java-awt=gtk \ + --with-java-home=%{java_home} \ + --enable-libgcj-multifile \ + --with-system-zlib \ +%if "%{?disable_jack}" == "1" + --disable-dssi \ +%endif +%if "%{_target_platform}" != "%{_host}" + --enable-symvers=gnu \ + --with-local-prefix=/usr/%{_target_platform} \ +%else + --with-slibdir=$slibdir \ +%endif +%endif + $ADDITIONAL_OPTS + +# --with-headers=yes \ +# --with-headers=/usr/%{_target_platform}/include \ + +%if "%{_target_platform}" != "%{_build}" + make %{?_smp_mflags} CFLAGS='' LIBCFLAGS='-g -O2' \ + LIBCXXFLAGS='-g -O2 -fno-implicit-templates' all +%else + make %{?_smp_mflags} CFLAGS='-O -I/usr/include/freetype2' LIBCFLAGS='-g -O2' \ + LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap +%endif +%if "%{disable_doc}" != "1" + make pdf +%endif + +%endif # stage1 = 1 + +%install +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" + +cd ../%{name}-build +make DESTDIR=%{buildroot} install + +%if "%{_target_platform}" == "%{_host}" +# make target platform binaries symlinks to avoid binary duplicates +for p in gcc-%{version} gcc gcc-ar gcc-nm gcc-ranlib c++ g++ gcj gfortran; do + rm -f %{buildroot}%{_bindir}/%{_target_platform}-$p +done + +ln -s gcc %{buildroot}%{_bindir}/%{_target_platform}-gcc-%{version} + +for p in gcc gcc-ar gcc-nm gcc-ranlib cc gcov c++ g++ gcj gfortran; do + ln -s $p %{buildroot}%{_bindir}/%{_target_platform}-$p +done + +# create symlinks + mkdir -p %{buildroot}/%{_lib} + ln -s ../usr/bin/cpp %{buildroot}/%{_lib}/cpp + ln -s ../bin/cpp %{buildroot}%{_libdir} + ln -s gcc %{buildroot}/usr/bin/cc + +# +# Documentation +# +%if "%{disable_java}" != "1" +mkdir -p ../gcc-%{version}%{?gcc_extraver}/rpm.doc/boehm-gc +mkdir -p ../gcc-%{version}%{?gcc_extraver}/rpm.doc/libjava +#(cd ../gcc-%{version}%{?gcc_extraver}/boehm-gc; for i in ChangeLog*; do +# cp -p $i ../rpm.doc/boehm-gc/$i.gc +#done) +(cd ../gcc-%{version}%{?gcc_extraver}/libjava; for i in README THANKS COPYING ChangeLog; do + cp -p $i ../rpm.doc/libjava/$i.libjava +done) +(cd ../gcc-%{version}%{?gcc_extraver}/libjava; + cp -p LIBGCJ_LICENSE ../rpm.doc/libjava/LICENSE.libjava) + +make DESTDIR=%{buildroot} -C %{_target_platform}/libjava install-src.zip + +# FIXME: install precompiled ecj library (should come from Eclipse that is +# currently missing in the distribution +install -m0755 %{SOURCE1} %{buildroot}%{_datadir}/java/ecj.jar +install -m0755 %{SOURCE2} %{buildroot}%{_bindir}/ecj1 +%endif +# +# PDF gfortran documentation +# +#(cd ../gcc-%{version}%{?gcc_extraver}/gcc/fortran; +# texi2dvi -p -t @afourpaper -t @finalout -I ../doc/include -I ../../../gcc-build/gcc gfortran.texi) + +# +# copy PDF gcc documentation to builddir for use with %doc +# +%if "%{disable_doc}" != "1" +cp gcc/doc/*.pdf %{_builddir}/gcc-%{version}%{?gcc_extraver}/gcc/doc/ +%endif + +# FIXME: since 4.5.0 this file causes an annoying warning with ldconfig if installed in /usr/lib +mkdir -p %{buildroot}%{_datadir}/gdb/auto-load/%{_libdir} +mv %{buildroot}%{_libdir}/libstdc++.so.*-gdb.py %{buildroot}%{_datadir}/gdb/auto-load/%{_libdir}/ +%ifarch x86_64 +%if "%{_target_platform}" != "%{_host}" +# fix for 32bit multilib build +mkdir -p %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/lib +mv %{buildroot}%{_prefix}/lib/libstdc++.so.*-gdb.py %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/lib/ +%endif +%endif + +(cd ../gcc-%{version}%{?gcc_extraver} +%find_lang gcc +%find_lang cpplib +%find_lang libstdc++ +) + +#(cd ../gcc-%{version}%{?gcc_extraver}/gcc/doc; +# for file in gcc.texi cpp.texi cppinternals.texi; do +# texi2dvi -p -t @afourpaper -t @finalout -I ./include -I ../../../gcc-build/gcc $file +#done) + +# fix permissions +chmod 755 %{buildroot}/%{_lib}/libgcc_s.so.1 +#cp gcc/doc/*.pdf ../gcc-%{version}%{?gcc_extraver}/gcc/doc/ + +%else # target_platform != host + rm -rf %{buildroot}%{_infodir}/* + rm -rf %{buildroot}%{_mandir}/man7/{fsf-funding.*,gfdl.*,gpl.*} + rm -rf %{buildroot}%{_datadir}/locale/* + rm -rf %{buildroot}%{_datadir}/gcc-%{version}/python/libstdcxx/* +%endif +# remove ffi provided by external package +rm -f %{buildroot}%{_libdir}/libffi* +rm -f %{buildroot}%{_libdir}/nof/libffi* +rm -f %{buildroot}%{_mandir}/man3/ffi*.3* +rm -f %{buildroot}%{_infodir}/libffi.info* +# remove libiberty (we use the one from binutils) +rm -f %{buildroot}%{_libdir}/libiberty.a +rm -f %{buildroot}%{_libdir}/nof/libiberty.a +rm -f %{buildroot}%{_prefix}/%{_target_platform}/%{_lib}/libiberty.a +rm -f %{buildroot}%{_prefix}/%{_target_platform}/%{_lib}/nof/libiberty.a + +# don't strip libraries for avr +%if "%{target_cpu}" == "avr" +find %{buildroot}%{_libdir}/gcc -name lib*.a -exec chmod -w {} \; +%endif + +%clean +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" + +%post -n libgcc -p /sbin/ldconfig +%postun -n libgcc -p /sbin/ldconfig + +%post -n %{libstdcxx_name} -p /sbin/ldconfig +%postun -n %{libstdcxx_name} -p /sbin/ldconfig + +%post -n %{libgcj_name} -p /sbin/ldconfig +%postun -n %{libgcj_name} -p /sbin/ldconfig + +%post -n libgfortran -p /sbin/ldconfig +%postun -n libgfortran -p /sbin/ldconfig + +%post -n libquadmath -p /sbin/ldconfig +%postun -n libquadmath -p /sbin/ldconfig + +%post -n libasan -p /sbin/ldconfig +%postun -n libatomic -p /sbin/ldconfig + +%post doc +%install_info cppinternals.info +%install_info gcc.info +%install_info gccinstall.info +%install_info gccint.info +%if "%{disable_java}" != "1" +%install_info gcj.info +%endif +%if "%{disable_fortran}" != "1" +%install_info gfortran.info +%endif +: + +%preun doc +%uninstall_info cppinternals.info +%uninstall_info gcc.info +%uninstall_info gccinstall.info +%uninstall_info gccint.info +%uninstall_info gcj.info +%uninstall_info gfortran.info +: + + +%if "%{_target_platform}" == "%{_host}" + +# +# C Language and base tools and libraries +# +%files -f gcc.lang +%defattr(-,root,root) +%{_bindir}/cc +%{_bindir}/gcc +%{_bindir}/gcc-ar +%{_bindir}/gcc-nm +%{_bindir}/gcc-ranlib +%{_bindir}/gcov +%{_bindir}/%{_target_platform}-cc +%{_bindir}/%{_target_platform}-gcc-%{version} +%{_bindir}/%{_target_platform}-gcc +%{_bindir}/%{_target_platform}-gcc-ar +%{_bindir}/%{_target_platform}-gcc-nm +%{_bindir}/%{_target_platform}-gcc-ranlib +%{_bindir}/%{_target_platform}-gcov +%{_libdir}/cpp +%dir %{_libdir}/gcc +%{_libdir}/gcc/* +%ifarch x86_64 +%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/32/* +%endif +%dir %{_prefix}/libexec/gcc/%{_target_platform}/%{version} +%{_prefix}/libexec/gcc/%{_target_platform}/%{version}/* +%{_datadir}/gcc-%{version}/python/libstdcxx/__init__.py +%{_datadir}/gcc-%{version}/python/libstdcxx/v6/__init__.py +%{_datadir}/gcc-%{version}/python/libstdcxx/v6/printers.py +%{_mandir}/man1/gcc.1.* +%{_mandir}/man1/gcov.1.* +%{_mandir}/man7/fsf-funding.7.* +%{_mandir}/man7/gfdl.7.* +%{_mandir}/man7/gpl.7.* +%doc gcc/{README*,*ChangeLog*} +%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/objc +%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/ssp +%if "%{_target_platform}" == "%{_build}" +%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/gcj/libgcj-config.h +%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/jawt.h +%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/jawt_md.h +%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/jni.h +%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/jvmpi.h +%endif + +%files -n libgcc +%defattr(-,root,root) +/%{_lib}/libgcc* +%ifarch ppc +/%{_lib}/nof/libgcc* +%endif + +%files cpp -f cpplib.lang +%defattr(-,root,root) +/%{_lib}/cpp +%{_bindir}/cpp +%{_mandir}/man1/cpp.1* +%if "%{_target_platform}" == "%{_build}" +%{_infodir}/cp-tools.info.* +%endif + +%files -n libitm +%defattr(-,root,root) +%{_libdir}/libitm.so.* + +%files -n libitm-devel +%defattr(-,root,root) +%{_libdir}/libitm.a +%{_libdir}/libitm.la +%{_libdir}/libitm.so +%{_libdir}/libitm.spec +%{_infodir}/libitm.info.gz + +%files -n libgomp +%defattr(-,root,root) +%{_libdir}/libgomp.so.* +%ifarch ppc +%{_libdir}/nof/libgomp.so.* +%endif + +%files -n libgomp-devel +%defattr(-,root,root) +%{_libdir}/libgomp.a +%{_libdir}/libgomp.la +%{_libdir}/libgomp.so +%{_libdir}/libgomp.spec +%ifarch ppc +%{_libdir}/nof/libgomp.a +%{_libdir}/nof/libgomp.la +%{_libdir}/nof/libgomp.so +%{_libdir}/nof/libgomp.spec +%endif +%{_datadir}/info/libgomp.info.gz + +%files -n libobjc +%defattr(-,root,root) +%{_libdir}/libobjc.so.* +%ifarch ppc +%{_libdir}/nof/libobjc.so.* +%endif + +%files -n libobjc-devel +%defattr(-,root,root) +%{_libdir}/libobjc.a +%{_libdir}/libobjc.la +%{_libdir}/libobjc.so +%ifarch ppc +%{_libdir}/nof/libobjc.a +%{_libdir}/nof/libobjc.la +%{_libdir}/nof/libobjc.so +%endif +%dir %{_libdir}/gcc/%{_target_platform}/%{version}/include/objc +%{_libdir}/gcc/%{_target_platform}/%{version}/include/objc/* + +%files -n libmudflap +%defattr(-,root,root) +%{_libdir}/libmudflap.so.* +%{_libdir}/libmudflapth.so.* +%ifarch ppc +%{_libdir}/nof/libmudflap.so.* +%{_libdir}/nof/libmudflapth.so.* +%endif + +%files -n libmudflap-devel +%defattr(-,root,root) +%{_libdir}/libmudflap.a +%{_libdir}/libmudflap.la +%{_libdir}/libmudflap.so +%{_libdir}/libmudflapth.a +%{_libdir}/libmudflapth.la +%{_libdir}/libmudflapth.so +%ifarch ppc +%{_libdir}/nof/libmudflap.a +%{_libdir}/nof/libmudflap.la +%{_libdir}/nof/libmudflap.so +%{_libdir}/nof/libmudflapth.a +%{_libdir}/nof/libmudflapth.la +%{_libdir}/nof/libmudflapth.so +%endif + +%files -n libssp +%defattr(-,root,root) +%{_libdir}/libssp.so.* +%ifarch ppc +%{_libdir}/nof/libssp.so.* +%endif + +%files -n libssp-devel +%defattr(-,root,root) +%{_libdir}/libssp.a +%{_libdir}/libssp.la +%{_libdir}/libssp.so +%{_libdir}/libssp_nonshared.a +%{_libdir}/libssp_nonshared.la +%ifarch ppc +%{_libdir}/nof/libssp.a +%{_libdir}/nof/libssp.la +%{_libdir}/nof/libssp.so +%{_libdir}/nof/libssp_nonshared.a +%{_libdir}/nof/libssp_nonshared.la +%endif +%dir %{_libdir}/gcc/%{_target_platform}/%{version}/include/ssp +%{_libdir}/gcc/%{_target_platform}/%{version}/include/ssp/* + +%ifnarch arm +%files -n libasan +%defattr(-,root,root) +%ifnarch arm +%{_libdir}/libasan.so.* +%endif +%ifarch x86_64 +%{_libdir}/libtsan.so.* +%endif + +%files -n libasan-devel +%defattr(-,root,root) +%{_libdir}/libasan.a +%{_libdir}/libasan.la +%{_libdir}/libasan.so +%{_libdir}/libasan_preinit.o +%ifarch x86_64 +%{_libdir}/libtsan.a +%{_libdir}/libtsan.la +%{_libdir}/libtsan.so +%endif +%endif + +%files -n libatomic +%defattr(-,root,root) +%{_libdir}/libatomic.so.* + +%files -n libatomic-devel +%defattr(-,root,root) +%{_libdir}/libatomic.a +%{_libdir}/libatomic.la +%{_libdir}/libatomic.so + +%if "%{disable_cpp}" != "1" +# +# C++ language +# +%files c++ +%defattr(-,root,root) +%{_bindir}/c++ +%{_bindir}/g++ +%{_bindir}/%{_target_platform}-c++ +%{_bindir}/%{_target_platform}-g++ +%{_mandir}/man1/g++.1.* +%doc gcc/cp/ChangeLog* + +%files -n %{libstdcxx_name} -f libstdc++.lang +%defattr(-,root,root) +%{_libdir}/libstdc++.so.* +%ifarch ppc +%{_libdir}/nof/libstdc++.so.* +%endif + +%files -n %{libstdcxx_name}-debug +%defattr(-,root,root) +%{_datadir}/gdb/auto-load/%{_libdir}/libstdc++.so.* + +%files -n %{libstdcxx_name}-devel +%defattr(-,root,root) +%{_libdir}/libstdc++.*a +%{_libdir}/libstdc++.so +%{_libdir}/libsupc++.*a +%ifarch ppc +%{_libdir}/nof/libstdc++.*a +%{_libdir}/nof/libstdc++.so +%{_libdir}/nof/libsupc++.*a +%endif +%dir %{_includedir}/c++ +%{_includedir}/c++/* +%doc libstdc++-v3/{ChangeLog*,README*,doc/html/} +%if "%{_target_platform}" == "%{_build}" +%exclude %{_includedir}/c++/%{version}/gcj/* +%exclude %{_includedir}/c++/%{version}/gnu/awt/* +%exclude %{_includedir}/c++/%{version}/gnu/classpath/* +%exclude %{_includedir}/c++/%{version}/gnu/gcj/* +%exclude %{_includedir}/c++/%{version}/gnu/java/* +%exclude %{_includedir}/c++/%{version}/java/* +%exclude %{_includedir}/c++/%{version}/javax/* +%endif +%endif "%{disable_cpp} + +%if "%{disable_java}" != "1" +# +# Java language +# +%files java +%defattr(-,root,root) +#%{_bindir}/addr2name.awk +%{_bindir}/aot-compile +%{_bindir}/ecj1 +%{_bindir}/gcj +%{_bindir}/gcjh +%{_bindir}/jcf-dump +#%{_bindir}/jv-scan +#%{_bindir}/%{_target_platform}-gcjh +%{_bindir}/%{_target_platform}-gcj +%{_bindir}/gij +%{_bindir}/gc-analyze +%{_bindir}/gcj-dbtool +%{_bindir}/gappletviewer +%{_bindir}/gjar +%{_bindir}/gjavah +%if "%{disable_gjdoc}" != "1" +%{_bindir}/gjdoc +%endif +%{_bindir}/gnative2ascii +%{_bindir}/gorbd +%{_bindir}/gjarsigner +%{_bindir}/gkeytool +%{_bindir}/grmic +%{_bindir}/grmid +%{_bindir}/grmiregistry +%{_bindir}/gserialver +%{_bindir}/gtnameserv +%{_bindir}/rebuild-gcj-db +%{_datadir}/java/ecj.jar +%{_datadir}/gcc-%{version}/python/libjava/aotcompile.py +%{_datadir}/gcc-%{version}/python/libjava/classfile.py +%{_mandir}/man1/aot-compile.1.* +%{_mandir}/man1/gcj.1.* +%{_mandir}/man1/gcjh.1.* +#%{_mandir}/man1/gjnih.1.* +%{_mandir}/man1/jcf-dump.1.* +#%{_mandir}/man1/jv-scan.1.* +%{_mandir}/man1/gij.1.* +%{_mandir}/man1/gcj-dbtool.1.* +%{_mandir}/man1/gappletviewer.1.* +%{_mandir}/man1/gc-analyze.1.* +%{_mandir}/man1/gjar.1.* +%{_mandir}/man1/gjarsigner.1.* +%{_mandir}/man1/gjavah.1.* +%{_mandir}/man1/gjdoc.1.* +%{_mandir}/man1/gkeytool.1.* +%{_mandir}/man1/gnative2ascii.1.* +%{_mandir}/man1/gorbd.1.* +%{_mandir}/man1/grmid.1.* +%{_mandir}/man1/gserialver.1.* +%{_mandir}/man1/gtnameserv.1.* +%{_mandir}/man1/rebuild-gcj-db.1.* + +%files -n %{libgcj_name} +%defattr(-,root,root) +%{_mandir}/man1/grmic.1.* +%{_mandir}/man1/grmiregistry.1.* +%dir %{_datadir}/java/ +%{_datadir}/java/libgcj-%{version}.jar +%{_libdir}/logging.properties +%{_libdir}/libgcj.so.* +%{_libdir}/libgcj-tools.so.* +%{_libdir}/libgcj_bc.so.* +%{_libdir}/libgij.so.* +%ifarch ppc +%{_libdir}/nof/logging.properties +%{_libdir}/nof/libgcj.so.* +%{_libdir}/nof/libgcj-tools.so.* +%{_libdir}/nof/libgcj_bc.so.* +%{_libdir}/nof/libgij.so.* +%endif +%{_libdir}/gcj-%{version}*/classmap.db +%{_libdir}/gcj-%{version}*/libjavamath.la +%{_libdir}/gcj-%{version}*/libjavamath.so +%{_libdir}/gcj-%{version}*/libjawt.la +%{_libdir}/gcj-%{version}*/libjawt.so +%if "%{disable_jack}" != "1" +%{_libdir}/gcj-%{version}*/libgjsmdssi.la +%{_libdir}/gcj-%{version}*/libgjsmdssi.so +%endif +%{_libdir}/gcj-%{version}*/libgjsmalsa.la +%{_libdir}/gcj-%{version}*/libgjsmalsa.so +%{_libdir}/gcj-%{version}*/libgtkpeer.la +%{_libdir}/gcj-%{version}*/libgtkpeer.so +%{_libdir}/gcj-%{version}*/libjvm.la +%{_libdir}/gcj-%{version}*/libjvm.so +%ifarch ppc +%{_libdir}/nof/gcj-%{version}*/libjavamath.la +%{_libdir}/nof/gcj-%{version}*/libjavamath.so +%{_libdir}/nof/gcj-%{version}*/classmap.db +%{_libdir}/nof/gcj-%{version}*/libgjsmalsa.la +%{_libdir}/nof/gcj-%{version}*/libgjsmalsa.so +%{_libdir}/nof/gcj-%{version}*/libjvm.a +%{_libdir}/nof/gcj-%{version}*/libjvm.la +%{_libdir}/nof/gcj-%{version}*/libjvm.so +%endif +%{_datadir}/java/libgcj-tools-%{version}.jar +%config(noreplace) %{_libdir}/security/classpath.security +%ifarch ppc +%config(noreplace) %{_libdir}/nof/security/classpath.security +%endif +#%config(noreplace) %{_libdir}/security/libgcj.security +%doc libjava/{ChangeLog,COPYING,LIBGCJ_LICENSE,README,THANKS} + +%files -n %{libgcj_name}-devel +%defattr(-,root,root) +%{_bindir}/jv-convert +%{_libdir}/libgcj.spec +%{_libdir}/libgcj.la +%{_libdir}/libgcj.so +%{_libdir}/libgcj_bc.so +%{_libdir}/libgij.la +%{_libdir}/libgij.so +%{_libdir}/libgcj-tools.la +%{_libdir}/libgcj-tools.so +%ifarch ppc +%{_libdir}/nof/libgcj.la +%{_libdir}/nof/libgcj.so +%{_libdir}/nof/libgcj_bc.so +%{_libdir}/nof/libgij.la +%{_libdir}/nof/libgij.so +%{_libdir}/nof/libgcj-tools.la +%{_libdir}/nof/libgcj-tools.so +%endif +#%{_libdir}/lib-gnu-java-awt-peer-gtk.a +#%{_libdir}/lib-gnu-java-awt-peer-gtk.la +#%{_libdir}/lib-gnu-java-awt-peer-gtk.so +%{_datadir}/java/src-%{version}.zip +%{_libdir}/pkgconfig/libgcj-%{majver}.pc +%{_mandir}/man1/jv-convert.1.* +#%doc rpm.doc/boehm-gc/* +#%doc rpm.doc/libjava/* +%{_includedir}/c++/%{version}/gcj/* +%{_includedir}/c++/%{version}/gnu/awt/* +%{_includedir}/c++/%{version}/gnu/classpath +%{_includedir}/c++/%{version}/gnu/gcj/* +%{_includedir}/c++/%{version}/gnu/java/* +#%{_includedir}/c++/%{version}/gnu/regexp/* +%{_includedir}/c++/%{version}/java/* +%{_includedir}/c++/%{version}/javax/* +%{_libdir}/gcc/%{_target_platform}/%{version}/include/gcj/libgcj-config.h +%{_libdir}/gcc/%{_target_platform}/%{version}/include/jawt.h +%{_libdir}/gcc/%{_target_platform}/%{version}/include/jawt_md.h +%{_libdir}/gcc/%{_target_platform}/%{version}/include/jni.h +%{_libdir}/gcc/%{_target_platform}/%{version}/include/jvmpi.h +%endif # disable_java != 1 + +%if "%{disable_fortran}" != "1" +# +# Fortran language +# +%files fortran +%defattr(-,root,root) +%{_bindir}/gfortran +%{_bindir}/%{_target_platform}-gfortran +%{_libdir}/libgfortran.a +%{_libdir}/libgfortran.la +%{_libdir}/libgfortran.so +%ifarch ppc +%{_libdir}/nof/libgfortran.a +%{_libdir}/nof/libgfortran.la +%{_libdir}/nof/libgfortran.so +%endif +%{_mandir}/man1/gfortran.1.* +%doc gcc/fortran/ChangeLog + +%files -n libgfortran +%defattr(-,root,root) +%{_libdir}/libgfortran.so.* +%{_libdir}/libgfortran.spec +%ifarch ppc +%{_libdir}/nof/libgfortran.so.* +%endif +%endif # disable_fortran != 1 + +%ifnarch arm +%files -n libquadmath +%defattr(-,root,root) +%{_libdir}/libquadmath.so.* + +%files -n libquadmath-devel +%defattr(-,root,root) +%{_libdir}/libquadmath.a +%{_libdir}/libquadmath.la +%{_libdir}/libquadmath.so +%endif + +%if "%{disable_doc}" != "1" +%files doc +%defattr(-,root,root) +%{_infodir}/cpp.info.* +%{_infodir}/cppinternals.info.* +%{_infodir}/gcc.info.* +%{_infodir}/gccinstall.info.* +%{_infodir}/gccint.info.* +%if "%{disable_java}" != "1" +%{_infodir}/gcj.info.* +%doc gcc/doc/gcj.pdf +%endif +%if "%{disable_fortran}" != "1" +%{_infodir}/gfortran.info.* +%doc gcc/doc/gfortran.pdf +%endif +%{_infodir}/libquadmath.info.* +%doc gcc/doc/cpp.pdf +%doc gcc/doc/cppinternals.pdf +%doc gcc/doc/gccinstall.pdf +%doc gcc/doc/gcc.pdf +%doc gcc/doc/gccint.pdf +%endif # "%{disable_doc}" != "1" + +%else +# +# Cross-platform single package +# +%files -n cross-%{_target_platform}-%{name}%{?bootstrap_append} +%defattr(-,root,root) +%{_bindir}/%{_target_platform}-* +%if "%{_target_platform}" != "avr" +%if "%{?stage1}" != "1" +%{_prefix}/%{_target_platform}/include/* +%{_prefix}/%{_target_platform}/%{_lib}/* +%endif +%{_prefix}/%{_target_platform}/%{_lib}/libgfortran.a +%{_prefix}/%{_target_platform}/%{_lib}/libgfortran.la +%{_prefix}/%{_target_platform}/%{_lib}/libobjc.a +%{_prefix}/%{_target_platform}/%{_lib}/libobjc.la +%if "%{target_cpu}" == "ppc" +%{_prefix}/%{_target_platform}/%{_lib}/nof/libgfortran.a +%{_prefix}/%{_target_platform}/%{_lib}/nof/libgfortran.la +%{_prefix}/%{_target_platform}/%{_lib}/nof/libobjc.a +%{_prefix}/%{_target_platform}/%{_lib}/nof/libobjc.la +%endif +%endif +%{_libdir}/gcc/%{_target_platform}/%{version}/* +%{_libexecdir}/gcc/%{_target_platform}/%{version}/* +%{_mandir}/man1/%{_target_platform}-* +%endif # cross-platform + +%ifarch x86_64 +%files -n gcc-multilib +%defattr(-,root,root) +%dir %{_libdir}/gcc/%{_target_platform}/%{version}/32 +%{_libdir}/gcc/%{_target_platform}/%{version}/32/* +/lib/libgcc_s.so +/lib/libgcc_s.so.1 +/usr/lib/gcj-*/* +%{_prefix}/lib/libasan.a +%{_prefix}/lib/libasan.la +%{_prefix}/lib/libasan.so +%{_prefix}/lib/libasan.so.* +%{_prefix}/lib/libasan_preinit.o +%{_prefix}/lib/libatomic.a +%{_prefix}/lib/libatomic.la +%{_prefix}/lib/libatomic.so +%{_prefix}/lib/libatomic.so.* +#/usr/lib/libgcj-tools.a +/usr/lib/libgcj-tools.la +/usr/lib/libgcj-tools.so +/usr/lib/libgcj-tools.so.* +#/usr/lib/libgcj.a +/usr/lib/libgcj.la +/usr/lib/libgcj.so +/usr/lib/libgcj.so.* +#/usr/lib/libgcj_bc.a +/usr/lib/libgcj_bc.so +/usr/lib/libgcj_bc.so.* +/usr/lib/libgfortran.a +/usr/lib/libgfortran.la +/usr/lib/libgfortran.so +/usr/lib/libgfortran.so.* +/usr/lib/libgfortran.spec +#/usr/lib/libgij.a +/usr/lib/libgij.la +/usr/lib/libgij.so +/usr/lib/libgij.so.* +/usr/lib/libgomp.a +/usr/lib/libgomp.la +/usr/lib/libgomp.so +/usr/lib/libgomp.so.* +/usr/lib/libgomp.spec +/usr/lib/libitm.a +/usr/lib/libitm.la +/usr/lib/libitm.so +/usr/lib/libitm.so.* +/usr/lib/libitm.spec +#/usr/lib/libiberty.a +/usr/lib/libmudflap.a +/usr/lib/libmudflap.la +/usr/lib/libmudflap.so +/usr/lib/libmudflap.so.* +/usr/lib/libmudflapth.a +/usr/lib/libmudflapth.la +/usr/lib/libmudflapth.so +/usr/lib/libmudflapth.so.* +/usr/lib/libobjc.a +/usr/lib/libobjc.la +/usr/lib/libobjc.so +/usr/lib/libobjc.so.* +%ifnarch arm +/usr/lib/libquadmath.a +/usr/lib/libquadmath.la +/usr/lib/libquadmath.so +/usr/lib/libquadmath.so.* +%endif +/usr/lib/libssp.a +/usr/lib/libssp.la +/usr/lib/libssp.so +/usr/lib/libssp.so.* +/usr/lib/libssp_nonshared.a +/usr/lib/libssp_nonshared.la +/usr/lib/libstdc++.a +/usr/lib/libstdc++.la +/usr/lib/libstdc++.so +/usr/lib/libstdc++.so.* +/usr/lib/libsupc++.a +/usr/lib/libsupc++.la +/usr/lib/logging.properties +/usr/lib/security/classpath.security +%endif + +%changelog +* Wed Oct 16 2013 Automatic Build System 4.8.2-1mamba +- automatic version update by autodist + +* Sat Jul 27 2013 Silvan Calarco 4.8.1-2mamba +- add %{_target_platform}-cc link to cc +- make %{_target_platform}-* symlink instead of binary duplicates +- x86_64: fix moving out of libdir libstdc++.so.6.0.18-gdb.py for lib32 package + +* Tue Jun 04 2013 Automatic Build System 4.8.1-1mamba +- automatic version update by autodist + +* Thu Mar 28 2013 Automatic Build System 4.8.0-1mamba +- automatic version update by autodist + +* Tue Sep 25 2012 Silvan Calarco 4.7.2-2mamba +- rebuild with stack protector support in cross-compilers (removed --disable-libssp) + +* Fri Sep 21 2012 Automatic Build System 4.7.2-1mamba +- automatic update by autodist + +* Thu Jun 14 2012 Automatic Build System 4.7.1-1mamba +- automatic version update by autodist + +* Mon Apr 02 2012 Automatic Build System 4.7.0-1mamba +- automatic version update by autodist + +* Wed Oct 26 2011 Automatic Build System 4.6.2-1mamba +- automatic version update by autodist + +* Wed Jun 29 2011 Automatic Build System 4.6.1-1mamba +- automatic update by autodist + +* Fri Apr 01 2011 Automatic Build System 4.6.0-1mamba +- automatic update by autodist + +* Fri Dec 17 2010 Automatic Build System 4.5.2-1mamba +- automatic update to 4.5.2 by autodist + +* Fri Sep 24 2010 Silvan Calarco 4.5.1-2mamba +- added obj-c++ and lto languages support +- added patch to fix bootstrap build +- added disable_java, disable_gjdoc, disable_jack build options +- build c,objc,fortran in stage1 mode +- don't provide libffi and libffi-devel in favour of external package (here it is used to embed it in gcj) + +* Sat Jul 31 2010 Automatic Build System 4.5.1-1mamba +- automatic update to 4.5.1 by autodist + +* Tue Jul 20 2010 Silvan Calarco 4.5.0-4mamba +- added libffi patch to support pkgconfig libffi.pc (as needed by pygobject) + +* Sun Jul 18 2010 Automatic Build System 4.5.0-3mamba +- automatic rebuild by autodist + +* Sat May 29 2010 Silvan Calarco 4.5.0-2mamba +- moved libstdc++.so.6.0.14-gdb.py for /usr/lib to gdb python dir to prevent ldconfig warning + +* Sun May 09 2010 Automatic Build System 4.5.0-1mamba +- automatic update to 4.5.0 by autodist + +* Sat Apr 17 2010 Silvan Calarco 4.4.3-2mamba +- modified to use standard rpm platform variables + +* Thu Jan 21 2010 Automatic Build System 4.4.3-1mamba +- automatic update to 4.4.3 by autodist + +* Thu Oct 15 2009 Automatic Build System 4.4.2-1mamba +- automatic update to 4.4.2 by autodist + +* Sat Jul 25 2009 Automatic Build System 4.4.1-1mamba +- automatic update to 4.4.1 by autodist + +* Tue Jun 30 2009 Automatic Build System 4.4.0-4mamba +- added pr39543 patch (fixes mplayer build) + +* Sat May 23 2009 Automatic Build System 4.4.0-3mamba +- automatic rebuild by autodist + +* Fri Apr 24 2009 Automatic Build System 4.4.0-2mamba +- automatic rebuild by autodist + +* Wed Apr 22 2009 Automatic Build System 4.4.0-1mamba +- automatic update to 4.4.0 by autodist + +* Thu Apr 16 2009 Silvan Calarco 4.3.3-2mamba +- added patch to disable fixincludes script + +* Sat Jan 31 2009 Silvan Calarco 4.3.3-1mamba +- automatic update by autodist + +* Fri Sep 12 2008 Silvan Calarco 4.3.2-2mamba +- added ecj.jar and /usr/bin/ecj1 bytecode interpreter wrapper from eclipse +- gcc-fortran: added requirement for exact release of gcc + +* Sat Aug 30 2008 Silvan Calarco 4.3.2-1mamba +- update to 4.3.2 + +* Thu Jul 10 2008 Silvan Calarco 4.2.4-3mamba +- set correct path for current java-gcj-compat environment +- libgcj4-devel: don't obsolete libgcj3-devel and provide libgcj-devel +- libgcj4: provide libgcj + +* Mon Jul 07 2008 Silvan Calarco 4.2.4-2mamba +- added shared-openmp patch to allow dlopen of libgomp +- gcc-cpp: added requirement for gcc + +* Wed Jun 04 2008 Silvan Calarco 4.2.4-1mamba +- update to 4.2.4 + +* Mon Dec 10 2007 Silvan Calarco 4.2.2-1mamba +- update to 4.2.2 + +* Mon Jul 23 2007 Silvan Calarco 4.2.1-1mamba +- update to 4.2.1 +- libstdcxx: provide libstdc++ + +* Wed May 16 2007 Silvan Calarco 4.2.0-1mamba +- update to 4.2.0 +- use make pdf to build pdf documentation + +* Thu Mar 08 2007 Silvan Calarco 4.1.2-1qilnx +- update to version 4.1.2 by autospec + +* Tue Aug 22 2006 Silvan Calarco 4.1.1-2qilnx +- added arm-softfloat target support (multilib libgcc support) + +* Tue Jun 06 2006 Silvan Calarco 4.1.1-1qilnx +- update to version 4.1.1 by autospec +- added arm platform support +- added support for stage1 build with autodist + +* Mon Nov 14 2005 Silvan Calarco 4.0.2-5qilnx +- added patch to bug #24109 (see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24109) + +* Tue Oct 25 2005 Silvan Calarco 4.0.2-4qilnx +- add libjava patch to java.awt.Window backported from Classpath 0.18 for ooo2 + +* Mon Oct 24 2005 Silvan Calarco 4.0.2-3qilnx +- add a patch for java zextract, see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23617) + +* Fri Oct 21 2005 Davide Madrisan 4.0.2-2qilnx +- install/uninstall info files +- Silvan Calarco: add nofixincludes patch + +* Thu Sep 29 2005 Silvan Calarco 4.0.2-1qilnx +- new version build + +* Fri Sep 23 2005 Silvan Calarco 4.0.1-5qilnx +- added libgfortran sub-package +- description of libffi corrected +- removed requirements for gcc in gcc-java and gcc-fortran + +* Mon Aug 23 2005 Silvan Calarco 4.0.1-4qilnx +- rebuilt with fixincludes script disabled + +* Sun Aug 22 2005 Silvan Calarco 4.0.1-3qilnx +- first ppc full cross-platform compiler build + +* Wed Aug 17 2005 Silvan Calarco 4.0.1-2qilnx +- rebuilt with standard gcc sources +- removed Obsoletes field for some library + +* Mon Aug 15 2005 Silvan Calarco 4.0.1-1qilnx +- first gcc4 build (using RedHat sources) + +* Thu Jul 21 2005 Silvan Calarco 3.4.4-2qilnx +- build with host os = linux-gnu + +* Tue Jul 19 2005 Silvan Calarco 3.4.4-1qilnx +- update to version 3.4.4 by autospec + +* Tue Jul 19 2005 Silvan Calarco 3.4.3-4qilnx +- rebuild with default rpm target platform (i586-qilinux-linux) + +* Wed Apr 06 2005 Davide Madrisan 3.4.3-2qilnx +- do not fix non standard include files found at building time +- fixed package group +- added missing symlinks + +* Tue Nov 15 2004 Davide Madrisan 3.4.3-1qilnx +- updated to gcc-3.4.3 + +* Wed Sep 15 2004 Davide Madrisan 3.4.2-2qilnx +- libstdc++6-devel obsoletes libstdc++5-devel + +* Mon Sep 13 2004 Silvan Calarco 3.4.2-1qilnx +- new version build +- added x-includes-dir and x-library-dir configure paths + +* Mon Jun 21 2004 Silvan Calarco 3.4.0-1qilnx +- new version build + +* Wed Apr 07 2004 Davide Madrisan 3.3.3-1qilnx +- first build for 3.3.3 +- added cpp and g77, libf2c packages +- added documentation in text and pdf formats + +* Mon Jun 16 2003 Silvan Calarco 3.2.3-1qilnx +- first build for 3.2.3 + +* Fri May 16 2003 Silvan Calarco 3.2.2-7qilnx +- added libstdc++.so symlink in devel package + +* Mon Apr 24 2003 Silvan Calarco 3.2.2-6qilnx +- added symlinks /usr/lib/cpp and /usr/bin/cc + +* Mon Apr 24 2003 Silvan Calarco 3.2.2-5qilnx +- added symlink /lib/cpp + +* Mon Apr 17 2003 Silvan Calarco 3.2.2-4qilnx +- fixed install problems by using make install DESTDIR=xxxx + +* Mon Apr 16 2003 Silvan Calarco 3.2.2-3qilnx +- changed %%dir reference to system dirs with more specific file lists +- added -doc package + +* Mon Apr 14 2003 Silvan Calarco 3.2.2-2qilnx +- changed all .bz2 occurences with * + +* Tue Apr 09 2003 Silvan Calarco 3.2.2-1qilnx +- first build for 3.2.2 diff --git a/gcc4-java-nomulti.patch b/gcc4-java-nomulti.patch new file mode 100644 index 0000000..3a6554d --- /dev/null +++ b/gcc4-java-nomulti.patch @@ -0,0 +1,25 @@ +--- libjava/configure.ac.jj 2004-08-16 21:13:29.000000000 +0200 ++++ libjava/configure.ac 2004-08-21 11:44:59.020755542 +0200 +@@ -367,6 +367,10 @@ use_gtk_awt="" + TOOLKIT= + AC_SUBST(TOOLKIT) + ++if test -n "${with_multisubdir}"; then ++ peerlibs=no ++fi ++ + for peer in $peerlibs ; do + case $peer in + xlib) +--- libjava/configure.jj 2004-08-16 21:22:14.000000000 +0200 ++++ libjava/configure 2004-08-21 11:45:16.260738060 +0200 +@@ -4118,6 +4118,9 @@ use_gtk_awt="" + # The default toolkit to use is the first one specified. + TOOLKIT= + ++if test -n "${with_multisubdir}"; then ++ peerlibs=no ++fi + + for peer in $peerlibs ; do + case $peer in