# Copyright (C) 2021,2022 fef . All rights reserved. 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=${M_ARCH}") 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 "") # XXX ktrace_print() currently relies on -fno-omit-frame-pointer set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_toolchain_common_flags} -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -msoft-float -fno-omit-frame-pointer") 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)