mirror of
https://frontier.innolan.net/github/amigaos-cross-toolchain6.git
synced 2024-10-19 10:29:55 +00:00
Updated script and documentation.
This commit is contained in:
@@ -1,8 +1,14 @@
|
|||||||
info: m68k-amigaos gcc toolchain bootstrap
|
Info: m68k-amigaos gcc/binutils toolchain bootstrap.
|
||||||
author: Krystian Bacławski <firstname [dot] lastname [at] gmail [dot] com>
|
Author: Krystian Bacławski <firstname [dot] lastname [at] gmail [dot] com>
|
||||||
|
|
||||||
This project enables one to build m68k-amigaos toolchain on your un*x like
|
This project enables one to build m68k-amigaos toolchain on your un*x like
|
||||||
platform with minimum hassle.
|
platform with minimum hassle. Thanks to it you should get complete environment
|
||||||
|
targeting m68k-amigaos with:
|
||||||
|
* gcc 2.95.3
|
||||||
|
* g++ 2.95.2 + libstdc++
|
||||||
|
* binutils 2.9.1 (assembler, linker, etc.)
|
||||||
|
* libnix 2.1 (standard ANSI/C library replacement for AmigaOS)
|
||||||
|
* AmigaOS headers & libraries (for AmigaOS 3.9)
|
||||||
|
|
||||||
Tested on:
|
Tested on:
|
||||||
* Ubuntu 10.04 ia32
|
* Ubuntu 10.04 ia32
|
||||||
@@ -12,31 +18,33 @@ Prerequisites (look at bootstrap.conf file):
|
|||||||
- gcc 3.4.6
|
- gcc 3.4.6
|
||||||
- flex
|
- flex
|
||||||
- make
|
- make
|
||||||
|
- lha
|
||||||
|
- perl 5.10
|
||||||
* sources from GNU project:
|
* sources from GNU project:
|
||||||
- gcc 2.95.3
|
- gcc 2.95.3
|
||||||
- binutils 2.9.1
|
- binutils 2.9.1
|
||||||
- bison 1.28
|
- bison 1.28
|
||||||
* Amiga specific sources & binaries:
|
* Amiga specific sources & binaries:
|
||||||
- libnix 2.1:
|
- libnix 2.1
|
||||||
http://sourceforge.net/projects/libnix/
|
- AmigaOS NDK 3.9
|
||||||
- AmigaOS NDK 3.9:
|
- fd2inline 1.21
|
||||||
http://www.haage-partner.de/download/AmigaOS/
|
- sfdc 1.4
|
||||||
- fd2inline 1.21:
|
- libamiga-bin
|
||||||
http://ftp.back2roots.org/geekgadgets/amiga/m68k/alpha/fd2inline/
|
|
||||||
- sfdc 1.4:
|
|
||||||
http://aminet.net/package/dev/gcc/sfdc/
|
|
||||||
- libamiga-bin:
|
|
||||||
http://ftp.back2roots.org/geekgadgets/amiga/m68k/snapshots/990529/bin/
|
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
1) Download sources, and put them into archive directory.
|
1) Download sources (use fetch.sh script in archives directory).
|
||||||
2) Run bootstrap script.
|
2) Run bootstrap script.
|
||||||
3) Wait for the result and if something crashes you can try to reach me.
|
3) Wait for the result.
|
||||||
|
?) If something fails, you can try to reach me.
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
* Testing on:
|
* Testing on:
|
||||||
- MacOS X 10.7
|
- MacOS X 10.7
|
||||||
- Cygwin
|
- Cygwin
|
||||||
* Remove dependencies:
|
* Remove dependencies:
|
||||||
|
- gcc 3.4
|
||||||
- fd2inline
|
- fd2inline
|
||||||
- libamiga-bin
|
- libamiga-bin
|
||||||
|
* Make it installable into some prefix.
|
||||||
|
* Provide some rudimentary testing (C / C++ sources).
|
||||||
|
* Build ixemul.
|
||||||
|
|||||||
+80
-50
@@ -1,7 +1,9 @@
|
|||||||
#!/bin/bash -Eeux
|
#!/bin/bash -Eeux
|
||||||
|
|
||||||
readonly TOP_DIR="$(pwd)"
|
readonly TOP_DIR="$(pwd)"
|
||||||
readonly SRC_DIR="${TOP_DIR}/src"
|
readonly ARCHIVES="${TOP_DIR}/archives"
|
||||||
|
readonly PATCHES="${TOP_DIR}/patches"
|
||||||
|
readonly SOURCES="${TOP_DIR}/sources"
|
||||||
readonly BUILD_DIR="${TOP_DIR}/build"
|
readonly BUILD_DIR="${TOP_DIR}/build"
|
||||||
readonly HOST_DIR="${TOP_DIR}/host"
|
readonly HOST_DIR="${TOP_DIR}/host"
|
||||||
readonly TARGET_DIR="${TOP_DIR}/target"
|
readonly TARGET_DIR="${TOP_DIR}/target"
|
||||||
@@ -18,7 +20,6 @@ function prepare_target {
|
|||||||
mkdir -p "m68k-amigaos" "lib" "os-include" "os-lib"
|
mkdir -p "m68k-amigaos" "lib" "os-include" "os-lib"
|
||||||
ln -sf "../os-include" "m68k-amigaos/include"
|
ln -sf "../os-include" "m68k-amigaos/include"
|
||||||
ln -sf "../lib" "m68k-amigaos/lib"
|
ln -sf "../lib" "m68k-amigaos/lib"
|
||||||
tar -xjf "${TOP_DIR}/${LIBAMIGA_SRC}"
|
|
||||||
popd
|
popd
|
||||||
|
|
||||||
touch "${STAMP}/prepare-target"
|
touch "${STAMP}/prepare-target"
|
||||||
@@ -27,45 +28,57 @@ function prepare_target {
|
|||||||
function unpack_sources {
|
function unpack_sources {
|
||||||
[ -f "${STAMP}/unpack-sources" ] && return 0
|
[ -f "${STAMP}/unpack-sources" ] && return 0
|
||||||
|
|
||||||
rm -rf "${SRC_DIR}"
|
rm -rf "${SOURCES}"
|
||||||
mkdir -p "${SRC_DIR}"
|
mkdir -p "${SOURCES}"
|
||||||
pushd "${SRC_DIR}"
|
pushd "${SOURCES}"
|
||||||
|
|
||||||
rm -rf "${BISON}"
|
rm -rf "${BISON}"
|
||||||
tar -xjf "${TOP_DIR}/${BISON_SRC}"
|
tar -xzf "${ARCHIVES}/${BISON_SRC}"
|
||||||
|
|
||||||
rm -rf "${BINUTILS}"
|
rm -rf "${BINUTILS}"
|
||||||
tar -xjf "${TOP_DIR}/${BINUTILS_SRC}"
|
tar -xzf "${ARCHIVES}/${BINUTILS_SRC}"
|
||||||
pushd "${BINUTILS}"
|
pushd "${BINUTILS}"
|
||||||
zcat "${TOP_DIR}/${BINUTILS_PATCH}" | patch -p1
|
zcat "${PATCHES}/${BINUTILS_PATCH}" | patch -p1
|
||||||
popd
|
popd
|
||||||
|
|
||||||
rm -rf "${GCC}"
|
rm -rf "${GCC}"
|
||||||
tar -xjf "${TOP_DIR}/${GCC_CORE_SRC}"
|
tar -xzf "${ARCHIVES}/${GCC_CORE_SRC}"
|
||||||
tar -xjf "${TOP_DIR}/${GCC_CPP_SRC}"
|
tar -xzf "${ARCHIVES}/${GCC_CPP_SRC}"
|
||||||
pushd "${GCC}"
|
pushd "${GCC}"
|
||||||
zcat "${TOP_DIR}/${GCC_CORE_PATCH}" | patch -p1
|
zcat "${PATCHES}/${GCC_CORE_PATCH}" | patch -p1
|
||||||
zcat "${TOP_DIR}/${GCC_CPP_PATCH}" | patch -p1
|
zcat "${PATCHES}/${GCC_CPP_PATCH}" | patch -p1
|
||||||
popd
|
popd
|
||||||
|
|
||||||
rm -rf "${FD2INLINE}"
|
rm -rf "${FD2INLINE}"
|
||||||
tar -xjf "${TOP_DIR}/${FD2INLINE_SRC}"
|
tar -xzf "${ARCHIVES}/${FD2INLINE_SRC}"
|
||||||
|
|
||||||
rm -rf "${SFDC}"
|
rm -rf "${SFDC}"
|
||||||
tar -xjf "${TOP_DIR}/${SFDC_SRC}"
|
lha -xq "${ARCHIVES}/${SFDC_SRC}"
|
||||||
|
tar -xzf "${SFDC}.tar.gz"
|
||||||
|
for file in $(ls -1d sfdc*); do
|
||||||
|
[ -f "${file}" ] && rm "${file}"
|
||||||
|
done
|
||||||
|
|
||||||
rm -rf "${NDK}"
|
rm -rf "${NDK}"
|
||||||
lha x "${TOP_DIR}/${NDK_SRC}"
|
lha -xq "${ARCHIVES}/${NDK_SRC}"
|
||||||
rm -rf ndk_* *.info
|
rm -rf ndk_* *.info
|
||||||
|
|
||||||
rm -rf "${IXEMUL}"
|
rm -rf "${IXEMUL}"
|
||||||
tar -xjf "${TOP_DIR}/${IXEMUL_SRC}"
|
lha -xq "${ARCHIVES}/${IXEMUL_SRC}"
|
||||||
|
mv "ixemul" "${IXEMUL}"
|
||||||
chmod a+x "${IXEMUL}/configure"
|
chmod a+x "${IXEMUL}/configure"
|
||||||
|
|
||||||
rm -rf "${LIBNIX}"
|
rm -rf "${LIBNIX}"
|
||||||
tar -xjf "${TOP_DIR}/${LIBNIX_SRC}"
|
tar -xzf "${ARCHIVES}/${LIBNIX_SRC}"
|
||||||
|
mv "libnix" "${LIBNIX}"
|
||||||
chmod a+x "${LIBNIX}/mkinstalldirs"
|
chmod a+x "${LIBNIX}/mkinstalldirs"
|
||||||
|
|
||||||
|
rm -rf "${LIBAMIGA}"
|
||||||
|
mkdir "${LIBAMIGA}"
|
||||||
|
pushd "${LIBAMIGA}"
|
||||||
|
tar -xzf "${ARCHIVES}/${LIBAMIGA_SRC}"
|
||||||
|
popd
|
||||||
|
|
||||||
popd
|
popd
|
||||||
|
|
||||||
touch "${STAMP}/unpack-sources"
|
touch "${STAMP}/unpack-sources"
|
||||||
@@ -81,7 +94,7 @@ function build_tools {
|
|||||||
rm -rf "${BISON}"
|
rm -rf "${BISON}"
|
||||||
mkdir -p "${BISON}"
|
mkdir -p "${BISON}"
|
||||||
cd "${BISON}"
|
cd "${BISON}"
|
||||||
"${SRC_DIR}/${BISON}/configure" \
|
"${SOURCES}/${BISON}/configure" \
|
||||||
--prefix="${HOST_DIR}"
|
--prefix="${HOST_DIR}"
|
||||||
make
|
make
|
||||||
make install
|
make install
|
||||||
@@ -97,7 +110,7 @@ function build_binutils {
|
|||||||
rm -rf "${BINUTILS}"
|
rm -rf "${BINUTILS}"
|
||||||
mkdir -p "${BINUTILS}"
|
mkdir -p "${BINUTILS}"
|
||||||
cd "${BINUTILS}"
|
cd "${BINUTILS}"
|
||||||
"${SRC_DIR}/${BINUTILS}/configure" \
|
"${SOURCES}/${BINUTILS}/configure" \
|
||||||
--prefix="${TARGET_DIR}" \
|
--prefix="${TARGET_DIR}" \
|
||||||
--target=m68k-amigaos
|
--target=m68k-amigaos
|
||||||
make all
|
make all
|
||||||
@@ -125,11 +138,11 @@ function build_gcc {
|
|||||||
rm -rf "${GCC}"
|
rm -rf "${GCC}"
|
||||||
mkdir -p "${GCC}"
|
mkdir -p "${GCC}"
|
||||||
cd "${GCC}"
|
cd "${GCC}"
|
||||||
"${SRC_DIR}/${GCC}/configure" \
|
"${SOURCES}/${GCC}/configure" \
|
||||||
--prefix="${TARGET_DIR}" \
|
--prefix="${TARGET_DIR}" \
|
||||||
--target=m68k-amigaos \
|
--target=m68k-amigaos \
|
||||||
--enable-languages=c \
|
--enable-languages=c \
|
||||||
--with-headers="${SRC_DIR}/${IXEMUL}/include"
|
--with-headers="${SOURCES}/${IXEMUL}/include"
|
||||||
make all ${FLAGS_FOR_TARGET[*]}
|
make all ${FLAGS_FOR_TARGET[*]}
|
||||||
make install ${FLAGS_FOR_TARGET[*]}
|
make install ${FLAGS_FOR_TARGET[*]}
|
||||||
popd
|
popd
|
||||||
@@ -144,11 +157,11 @@ function build_gpp {
|
|||||||
rm -rf "${GCC}"
|
rm -rf "${GCC}"
|
||||||
mkdir -p "${GCC}"
|
mkdir -p "${GCC}"
|
||||||
cd "${GCC}"
|
cd "${GCC}"
|
||||||
"${SRC_DIR}/${GCC}/configure" \
|
"${SOURCES}/${GCC}/configure" \
|
||||||
--prefix="${TARGET_DIR}" \
|
--prefix="${TARGET_DIR}" \
|
||||||
--target=m68k-amigaos \
|
--target=m68k-amigaos \
|
||||||
--enable-languages=c++ \
|
--enable-languages=c++ \
|
||||||
--with-headers="${SRC_DIR}/${IXEMUL}/include"
|
--with-headers="${SOURCES}/${IXEMUL}/include"
|
||||||
make all ${FLAGS_FOR_TARGET[*]}
|
make all ${FLAGS_FOR_TARGET[*]}
|
||||||
make install ${FLAGS_FOR_TARGET[*]}
|
make install ${FLAGS_FOR_TARGET[*]}
|
||||||
popd
|
popd
|
||||||
@@ -161,7 +174,7 @@ function process_headers {
|
|||||||
|
|
||||||
pushd "${BUILD_DIR}"
|
pushd "${BUILD_DIR}"
|
||||||
rm -rf "${SFDC}"
|
rm -rf "${SFDC}"
|
||||||
cp -a "${SRC_DIR}/${SFDC}" "${SFDC}"
|
cp -a "${SOURCES}/${SFDC}" "${SFDC}"
|
||||||
cd "${SFDC}"
|
cd "${SFDC}"
|
||||||
./configure \
|
./configure \
|
||||||
--prefix="${TARGET_DIR}"
|
--prefix="${TARGET_DIR}"
|
||||||
@@ -170,14 +183,14 @@ function process_headers {
|
|||||||
popd
|
popd
|
||||||
|
|
||||||
pushd "${TARGET_DIR}/include"
|
pushd "${TARGET_DIR}/include"
|
||||||
cp -av "${SRC_DIR}/${NDK}/Include/include_h/"* .
|
cp -av "${SOURCES}/${NDK}/Include/include_h/"* .
|
||||||
mkdir -p clib proto inline
|
mkdir -p clib proto inline
|
||||||
patch -d devices -p0 < ${SRC_DIR}/${FD2INLINE}/patches/timer.h.diff
|
patch -d devices -p0 < ${SOURCES}/${FD2INLINE}/patches/timer.h.diff
|
||||||
cp -v "${SRC_DIR}/${FD2INLINE}/include-src/inline/alib.h" inline/
|
cp -v "${SOURCES}/${FD2INLINE}/include-src/inline/alib.h" inline/
|
||||||
cp -v "${SRC_DIR}/${FD2INLINE}/include-src/inline/macros.h" inline/
|
cp -v "${SOURCES}/${FD2INLINE}/include-src/inline/macros.h" inline/
|
||||||
cp -v "${SRC_DIR}/${FD2INLINE}/include-src/inline/stubs.h" inline/
|
cp -v "${SOURCES}/${FD2INLINE}/include-src/inline/stubs.h" inline/
|
||||||
cp -v "${SRC_DIR}/${FD2INLINE}/include-src/proto/alib.h" proto/
|
cp -v "${SOURCES}/${FD2INLINE}/include-src/proto/alib.h" proto/
|
||||||
for file in ${SRC_DIR}/${NDK}/Include/sfd/*.sfd; do
|
for file in ${SOURCES}/${NDK}/Include/sfd/*.sfd; do
|
||||||
base=$(basename ${file%_lib.sfd})
|
base=$(basename ${file%_lib.sfd})
|
||||||
|
|
||||||
sfdc --target=m68k-amigaos --mode=clib \
|
sfdc --target=m68k-amigaos --mode=clib \
|
||||||
@@ -192,6 +205,16 @@ function process_headers {
|
|||||||
touch "${STAMP}/process-headers"
|
touch "${STAMP}/process-headers"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function install_libamiga {
|
||||||
|
[ -f "${STAMP}/install-libamiga" ] && return 0
|
||||||
|
|
||||||
|
pushd "${TARGET_DIR}"
|
||||||
|
cp -av "${SOURCES}/${LIBAMIGA}/lib" .
|
||||||
|
popd
|
||||||
|
|
||||||
|
touch "${STAMP}/install-libamiga"
|
||||||
|
}
|
||||||
|
|
||||||
function build_libnix {
|
function build_libnix {
|
||||||
[ -f "${STAMP}/build-libnix" ] && return 0
|
[ -f "${STAMP}/build-libnix" ] && return 0
|
||||||
|
|
||||||
@@ -199,7 +222,7 @@ function build_libnix {
|
|||||||
rm -rf "${LIBNIX}"
|
rm -rf "${LIBNIX}"
|
||||||
mkdir -p "${LIBNIX}"
|
mkdir -p "${LIBNIX}"
|
||||||
cd "${LIBNIX}"
|
cd "${LIBNIX}"
|
||||||
"${SRC_DIR}/${LIBNIX}/configure" \
|
"${SOURCES}/${LIBNIX}/configure" \
|
||||||
--prefix="${TARGET_DIR}" \
|
--prefix="${TARGET_DIR}" \
|
||||||
--target=m68k-amigaos
|
--target=m68k-amigaos
|
||||||
make all \
|
make all \
|
||||||
@@ -228,7 +251,7 @@ function build_ixemul {
|
|||||||
CFLAGS=-noixemul \
|
CFLAGS=-noixemul \
|
||||||
AR=m68k-amigaos-ar \
|
AR=m68k-amigaos-ar \
|
||||||
RANLIB=m68k-amigaos-ranlib \
|
RANLIB=m68k-amigaos-ranlib \
|
||||||
"${SRC_DIR}/${IXEMUL}/configure" \
|
"${SOURCES}/${IXEMUL}/configure" \
|
||||||
--prefix=${TARGET_DIR} \
|
--prefix=${TARGET_DIR} \
|
||||||
--target=m68k-amigaos
|
--target=m68k-amigaos
|
||||||
make MAKEINFO=: all
|
make MAKEINFO=: all
|
||||||
@@ -238,30 +261,37 @@ function build_ixemul {
|
|||||||
touch "${STAMP}/build-ixemul"
|
touch "${STAMP}/build-ixemul"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function build {
|
||||||
|
export CC="gcc-3.4"
|
||||||
|
|
||||||
|
prepare_target
|
||||||
|
unpack_sources
|
||||||
|
build_tools
|
||||||
|
|
||||||
|
export PATH="${HOST_DIR}/bin:${PATH}"
|
||||||
|
|
||||||
|
build_binutils
|
||||||
|
build_gcc
|
||||||
|
|
||||||
|
export PATH="${TARGET_DIR}/bin:${PATH}"
|
||||||
|
|
||||||
|
process_headers
|
||||||
|
install_libamiga
|
||||||
|
build_libnix
|
||||||
|
#build_ixemul
|
||||||
|
build_gpp
|
||||||
|
}
|
||||||
|
|
||||||
function main {
|
function main {
|
||||||
local -r action="${1:-build}"
|
local -r action="${1:-build}"
|
||||||
|
|
||||||
case "${action}" in
|
case "${action}" in
|
||||||
"build")
|
"build")
|
||||||
prepare_target
|
build
|
||||||
unpack_sources
|
|
||||||
build_tools
|
|
||||||
|
|
||||||
export PATH="${HOST_DIR}/bin:${PATH}"
|
|
||||||
|
|
||||||
build_binutils
|
|
||||||
build_gcc
|
|
||||||
|
|
||||||
export PATH="${TARGET_DIR}/bin:${PATH}"
|
|
||||||
|
|
||||||
process_headers
|
|
||||||
build_libnix
|
|
||||||
#build_ixemul
|
|
||||||
build_gpp
|
|
||||||
;;
|
;;
|
||||||
"clean")
|
"clean")
|
||||||
for dir in ${SRC_DIR} ${BUILD_DIR} ${HOST_DIR} ${TARGET_DIR} ${STAMP}; do
|
for dir in ${SOURCES} ${BUILD_DIR} ${HOST_DIR} ${TARGET_DIR} ${STAMP}; do
|
||||||
echo rm -rf "${dir}"
|
rm -rf "${dir}"
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|||||||
Reference in New Issue
Block a user