You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
2.8 KiB
CMake

# See the end of this file for copyright and license terms.
set(TOOLCHAIN_PATH "/usr/bin" CACHE STRING "Toolchain directory")
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_CROSSCOMPILING 1)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
if (CFG_X86_64)
set(CMAKE_SYSTEM_PROCESSOR x86-64)
set(_toolchain_common_flags "-m64 -march=x86-64")
set(_toolchain_triple x86_64-pc-none-elf)
set(_toolchain_bits 64)
else()
set(CMAKE_SYSTEM_PROCESSOR i686)
set(_toolchain_common_flags "-m32 -march=i686")
set(_toolchain_triple i686-pc-none-elf)
set(_toolchain_bits 32)
endif()
set(CMAKE_AR ${TOOLCHAIN_PATH}/${CMAKE_EXECUTABLE_PREFIX}ar${CMAKE_EXECUTABLE_SUFFIX})
set(CMAKE_ASM_COMPILER ${TOOLCHAIN_PATH}/${CMAKE_EXECUTABLE_PREFIX}clang${CMAKE_EXECUTABLE_SUFFIX})
set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/${CMAKE_EXECUTABLE_PREFIX}clang${CMAKE_EXECUTABLE_SUFFIX})
set(CMAKE_LINKER ${TOOLCHAIN_PATH}/${CMAKE_EXECUTABLE_PREFIX}ld.lld${CMAKE_EXECUTABLE_SUFFIX})
set(CMAKE_OBJCOPY ${TOOLCHAIN_PATH}/${CMAKE_EXECUTABLE_PREFIX}objcopy${CMAKE_EXECUTABLE_SUFFIX} CACHE INTERNAL "")
set(CMAKE_RANLIB ${TOOLCHAIN_PATH}/${CMAKE_EXECUTABLE_PREFIX}ranlib${CMAKE_EXECUTABLE_SUFFIX} CACHE INTERNAL "")
set(CMAKE_SZE ${TOOLCHAIN_PATH}/${CMAKE_EXECUTABLE_PREFIX}szr${CMAKE_EXECUTABLE_SUFFIX} CACHE INTERNAL "")
set(CMAKE_STRIP ${TOOLCHAIN_PATH}/${CMAKE_EXECUTABLE_PREFIX}strip${CMAKE_EXECUTABLE_SUFFIX} CACHE INTERNAL "")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_toolchain_common_flags} -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -msoft-float")
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${_toolchain_common_flags}")
set(CMAKE_C_COMPILER_TARGET ${_toolchain_triple})
set(CMAKE_ASM_COMPILER_TARGET ${_toolchain_triple})
set(CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=lld")
set(CMAKE_MODULE_LINKER_FLAGS_INIT "-fuse-ld=lld")
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=lld")
configure_file(
"${CMAKE_CURRENT_LIST_DIR}/kernel_config.ld.in"
"${CMAKE_BINARY_DIR}/config/kernel_config.ld"
)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -T${CMAKE_BINARY_DIR}/config/kernel_config.ld -T${CMAKE_CURRENT_LIST_DIR}/kernel${_toolchain_bits}.ld")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
# This file is part of GayBSD.
# Copyright (c) 2021 fef <owo@fef.moe>.
#
# GayBSD is nonviolent software: you may only use, redistribute, and/or
# modify it under the terms of the Cooperative Nonviolent Public License
# (CNPL) as found in the LICENSE file in the source code root directory
# or at <https://git.pixie.town/thufie/npl-builder>; either version 7
# of the license, or (at your option) any later version.
#
# GayBSD comes with ABSOLUTELY NO WARRANTY, to the extent
# permitted by applicable law. See the CNPL for details.