📄 gcc-sh-linux.spec
字号:
Summary: The GNU Compiler Collection for SuperH.%define GCC_VERSION 3.2.3%define arch_list sh3-linux sh3eb-linux sh4-linux sh4eb-linux%define TARGET_LIBSTDC 1%define TARGET_JAVA 1Name: gccVersion: 3.2.3Release: 3Copyright: GPLGroup: Development/LanguagesSource0: gcc-%{GCC_VERSION}.tar.bz2Patch1: gcc-20030210-sh-linux-1.patchPatch2: gcc-3.2.3-libffi-1.patchPatch3: gcc-3.2.3-sh-linux-dwarf2-1.patchBuildroot: /var/tmp/gcc-%{_target}-rootExclusiveArch: i386 sh3 sh3eb sh4 sh4eb%descriptionThis package contains the GNU Compiler Collection: gcc and g++.You'll need this package in order to compile C/C++ code.%ifarch i386# ==================== Cross Compiler ===============================%package sh-linuxSummary: The GNU Compiler Collection for sh-linux.Group: Development/LanguagesRequires: binutils-sh-linux >= 2.13.2Provides: gcc-sh-linuxObsoletes: gcc-sh3-linux gcc-sh3eb-linux gcc-sh4-linux gcc-sh4eb-linuxObsoletes: gcc-sh3-linux-c++ gcc-sh3eb-linux-c++ gcc-sh4-linux-c++ gcc-sh4eb-linux-c++Obsoletes: libstdc++-sh3-linux libstdc++-sh3eb-linux libstdc++-sh4-linux libstdc++-sh4eb-linuxAutoReqProv: no%description sh-linuxThe gcc-sh-linux package contains GNU Compiler Collection: gcc g++ and libstdc++-v3.It includes support for most of the current C++ specification, including templates andexception handling. It does also include the standard C++ library and C++ header files.You'll need this package in order to cross compile C/C++ code for sh-linux.%package -n libgcj-sh-linuxSummary: Header files and libraries for sh-linux Java development.Group: Development/LibrariesRequires: gcc-sh-linux = %{version}-%{release}AutoReqProv: no%description -n libgcj-sh-linuxThe Java static libraries and C header files. You will need thispackage to compile your Java programs for sh-linux using the gcc Java compiler (gcj).%else# =========================== Native Compiler =================================%package libgccSummary: runtime libraries for the GNU Compiler Collection.Group: System Environment/Libraries%description libgccThis package contains libgcc shared libraries for the GNU C Compiler Collection.You'll need this package in order to execute C,C++,JAVA codethat uses shared libgcc.%package c++Summary: C++ support for gccGroup: Development/LanguagesRequires: gcc = %{version}-%{release}%description c++This package adds C++ support to the GNU Compiler Collection. It includessupport for most of the current C++ specification, including templates andexception handling. It does include the static standard C++library and C++ header files; the library for dynamically linkingprograms is available separately.%package -n libstdc++Summary: GNU c++ library.Group: System Environment/Libraries%description -n libstdc++The libstdc++ package contains a snapshot of the GCC Standard C++Library v3, an ongoing project to implement the ISO 14882 Standard C++library.%package -n libstdc++-develSummary: Header files and libraries for C++ developmentGroup: Development/LibrariesRequires: libstdc++ = %{version}-%{release}, gcc-c++ = %{version}-%{release}%description -n libstdc++-develThis is the GNU implementation of the standard C++ libraries. Thispackage includes the header files and libraries needed for C++development. This includes SGI's implementation of the STL.%package javaSummary: Java support for gccGroup: Development/LanguagesRequires: gcc = %{version}-%{release}, libgcj = %{version}-%{release}, libgcj-devel = %{version}-%{release}%description javaThis package adds experimental support for compiling Java(tm) programs andbytecode into native code. To use this you will also need the libgcj andlibgcj-devel packages.%package -n libgcjSummary: Java runtime library for gcc.Group: System Environment/Libraries%description -n libgcjThe Java runtime library. You will need this package to run your Javaprograms compiled using the gcc Java compiler (gcj).%package -n libgcj-develSummary: Header files and libraries for Java development.Group: Development/LibrariesRequires: libgcj = %{version}-%{release}%description -n libgcj-develThe Java static libraries and C header files. You will need thispackage to compile your Java programs using the gcc Java compiler (gcj).%endif%prep%setup -q -n gcc-%{GCC_VERSION}%patch1 -p1%patch2 -p1##%patch3 -p1%build%ifarch i386# build cross compiler for i386-linux hostfor arch in sh-linux; do rm -rf ${arch} mkdir ${arch} CONFIG_ARGS="\ --prefix=%{_prefix} \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ --target=${arch} \ --host=%{_host} \ --build=%{_build} \ --enable-languages=c,c++,java \ --with-system-zlib \ --with-gxx-include-dir=%{_prefix}/${arch}/include/g++-v3 \ --includedir=%{_prefix}/${arch}/include \ --disable-checking \ --disable-shared \ --enable-__cxa_atexit \ --enable-c99 \ --enable-threads=posix \ --enable-long-long" if [ %{TARGET_JAVA} -ne 0 ]; then CONFIG_ARGS="$CONFIG_ARGS --enable-libgcj" fi ( cd $arch ../configure ${CONFIG_ARGS} ) if [ %{TARGET_LIBSTDC} -ne 0 -o %{TARGET_JAVA} -ne 0 ]; then sed -e s:-Dinhibit_libc::g ${arch}/gcc/Makefile >${arch}/gcc/Makefile.$$$ mv -f ${arch}/gcc/Makefile.$$$ ${arch}/gcc/Makefile fi make all-gcc -C ${arch} if [ %{TARGET_LIBSTDC} -ne 0 ]; then CONFIG_ARGS="`echo $CONFIG_ARGS | sed -e s/--disable-shared/--enable-shared/`" make TARGET_CONFIGARGS="${CONFIG_ARGS} --with-cross-host" all-target-libstdc++-v3 -C ${arch} fi if [ %{TARGET_JAVA} -ne 0 ]; then make all-fastjar -C ${arch} CONFIG_ARGS="`echo $CONFIG_ARGS | sed -e s/--host=%{_host}/--host=${arch}/`" dir=`pwd` ac_cv_file__proc_self_exe=yes \ 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" \ make TARGET_CONFIGARGS="${CONFIG_ARGS} --with-cross-host --enable-multilib --with-target-subdir=${arch} --with-x=no" \ all-target-libjava -C ${arch} fi%else# Canadian cross (build native compiler)for arch in %{_target}; do rm -rf ${arch} mkdir -p ${arch} CONFIG_ARGS="\ --prefix=%{_prefix} \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ --target=${arch} \ --host=${arch} \ --build=%{_build} \ --enable-languages=c,c++,java \ --with-system-zlib \ --with-gxx-include-dir=%{_prefix}/include/g++-v3 \ --disable-checking \ --disable-shared \ --enable-__cxa_atexit \ --enable-c99 \ --enable-threads=posix \ --enable-long-long" if [ %{TARGET_JAVA} -ne 0 ]; then CONFIG_ARGS="$CONFIG_ARGS --enable-libgcj" fi ( cd ${arch} CC=${arch}-gcc AR=${arch}-ar RANLIB=${arch}-ranlib CXX=${arch}-g++ \ ../configure $CONFIG_ARGS ) if [ %{TARGET_LIBSTDC} -ne 0 -o %{TARGET_JAVA} -ne 0 ]; then sed -e s:-Dinhibit_libc::g ${arch}/gcc/Makefile >${arch}/gcc/Makefile.$$$ mv -f ${arch}/gcc/Makefile.$$$ ${arch}/gcc/Makefile fi make all-build-libiberty all-gcc -C ${arch} if [ %{TARGET_LIBSTDC} -ne 0 ]; then CONFIG_ARGS="`echo $CONFIG_ARGS | sed -e s/--disable-shared/--enable-shared/`" make TARGET_CONFIGARGS="${CONFIG_ARGS}" all-target-libstdc++-v3 -C ${arch} if [ %{TARGET_JAVA} -ne 0 ]; then ( mkdir -p ${arch}/fastjar; cd ${arch}/fastjar; rm *; ../../fastjar/configure --with-system-zlib; make ) ac_cv_file__proc_self_exe=yes \ CC=${arch}-gcc AR=${arch}-ar RANLIB=${arch}-ranlib CXX=${arch}-g++ GCJ=${arch}-gcj \ make TARGET_CONFIGARGS="${CONFIG_ARGS} --with-x=no" configure-target-libjava -C ${arch} make -C ${arch}/${arch}/libffi make -C ${arch}/${arch}/boehm-gc make -C ${arch}/${arch}/zlib make GCJ=${arch}-gcj GCJH=${arch}-gcjh ZIP=${arch}-jar -C ${arch}/${arch}/libjava ( rm -rf ${arch}/${arch}/fastjar mkdir -p ${arch}/${arch}/fastjar cd ${arch}/${arch}/fastjar ac_cv_sizeof_char=1 \ ac_cv_sizeof_short=2 \ ac_cv_sizeof_int=4 \ ac_cv_sizeof_long=4 \ ac_cv_sizeof_long_long=8 \ ac_cv_sizeof_float=4 \ ac_cv_sizeof_double=8 \ ac_cv_sizeof_long_double=8 \ ac_cv_sizeof_void_p=4 \ ac_cv_file__proc_self_exe=yes \ ac_cv_header_langinfo_h=yes \ CC=${arch}-gcc ../../../fastjar/configure $CONFIG_ARGS make ) fi fi%endifdone%installrm -rf $RPM_BUILD_ROOTmkdir -p ${RPM_BUILD_ROOT}/{%{_prefix}/bin,lib}%ifarch i386 ARCH_STRTIP=strip EXESUFFIX="" arch=sh-linux TOOLPREFIX=${arch}- mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/${arch}/{bin,include,lib,share} mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/${arch}/lib/{m4,mb/m4} make DESTDIR=${RPM_BUILD_ROOT} \ install-gcc \ install-fastjar \ -C ${arch}%if 0 ( cd ${RPM_BUILD_ROOT}%{_prefix}/sh-linux/lib rm -f libgcc_s_*.so mv libgcc_s_mb.so.1 mb/libgcc_s.so.1 mv libgcc_s_m4.so.1 m4/libgcc_s.so.1 mv libgcc_s_mb_m4.so.1 mb/m4/libgcc_s.so.1 ln -s libgcc_s.so.1 mb/libgcc_s.so ln -s libgcc_s.so.1 m4/libgcc_s.so ln -s libgcc_s.so.1 mb/m4/libgcc_s.so )%endif if [ %{TARGET_LIBSTDC} -ne 0 ]; then make DESTDIR=${RPM_BUILD_ROOT} \ install-target-libstdc++-v3 \ -C ${arch} fi if [ %{TARGET_JAVA} -ne 0 ]; then make DESTDIR=${RPM_BUILD_ROOT} \ install-target-libjava \ install-target-boehm-gc \ install-target-zlib \ -C ${arch} make DESTDIR=${RPM_BUILD_ROOT} prefix=%{_prefix}/${arch} \ install -C ${arch}/${arch}/libffi mv -f $RPM_BUILD_ROOT%{_prefix}/share/java $RPM_BUILD_ROOT%{_prefix}/sh-linux/share/ fi rm -f $RPM_BUILD_ROOT%{_prefix}/bin/{gcov,gccbug} rm -f $RPM_BUILD_ROOT%{_prefix}/${arch}/bin/{gij,jv-convert} sed -e 's/@@VERSION@@/%{GCC_VERSION}/g' debian/shCPU-linux-GCC >$RPM_BUILD_ROOT%{_prefix}/bin/shCPU-linux-GCC chmod 0755 $RPM_BUILD_ROOT%{_prefix}/bin/shCPU-linux-GCC LIBSTDC=`cd $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib; echo libstdc++.so*` LIBGCJ=`cd $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib; echo libgcj.so*` LIBFFI=`cd $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib; echo libffi*.so*` # literally (binary-ly) same PROGS="cpp c++ g++ g77 gcc gcj" DRIVERS="cc1 cc1obj cc1plus collect2 cpp0 f771 jc1 tradcpp0 jvgenmain" OBJS="crtbegin.o crtbeginS.o crtend.o crtendS.o crtbeginT.o" LIBS="libgcc.a libgcc_eh.a libobjc.a" LIBS_1="$LIBSTDC \ $LIBGCJ libgcj.spec \ $LIBFFI " LIBS_2="libstdc++.a libstdc++.la \ libsupc++.a libsupc++.la \ libgcj.a libgcj.la \ libffi.a libffi.la" INCLUDE="include" for CPU in sh3 sh3eb sh4 sh4eb; do mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${CPU}-linux/%{GCC_VERSION} mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/${CPU}-linux/{lib,share/java} # Make symbolic links for include dir. ln -s ../sh-linux/include $RPM_BUILD_ROOT%{_prefix}/${CPU}-linux/include # Make symbolic links for libgcj.jar ln -s ../../sh-linux/share/java/libgcj-%{GCC_VERSION}.jar $RPM_BUILD_ROOT%{_prefix}/${CPU}-linux/share/java/libgcj-%{GCC_VERSION}.jar # Make symbolic links for executables. for p in ${PROGS}; do ln -s shCPU-linux-GCC $RPM_BUILD_ROOT%{_prefix}/bin/${CPU}-linux-$p done ln -s sh-linux-gcjh $RPM_BUILD_ROOT%{_prefix}/bin/${CPU}-linux-gcjh case "${CPU}" in sh3) MULTILIBDIR= MULTIPARENTDIR= AS_ENDIAN_FLAG="-little" CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__" CPP_CPU_DEFS='-D__SH3__ -D__sh3__' CC1_CPU_ENDIAN_FLAGS="-ml -m3" CC1PLUS_CPU_ENDIAN_FLAGS="-ml -m3" LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh3" LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh3-linux/lib" ;; sh3eb) MULTILIBDIR=/mb MULTIPARENTDIR=../ AS_ENDIAN_FLAG="-big" CPP_ENDIAN_DEF="-D__BIG_ENDIAN__" CPP_CPU_DEFS='-D__SH3__ -D__sh3__' CC1_CPU_ENDIAN_FLAGS="-mb -m3" CC1PLUS_CPU_ENDIAN_FLAGS="-mb -m3" LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh3" LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh3eb-linux/lib" ;; sh4) MULTILIBDIR=/m4 MULTIPARENTDIR=../ AS_ENDIAN_FLAG="-little" CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__" CPP_CPU_DEFS="-D__SH4__" CC1_CPU_ENDIAN_FLAGS="-ml -m4" CC1PLUS_CPU_ENDIAN_FLAGS="-ml -m4"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -