forked from Bananymous/banan-os
BuildSystem: you can now build the toolchain with cmake
This commit is contained in:
parent
b8d852ddb7
commit
5db5ff069a
|
@ -2,7 +2,12 @@ cmake_minimum_required(VERSION 3.26)
|
|||
|
||||
project(BAN CXX)
|
||||
|
||||
add_custom_target(ban-install
|
||||
add_custom_target(ban-headers
|
||||
COMMAND cp -r ${CMAKE_CURRENT_SOURCE_DIR}/include/* ${BANAN_INCLUDE}
|
||||
DEPENDS sysroot
|
||||
)
|
||||
|
||||
add_custom_target(ban-install
|
||||
DEPENDS ban-headers
|
||||
)
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ set(BANAN_SYSROOT ${CMAKE_BINARY_DIR}/sysroot)
|
|||
set(BANAN_INCLUDE ${BANAN_SYSROOT}/usr/include)
|
||||
set(BANAN_BOOT ${BANAN_SYSROOT}/boot)
|
||||
set(DISK_IMAGE_PATH ${CMAKE_BINARY_DIR}/banan-os.img)
|
||||
set(TOOLCHAIN_PREFIX ${CMAKE_SOURCE_DIR}/toolchain/local)
|
||||
|
||||
add_subdirectory(kernel)
|
||||
add_subdirectory(BAN)
|
||||
|
@ -33,6 +34,18 @@ add_custom_target(sysroot
|
|||
COMMAND cp -r ${CMAKE_SOURCE_DIR}/base/* ${BANAN_SYSROOT}/
|
||||
)
|
||||
|
||||
add_custom_target(headers
|
||||
DEPENDS kernel-headers
|
||||
DEPENDS ban-headers
|
||||
DEPENDS libc-headers
|
||||
)
|
||||
|
||||
add_custom_target(toolchain
|
||||
COMMAND ${CMAKE_COMMAND} -E env SYSROOT="${BANAN_SYSROOT}" PREFIX="${TOOLCHAIN_PREFIX}" ARCH="${BANAN_ARCH}" ${CMAKE_SOURCE_DIR}/toolchain/build.sh
|
||||
DEPENDS headers
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
||||
add_custom_target(image
|
||||
COMMAND ${CMAKE_COMMAND} -E env SYSROOT="${BANAN_SYSROOT}" DISK_IMAGE_PATH="${DISK_IMAGE_PATH}" ${CMAKE_SOURCE_DIR}/image.sh
|
||||
DEPENDS kernel-install
|
||||
|
|
|
@ -122,10 +122,14 @@ endif()
|
|||
|
||||
target_link_options(kernel PUBLIC -ffreestanding -nostdlib -O2)
|
||||
|
||||
add_custom_target(kernel-install
|
||||
add_custom_target(kernel-headers
|
||||
COMMAND cp -r ${CMAKE_CURRENT_SOURCE_DIR}/include/* ${BANAN_INCLUDE}/
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/kernel ${BANAN_BOOT}/banan-os.kernel
|
||||
DEPENDS sysroot
|
||||
)
|
||||
|
||||
add_custom_target(kernel-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/kernel ${BANAN_BOOT}/banan-os.kernel
|
||||
DEPENDS kernel-headers
|
||||
DEPENDS kernel
|
||||
)
|
||||
|
||||
|
|
|
@ -2,7 +2,12 @@ cmake_minimum_required(VERSION 3.26)
|
|||
|
||||
project(libc CXX)
|
||||
|
||||
add_custom_target(libc-install
|
||||
add_custom_target(libc-headers
|
||||
COMMAND cp -r ${CMAKE_CURRENT_SOURCE_DIR}/include/* ${BANAN_INCLUDE}
|
||||
DEPENDS sysroot
|
||||
)
|
||||
|
||||
add_custom_target(libc-install
|
||||
DEPENDS libc-headers
|
||||
)
|
||||
|
||||
|
|
|
@ -4,11 +4,7 @@ set -e
|
|||
BINUTILS_VERSION="binutils-2.39"
|
||||
GCC_VERSION="gcc-12.2.0"
|
||||
|
||||
SYSROOT="$HOME/dev/banan-os/build/sysroot"
|
||||
PREFIX="$(pwd)/local"
|
||||
ARCH="x86_64"
|
||||
|
||||
TARGET="${ARCH}-banan_os"
|
||||
cd $(dirname "$0")
|
||||
|
||||
if [[ -z $SYSROOT ]]; then
|
||||
echo "You must set the SYSROOT environment variable" >&2
|
||||
|
@ -20,11 +16,13 @@ if [[ -z $PREFIX ]]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z $BANAN_AR ]]; then
|
||||
if [[ -z $ARCH ]]; then
|
||||
echo "You must set the ARCH environment variable" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TARGET="${ARCH}-banan_os"
|
||||
|
||||
if [ ! -f ${PREFIX}/bin/${TARGET}-ld ]; then
|
||||
|
||||
echo "Building ${BINUTILS_VERSION}"
|
||||
|
|
Loading…
Reference in New Issue