yann@1: Summary: The GNU Compiler Collection for SuperH. yann@1: %define GCC_VERSION 3.2.3 yann@1: %define arch_list sh3-linux sh3eb-linux sh4-linux sh4eb-linux yann@1: %define TARGET_LIBSTDC 1 yann@1: %define TARGET_JAVA 1 yann@1: yann@1: Name: gcc yann@1: Version: 3.2.3 yann@1: Release: 3 yann@1: yann@1: Copyright: GPL yann@1: Group: Development/Languages yann@1: Source0: gcc-%{GCC_VERSION}.tar.bz2 yann@1: Patch1: gcc-20030210-sh-linux-1.patch yann@1: Patch2: gcc-3.2.3-libffi-1.patch yann@1: Patch3: gcc-3.2.3-sh-linux-dwarf2-1.patch yann@1: Buildroot: /var/tmp/gcc-%{_target}-root yann@1: ExclusiveArch: i386 sh3 sh3eb sh4 sh4eb yann@1: yann@1: %description yann@1: This package contains the GNU Compiler Collection: gcc and g++. yann@1: You'll need this package in order to compile C/C++ code. yann@1: yann@1: %ifarch i386 yann@1: yann@1: # ==================== Cross Compiler =============================== yann@1: yann@1: %package sh-linux yann@1: Summary: The GNU Compiler Collection for sh-linux. yann@1: Group: Development/Languages yann@1: Requires: binutils-sh-linux >= 2.13.2 yann@1: Provides: gcc-sh-linux yann@1: Obsoletes: gcc-sh3-linux gcc-sh3eb-linux gcc-sh4-linux gcc-sh4eb-linux yann@1: Obsoletes: gcc-sh3-linux-c++ gcc-sh3eb-linux-c++ gcc-sh4-linux-c++ gcc-sh4eb-linux-c++ yann@1: Obsoletes: libstdc++-sh3-linux libstdc++-sh3eb-linux libstdc++-sh4-linux libstdc++-sh4eb-linux yann@1: AutoReqProv: no yann@1: yann@1: %description sh-linux yann@1: The gcc-sh-linux package contains GNU Compiler Collection: gcc g++ and libstdc++-v3. yann@1: yann@1: It includes support for most of the current C++ specification, including templates and yann@1: exception handling. It does also include the standard C++ library and C++ header files. yann@1: You'll need this package in order to cross compile C/C++ code for sh-linux. yann@1: yann@1: %package -n libgcj-sh-linux yann@1: Summary: Header files and libraries for sh-linux Java development. yann@1: Group: Development/Libraries yann@1: Requires: gcc-sh-linux = %{version}-%{release} yann@1: AutoReqProv: no yann@1: yann@1: %description -n libgcj-sh-linux yann@1: The Java static libraries and C header files. You will need this yann@1: package to compile your Java programs for sh-linux using the gcc Java compiler (gcj). yann@1: yann@1: %else yann@1: # =========================== Native Compiler ================================= yann@1: %package libgcc yann@1: Summary: runtime libraries for the GNU Compiler Collection. yann@1: Group: System Environment/Libraries yann@1: yann@1: %description libgcc yann@1: This package contains libgcc shared libraries for the GNU C Compiler Collection. yann@1: You'll need this package in order to execute C,C++,JAVA code yann@1: that uses shared libgcc. yann@1: yann@1: %package c++ yann@1: Summary: C++ support for gcc yann@1: Group: Development/Languages yann@1: Requires: gcc = %{version}-%{release} yann@1: yann@1: %description c++ yann@1: This package adds C++ support to the GNU Compiler Collection. It includes yann@1: support for most of the current C++ specification, including templates and yann@1: exception handling. It does include the static standard C++ yann@1: library and C++ header files; the library for dynamically linking yann@1: programs is available separately. yann@1: yann@1: %package -n libstdc++ yann@1: Summary: GNU c++ library. yann@1: Group: System Environment/Libraries yann@1: yann@1: %description -n libstdc++ yann@1: The libstdc++ package contains a snapshot of the GCC Standard C++ yann@1: Library v3, an ongoing project to implement the ISO 14882 Standard C++ yann@1: library. yann@1: yann@1: %package -n libstdc++-devel yann@1: Summary: Header files and libraries for C++ development yann@1: Group: Development/Libraries yann@1: Requires: libstdc++ = %{version}-%{release}, gcc-c++ = %{version}-%{release} yann@1: yann@1: %description -n libstdc++-devel yann@1: This is the GNU implementation of the standard C++ libraries. This yann@1: package includes the header files and libraries needed for C++ yann@1: development. This includes SGI's implementation of the STL. yann@1: yann@1: %package java yann@1: Summary: Java support for gcc yann@1: Group: Development/Languages yann@1: Requires: gcc = %{version}-%{release}, libgcj = %{version}-%{release}, libgcj-devel = %{version}-%{release} yann@1: yann@1: %description java yann@1: This package adds experimental support for compiling Java(tm) programs and yann@1: bytecode into native code. To use this you will also need the libgcj and yann@1: libgcj-devel packages. yann@1: yann@1: %package -n libgcj yann@1: Summary: Java runtime library for gcc. yann@1: Group: System Environment/Libraries yann@1: yann@1: %description -n libgcj yann@1: The Java runtime library. You will need this package to run your Java yann@1: programs compiled using the gcc Java compiler (gcj). yann@1: yann@1: %package -n libgcj-devel yann@1: Summary: Header files and libraries for Java development. yann@1: Group: Development/Libraries yann@1: Requires: libgcj = %{version}-%{release} yann@1: yann@1: %description -n libgcj-devel yann@1: The Java static libraries and C header files. You will need this yann@1: package to compile your Java programs using the gcc Java compiler (gcj). yann@1: yann@1: %endif yann@1: yann@1: %prep yann@1: %setup -q -n gcc-%{GCC_VERSION} yann@1: %patch1 -p1 yann@1: %patch2 -p1 yann@1: ##%patch3 -p1 yann@1: yann@1: %build yann@1: %ifarch i386 yann@1: # build cross compiler for i386-linux host yann@1: for arch in sh-linux; do yann@1: rm -rf ${arch} yann@1: mkdir ${arch} yann@1: yann@1: CONFIG_ARGS="\ yann@1: --prefix=%{_prefix} \ yann@1: --mandir=%{_mandir} \ yann@1: --infodir=%{_infodir} \ yann@1: --target=${arch} \ yann@1: --host=%{_host} \ yann@1: --build=%{_build} \ yann@1: --enable-languages=c,c++,java \ yann@1: --with-system-zlib \ yann@1: --with-gxx-include-dir=%{_prefix}/${arch}/include/g++-v3 \ yann@1: --includedir=%{_prefix}/${arch}/include \ yann@1: --disable-checking \ yann@1: --disable-shared \ yann@1: --enable-__cxa_atexit \ yann@1: --enable-c99 \ yann@1: --enable-threads=posix \ yann@1: --enable-long-long" yann@1: if [ %{TARGET_JAVA} -ne 0 ]; then yann@1: CONFIG_ARGS="$CONFIG_ARGS --enable-libgcj" yann@1: fi yann@1: ( cd $arch yann@1: ../configure ${CONFIG_ARGS} yann@1: ) yann@1: if [ %{TARGET_LIBSTDC} -ne 0 -o %{TARGET_JAVA} -ne 0 ]; then yann@1: sed -e s:-Dinhibit_libc::g ${arch}/gcc/Makefile >${arch}/gcc/Makefile.$$$ yann@1: mv -f ${arch}/gcc/Makefile.$$$ ${arch}/gcc/Makefile yann@1: fi yann@1: make all-gcc -C ${arch} yann@1: yann@1: if [ %{TARGET_LIBSTDC} -ne 0 ]; then yann@1: CONFIG_ARGS="`echo $CONFIG_ARGS | sed -e s/--disable-shared/--enable-shared/`" yann@1: make TARGET_CONFIGARGS="${CONFIG_ARGS} --with-cross-host" all-target-libstdc++-v3 -C ${arch} yann@1: fi yann@1: yann@1: if [ %{TARGET_JAVA} -ne 0 ]; then yann@1: make all-fastjar -C ${arch} yann@1: CONFIG_ARGS="`echo $CONFIG_ARGS | sed -e s/--host=%{_host}/--host=${arch}/`" yann@1: dir=`pwd` yann@1: yann@1: ac_cv_file__proc_self_exe=yes \ yann@1: ac_cv_prog_GCJ="$dir/$arch/gcc/gcj -B$dir/$arch/$arch/libjava/ -B$dir/$arch/gcc/ -B%{_prefix}/$arch/bin/ -B%{_prefix}/$arch/lib/ -isystem %{_prefix}/$arch/include" \ yann@1: make TARGET_CONFIGARGS="${CONFIG_ARGS} --with-cross-host --enable-multilib --with-target-subdir=${arch} --with-x=no" \ yann@1: all-target-libjava -C ${arch} yann@1: fi yann@1: yann@1: %else yann@1: # Canadian cross (build native compiler) yann@1: for arch in %{_target}; do yann@1: rm -rf ${arch} yann@1: mkdir -p ${arch} yann@1: CONFIG_ARGS="\ yann@1: --prefix=%{_prefix} \ yann@1: --mandir=%{_mandir} \ yann@1: --infodir=%{_infodir} \ yann@1: --target=${arch} \ yann@1: --host=${arch} \ yann@1: --build=%{_build} \ yann@1: --enable-languages=c,c++,java \ yann@1: --with-system-zlib \ yann@1: --with-gxx-include-dir=%{_prefix}/include/g++-v3 \ yann@1: --disable-checking \ yann@1: --disable-shared \ yann@1: --enable-__cxa_atexit \ yann@1: --enable-c99 \ yann@1: --enable-threads=posix \ yann@1: --enable-long-long" yann@1: yann@1: if [ %{TARGET_JAVA} -ne 0 ]; then yann@1: CONFIG_ARGS="$CONFIG_ARGS --enable-libgcj" yann@1: fi yann@1: yann@1: ( cd ${arch} yann@1: CC=${arch}-gcc AR=${arch}-ar RANLIB=${arch}-ranlib CXX=${arch}-g++ \ yann@1: ../configure $CONFIG_ARGS yann@1: ) yann@1: yann@1: if [ %{TARGET_LIBSTDC} -ne 0 -o %{TARGET_JAVA} -ne 0 ]; then yann@1: sed -e s:-Dinhibit_libc::g ${arch}/gcc/Makefile >${arch}/gcc/Makefile.$$$ yann@1: mv -f ${arch}/gcc/Makefile.$$$ ${arch}/gcc/Makefile yann@1: fi yann@1: yann@1: make all-build-libiberty all-gcc -C ${arch} yann@1: yann@1: if [ %{TARGET_LIBSTDC} -ne 0 ]; then yann@1: CONFIG_ARGS="`echo $CONFIG_ARGS | sed -e s/--disable-shared/--enable-shared/`" yann@1: make TARGET_CONFIGARGS="${CONFIG_ARGS}" all-target-libstdc++-v3 -C ${arch} yann@1: if [ %{TARGET_JAVA} -ne 0 ]; then yann@1: ( mkdir -p ${arch}/fastjar; cd ${arch}/fastjar; rm *; ../../fastjar/configure --with-system-zlib; make ) yann@1: ac_cv_file__proc_self_exe=yes \ yann@1: CC=${arch}-gcc AR=${arch}-ar RANLIB=${arch}-ranlib CXX=${arch}-g++ GCJ=${arch}-gcj \ yann@1: make TARGET_CONFIGARGS="${CONFIG_ARGS} --with-x=no" configure-target-libjava -C ${arch} yann@1: yann@1: make -C ${arch}/${arch}/libffi yann@1: make -C ${arch}/${arch}/boehm-gc yann@1: make -C ${arch}/${arch}/zlib yann@1: make GCJ=${arch}-gcj GCJH=${arch}-gcjh ZIP=${arch}-jar -C ${arch}/${arch}/libjava yann@1: ( yann@1: rm -rf ${arch}/${arch}/fastjar yann@1: mkdir -p ${arch}/${arch}/fastjar yann@1: cd ${arch}/${arch}/fastjar yann@1: yann@1: ac_cv_sizeof_char=1 \ yann@1: ac_cv_sizeof_short=2 \ yann@1: ac_cv_sizeof_int=4 \ yann@1: ac_cv_sizeof_long=4 \ yann@1: ac_cv_sizeof_long_long=8 \ yann@1: ac_cv_sizeof_float=4 \ yann@1: ac_cv_sizeof_double=8 \ yann@1: ac_cv_sizeof_long_double=8 \ yann@1: ac_cv_sizeof_void_p=4 \ yann@1: ac_cv_file__proc_self_exe=yes \ yann@1: ac_cv_header_langinfo_h=yes \ yann@1: CC=${arch}-gcc ../../../fastjar/configure $CONFIG_ARGS yann@1: yann@1: make yann@1: ) yann@1: yann@1: fi yann@1: fi yann@1: %endif yann@1: done yann@1: yann@1: %install yann@1: rm -rf $RPM_BUILD_ROOT yann@1: mkdir -p ${RPM_BUILD_ROOT}/{%{_prefix}/bin,lib} yann@1: yann@1: %ifarch i386 yann@1: ARCH_STRTIP=strip yann@1: EXESUFFIX="" yann@1: arch=sh-linux yann@1: TOOLPREFIX=${arch}- yann@1: mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/${arch}/{bin,include,lib,share} yann@1: mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/${arch}/lib/{m4,mb/m4} yann@1: make DESTDIR=${RPM_BUILD_ROOT} \ yann@1: install-gcc \ yann@1: install-fastjar \ yann@1: -C ${arch} yann@1: %if 0 yann@1: ( cd ${RPM_BUILD_ROOT}%{_prefix}/sh-linux/lib yann@1: rm -f libgcc_s_*.so yann@1: mv libgcc_s_mb.so.1 mb/libgcc_s.so.1 yann@1: mv libgcc_s_m4.so.1 m4/libgcc_s.so.1 yann@1: mv libgcc_s_mb_m4.so.1 mb/m4/libgcc_s.so.1 yann@1: ln -s libgcc_s.so.1 mb/libgcc_s.so yann@1: ln -s libgcc_s.so.1 m4/libgcc_s.so yann@1: ln -s libgcc_s.so.1 mb/m4/libgcc_s.so yann@1: ) yann@1: %endif yann@1: yann@1: if [ %{TARGET_LIBSTDC} -ne 0 ]; then yann@1: make DESTDIR=${RPM_BUILD_ROOT} \ yann@1: install-target-libstdc++-v3 \ yann@1: -C ${arch} yann@1: fi yann@1: if [ %{TARGET_JAVA} -ne 0 ]; then yann@1: make DESTDIR=${RPM_BUILD_ROOT} \ yann@1: install-target-libjava \ yann@1: install-target-boehm-gc \ yann@1: install-target-zlib \ yann@1: -C ${arch} yann@1: make DESTDIR=${RPM_BUILD_ROOT} prefix=%{_prefix}/${arch} \ yann@1: install -C ${arch}/${arch}/libffi yann@1: mv -f $RPM_BUILD_ROOT%{_prefix}/share/java $RPM_BUILD_ROOT%{_prefix}/sh-linux/share/ yann@1: fi yann@1: rm -f $RPM_BUILD_ROOT%{_prefix}/bin/{gcov,gccbug} yann@1: rm -f $RPM_BUILD_ROOT%{_prefix}/${arch}/bin/{gij,jv-convert} yann@1: sed -e 's/@@VERSION@@/%{GCC_VERSION}/g' debian/shCPU-linux-GCC >$RPM_BUILD_ROOT%{_prefix}/bin/shCPU-linux-GCC yann@1: chmod 0755 $RPM_BUILD_ROOT%{_prefix}/bin/shCPU-linux-GCC yann@1: yann@1: LIBSTDC=`cd $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib; echo libstdc++.so*` yann@1: LIBGCJ=`cd $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib; echo libgcj.so*` yann@1: LIBFFI=`cd $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib; echo libffi*.so*` yann@1: # literally (binary-ly) same yann@1: PROGS="cpp c++ g++ g77 gcc gcj" yann@1: DRIVERS="cc1 cc1obj cc1plus collect2 cpp0 f771 jc1 tradcpp0 jvgenmain" yann@1: OBJS="crtbegin.o crtbeginS.o crtend.o crtendS.o crtbeginT.o" yann@1: LIBS="libgcc.a libgcc_eh.a libobjc.a" yann@1: LIBS_1="$LIBSTDC \ yann@1: $LIBGCJ libgcj.spec \ yann@1: $LIBFFI " yann@1: LIBS_2="libstdc++.a libstdc++.la \ yann@1: libsupc++.a libsupc++.la \ yann@1: libgcj.a libgcj.la \ yann@1: libffi.a libffi.la" yann@1: INCLUDE="include" yann@1: yann@1: for CPU in sh3 sh3eb sh4 sh4eb; do yann@1: mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${CPU}-linux/%{GCC_VERSION} yann@1: mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/${CPU}-linux/{lib,share/java} yann@1: # Make symbolic links for include dir. yann@1: ln -s ../sh-linux/include $RPM_BUILD_ROOT%{_prefix}/${CPU}-linux/include yann@1: yann@1: # Make symbolic links for libgcj.jar yann@1: ln -s ../../sh-linux/share/java/libgcj-%{GCC_VERSION}.jar $RPM_BUILD_ROOT%{_prefix}/${CPU}-linux/share/java/libgcj-%{GCC_VERSION}.jar yann@1: yann@1: # Make symbolic links for executables. yann@1: for p in ${PROGS}; do yann@1: ln -s shCPU-linux-GCC $RPM_BUILD_ROOT%{_prefix}/bin/${CPU}-linux-$p yann@1: done yann@1: ln -s sh-linux-gcjh $RPM_BUILD_ROOT%{_prefix}/bin/${CPU}-linux-gcjh yann@1: yann@1: case "${CPU}" in yann@1: sh3) yann@1: MULTILIBDIR= yann@1: MULTIPARENTDIR= yann@1: AS_ENDIAN_FLAG="-little" yann@1: CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__" yann@1: CPP_CPU_DEFS='-D__SH3__ -D__sh3__' yann@1: CC1_CPU_ENDIAN_FLAGS="-ml -m3" yann@1: CC1PLUS_CPU_ENDIAN_FLAGS="-ml -m3" yann@1: LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh3" yann@1: LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh3-linux/lib" yann@1: ;; yann@1: sh3eb) yann@1: MULTILIBDIR=/mb yann@1: MULTIPARENTDIR=../ yann@1: AS_ENDIAN_FLAG="-big" yann@1: CPP_ENDIAN_DEF="-D__BIG_ENDIAN__" yann@1: CPP_CPU_DEFS='-D__SH3__ -D__sh3__' yann@1: CC1_CPU_ENDIAN_FLAGS="-mb -m3" yann@1: CC1PLUS_CPU_ENDIAN_FLAGS="-mb -m3" yann@1: LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh3" yann@1: LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh3eb-linux/lib" yann@1: ;; yann@1: sh4) yann@1: MULTILIBDIR=/m4 yann@1: MULTIPARENTDIR=../ yann@1: AS_ENDIAN_FLAG="-little" yann@1: CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__" yann@1: CPP_CPU_DEFS="-D__SH4__" yann@1: CC1_CPU_ENDIAN_FLAGS="-ml -m4" yann@1: CC1PLUS_CPU_ENDIAN_FLAGS="-ml -m4" yann@1: LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh4" yann@1: LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh4-linux/lib" yann@1: ;; yann@1: sh4eb) yann@1: MULTILIBDIR=/mb/m4 yann@1: MULTIPARENTDIR=../../ yann@1: AS_ENDIAN_FLAG="-big" yann@1: CPP_ENDIAN_DEF="-D__BIG_ENDIAN__" yann@1: CPP_CPU_DEFS="-D__SH4__" yann@1: CC1_CPU_ENDIAN_FLAGS="-mb -m4" yann@1: CC1PLUS_CPU_ENDIAN_FLAGS="-mb -m4" yann@1: LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh4" yann@1: LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh4eb-linux/lib" yann@1: ;; yann@1: esac yann@1: yann@1: # Make symbolic links for GCC drivers, objects, libraries, and include dir. yann@1: for f in ${DRIVERS} ${INCLUDE}; do yann@1: if [ -a $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/$f ]; then yann@1: ln -s ../../sh-linux/%{GCC_VERSION}/$f $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/${CPU}-linux/%{GCC_VERSION}/$f yann@1: fi yann@1: done yann@1: for f in ${OBJS} ${LIBS}; do yann@1: if [ -a $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}${MULTILIBDIR}/$f ]; then yann@1: ln -s ../../sh-linux/%{GCC_VERSION}${MULTILIBDIR}/$f $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/${CPU}-linux/%{GCC_VERSION}/$f yann@1: fi yann@1: done yann@1: yann@1: for f in ${LIBS_1} ${LIBS_2}; do yann@1: if [ -e $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib${MULTILIBDIR}/$f ]; then yann@1: mv -f $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib${MULTILIBDIR}/$f $RPM_BUILD_ROOT%{_prefix}/${CPU}-linux/lib yann@1: ln -s ${MULTIPARENTDIR}../../${CPU}-linux/lib/$f $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib${MULTILIBDIR}/$f yann@1: fi yann@1: done yann@1: yann@1: sed -e "s+@AS_ENDIAN_FLAG@+${AS_ENDIAN_FLAG}+" \ yann@1: -e "s+@CPP_ENDIAN_DEF@+${CPP_ENDIAN_DEF}+" \ yann@1: -e "s+@CPP_CPU_DEFS@+${CPP_CPU_DEFS}+" \ yann@1: -e "s+@CC1_CPU_ENDIAN_FLAGS@+${CC1_CPU_ENDIAN_FLAGS}+" \ yann@1: -e "s+@CC1PLUS_CPU_ENDIAN_FLAGS@+${CC1PLUS_CPU_ENDIAN_FLAGS}+" \ yann@1: -e "s+@LINKER_CPU_ENDIAN_FLAGS@+${LINKER_CPU_ENDIAN_FLAGS}+" \ yann@1: -e "s+@LINKER_RPATH_LINK_FLAG@+${LINKER_RPATH_LINK_FLAG}+" \ yann@1: debian/edit-specs.in >${arch}/edit-specs-${CPU}.sed yann@1: yann@1: sed -f ${arch}/edit-specs-${CPU}.sed \ yann@1: $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/specs \ yann@1: > $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/${CPU}-linux/%{GCC_VERSION}/specs yann@1: yann@1: done yann@1: yann@1: %else yann@1: ARCH_STRTIP=%{_target}-strip yann@1: EXESUFFIX="" yann@1: TOOLPREFIX="" yann@1: ln -s ..%{_prefix}/bin/cpp ${RPM_BUILD_ROOT}/lib/cpp yann@1: ln -s gcc ${RPM_BUILD_ROOT}%{_prefix}/bin/cc yann@1: arch=%{_target} yann@1: make DESTDIR=${RPM_BUILD_ROOT} \ yann@1: install -C ${arch} yann@1: if [ %{TARGET_JAVA} -ne 0 ]; then yann@1: make DESTDIR=${RPM_BUILD_ROOT} install -C ${arch}/${arch}/libffi yann@1: make DESTDIR=${RPM_BUILD_ROOT} install -C ${arch}/${arch}/fastjar yann@1: mv -f ${RPM_BUILD_ROOT}/%{_prefix}/%{_lib}/libgcj.spec \ yann@1: ${RPM_BUILD_ROOT}/%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/ yann@1: fi yann@1: $ARCH_STRTIP $RPM_BUILD_ROOT%{_prefix}/bin/gcov$EXESUFFIX || : yann@1: yann@1: cat >${arch}/edit-specs <${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/specs.$$ yann@1: mv -f ${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/specs.$$ \ yann@1: ${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/specs yann@1: yann@1: sed -e "s/dependency_libs=.*/dependency_libs='-lm -lgcc -lc -lgcc'/" \ yann@1: ${RPM_BUILD_ROOT}%{_prefix}/lib/libstdc++.la \ yann@1: >${RPM_BUILD_ROOT}%{_prefix}/lib/libstdc++.la.$$ yann@1: mv -f ${RPM_BUILD_ROOT}%{_prefix}/lib/libstdc++.la.$$ \ yann@1: ${RPM_BUILD_ROOT}%{_prefix}/lib/libstdc++.la yann@1: yann@1: sed -e "s/dependency_libs=.*/dependency_libs='-lpthread -ldl -lz -lm -lgcc -lc -lgcc'/" \ yann@1: ${RPM_BUILD_ROOT}%{_prefix}/lib/libgcj.la \ yann@1: >${RPM_BUILD_ROOT}%{_prefix}/lib/libgcj.la.$$ yann@1: mv -f ${RPM_BUILD_ROOT}%{_prefix}/lib/libgcj.la.$$ \ yann@1: ${RPM_BUILD_ROOT}%{_prefix}/lib/libgcj.la yann@1: yann@1: cat >$RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/syslimits.h < yann@1: #undef _GCC_NEXT_LIMITS_H yann@1: EOF yann@1: yann@1: %endif yann@1: yann@1: $ARCH_STRTIP $RPM_BUILD_ROOT%{_prefix}/bin/${TOOLPREFIX}{gcc,cpp,c++,c++filt,gcj,gcjh,gij,jar,grepjar,jcf-dump,jv-convert,jv-scan}$EXESUFFIX || : yann@1: FULLPATH=$(dirname $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/cc1${EXESUFFIX}) yann@1: $ARCH_STRTIP $FULLPATH/{cc1${EXESUFFIX},cc1plus${EXESUFFIX},cpp0${EXESUFFIX},tradcpp0${EXESUFFIX},collect2${EXESUFFIX},jc1${EXESUFFIX},jvgenmain${EXESUFFIX}} || : yann@1: yann@1: # Strip static libraries yann@1: sh-linux-strip -S -R .comment `find $RPM_BUILD_ROOT -type f -name "*.a"` || : yann@1: yann@1: # Strip ELF shared objects yann@1: for f in `find $RPM_BUILD_ROOT -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) `; do yann@1: if file $f | grep -q "shared object.*not stripped"; then yann@1: sh-linux-strip --strip-unneeded -R .comment $f yann@1: fi yann@1: done yann@1: yann@1: %clean yann@1: rm -rf $RPM_BUILD_ROOT yann@1: yann@1: # ==================== Cross Compiler =============================== yann@1: %ifarch i386 yann@1: yann@1: %files sh-linux yann@1: %defattr(-,root,root) yann@1: %{_prefix}/bin/sh* yann@1: %dir %{_prefix}/lib/gcc-lib/sh-linux yann@1: %dir %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION} yann@1: %dir %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include yann@1: %dir %{_prefix}/lib/gcc-lib/sh3-linux yann@1: %dir %{_prefix}/lib/gcc-lib/sh3-linux/%{GCC_VERSION} yann@1: %dir %{_prefix}/lib/gcc-lib/sh3eb-linux yann@1: %dir %{_prefix}/lib/gcc-lib/sh3eb-linux/%{GCC_VERSION} yann@1: %dir %{_prefix}/lib/gcc-lib/sh4-linux yann@1: %dir %{_prefix}/lib/gcc-lib/sh4-linux/%{GCC_VERSION} yann@1: %dir %{_prefix}/lib/gcc-lib/sh4eb-linux yann@1: %dir %{_prefix}/lib/gcc-lib/sh4eb-linux/%{GCC_VERSION} yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/cc1 yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/cc1plus yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/collect2 yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/cpp0 yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/*.o yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/libgcc*.a yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/specs yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/tradcpp0 yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/jc1 yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/jvgenmain yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/m4 yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/mb yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/stddef.h yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/stdarg.h yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/varargs.h yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/float.h yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/limits.h yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/stdbool.h yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/iso646.h yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/syslimits.h yann@1: %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/README yann@1: %{_prefix}/lib/gcc-lib/sh3-linux/%{GCC_VERSION}/* yann@1: %{_prefix}/lib/gcc-lib/sh3eb-linux/%{GCC_VERSION}/* yann@1: %{_prefix}/lib/gcc-lib/sh4-linux/%{GCC_VERSION}/* yann@1: %{_prefix}/lib/gcc-lib/sh4eb-linux/%{GCC_VERSION}/* yann@1: %{_mandir}/man1/sh-linux-* yann@1: %dir %{_prefix}/sh-linux/include yann@1: %{_prefix}/sh3-linux/include yann@1: %{_prefix}/sh3eb-linux/include yann@1: %{_prefix}/sh4-linux/include yann@1: %{_prefix}/sh4eb-linux/include yann@1: %endif yann@1: yann@1: %if %{TARGET_LIBSTDC} yann@1: %ifarch i386 yann@1: %{_prefix}/sh-linux/include/g++-v3 yann@1: %{_prefix}/sh-linux/lib/libs* yann@1: %{_prefix}/sh-linux/lib/m4/libs* yann@1: %{_prefix}/sh-linux/lib/mb/libs* yann@1: %{_prefix}/sh-linux/lib/mb/m4/libs* yann@1: %{_prefix}/sh3-linux/lib/libs* yann@1: %{_prefix}/sh4-linux/lib/libs* yann@1: %{_prefix}/sh3eb-linux/lib/libs* yann@1: %{_prefix}/sh4eb-linux/lib/libs* yann@1: %endif yann@1: %endif yann@1: yann@1: %if %{TARGET_JAVA} yann@1: %ifarch i386 yann@1: %files -n libgcj-sh-linux yann@1: %defattr(-,root,root) yann@1: %{_prefix}/sh-linux/include/*.h yann@1: %{_prefix}/sh-linux/include/gcj yann@1: %{_prefix}/sh-linux/include/gnu/* yann@1: %{_prefix}/sh-linux/include/java yann@1: %{_prefix}/sh-linux/lib/lib*gcj* yann@1: %{_prefix}/sh-linux/lib/m4/lib*gcj* yann@1: %{_prefix}/sh-linux/lib/mb/lib*gcj* yann@1: %{_prefix}/sh-linux/lib/mb/m4/lib*gcj* yann@1: %{_prefix}/sh-linux/lib/libffi* yann@1: %{_prefix}/sh-linux/lib/m4/libffi* yann@1: %{_prefix}/sh-linux/lib/mb/libffi* yann@1: %{_prefix}/sh-linux/lib/mb/m4/libffi* yann@1: %{_prefix}/sh-linux/share/java/libgcj-%{GCC_VERSION}.jar yann@1: %{_prefix}/sh3-linux/lib/lib*gcj* yann@1: %{_prefix}/sh3-linux/lib/libffi* yann@1: %{_prefix}/sh3-linux/share/java/libgcj-%{GCC_VERSION}.jar yann@1: %{_prefix}/sh4-linux/lib/lib*gcj* yann@1: %{_prefix}/sh4-linux/lib/libffi* yann@1: %{_prefix}/sh4-linux/share/java/libgcj-%{GCC_VERSION}.jar yann@1: %{_prefix}/sh3eb-linux/lib/lib*gcj* yann@1: %{_prefix}/sh3eb-linux/lib/libffi* yann@1: %{_prefix}/sh3eb-linux/share/java/libgcj-%{GCC_VERSION}.jar yann@1: %{_prefix}/sh4eb-linux/lib/lib*gcj* yann@1: %{_prefix}/sh4eb-linux/lib/libffi* yann@1: %{_prefix}/sh4eb-linux/share/java/libgcj-%{GCC_VERSION}.jar yann@1: %endif yann@1: %endif yann@1: yann@1: %ifarch sh3 sh3eb sh4 sh4eb yann@1: # =========================== Native Compiler ================================= yann@1: %files yann@1: %defattr(-,root,root) yann@1: %dir %{_prefix}/lib/gcc-lib/%{_target} yann@1: %dir %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION} yann@1: %dir %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/cc1 yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/collect2 yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/cpp0 yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/crt*.o yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/libgcc*.a yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/specs yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/tradcpp0 yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/stddef.h yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/stdarg.h yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/varargs.h yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/float.h yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/limits.h yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/stdbool.h yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/iso646.h yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/syslimits.h yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/README yann@1: %{_prefix}/bin/gcc yann@1: %{_prefix}/bin/%{_target}-gcc yann@1: %{_prefix}/bin/cpp yann@1: %{_prefix}/bin/gccbug yann@1: %{_prefix}/bin/gcov yann@1: %{_prefix}/bin/cc yann@1: /lib/cpp yann@1: %{_infodir}/cpp* yann@1: %{_infodir}/gcc* yann@1: yann@1: %if 0 yann@1: %files libgcc yann@1: %defattr(-,root,root) yann@1: /lib/libgcc_s.so* yann@1: %endif yann@1: yann@1: %files c++ yann@1: %defattr(-,root,root) yann@1: %{_prefix}/bin/c++ yann@1: %{_prefix}/bin/g++ yann@1: %{_prefix}/bin/c++filt yann@1: %{_prefix}/bin/%{_target}-c++ yann@1: %{_prefix}/bin/%{_target}-g++ yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/cc1plus yann@1: %endif yann@1: yann@1: %if %{TARGET_LIBSTDC} yann@1: %ifarch sh3 sh3eb sh4 sh4eb yann@1: %files -n libstdc++ yann@1: %defattr(-,root,root) yann@1: %{_prefix}/lib/libstdc++.so* yann@1: yann@1: %files -n libstdc++-devel yann@1: %defattr(-,root,root) yann@1: %{_prefix}/include/g++-v3 yann@1: %{_prefix}/lib/libstdc++.*a yann@1: %endif yann@1: %endif yann@1: yann@1: %if %{TARGET_JAVA} yann@1: %ifarch sh3 sh3eb sh4 sh4eb yann@1: %files java yann@1: %defattr(-,root,root) yann@1: %{_prefix}/bin/addr2name.awk yann@1: %{_prefix}/bin/gcj yann@1: %{_prefix}/bin/gcjh yann@1: %{_prefix}/bin/gij yann@1: %{_prefix}/bin/jar yann@1: %{_prefix}/bin/grepjar yann@1: %{_prefix}/bin/jcf-dump yann@1: %{_prefix}/bin/jv-convert yann@1: %{_prefix}/bin/jv-scan yann@1: %dir %{_prefix}/lib/gcc-lib yann@1: %dir %{_prefix}/lib/gcc-lib/%{_target} yann@1: %dir %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION} yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/jc1 yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/jvgenmain yann@1: %{_infodir}/gcj* yann@1: yann@1: %files -n libgcj yann@1: %defattr(-,root,root) yann@1: %{_prefix}/%{_lib}/libgcj.so* yann@1: %{_prefix}/%{_lib}/libffi*.so* yann@1: %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/libgcj.spec yann@1: %{_prefix}/share/java/libgcj-%{GCC_VERSION}.jar yann@1: yann@1: %files -n libgcj-devel yann@1: %defattr(-,root,root) yann@1: %{_prefix}/include/*.h yann@1: %{_prefix}/include/gcj yann@1: %{_prefix}/include/gnu/* yann@1: %{_prefix}/include/java yann@1: %{_prefix}/lib/libgcj.*a yann@1: %{_prefix}/lib/libffi.*a yann@1: %endif yann@1: %endif yann@1: yann@1: %changelog yann@1: * Wed Feb 19 2003 SUGIOKA Toshinobu yann@1: - version 3.2.2. yann@1: yann@1: * Tue Feb 19 2002 SUGIOKA Toshinobu yann@1: - version 3.0.4. yann@1: yann@1: * Tue Feb 12 2002 SUGIOKA Toshinobu yann@1: - add java support. yann@1: yann@1: * Thu Feb 7 2002 SUGIOKA Toshinobu yann@1: - follow debian/SH update. yann@1: yann@1: * Tue Feb 5 2002 SUGIOKA Toshinobu yann@1: - follow debian/SH update. yann@1: yann@1: * Thu Jan 24 2002 SUGIOKA Toshinobu yann@1: - rebuild with new binutils. yann@1: yann@1: * Tue Jan 22 2002 SUGIOKA Toshinobu yann@1: - leaf function optimization fixed. yann@1: yann@1: * Thu Dec 06 2001 SUGIOKA Toshinobu yann@1: - add gcc-ice-rml patch. yann@1: yann@1: * Tue Nov 13 2001 SUGIOKA Toshinobu yann@1: - add configure option. yann@1: yann@1: * Thu Nov 01 2001 SUGIOKA Toshinobu yann@1: - tablejump fix by gniibe. yann@1: yann@1: * Mon Oct 22 2001 SUGIOKA Toshinobu yann@1: - updated gcc patch. yann@1: yann@1: * Wed Oct 17 2001 SUGIOKA Toshinobu yann@1: - updated gcc patch. yann@1: yann@1: * Tue Oct 02 2001 SUGIOKA Toshinobu yann@1: - gcc/config/sh/sh.c bug fix. yann@1: yann@1: * Fri Aug 24 2001 SUGIOKA Toshinobu yann@1: - gcc version 3.0.1. yann@1: yann@1: * Thu Jun 28 2001 SUGIOKA Toshinobu yann@1: - gcc version 3.0. yann@1: - Add libstdc++ package. yann@1: yann@1: * Mon Apr 23 2001 SUGIOKA Toshinobu yann@1: - Add cygwin host. yann@1: yann@1: * Sat Dec 23 2000 SUGIOKA Toshinobu yann@1: - fix file attribute. yann@1: - add asmspecs patch. yann@1: yann@1: * Sat Nov 11 2000 SUGIOKA Toshinobu yann@1: - initial version.