55 lines
2.1 KiB
CMake
55 lines
2.1 KiB
CMake
cmake_minimum_required(VERSION 3.15)
|
|
project(new_kernel C ASM)
|
|
|
|
# Define compiler run time
|
|
SET(COMPILER_RT ${CMAKE_CURRENT_LIST_DIR}/compiler/target/bin)
|
|
SET(CMAKE_C_COMPILER ${COMPILER_RT}/i686-elf-gcc)
|
|
SET(CMAKE_ASM_COMPILER ${COMPILER_RT}/i686-elf-gcc)
|
|
|
|
# Optionally enable cmake debugging
|
|
#SET(CMAKE_VERBOSE_MAKEFILE ON)
|
|
|
|
# Set compile flags
|
|
SET(CMAKE_C_FLAGS "-g -ffreestanding -Wall -Wextra -fno-exceptions -fstack-protector -fno-pie -m32")
|
|
SET(CMAKE_ASM_FLAGS "${CFLAGS} -m32 -x assembler-with-cpp")
|
|
SET(CMAKE_EXE_LINKER_FLAGS "-T${CMAKE_CURRENT_LIST_DIR}/linker.ld -lgcc -ffreestanding -nostdlib -no-pie")
|
|
|
|
include_directories(BEFORE include)
|
|
include_directories(AFTER acpica/source/include)
|
|
|
|
set(CMAKE_C_STANDARD 99)
|
|
|
|
FILE(GLOB_RECURSE kernel_src kernel/**.c)
|
|
FILE(GLOB_RECURSE kernel_asm kernel/**.S)
|
|
FILE(GLOB_RECURSE boot_asm boot/boot.S)
|
|
FILE(GLOB_RECURSE acpi_ca_src
|
|
acpica/source/components/dispatcher/*.c
|
|
acpica/source/components/events/*.c
|
|
acpica/source/components/executer/*.c
|
|
acpica/source/components/namespace/*.c
|
|
acpica/source/components/parser/*.c
|
|
acpica/source/components/hardware/*.c
|
|
acpica/source/components/tables/*.c
|
|
acpica/source/components/utilities/*.c)
|
|
|
|
get_filename_component(utprint_full_path acpica/source/components/utilities/utprint.c ABSOLUTE)
|
|
LIST(REMOVE_ITEM acpi_ca_src ${utprint_full_path})
|
|
|
|
add_compile_definitions(__kernel__)
|
|
add_compile_definitions(__KERNEL__)
|
|
add_compile_definitions(__MYKE__)
|
|
|
|
# Run IDE in DMA mode if available (NYI)
|
|
#add_compile_definitions(IDE_ENABLE_INTERRUPT)
|
|
# Run the kernel shell as the main task
|
|
add_compile_definitions(ENABLE_SELF_TEST) # Support for pretty printing pci class/subclass/interface
|
|
add_compile_definitions(ENABLE_PCIPP) # Support for pretty printing pci class/subclass/interface
|
|
add_compile_definitions(K_SHELL)
|
|
|
|
add_executable(my-kernel.bin ${kernel_src} ${kernel_asm} ${boot_asm} ${acpi_ca_src})
|
|
set_source_files_properties(${kernel_src} PROPERTIES LANGUAGE C COMPILE_FLAGS "")
|
|
set_target_properties(my-kernel.bin PROPERTIES LINKER_LANGUAGE C PREFIX "" SUFFIX "" LINK_FLAGS "")
|
|
|
|
|
|
|