gcc/gcc.spec

Sun, 03 Apr 2011 13:34:55 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sun, 03 Apr 2011 13:34:55 +0200
changeset 337
f71e028eb3e2
parent 335
6eb79a12ee37
child 338
1153ac6bac7e
permissions
-rw-r--r--

Correct and improve several packaging aspects including...
Correct datadir path for python modules, correct jar(1) path for
building libgcj classes, strip libexecdir path of version numbers,
improve name of oblbld build path, clean whitespace from as(1) and
ld(1) GNU detection, remove seemingly discarded '--with-local-prefix'
configure argument, and correct hardcoded lto plugin libtool archive
dependency information.

Most importantly, correct IA32 architecture detection logic in
config.gcc to correctly emit SSE2 instructions conditionally, leading
to the removal of all '-march' bootstrap options and replacement with
unconditional (for IA32/AMD64) '-mtune=native' options. Comments and
buildtime warnings are corrected appropriately. In theory these changes
cause a more portable, orthoganal, and optimal bootstrap to be built.

     1 ##
     2 ##  gcc.spec -- OpenPKG RPM Package Specification
     3 ##  Copyright (c) 2000-2010 OpenPKG Foundation e.V. <http://openpkg.net/>
     4 ##
     5 ##  Permission to use, copy, modify, and distribute this software for
     6 ##  any purpose with or without fee is hereby granted, provided that
     7 ##  the above copyright notice and this permission notice appear in all
     8 ##  copies.
     9 ##
    10 ##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
    11 ##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    12 ##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    13 ##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
    14 ##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    15 ##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    16 ##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
    17 ##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    18 ##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    19 ##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
    20 ##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    21 ##  SUCH DAMAGE.
    22 ##
    24 #   package version
    25 %define       V_full         4.6.0
    26 %define       V_comp         %nil
    28 #   package information
    29 Name:         gcc
    30 Summary:      GNU Compiler Collection
    31 URL:          http://gcc.gnu.org/
    32 Vendor:       Free Software Foundation
    33 Packager:     OpenPKG Foundation e.V.
    34 Distribution: OpenPKG Community
    35 Class:        CORE
    36 Group:        Compiler
    37 License:      GPL
    38 Version:      %{V_full}
    39 Release:      20110331
    41 #   package options
    42 %option       with_binutils  yes
    43 %option       with_cxx       yes
    44 %option       with_objc      no
    45 %option       with_java      no
    46 %option       with_fortran   no
    47 %option       with_optimize  yes
    48 %option       with_profile   no
    49 %option       with_threads   yes
    50 %option       with_multilib  no
    52 #   fix intermodule dependencies implicitly
    53 %if "%{with_java}" == "yes"
    54 %define  with_cxx      yes
    55 %define  with_threads  yes
    56 %endif
    58 #   list of sources
    59 Source0:      ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-core-%{V_full}.tar.bz2
    60 Source1:      ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-g++-%{V_full}.tar.bz2
    61 Source2:      ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-objc-%{V_full}.tar.bz2
    62 Source3:      ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-java-%{V_full}.tar.bz2
    63 Source4:      ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-fortran-%{V_full}.tar.bz2
    64 Patch0:       gcc.patch
    66 #   build information
    67 Prefix:       %{l_prefix}
    68 BuildRoot:    %{l_buildroot}
    69 BuildPreReq:  OpenPKG, openpkg >= 20060823, make
    70 PreReq:       OpenPKG, openpkg >= 20060823
    71 BuildPreReq:  mpc, mpfr, gmp
    72 PreReq:       mpc, mpfr, gmp
    73 %if "%{with_binutils}" == "yes"
    74 BuildPreReq:  binutils >= 2.14
    75 PreReq:       binutils >= 2.14
    76 %endif
    77 %if "%{with_cxx}" == "yes"
    78 BuildPreReq:  libiconv
    79 PreReq:       libiconv
    80 %endif
    81 %if "%{with_java}" == "yes"
    82 BuildPreReq:  zlib, infozip
    83 PreReq:       zlib
    84 %endif
    85 AutoReq:      no
    86 AutoReqProv:  no
    88 %description
    89     The GNU Compiler Collection (GCC) provides standard conforming and
    90     highly portable compilers for the ISO C, ISO C++, Objective-C,
    91     Fortran and Java languages.
    93 %track
    94     prog gcc = {
    95         version   = %{V_full}
    96         url       = ftp://gcc.gnu.org/pub/gcc/releases/
    97         regex     = gcc-(4\.\d+\.\d+)
    98         url       = ftp://gcc.gnu.org/pub/gcc/releases/gcc-__NEWVER__/
    99         regex     = gcc-core-(\d+\.\d+\.\d+)\.tar\.bz2
   100     }
   102 %prep
   103     %setup -q
   104 %if "%{with_cxx}" == "yes"
   105     %setup -q -T -D -b 1
   106 %endif
   107 %if "%{with_objc}" == "yes"
   108     %setup -q -T -D -b 2
   109 %endif
   110 %if "%{with_java}" == "yes"
   111     %setup -q -T -D -b 3
   112 %endif
   113 %if "%{with_fortran}" == "yes"
   114     %setup -q -T -D -b 4
   115 %endif
   116     %patch -p0
   117     %{l_shtool} subst \
   118         -e 's;\(instname="\$dir/\$name"\)i;\1;' \
   119         ltmain.sh
   120     %{l_shtool} subst -v -s \
   121         -e 's;\(gmplibs="-lmpc\) \(-lmpfr -lgmp\);\1 -lm \2;' \
   122         configure
   123     %{l_shtool} subst -v -s \
   124         -e 's;\(LDEXP_LIB=\)"$LIBS";\1"$LDFLAGS";' \
   125         -e 's;PREFIX_INCLUDE_DIR;PREFIX_INCLUDE_DIR_DISABLED;g' \
   126         gcc/configure
   127     %{l_shtool} subst \
   128         -e 's;[ \t]*-W[a-zA-Z0-9_\-][a-zA-Z0-9_\-]*,*;;g' \
   129         lto-plugin/Makefile.in
   130     %{l_shtool} subst \
   131         -e 's;-rpath  *[^ \t][^ \t]*;;g' \
   132         -e 's;--tag=disable-static;--tag=disable-shared;g' \
   133         -e 's;\.\./libiberty/libiberty\.a;-L../libiberty -liberty;g' \
   134         -e 's;\.\./libiberty/pic/libiberty\.a;-L../libiberty/pic -liberty;g' \
   135         lto-plugin/Makefile.in
   136 %if "%{with_cxx}" == "yes"
   137     %{l_shtool} subst \
   138         -e 's;\(pythondir *= *\$(datadir)\)/gcc-\$(gcc_version);\1/gcc;' \
   139         libstdc++-v3/python/Makefile.in
   140 %endif
   141 %if "%{with_java}" == "yes"
   142     %{l_shtool} subst \
   143         -e 's;\(default_python_dir\) *=.*;\1=/share/gcc/python/libjava;' \
   144         libjava/configure
   145     %{l_shtool} subst \
   146         -e 's;JAR *= *@JAR@;JAR = $(here)/scripts/jar;' \
   147         libjava/Makefile.in
   148 %endif
   149     if [ ".%{V_comp}" != . ]; then
   150         %{l_shtool} subst -v -s \
   151             -e 's;(libdir)/gcc/;(libdir)/gcc%{V_comp}/;' \
   152             -e 's;(libexecdir)/gcc/;(libexecdir)/gcc%{V_comp}/;' \
   153             `find . -name Makefile.in -type f -print`
   154     fi
   155     %{l_shtool} subst \
   156         -e 's;^\(do-compare\) *\(=.*\);#\1-shouldnt-be-defined-here \2;' \
   157         config/*.mk
   158     case "%{l_platform -t}" in
   159         amd64-linux* )
   160             %{l_shtool} subst \
   161                 -e 's/GLIBCXX_IS_NATIVE=false/GLIBCXX_IS_NATIVE=true/g' \
   162                 -e 's/test x.gcc_no_link = xyes/false/g' \
   163                 libstdc++-v3/configure
   164             ;;
   165     esac
   166     %{l_shtool} subst \
   167         -e 's;<iconv\.h>;"%{l_prefix}/include/iconv.h";' \
   168         libstdc++-v3/include/ext/codecvt_specializations.h
   169     %{l_shtool} subst \
   170         -e 's;.*with_arch_32=\${with_arch_32:-pentium4}.*;;' \
   171         -e 's;with_arch_32=\${with_arch_32:-pentiumpro};arch_without_sse2=yes;' \
   172         gcc/config.gcc
   174 %build
   175     #   create build subdirectory
   176     %{l_shtool} mkdir -p objbld
   177     cd objbld
   179     #   locate ld(1) and as(1) accordingly
   180 %if "%{with_binutils}" == "yes"
   181     #   allow OpenPKG binutils
   182     LD=%{l_tool_locate ld ld}
   183     AS=%{l_tool_locate as as}
   184 %else
   185     #   ignore OpenPKG binutils
   186     LD=`PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin:/opt/bin:/opt/sbin:/usr/local/bin:/usr/local/sbin which ld`
   187     AS=`PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin:/opt/bin:/opt/sbin:/usr/local/bin:/usr/local/sbin which as`
   188 %endif
   189     l_with_gnu_ld_as=""
   190     echo $LD | grep '^/' >/dev/null && l_with_gnu_ld_as="--with-ld=$LD"
   191     echo $AS | grep '^/' >/dev/null && l_with_gnu_ld_as="${l_with_gnu_ld_as} --with-as=$AS"
   192     $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" || l_with_gnu_ld_as="${l_with_gnu_ld_as} --without-gnu-ld"
   193     $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" || l_with_gnu_ld_as="${l_with_gnu_ld_as} --without-gnu-as"
   195     #   determine threads use
   196 %if "%{with_threads}" == "yes"
   197     l_enable_threads="posix"
   198 %else
   199     l_enable_threads="single"
   200 %endif
   202     #   determine language use
   203     l_enable_languages="c"
   204 %if "%{with_cxx}" == "yes"
   205     l_enable_languages="${l_enable_languages},c++"
   206 %endif
   207 %if "%{with_objc}" == "yes"
   208     l_enable_languages="${l_enable_languages},objc"
   209 %endif
   210 %if "%{with_java}" == "yes"
   211     l_enable_languages="${l_enable_languages},java"
   212 %endif
   213 %if "%{with_fortran}" == "yes"
   214     l_enable_languages="${l_enable_languages},f95"
   215 %endif
   217     #   disable GNU iconv use
   218     ( echo "am_cv_func_iconv=no"
   219       echo "am_cv_lib_iconv=no"
   220     ) >config.cache
   221     #   platforms failing 'compare' make target (see prep as well)
   222     case "%{l_platform -t}" in
   223         *i?86-sunos*  ) echo "gcc_cv_prog_cmp_skip=true" >>config.cache ;;
   224         *amd64-linux* ) echo "gcc_cv_prog_cmp_skip=true" >>config.cache ;;
   225     esac
   227     #   configure the package
   228     LD="$LD" \
   229     AS="$AS" \
   230     CC="%{l_cc}" \
   231     CFLAGS="%{l_cflags}" \
   232 %if "%{with_cxx}" == "yes"
   233     CPPFLAGS="%{l_cppflags}" \
   234     LDFLAGS="%{l_ldflags}" \
   235 %endif
   236     CONFIG_SHELL="%{l_bash}" \
   237     GREP="%{l_bash}" \
   238     ../configure \
   239         --with-bugurl="http://openpkg.org/" \
   240         --with-pkgversion="%{l_openpkg_release -F "OpenPKG-%%t"}" \
   241         --cache-file=./config.cache \
   242         --srcdir=`pwd`/.. \
   243         --prefix=%{l_prefix} \
   244         --exec-prefix=%{l_prefix} \
   245         --mandir=%{l_prefix}/man \
   246         --infodir=%{l_prefix}/info \
   247         --includedir=%{l_prefix}/include/gcc%{V_comp} \
   248         --with-gxx-include-dir=%{l_prefix}/include/g++%{V_comp} \
   249         --enable-languages="${l_enable_languages}" \
   250         --enable-threads="${l_enable_threads}" \
   251         --disable-maintainer-mode \
   252         --disable-shared \
   253         --disable-nls \
   254 %if "%{with_java}" == "yes"
   255         --with-system-zlib \
   256 %endif
   257 %if "%{with_multilib}" == "yes"
   258         --enable-multilib \
   259 %else
   260         --disable-multilib \
   261 %endif
   262 %if "%{with_cxx}" == "yes"
   263         --with-libiconv-prefix=%{l_prefix} \
   264 %endif
   265         --with-gmp=%{l_prefix} \
   266         --with-mpfr=%{l_prefix} \
   267         --with-mpc=%{l_prefix} \
   268         ${l_with_gnu_ld_as}
   270     #   determine build flags
   271     l_ccisgcc=no
   272     if [ ".`(%{l_cc} -v; %{l_cc} --version) </dev/null 2>&1 | grep -i 'gcc'`" != . ]; then
   273         l_ccisgcc=yes
   274     fi
   275     l_cflags=""
   276     l_cxxflags=""
   277     l_boot_cflags=""
   278     l_libcflags="-g"
   279     l_libcxxflags="-g"
   280     #   at least GNU as from GNU binutils supports -pipe always
   281     "$AS" --version </dev/null 2>/dev/null | grep "^GNU assembler" >/dev/null && {
   282         l_boot_cflags="$l_boot_cflags -pipe"
   283         l_libcxxflags="$l_libcxxflags -pipe"
   284     }
   285 %if "%{with_optimize}" == "yes"
   286     #   GCC authors are not keeping up with optimized portability expectations
   287     ( echo "As GCC advances its optimization logic becomes increasingly complex (and"
   288       echo "buggy?) Since at least GCC 4.5, problems have been reported using arguments"
   289       echo "-O, -mtune, or -march implicitly or explicitly during different bootstrap"
   290       echo "stages as well as stage comparison and even the final installation."
   291       echo ""
   292       echo "Pay attention when building on one computer and installing on another as"
   293       echo "problems may be platform specific. If in doubt, disable optimization."
   294     ) | %{l_rpmtool} msg -b -t warn
   295     if [ ".$l_ccisgcc" != .yes ]; then
   296         #   CPU native detection only works with GCC (see driver-i386.c)
   297         ( echo "Platform specific optimization is enabled, but detection of appropriate"
   298           echo "native architecture is only possible when bootstrapping GCC using a pre-"
   299           echo "installed GCC. The current build is using a different compiler, so such"
   300           echo "optimization is generically built while deferring native architecture"
   301           echo "detection to the final GCC binary."
   302           echo ""
   303           echo "To achieve native architecture detection while bootstrapping please"
   304           echo "install GCC first and then build GCC a second time."
   305         ) | %{l_rpmtool} msg -b -t notice
   306     fi
   307     #   tuning without specifying '-march' is portable and in theory
   308     #   allows the resulting GCC binaries to execute on other hosts!
   309     case "%{l_platform -t}" in
   310         *sun4[uv]-*                  ) l_boot_cflags="$l_boot_cflags -mtune=v9" ;;
   311         *sun*-*                      ) l_boot_cflags="$l_boot_cflags -mtune=v8" ;;
   312         *i?86-* | *amd64-* | *ia64-* ) l_boot_cflags="$l_boot_cflags -mtune=native" ;;
   313         *                            ) l_boot_cflags="$l_boot_cflags -mtune=generic" ;;
   314     esac
   315     l_cflags="$l_cflags -O"
   316     l_boot_cflags="$l_boot_cflags -O3 -fomit-frame-pointer"
   317     l_libcxxflags="$l_libcxxflags -O3 -fno-implicit-templates"
   318 %else
   319     #   don't optimize at all to avoid problems
   320     l_boot_cflags="$l_boot_cflags -O0"
   321     l_libcxxflags="$l_libcxxflags -O0"
   322 %endif
   323 %if "%{with_profile}" == "yes"
   324     #   generate profile feedback
   325     maketarget="profiledbootstrap"
   326     loc_makeflags="%{l_mflags}"
   328     #   warn about exceptional build duration for profile feedback
   329     ( echo "Building profile feedback on some hosts can take many days to complete!"
   330       echo "Now continuing to build a profiled bootstrap with parallel make logic"
   331       echo "disabled according to profiling requirements..."
   332     ) | %{l_rpmtool} msg -b -t warn
   334     #   warn about profiled bootstrap requirement of 64-bit arithmetic
   335     if [ ".$l_ccisgcc" != .yes ]; then
   336         ( echo "A preinstalled GCC was not detected although one is recommended for"
   337           echo "building a profiled bootstrap. Buildtime or runtime errors can occur if"
   338           echo "the compiler used to build profile feedback doesn't support 64-bit math."
   339           echo ""
   340           echo "If in doubt, stop now and start the build again with profiling disabled."
   341         ) | %{l_rpmtool} msg -b -t warn
   342     fi
   343 %else
   344     #   build in three stages
   345     maketarget="bootstrap"
   346     loc_makeflags="%{l_mflags -O}"
   347 %endif
   348     case "%{l_platform -t}" in
   349         *64-* ) l_cflags="$l_cflags -fPIC"; l_cxxflags="$l_cxxflags -fPIC" ;;
   350     esac
   351 %if "%{with_cxx}" == "yes"
   352     l_cflags="$l_cflags %{l_cppflags}"
   353     l_cxxflags="$l_cxxflags %{l_cppflags}"
   354     l_libcflags="$l_libcflags %{l_cppflags}"
   355     l_libcxxflags="$l_libcxxflags %{l_cppflags}"
   356 %endif
   358     #   build the package
   359     MAKE="%{l_make} ${loc_makeflags}" \
   360     %{l_make} ${loc_makeflags} \
   361         GREP="grep" \
   362         MAKE="%{l_make} ${loc_makeflags}" \
   363         BOOT_CFLAGS="${l_boot_cflags}" \
   364         CFLAGS="${l_cflags}" \
   365         CXXFLAGS="${l_cxxflags}" \
   366 %if "%{with_cxx}" == "yes"
   367         CPPFLAGS="%{l_cppflags}" \
   368         LDFLAGS="%{l_ldflags}" \
   369         BOOT_LDFLAGS="%{l_ldflags}" \
   370 %endif
   371         LIBCFLAGS="${l_libcflags}" \
   372         LIBCXXFLAGS="${l_libcxxflags}" \
   373         $maketarget
   375 %install
   376     rm -rf $RPM_BUILD_ROOT
   378     #   fetch GNU platform triple
   379     triple=`./config.guess`
   381     #   perform standard installation procedure
   382     ( cd objbld
   383       %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT
   384     ) || exit $?
   386     #   cleanup installation tree
   387     mv $RPM_BUILD_ROOT%{l_prefix}/lib/{lib*.a,*.spec} \
   388        $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/ \
   389        >/dev/null 2>&1 || true
   390     mv $RPM_BUILD_ROOT%{l_prefix}/lib64/{lib*.a,*.spec} \
   391        $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/ \
   392        >/dev/null 2>&1 || true
   393     dirs=""
   394     for multilib in `$RPM_BUILD_ROOT%{l_prefix}/bin/gcc --print-multi-lib`; do
   395         subdir=`echo "$multilib" | sed -e 's/;.*$//'`
   396         [ ".$subdir" = .. ] && continue
   397         mv $RPM_BUILD_ROOT%{l_prefix}/lib/$subdir/lib*.a \
   398            $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/$subdir/ \
   399            >/dev/null 2>&1 || true
   400         mv $RPM_BUILD_ROOT%{l_prefix}/lib64/$subdir/lib*.a \
   401            $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/$subdir/ \
   402            >/dev/null 2>&1 || true
   403         dirs="$dirs $subdir"
   404     done
   405     for subdir in $dirs; do
   406         rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib/$subdir >/dev/null 2>&1 || true
   407     done
   408     mv $RPM_BUILD_ROOT%{l_prefix}/${triple}/include/* \
   409        $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/include/ \
   410            >/dev/null 2>&1 || true
   412     #   correct hardcoded paths
   413     %{l_shtool} subst \
   414         -e "s;\(dependency_libs\) *=.*;\1='-L%{l_prefix}/lib\ -L%{l_prefix}/lib/gcc%{V_comp}/${triple}/%{V_full}\ -liberty';" \
   415        $RPM_BUILD_ROOT%{l_prefix}/libexec/gcc%{V_comp}/${triple}/[0-9]*/liblto_plugin.la
   417     #   strip installation tree
   418     rm -rf $RPM_BUILD_ROOT%{l_prefix}/${triple}
   419     rm -f  $RPM_BUILD_ROOT%{l_prefix}/info/dir
   420     rm -rf $RPM_BUILD_ROOT%{l_prefix}/man/man7   >/dev/null 2>&1 || true
   421     rm -f  $RPM_BUILD_ROOT%{l_prefix}/lib/*.la   >/dev/null 2>&1 || true
   422     rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib64      >/dev/null 2>&1 || true
   423     rm -f  $RPM_BUILD_ROOT%{l_prefix}/bin/*-gcc* >/dev/null 2>&1 || true
   424 %if "%{with_cxx}" == "yes"
   425     rm -f  $RPM_BUILD_ROOT%{l_prefix}/bin/*-c++  >/dev/null 2>&1 || true
   426     rm -f  $RPM_BUILD_ROOT%{l_prefix}/bin/*-g++  >/dev/null 2>&1 || true
   427 %endif
   428     strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
   429     for prog in cc1 cc1plus collect2 cpp; do
   430         strip $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/${prog} \
   431             >/dev/null 2>&1 || true
   432     done
   434     #   bump up installation tree
   435     ln $RPM_BUILD_ROOT%{l_prefix}/bin/gcc \
   436        $RPM_BUILD_ROOT%{l_prefix}/bin/cc
   437     ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/gcc.1 \
   438        $RPM_BUILD_ROOT%{l_prefix}/man/man1/cc.1
   439 %if "%{with_cxx}" == "yes"
   440     ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/g++.1 \
   441        $RPM_BUILD_ROOT%{l_prefix}/man/man1/c++.1
   442 %endif
   444     #   determine installation file list
   445     %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
   447 %files -f files
   449 %clean
   450     rm -rf $RPM_BUILD_ROOT

mercurial