mirror of
https://github.com/encounter/osdev.git
synced 2026-07-10 12:18:43 -07:00
66 lines
1.5 KiB
CMake
66 lines
1.5 KiB
CMake
cmake_minimum_required(VERSION 3.2)
|
|
project(kernel)
|
|
|
|
set(CMAKE_ASM_NASM_OBJECT_FORMAT elf)
|
|
enable_language(ASM_NASM)
|
|
|
|
if (CMAKE_HOST_APPLE)
|
|
set(CMAKE_C_COMPILER i386-elf-gcc)
|
|
set(CMAKE_AR i386-elf-ar)
|
|
set(CMAKE_RANLIB i386-elf-ranlib)
|
|
endif()
|
|
|
|
set(CMAKE_C_FLAGS "-m32 -std=c11 -ffreestanding -fno-pie -fshort-enums -Wall -Werror -Wno-error=unused-variable -Wno-error=attributes")
|
|
# if clang: -Wno-error=unused-command-line-argument -nobuiltininc
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc -fno-builtin -nostdlib -nodefaultlibs")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector") # FIXME generates bad code using `mov eax, large gs:14h`?
|
|
set(CMAKE_C_FLAGS_DEBUG "-gdwarf-4 -DENABLE_DWARF")
|
|
if (NOT CMAKE_HOST_APPLE)
|
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fsanitize=undefined")
|
|
endif()
|
|
set(CMAKE_C_FLAGS_RELEASE "-Os")
|
|
|
|
include_directories(${CMAKE_SOURCE_DIR}/libc)
|
|
set(SOURCE_FILES
|
|
console
|
|
descriptor_tables
|
|
gdt.asm
|
|
interrupt.asm
|
|
isr
|
|
main
|
|
shell
|
|
multiboot
|
|
div64
|
|
elf
|
|
dwarf
|
|
stdio_impl
|
|
bmp
|
|
psf
|
|
kmalloc
|
|
arch/x86/mmu
|
|
drivers/ports
|
|
drivers/timer
|
|
drivers/keyboard
|
|
drivers/acpi
|
|
drivers/serial
|
|
drivers/vga
|
|
drivers/ata
|
|
drivers/pci
|
|
drivers/pci_registry
|
|
# drivers/i825xx
|
|
fatfs/diskio
|
|
fatfs/ff
|
|
fatfs/ffconf.h
|
|
fatfs/ffsystem
|
|
fatfs/ffunicode
|
|
fatfs/integer.h
|
|
tests/tests.h
|
|
tests/vector
|
|
tests/fatfs
|
|
tests/stdio
|
|
tests/path
|
|
tests/pages)
|
|
if (${CMAKE_BUILD_TYPE} MATCHES "Debug")
|
|
set(SOURCE_FILES ${SOURCE_FILES} debug/ubsan)
|
|
endif ()
|
|
add_library(kernel STATIC ${SOURCE_FILES}) |