2018-09-06 22:49:00 -04:00
|
|
|
cmake_minimum_required(VERSION 3.2)
|
|
|
|
|
project(kernel)
|
|
|
|
|
|
|
|
|
|
set(CMAKE_ASM_NASM_OBJECT_FORMAT elf)
|
|
|
|
|
enable_language(ASM_NASM)
|
|
|
|
|
|
2018-09-07 08:08:46 -04:00
|
|
|
if (CMAKE_HOST_APPLE)
|
2018-09-07 00:32:45 -04:00
|
|
|
set(CMAKE_C_COMPILER i386-elf-gcc)
|
|
|
|
|
set(CMAKE_AR i386-elf-ar)
|
|
|
|
|
set(CMAKE_RANLIB i386-elf-ranlib)
|
|
|
|
|
endif()
|
2018-09-06 22:49:00 -04:00
|
|
|
|
2018-10-03 00:15:03 -04:00
|
|
|
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")
|
|
|
|
|
|
2018-09-06 22:49:00 -04:00
|
|
|
include_directories(${CMAKE_SOURCE_DIR}/libc)
|
2018-09-25 00:04:11 -04:00
|
|
|
set(SOURCE_FILES
|
2018-09-06 22:49:00 -04:00
|
|
|
console
|
|
|
|
|
descriptor_tables
|
|
|
|
|
gdt.asm
|
2018-09-07 00:32:45 -04:00
|
|
|
interrupt.asm
|
|
|
|
|
isr
|
2018-09-06 22:49:00 -04:00
|
|
|
main
|
2018-09-23 17:23:38 -04:00
|
|
|
shell
|
2018-09-27 01:06:55 -04:00
|
|
|
multiboot
|
2018-09-28 00:50:46 -04:00
|
|
|
div64
|
2018-09-29 19:38:42 -04:00
|
|
|
elf
|
2018-10-06 19:28:56 -04:00
|
|
|
dwarf
|
2018-10-01 00:41:19 -04:00
|
|
|
stdio_impl
|
2018-10-07 00:34:59 -04:00
|
|
|
bmp
|
2018-10-07 04:21:21 -04:00
|
|
|
psf
|
2018-10-09 01:42:28 -04:00
|
|
|
kmalloc
|
2018-10-06 19:28:56 -04:00
|
|
|
arch/x86/mmu
|
2018-09-07 13:49:25 -04:00
|
|
|
drivers/ports
|
2018-09-23 02:35:03 -04:00
|
|
|
drivers/timer
|
2018-09-23 03:11:42 -04:00
|
|
|
drivers/keyboard
|
2018-09-24 00:09:06 -04:00
|
|
|
drivers/acpi
|
2018-09-27 01:06:55 -04:00
|
|
|
drivers/serial
|
|
|
|
|
drivers/vga
|
2018-09-28 00:50:46 -04:00
|
|
|
drivers/ata
|
|
|
|
|
drivers/pci
|
|
|
|
|
drivers/pci_registry
|
2018-09-30 14:56:07 -04:00
|
|
|
# drivers/i825xx
|
2018-09-27 17:31:08 -04:00
|
|
|
fatfs/diskio
|
|
|
|
|
fatfs/ff
|
|
|
|
|
fatfs/ffconf.h
|
|
|
|
|
fatfs/ffsystem
|
|
|
|
|
fatfs/ffunicode
|
|
|
|
|
fatfs/integer.h
|
2018-09-24 00:09:06 -04:00
|
|
|
tests/tests.h
|
2018-09-28 00:50:46 -04:00
|
|
|
tests/vector
|
2018-10-01 17:25:57 -04:00
|
|
|
tests/fatfs
|
2018-10-02 00:22:36 -04:00
|
|
|
tests/stdio
|
2018-10-09 01:42:28 -04:00
|
|
|
tests/path
|
|
|
|
|
tests/pages)
|
2018-09-25 00:04:11 -04:00
|
|
|
if (${CMAKE_BUILD_TYPE} MATCHES "Debug")
|
2018-10-06 19:28:56 -04:00
|
|
|
set(SOURCE_FILES ${SOURCE_FILES} debug/ubsan)
|
2018-09-25 00:04:11 -04:00
|
|
|
endif ()
|
|
|
|
|
add_library(kernel STATIC ${SOURCE_FILES})
|