├── README ├── config ├── cross-compile.sh ├── dist ├── freebsd-7.2_amd64.include.patch ├── x86_64-pc-freebsd7-includes.tar.bz2 └── x86_64-pc-freebsd7-libs.tar.bz2 └── do.sh /README: -------------------------------------------------------------------------------- 1 | This is the source code for the article at: 2 | http://marcelog.github.com/articles/cross_freebsd_compiler_in_linux.html 3 | 4 | -------------------------------------------------------------------------------- /config: -------------------------------------------------------------------------------- 1 | dist=/export/users/marcelog/tmp/cross-freebsd/dist 2 | work=/export/users/marcelog/tmp/cross-freebsd/work 3 | targetdir=/export/users/marcelog/cross-freebsd.2nd 4 | target=x86_64-pc-freebsd7 5 | freebsdtarget=amd64 6 | 7 | binutils=2.21 8 | gcc=4.5.2 9 | gmp=4.3.2 10 | mpc=0.8.1 11 | mpfr=2.4.2 12 | libtool=2.4 13 | freebsd=7.2_amd64 14 | -------------------------------------------------------------------------------- /cross-compile.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export crosshome=/export/users/marcelog/cross-freebsd 3 | export PATH=${crosshome}/bin:/bin:/usr/bin:/sbin:/usr/sbin 4 | export LD_LIBRARY_PATH=${crosshome}/lib 5 | export CFLAGS="-I${crosshome}/include -L${crosshome}/lib" 6 | ./configure --host=x86_64-pc-freebsd7 --prefix=${crosshome} ${@} 7 | -------------------------------------------------------------------------------- /dist/freebsd-7.2_amd64.include.patch: -------------------------------------------------------------------------------- 1 | 158c158 2 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 $i/*.h \ 3 | --- 4 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 $i/*.h \ 5 | 162c162 6 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 acpiio.h \ 7 | --- 8 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 acpiio.h \ 9 | 165c165 10 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 ioctl_*.h \ 11 | --- 12 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 ioctl_*.h \ 13 | 168c168 14 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 15 | --- 16 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 17 | 171c171 18 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 19 | --- 20 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 21 | 175c175 22 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 23 | --- 24 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 25 | 179c179 26 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 27 | --- 28 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 29 | 182c182 30 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 rijndael/rijndael.h \ 31 | --- 32 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 rijndael/rijndael.h \ 33 | 187c187 34 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 ${I4BHDRS} \ 35 | --- 36 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 ${I4BHDRS} \ 37 | 192c192 38 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 39 | --- 40 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 41 | 195c195 42 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 43 | --- 44 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 45 | 199c199 46 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 47 | --- 48 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 49 | 206c206 50 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 51 | --- 52 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 53 | 212c212 54 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 55 | --- 56 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ 57 | 217c217 58 | < ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 types.h \ 59 | --- 60 | > ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 types.h \ 61 | -------------------------------------------------------------------------------- /dist/x86_64-pc-freebsd7-includes.tar.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcelog/Freebsd-Cross-GCC/2580eccbf7e247f95d88b7bbe1d1fee378f35a5c/dist/x86_64-pc-freebsd7-includes.tar.bz2 -------------------------------------------------------------------------------- /dist/x86_64-pc-freebsd7-libs.tar.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcelog/Freebsd-Cross-GCC/2580eccbf7e247f95d88b7bbe1d1fee378f35a5c/dist/x86_64-pc-freebsd7-libs.tar.bz2 -------------------------------------------------------------------------------- /do.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | . ./config 3 | export PATH=${PATH}:${targetdir}/bin 4 | export CFLAGS="-I${targetdir}/include -L${targetdir}/lib" 5 | export LD_LIBRARY_PATH=${targetdir}/lib 6 | 7 | mkdir -p ${targetdir}/${target} 8 | mkdir -p ${work} 9 | 10 | function libtool() { 11 | echo Cleaning up libtool 12 | rm -rf ${work}/libtool-${libtool} 13 | echo Uncompressing libtool 14 | tar jxf ${dist}/libtool-${libtool}.tar.bz2 -C ${work} 15 | cd ${work}/libtool-${libtool} && ./configure --prefix=${targetdir} --with-gnu-ld --enable-static --enable-shared --host=${target} && gmake && gmake install && cd - 16 | } 17 | 18 | function mpc() { 19 | echo Cleaning up mpc 20 | rm -rf ${work}/mpc-${mpc} 21 | echo Uncompressing mpc 22 | tar jxf ${dist}/mpc-${mpc}.tar.bz2 -C ${work} 23 | cd ${work}/mpc-${mpc} && ./configure --prefix=${targetdir} --with-gnu-ld --with-gmp=${targetdir} --with-mpfr=${targetdir} --enable-static --enable-shared --host=${target} && gmake && gmake install && cd - 24 | } 25 | 26 | function mpfr() { 27 | echo Cleaning up mpfr 28 | rm -rf ${work}/mpfr-${mpfr} 29 | echo Uncompressing mpfr 30 | tar jxf ${dist}/mpfr-${mpfr}.tar.bz2 -C ${work} 31 | cd ${work}/mpfr-${mpfr} && ./configure --prefix=${targetdir} --with-gnu-ld --with-gmp=${targetdir} --enable-static --enable-shared --host=${target} && gmake && gmake install && cd - 32 | } 33 | 34 | function gmp() { 35 | echo Cleaning up gmp 36 | rm -rf ${work}/gmp-${gmp} 37 | echo Uncompressing gmp 38 | tar jxf ${dist}/gmp-${gmp}.tar.bz2 -C ${work} 39 | cd ${work}/gmp-${gmp} && ./configure --prefix=${targetdir} --enable-shared --enable-static --enable-mpbsd --enable-fft --enable-cxx --host=${target} && gmake && gmake install && cd - 40 | } 41 | 42 | function gcc() { 43 | echo Cleaning up gcc 44 | rm -rf ${work}/gcc-${gcc} 45 | echo Uncompressing gcc 46 | tar jxf ${dist}/gcc-${gcc}.tar.bz2 -C ${work} 47 | cwd=`pwd` 48 | cd ${work}/gcc-${gcc} && mkdir objdir && cd objdir && ../configure --without-headers --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --disable-nls --enable-libssp --enable-gold --enable-ld --target=${target} --prefix=${targetdir} --with-gmp=${targetdir} --with-mpc=${targetdir} --with-mpfr=${targetdir} --disable-libgomp && gmake && gmake install && cd ${cwd} 49 | 50 | } 51 | 52 | function binutils() { 53 | echo Cleaning up binutils 54 | rm -rf ${work}/binutils-${binutils} 55 | echo Uncompressing binutils 56 | tar jxf ${dist}/binutils-${binutils}.tar.bz2 -C ${work} 57 | cd ${work}/binutils-${binutils} &&./configure --enable-libssp --enable-gold --enable-ld --target=${target} --prefix=${targetdir} && gmake && gmake install && cd - 58 | 59 | } 60 | 61 | function freebsd() { 62 | tar jxf ${dist}/x86_64-pc-freebsd7-includes.tar.bz2 -C ${targetdir}/${target} 63 | tar jxf ${dist}/x86_64-pc-freebsd7-libs.tar.bz2 -C ${targetdir}/${target} 64 | } 65 | 66 | function freebsd_from_scratch() { 67 | echo Cleaning up FreeBSD 68 | rm -rf ${work}/freebsd-${freebsd} 69 | mkdir -p ${work}/freebsd-${freebsd} 70 | echo Uncompressing FreeBSD source 71 | tar jxf ${dist}/freebsd-${freebsd}.tar.bz2 -C ${work}/freebsd-${freebsd} 72 | mkdir -p ${targetdir}/${target}/include 73 | cd ${work}/freebsd-${freebsd}/sys/include 74 | patch Makefile < ../../../../dist/freebsd-${freebsd}.include.patch 75 | PATH=${PATH}:/usr/sbin:/sbin pmake \ 76 | MACHINE=${freebsdtarget} \ 77 | MACHINE_ARCH=${freebsdtarget} \ 78 | MK_GPIB=yes \ 79 | MK_HESIOD=yes \ 80 | MK_BLUETOOTH=yes \ 81 | MK_NCP=yes \ 82 | MK_BIND_LIBS=yes \ 83 | MK_IPFILTER=yes \ 84 | BINOWN=${USER} \ 85 | BINGRP=${USER} \ 86 | LIBOWN=${USER} \ 87 | LIBGRP=${USER} \ 88 | DESTDIR=${targetdir}/${target}/include \ 89 | installincludes 90 | cd - 91 | } 92 | 93 | binutils 94 | freebsd 95 | gmp 96 | mpfr 97 | mpc 98 | gcc 99 | libtool 100 | --------------------------------------------------------------------------------