Building m68k-coff-gcc

Michael Svetlik m.svetlik@ssi-schaefer-peem.com
Thu Dec 5 02:51:00 GMT 2002


Bill,

I've checked your site for the build instructions, thanks for the link 
there. Now, I proceed according to your recommendations, but - I'm a 
lazy guy - I wrote a Makefile. The make process aborts with error, when 
doing a 'make all-gcc' in the compiler build directory. It tries to 
build the archive:

##snip
    for name in _mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 _double _float 
_floatex _eqdf2 _nedf2 _gtdf2 _gedf2 _ltdf2 _ledf2 _eqsf2 _nesf2 _gtsf2 
_gesf2 _ltsf2 _lesf2; \
    do \
      echo ${name}; \
      
/home/michl/build/gcc/m68k-coff/m68k-coff-bootstrap-2.95.3/gcc/xgcc 
-B/home/michl/build/gcc/m68k-coff/m68k-coff-bootstrap-2.95.3/gcc/ 
-B/usr/local/m68k-coff/bin/ -I/usr/local/m68k-coff/include -O2  
-DCROSS_COMPILE -DIN_GCC     -g -O2 -I./include   -g1  -DIN_LIBGCC2 
-D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc  -I. 
-I../../../../../sources/gcc/gcc-2.95.3/gcc 
-I../../../../../sources/gcc/gcc-2.95.3/gcc/config 
-I../../../../../sources/gcc/gcc-2.95.3/gcc/../include -c -DL${name} 
libgcc1.S; \
      if [ $? -eq 0 ] ; then true; else exit 1; fi; \
      mv libgcc1.o ${name}.o; \
      m68k-coff-ar-2.95.3 rc tmplibgcc1.a ${name}.o; \
      rm -f ${name}.o; \
    done
    _mulsi3
    /bin/sh: m68k-coff-ar-2.95.3: command not found
##/snip

I think, there is some little b.. in that configure jungle: the archiver 
program is called with the program suffix of the bootstrap compiler.
Below is the Makefile, there are a few options at the top, one may edit 
according to his local topology.

Who in the WWW is to badmouth for such a scripting bug ? Is there a 
build scripts documentation, and/or a CVS or RCS or PVCS or bitkeeper 
repository somewhere in the web, one may have a look in ?

Michael


--snip--
#
# general parameters, describing the target and the local environment
# when starting, we are assumed to be in the build directory.
#
# The install directory (PREFIX) is left unchanged, it is '/usr/local/'
# The binutils and the compiler should get an excecutable prefix, and
# both a version suffix - should, but not MUST ;-)
#
SOURCE_PATH    =../../../sources/gcc
BINUTILS_VERSION=2.12.1
GCC_VERSION    =2.95.3
HOST        =i686-pc-linux-gnu
TARGET        =m68k-coff

#
# some useful vars:
#
BINUTILS_SOURCE_PATH    =${SOURCE_PATH}/binutils-${BINUTILS_VERSION}
GCC_SOURCE_PATH        =${SOURCE_PATH}/gcc-${GCC_VERSION}
PROGRAM_PREFIX        =${TARGET}-
GCC_SUFFIX        =-${GCC_VERSION}
BINUTILS_SUFFIX        =-${BINUTILS_VERSION}
BINUTILS_BUILDDIR    =${TARGET}-binutils-${BINUTILS_VERSION}
BOOTSTRAP_BUILDDIR    =${TARGET}-bootstrap-${GCC_VERSION}
NEWLIB_BUILDDIR        =${TARGET}-newlib
GCC_BUILDDIR        =${TARGET}-gcc-${GCC_VERSION}

.PHONY: binutils bootstrap newlib crossgcc

all: binutils bootstrap newlib crossgcc

clean:
    -rm -fr ${BINUTILS_BUILDDIR} ${BOOTSTRAP_BUILDDIR} 
${NEWLIB_BUILDDIR} ${GCC_BUILDDIR}
                       
#
# the ld-new target isnt THAT secure and unique entry here. Does
# anyone have an idea
#
binutils:    ${BINUTILS_BUILDDIR} ${BINUTILS_BUILDDIR}/Makefile \
        ${BINUTILS_BUILDDIR}/ld/ld-new
${BINUTILS_BUILDDIR}:
    mkdir ${BINUTILS_BUILDDIR}
${BINUTILS_BUILDDIR}/Makefile:
    cd ${BINUTILS_BUILDDIR}; \
    ../${BINUTILS_SOURCE_PATH}/configure --host=${HOST} --target=${TARGET} \
         --program-prefix=${PROGRAM_PREFIX} 
--program-suffix=${BINUTILS_SUFFIX}
${BINUTILS_BUILDDIR}/ld/ld-new:
    make -C ${BINUTILS_BUILDDIR}
    @echo .
    @echo Ignore error from make below: binutils have been built 
successfully.
    @echo \'make install\' - as root - is required now.
    @echo .
    @echo .
    false
#
# like above, target gcc-cross may be weak ...
#
bootstrap:    ${BOOTSTRAP_BUILDDIR} ${BOOTSTRAP_BUILDDIR}/Makefile \
        ${BOOTSTRAP_BUILDDIR}/gcc/gcc-cross
${BOOTSTRAP_BUILDDIR}:
    mkdir ${BOOTSTRAP_BUILDDIR}
${BOOTSTRAP_BUILDDIR}/Makefile:
    cd ${BOOTSTRAP_BUILDDIR}; \
    ../${GCC_SOURCE_PATH}/configure --host=${HOST} --target=${TARGET} \
        --program-prefix=${PROGRAM_PREFIX} --program-suffix=${GCC_SUFFIX} \
        --without-headers --with-newlib --with-gnu-as --with-gnu-ld 
--disable-shared
${BOOTSTRAP_BUILDDIR}/gcc/gcc-cross:
    make -C ${BOOTSTRAP_BUILDDIR} all-gcc
    @echo .
    @echo Ignore error from make below: bootstrap compiler has been 
built successfully.
    @echo \'make install-gcc\' - as root - is required now.
    @echo .
    @echo .
    false

newlib crossgcc:
    @echo Don\'t hurry ...
--/snip--

William A. Gatliff wrote:

>Michael:
>
>
>On Mon, Dec 02, 2002 at 05:42:10PM +0100, Michael Svetlik wrote:
>
>>Hi, folks.
>>
>>It's a strange thing: xgcc can't find stdlib.h and unistd.h, when doing 
>>a make.
>>It tries to build the libgcc (m68k-coff-ar rc tmplibgcc2.a ${name}.o;)
>>gcc 2.95.3 has been configured with
>>'--target=m68k-coff --program-prefix=m68k-coff- --enable-languages=c 
>>--host=i686-pc-linux-gnu', like the binutils were, before.
>>Building another cross-compiler - h8300hms - from the same sources, works.
>>BTW, xgcc wants to include files from /usr/local/m68k-coff/include, 
>>which does not exist.
>>
>>Any hints would be welcome ...
>>
>
>
>Sounds like the h8300's libgcc doesn't need header files, but m68k's does.
>
>You need to build a bootstrap compiler first, then build header files
>for the target, then build the full cross compiler.
>
>See: http://billgatliff.com/twiki/bin/view/Crossgcc/WebHome
>
>
>b.g.
>



------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com



More information about the crossgcc mailing list