OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall Root: /v/openpkg/cvs Email: r...@openpkg.org Module: openpkg-src Date: 12-Apr-2009 17:54:54 Branch: HEAD Handle: 2009041216545400 Added files: openpkg-src/gcc45 gcc45.patch gcc45.spec Log: new package: gcc45 4.5s20090409 (GNU Compiler Collection) Summary: Revision Changes Path 1.1 +87 -0 openpkg-src/gcc45/gcc45.patch 1.1 +353 -0 openpkg-src/gcc45/gcc45.spec ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-src/gcc45/gcc45.patch ============================================================================ $ cvs diff -u -r0 -r1.1 gcc45.patch --- /dev/null 2009-04-12 17:54:53 +0200 +++ gcc45.patch 2009-04-12 17:54:54 +0200 @@ -0,0 +1,87 @@ +Index: config.guess +--- config.guess.orig 2004-11-16 01:57:00 +0100 ++++ config.guess 2005-09-20 15:29:05 +0200 +@@ -189,7 +189,7 @@ + release='-gnu' + ;; + *) +- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ++ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: +Index: gcc/config/alpha/osf.h +--- gcc/config/alpha/osf.h.orig 2003-12-12 02:19:23.000000000 +0100 ++++ gcc/config/alpha/osf.h 2004-04-26 21:25:14.000000000 +0200 +@@ -78,7 +78,7 @@ + constructor and call-frame data structures are not accidentally + overridden. */ + #define LINK_SPEC \ +- "-G 8 %{O*:-O3} %{!O*:-O1} -S %{static:-non_shared} \ ++ "-oldstyle_liblookup %{!o:-o a.out} -G 8 %{O*:-O3} %{!O*:-O1} -S %{static:-non_shared} \ + %{!static:%{shared:-shared -hidden_symbol _GLOBAL_*} \ + %{!shared:-call_shared}} %{pg} %{taso} %{rpath*}" + +Index: gcc/config/i386/sol2.h +--- gcc/config/i386/sol2.h.orig 2004-06-14 19:31:27 +0200 ++++ gcc/config/i386/sol2.h 2004-06-21 09:53:21 +0200 +@@ -78,6 +78,9 @@ + #undef ASM_QUAD + #endif + ++#undef DEFAULT_PCC_STRUCT_RETURN ++#define DEFAULT_PCC_STRUCT_RETURN 1 ++ + /* The Solaris assembler wants a .local for non-exported aliases. */ + #define ASM_OUTPUT_DEF_FROM_DECLS(FILE, DECL, TARGET) \ + do { \ +Index: gcc/config/sol2.h +--- gcc/config/sol2.h.orig 2004-07-17 23:18:56 +0200 ++++ gcc/config/sol2.h 2005-09-19 22:01:15 +0200 +@@ -144,8 +144,8 @@ + "%{h*} %{v:-V} \ + %{b} %{Wl,*:%*} \ + %{static:-dn -Bstatic} \ +- %{shared:-G -dy %{!mimpure-text:-z text}} \ +- %{symbolic:-Bsymbolic -G -dy -z text} \ ++ %{shared:-G -dy} \ ++ %{symbolic:-Bsymbolic -G -dy} \ + %(link_arch) \ + %{Qy:} %{!Qn:-Qy}" + +Index: gcc/system.h +--- gcc/system.h.orig 2003-08-23 20:03:05.000000000 +0200 ++++ gcc/system.h 2003-09-03 20:02:11.000000000 +0200 +@@ -319,10 +319,6 @@ + extern char *strstr (const char *, const char *); + #endif + +-#ifdef HAVE_MALLOC_H +-#include <malloc.h> +-#endif +- + #if defined (HAVE_DECL_MALLOC) && !HAVE_DECL_MALLOC + extern void *malloc (size_t); + #endif +Index: libcpp/internal.h +--- libcpp/internal.h.orig 2004-09-09 21:16:55 +0200 ++++ libcpp/internal.h 2004-09-27 20:04:43 +0200 +@@ -33,6 +33,7 @@ + #if HAVE_ICONV + #include <iconv.h> + #else ++#undef HAVE_ICONV + #define HAVE_ICONV 0 + typedef int iconv_t; /* dummy */ + #endif +Index: libcpp/charset.c +--- libcpp/charset.c.orig 2005-11-04 00:08:18 +0100 ++++ libcpp/charset.c 2006-02-01 19:59:53 +0100 +@@ -75,6 +75,7 @@ + #define iconv_open(x, y) (errno = EINVAL, (iconv_t)-1) + #define iconv(a,b,c,d,e) (errno = EINVAL, (size_t)-1) + #define iconv_close(x) (void)0 ++#undef ICONV_CONST + #define ICONV_CONST + #endif + @@ . patch -p0 <<'@@ .' Index: openpkg-src/gcc45/gcc45.spec ============================================================================ $ cvs diff -u -r0 -r1.1 gcc45.spec --- /dev/null 2009-04-12 17:54:53 +0200 +++ gcc45.spec 2009-04-12 17:54:54 +0200 @@ -0,0 +1,353 @@ +## +## gcc45.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2008 OpenPKG Foundation e.V. <http://openpkg.net/> +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# FIXME: rse: GCC since 4.3 now officially and unconditionally requires gmp/mpfr! +# FIXME: rse: This requires blessing "gmp" and "mpfr" to CORE or include copies into "gcc" + +# package version +%define V_full 4.5 +%define V_comp 45 +%define V_snap 20090409 + +# package information +Name: gcc45 +Summary: GNU Compiler Collection +URL: http://gcc.gnu.org/ +Vendor: Free Software Foundation +Packager: OpenPKG Foundation e.V. +Distribution: OpenPKG Community +Class: EVAL +Group: Compiler +License: GPL +Version: %{V_full}s%{V_snap} +Release: 20090412 + +# package options +%option with_binutils yes +%option with_cxx no +%option with_objc no +%option with_java no +%option with_fortran no +%option with_optimize no +%option with_profile no +%option with_threads yes +%option with_multilib no +%option with_gcc no + +# list of sources +Source0: ftp://gcc.gnu.org/pub/gcc/snapshots/%{V_full}-%{V_snap}/gcc-%{V_full}-%{V_snap}.tar.bz2 +Patch0: gcc45.patch + +# build information +Prefix: %{l_prefix} +BuildRoot: %{l_buildroot} +BuildPreReq: OpenPKG, openpkg >= 20060622, make, flex, bison, texinfo +PreReq: OpenPKG, openpkg >= 20060622 +%if "%{with_binutils}" == "yes" +BuildPreReq: binutils >= 2.14 +PreReq: binutils >= 2.14 +%endif +BuildPreReq: mpfr, gmp +PreReq: mpfr, gmp +%if "%{with_cxx}" == "yes" +BuildPreReq: libiconv +PreReq: libiconv +%endif +%if "%{with_java}" == "yes" +BuildPreReq: zlib +PreReq: zlib +%endif +AutoReq: no +AutoReqProv: no +%if "%{with_gcc}" == "yes" +Provides: gcc = %{version}-%{release} +%endif + +%description + The GNU Compiler Collection (GCC) provides a standard conforming and + highly portable ISO C and ISO C++ compiler. + +%track + prog gcc45 = { + version = %{V_full}-%{V_snap} + url = ftp://gcc.gnu.org/pub/gcc/snapshots/ + regex = (%{V_full}-\d{8}) + url = ftp://gcc.gnu.org/pub/gcc/snapshots/__NEWVER__/ + regex = gcc-(\d+\.\d+-\d{8})\.tar\.bz2 + } + +%prep + %setup -q -n gcc-%{V_full}-%{V_snap} + %patch -p0 + %{l_shtool} subst -v -s \ + -e 's;PREFIX_INCLUDE_DIR;PREFIX_INCLUDE_DIR_DISABLED;g' \ + gcc/configure + if [ ".%{V_comp}" != . ]; then + %{l_shtool} subst -v -s \ + -e 's;(libdir)/gcc/;(libdir)/gcc%{V_comp}/;' \ + `find . -name Makefile.in -type f -print` + fi + case "%{l_platform -t}" in + amd64*-linux* ) + %{l_shtool} subst \ + -e 's/GLIBCXX_IS_NATIVE=false/GLIBCXX_IS_NATIVE=true/g' \ + -e 's/test x.gcc_no_link = xyes/false/g' \ + libstdc++-v3/configure + ;; + esac + +%build + # create build sub-directory + %{l_shtool} mkdir -p obj + cd obj + + # determine ld(1) and as(1) usage + l_with_gnu_ld_as="" + LD=%{l_tool_locate ld ld} + AS=%{l_tool_locate as as} + echo $LD | grep '^/' >/dev/null && l_with_gnu_ld_as="${l_with_gnu_ld_as} --with-ld=$LD" + echo $AS | grep '^/' >/dev/null && l_with_gnu_ld_as="${l_with_gnu_ld_as} --with-as=$AS" + $LD --version </dev/null 2>/dev/null | grep "^GNU ld " >/dev/null && l_with_gnu_ld_as="${l_with_gnu_ld_as} --with-gnu-ld" + $AS --version </dev/null 2>/dev/null | grep "^GNU assembler " >/dev/null && l_with_gnu_ld_as="${l_with_gnu_ld_as} --with-gnu-as" + unset LD + unset AS + + # determine threads usage +%if "%{with_threads}" == "yes" + l_enable_threads="posix" +%else + l_enable_threads="single" +%endif + + # determine language usage + l_enable_languages="c" +%if "%{with_cxx}" == "yes" + l_enable_languages="${l_enable_languages},c++" +%endif +%if "%{with_objc}" == "yes" + l_enable_languages="${l_enable_languages},objc" +%endif +%if "%{with_java}" == "yes" + l_enable_languages="${l_enable_languages},java" +%endif +%if "%{with_fortran}" == "yes" + l_enable_languages="${l_enable_languages},f95" +%endif + + # disable GNU iconv usage + ( echo "am_cv_func_iconv=no" + echo "am_cv_lib_iconv=no" + ) >config.cache + + # configure the package + CC="%{l_cc}" \ + CFLAGS="%{l_cflags}" \ +%if "%{with_java}" == "yes" || "%{with_fortran}" == "yes" || "%{with_cxx}" == "yes" + CPPFLAGS="%{l_cppflags}" \ + LDFLAGS="%{l_ldflags}" \ +%endif + CONFIG_SHELL="%{l_bash}" \ + ../configure \ + --with-bugurl="http://openpkg.org/" \ + --with-pkgversion="%{l_openpkg_release -F "OpenPKG-%%t"}" \ + --cache-file=./config.cache \ + --srcdir=`pwd`/.. \ + --prefix=%{l_prefix} \ + --exec-prefix=%{l_prefix} \ + --includedir=%{l_prefix}/include/gcc%{V_comp} \ + --libexecdir=%{l_prefix}/libexec/gcc%{V_comp} \ + --with-gxx-include-dir=%{l_prefix}/include/g++%{V_comp} \ + --with-local-prefix=%{l_prefix}/lib/gcc%{V_comp} \ + --enable-languages="${l_enable_languages}" \ + --enable-threads="${l_enable_threads}" \ + --disable-maintainer-mode \ + --disable-shared \ + --disable-nls \ +%if "%{with_java}" == "yes" + --with-system-zlib \ +%endif +%if "%{with_multilib}" == "yes" + --enable-multilib \ +%else + --disable-multilib \ +%endif +%if "%{with_cxx}" == "yes" + --with-libiconv-prefix=%{l_prefix} \ +%endif + --with-gmp=%{l_prefix} \ + --with-mpfr=%{l_prefix} \ + ${l_with_gnu_ld_as} + + # determine build flags + l_ccisgcc=no + if [ ".`(%{l_cc} -v; %{l_cc} --version) </dev/null 2>&1 | grep -i 'gcc'`" != . ]; then + l_ccisgcc=yes + fi + l_cflags="" + l_cxxflags="" + l_boot_cflags="" + l_libcflags="-g" + l_libcxxflags="-g" + # at least GNU as from GNU binutils supports -pipe always + AS="%{l_tool_locate as as}" + "$AS" --version </dev/null 2>/dev/null | grep "^GNU assembler " >/dev/null && { + l_boot_cflags="$l_boot_cflags -pipe" + l_libcxxflags="$l_libcxxflags -pipe" + } +%if "%{with_optimize}" == "yes" + # conservatively optimize the generated program code + # (also _tune_ for particular CPUs, but _without_ requiring these CPUs!) + l_cflags="$l_cflags -O" + l_boot_cflags="$l_boot_cflags -O2 -fomit-frame-pointer" + case "%{l_platform -t}" in + *i?86-* ) l_boot_cflags="$l_boot_cflags -mtune=pentium3" ;; + *sun4[uv]-* ) l_boot_cflags="$l_boot_cflags -mtune=v9" ;; + esac + l_libcxxflags="$l_libcxxflags -O2 -fno-implicit-templates" +%else + # else do no optimizations at all to reduce problems to minimum in advance + l_boot_cflags="$l_boot_cflags -O0" + l_libcxxflags="$l_libcxxflags -O0" +%endif + maketarget="bootstrap-lean" +%if "%{with_profile}" == "yes" + # GCC >= 3.4 supports a "profiledbootstrap" target to build an + # optimized version of itself through profiling. Because this + # requires a (bootstrapping) C compiler with 64-bit arithmetic, + # the whole approach is currently supported only if already + # building with GCC as the bootstrapping C compiler. + if [ ".$l_ccisgcc" = .yes ]; then + maketarget="profiledbootstrap" + fi +%endif + case "%{l_platform -t}" in + amd64-* ) l_cflags="$l_cflags -fPIC"; l_cxxflags="$l_cxxflags -fPIC" ;; + ia64-* ) l_cflags="$l_cflags -fPIC"; l_cxxflags="$l_cxxflags -fPIC" ;; + sparc64-freebsd* ) l_cflags="$l_cflags -fPIC"; l_cxxflags="$l_cxxflags -fPIC" ;; + esac + + # build the package + %{l_make} %{l_mflags} \ + MAKE="%{l_make} %{l_mflags}" \ + BOOT_CFLAGS="${l_boot_cflags}" \ + CFLAGS="${l_cflags}" \ + CXXFLAGS="${l_cxxflags}" \ + LIBCFLAGS="${l_libcflags}" \ + LIBCXXFLAGS="${l_libcxxflags}" \ + $maketarget + +%install + rm -rf $RPM_BUILD_ROOT + + # fetch GNU platform triple + triple=`./config.guess` + + # perform the standard installation procedure + ( cd obj + %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT + ) || exit $? + + # cleanup installation tree + mv $RPM_BUILD_ROOT%{l_prefix}/lib/lib*.a \ + $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/ \ + >/dev/null 2>&1 || true + mv $RPM_BUILD_ROOT%{l_prefix}/lib64/{lib*.a,*.spec} \ + $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/ \ + >/dev/null 2>&1 || true + dirs="" + for multilib in `$RPM_BUILD_ROOT%{l_prefix}/bin/gcc --print-multi-lib`; do + subdir=`echo "$multilib" | sed -e 's/;.*$//'` + [ ".$subdir" = .. ] && continue + mv $RPM_BUILD_ROOT%{l_prefix}/lib/$subdir/lib*.a \ + $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/$subdir/ \ + >/dev/null 2>&1 || true + mv $RPM_BUILD_ROOT%{l_prefix}/lib64/$subdir/lib*.a \ + $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/$subdir/ \ + >/dev/null 2>&1 || true + dirs="$dirs $subdir" + done + for subdir in $dirs; do + rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib/$subdir >/dev/null 2>&1 || true + done + mv $RPM_BUILD_ROOT%{l_prefix}/${triple}/include/* \ + $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/include/ \ + >/dev/null 2>&1 || true + + # strip installation tree + rm -rf $RPM_BUILD_ROOT%{l_prefix}/${triple} + rm -f $RPM_BUILD_ROOT%{l_prefix}/info/dir + rm -rf $RPM_BUILD_ROOT%{l_prefix}/man/man7 >/dev/null 2>&1 || true + rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/*.la >/dev/null 2>&1 || true + rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/libgomp.spec >/dev/null 2>&1 || true + rm -f $RPM_BUILD_ROOT%{l_prefix}/lib64/*.la >/dev/null 2>&1 || true + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-gcc* >/dev/null 2>&1 || true +%if "%{with_cxx}" == "yes" + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-c++ >/dev/null 2>&1 || true + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-g++ >/dev/null 2>&1 || true +%endif + strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true + for prog in cc1 cc1plus collect2 cpp; do + strip $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/${prog} \ + >/dev/null 2>&1 || true + done + + # bump up installation tree + ln $RPM_BUILD_ROOT%{l_prefix}/bin/gcc \ + $RPM_BUILD_ROOT%{l_prefix}/bin/cc + ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/gcc.1 \ + $RPM_BUILD_ROOT%{l_prefix}/man/man1/cc.1 +%if "%{with_cxx}" == "yes" + ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/g++.1 \ + $RPM_BUILD_ROOT%{l_prefix}/man/man1/c++.1 +%endif + + # resolve filename conflicts +%if "%{with_gcc}" != "yes" && "%{V_comp}" != "" + ( cd $RPM_BUILD_ROOT%{l_prefix}/bin + for file in *; do + [ ".$file" = ".*" ] && continue + mv ${file} ${file}%{V_comp} + done + ) || exit $? + ( cd $RPM_BUILD_ROOT%{l_prefix}/info + for file in *; do + [ ".$file" = ".*" ] && continue + mv ${file} `echo ${file} | sed -e 's;^\([^.]*\)\(\..*\)$;\1%{V_comp}\2;'` + done + ) || exit $? + ( cd $RPM_BUILD_ROOT%{l_prefix}/man/man1 + for file in *; do + [ ".$file" = ".*" ] && continue + mv ${file} `echo ${file} | sed -e 's;^\([^.]*\)\(\..*\)$;\1%{V_comp}\2;'` + done + ) || exit $? +%endif + + # determine installation file list + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} + +%files -f files + +%clean + rm -rf $RPM_BUILD_ROOT + @@ . ______________________________________________________________________ OpenPKG http://openpkg.org CVS Repository Commit List openpkg-cvs@openpkg.org