Retro68/build-toolchain.sh

125 lines
3.5 KiB
Bash
Raw Normal View History

# Copyright 2014 Wolfgang Thaller.
#
# This file is part of Retro68.
#
# Retro68 is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Retro68 is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Retro68. If not, see <http://www.gnu.org/licenses/>.
2015-08-30 13:36:27 +00:00
set -e
# Set up paths.
SRC=$(cd `dirname $0` && pwd -P)
2015-08-30 13:36:27 +00:00
PREFIX=`pwd -P`/toolchain/
BINUTILS=`pwd -P`/binutils-build
2015-09-08 16:04:15 +00:00
2015-08-30 13:36:27 +00:00
# Remove old install tree
rm -rf toolchain
2012-03-29 08:30:42 +00:00
mkdir -p toolchain
2015-08-30 13:36:27 +00:00
# Build binutils for 68K
mkdir -p binutils-build
2012-03-29 08:30:42 +00:00
cd binutils-build
export "CFLAGS=-Wno-error"
$SRC/binutils/configure --target=m68k-apple-macos --prefix=$PREFIX --disable-doc
2012-03-29 08:30:42 +00:00
make -j8
make install
cd ..
2015-08-30 13:36:27 +00:00
# Build gcc for 68K
2012-03-29 08:30:42 +00:00
mkdir -p gcc-build
cd gcc-build
$SRC/gcc/configure --target=m68k-apple-macos --prefix=$PREFIX --enable-languages=c,c++ --with-arch=m68k --with-cpu=m68000 --disable-libssp MAKEINFO=missing
2012-03-29 08:30:42 +00:00
make -j8
make install
cd ..
2015-08-30 23:17:52 +00:00
unset CFLAGS
# Build binutils for PPC
mkdir -p binutils-build-ppc
cd binutils-build-ppc
$SRC/binutils/configure --target=powerpc-apple-macos --prefix=$PREFIX --disable-doc
make -j8
make install
cd ..
# Build gcc for PPC
mkdir -p gcc-build-ppc
cd gcc-build-ppc
2015-09-08 16:04:27 +00:00
$SRC/gcc/configure --target=powerpc-apple-macos --prefix=$PREFIX --enable-languages=c,c++ --disable-libssp --disable-lto MAKEINFO=missing
2015-08-30 23:17:52 +00:00
make -j8
make install
cd ..
2015-08-30 13:36:27 +00:00
# Install elf.h (for elf2flt)
mkdir -p $PREFIX/include
cp $SRC/elf.h $PREFIX/include/
2015-08-30 13:36:27 +00:00
# Build elf2flt
export "CFLAGS=-I${SRC}/binutils/include -I../toolchain/include"
2012-03-29 08:30:42 +00:00
mkdir -p elf2flt-build
cd elf2flt-build
$SRC/elf2flt/configure --target=m68k-apple-macos --prefix=$PREFIX --with-binutils-build-dir=$BINUTILS
make -j8 TOOLDIR=$PREFIX/bin
2012-03-29 08:30:42 +00:00
make install
2012-04-03 07:04:22 +00:00
unset CFLAGS
2012-03-29 08:30:42 +00:00
cd ..
2015-08-30 13:36:27 +00:00
# Build hfsutil
mkdir -p $PREFIX/man/man1
2012-03-29 08:30:42 +00:00
rm -rf hfsutils
cp -r $SRC/hfsutils .
cd hfsutils
./configure --prefix=$PREFIX --enable-devlibs
2012-03-29 08:30:42 +00:00
make
make install
cd ..
2015-08-30 13:36:27 +00:00
# Install Universal Interfaces
2015-08-30 23:17:52 +00:00
for arch in m68k powerpc; do
sh "$SRC/prepare-headers.sh" "$SRC/CIncludes" toolchain/${arch}-apple-macos/include
mkdir -p toolchain/${arch}-apple-macos/RIncludes
sh "$SRC/prepare-rincludes.sh" "$SRC/RIncludes" toolchain/${arch}-apple-macos/RIncludes
done
2015-09-08 16:04:15 +00:00
cp $SRC/ImportLibraries/*.a toolchain/powerpc-apple-macos/lib/
2015-08-30 13:36:27 +00:00
# Build host-based components
mkdir -p build-host
cd build-host
cmake ${SRC} -DCMAKE_INSTALL_PREFIX=$PREFIX
cd ..
make -C build-host install
# create an empty libretrocrt.a so that cmake's compiler test doesn't fail
2015-08-30 23:17:52 +00:00
for arch in m68k powerpc; do
$PREFIX/bin/${arch}-apple-macos-ar cqs $PREFIX/${arch}-apple-macos/lib/libretrocrt.a
done
# the real libretrocrt.a is built and installed by `make -C build-target install` later
2015-08-30 23:17:52 +00:00
# Build target-based components for 68K
mkdir -p build-target
cd build-target
2015-07-20 22:09:06 +00:00
cmake ${SRC} -DCMAKE_TOOLCHAIN_FILE=../build-host/cmake/intree.toolchain.cmake \
-DCMAKE_BUILD_TYPE=Release
cd ..
make -C build-target install
2015-08-30 23:17:52 +00:00
# Build target-based components for PPC
mkdir -p build-target-ppc
cd build-target-ppc
cmake ${SRC} -DCMAKE_TOOLCHAIN_FILE=../build-host/cmake/intreeppc.toolchain.cmake \
-DCMAKE_BUILD_TYPE=Release
cd ..
make -C build-target-ppc install