mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:22:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			430 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			430 lines
		
	
	
	
		
			12 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| if (ENABLE_EXTRA_KERNEL_DEBUG_SYMBOLS)
 | |
|     add_compile_options(-Og)
 | |
|     add_compile_options(-ggdb3)
 | |
| else()
 | |
|     add_compile_options(-Os)
 | |
| endif()
 | |
| 
 | |
| if ("${SERENITY_ARCH}" STREQUAL "i686")
 | |
|     set(KERNEL_ARCH i386)
 | |
| elseif("${SERENITY_ARCH}" STREQUAL "x86_64")
 | |
|     set(KERNEL_ARCH x86_64)
 | |
| endif()
 | |
| 
 | |
| set(KERNEL_HEAP_SOURCES
 | |
|     Heap/SlabAllocator.cpp
 | |
|     Heap/kmalloc.cpp
 | |
| )
 | |
| 
 | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_STATIC}")
 | |
| 
 | |
| set(KERNEL_SOURCES
 | |
|     ACPI/DynamicParser.cpp
 | |
|     ACPI/Initialize.cpp
 | |
|     ACPI/MultiProcessorParser.cpp
 | |
|     ACPI/Parser.cpp
 | |
|     AddressSanitizer.cpp
 | |
|     Arch/PC/BIOS.cpp
 | |
|     Arch/x86/SmapDisabler.h
 | |
|     Bus/PCI/Access.cpp
 | |
|     Bus/PCI/Device.cpp
 | |
|     Bus/PCI/DeviceController.cpp
 | |
|     Bus/PCI/IOAccess.cpp
 | |
|     Bus/PCI/MMIOAccess.cpp
 | |
|     Bus/PCI/Initializer.cpp
 | |
|     Bus/PCI/WindowedMMIOAccess.cpp
 | |
|     Bus/USB/UHCIController.cpp
 | |
|     Bus/USB/USBDevice.cpp
 | |
|     Bus/USB/USBPipe.cpp
 | |
|     Bus/USB/USBTransfer.cpp
 | |
|     CMOS.cpp
 | |
|     CommandLine.cpp
 | |
|     ConsoleDevice.cpp
 | |
|     CoreDump.cpp
 | |
|     Devices/AsyncDeviceRequest.cpp
 | |
|     Devices/BlockDevice.cpp
 | |
|     Devices/CharacterDevice.cpp
 | |
|     Devices/Device.cpp
 | |
|     Devices/FullDevice.cpp
 | |
|     Devices/MemoryDevice.cpp
 | |
|     Devices/NullDevice.cpp
 | |
|     Devices/PCISerialDevice.cpp
 | |
|     Devices/PCSpeaker.cpp
 | |
|     Devices/RandomDevice.cpp
 | |
|     Devices/SB16.cpp
 | |
|     Devices/SerialDevice.cpp
 | |
|     Devices/VMWareBackdoor.cpp
 | |
|     Devices/ZeroDevice.cpp
 | |
|     Devices/HID/I8042Controller.cpp
 | |
|     Devices/HID/HIDManagement.cpp
 | |
|     Devices/HID/KeyboardDevice.cpp
 | |
|     Devices/HID/MouseDevice.cpp
 | |
|     Devices/HID/PS2KeyboardDevice.cpp
 | |
|     Devices/HID/PS2MouseDevice.cpp
 | |
|     Devices/HID/VMWareMouseDevice.cpp
 | |
|     GlobalProcessExposed.cpp
 | |
|     Graphics/Console/GenericFramebufferConsole.cpp
 | |
|     Graphics/Console/ContiguousFramebufferConsole.cpp
 | |
|     Graphics/Console/TextModeConsole.cpp
 | |
|     Graphics/Console/VGAConsole.cpp
 | |
|     Graphics/BochsGraphicsAdapter.cpp
 | |
|     Graphics/FramebufferDevice.cpp
 | |
|     Graphics/GraphicsManagement.cpp
 | |
|     Graphics/Intel/NativeGraphicsAdapter.cpp
 | |
|     Graphics/VirtIOGPU/VirtIOFrameBufferDevice.cpp
 | |
|     Graphics/VirtIOGPU/VirtIOGPUConsole.cpp
 | |
|     Graphics/VirtIOGPU/VirtIOGPU.cpp
 | |
|     Graphics/VirtIOGPU/VirtIOGraphicsAdapter.cpp
 | |
|     Graphics/VGACompatibleAdapter.cpp
 | |
|     Storage/Partition/DiskPartition.cpp
 | |
|     Storage/Partition/DiskPartitionMetadata.cpp
 | |
|     Storage/Partition/EBRPartitionTable.cpp
 | |
|     Storage/Partition/GUIDPartitionTable.cpp
 | |
|     Storage/Partition/MBRPartitionTable.cpp
 | |
|     Storage/Partition/PartitionTable.cpp
 | |
|     Storage/StorageDevice.cpp
 | |
|     Storage/AHCIController.cpp
 | |
|     Storage/AHCIPort.cpp
 | |
|     Storage/AHCIPortHandler.cpp
 | |
|     Storage/SATADiskDevice.cpp
 | |
|     Storage/BMIDEChannel.cpp
 | |
|     Storage/IDEController.cpp
 | |
|     Storage/IDEChannel.cpp
 | |
|     Storage/PATADiskDevice.cpp
 | |
|     Storage/RamdiskController.cpp
 | |
|     Storage/RamdiskDevice.cpp
 | |
|     Storage/StorageManagement.cpp
 | |
|     DoubleBuffer.cpp
 | |
|     FileSystem/AnonymousFile.cpp
 | |
|     FileSystem/BlockBasedFileSystem.cpp
 | |
|     FileSystem/Custody.cpp
 | |
|     FileSystem/DevFS.cpp
 | |
|     FileSystem/DevPtsFS.cpp
 | |
|     FileSystem/Ext2FileSystem.cpp
 | |
|     FileSystem/FIFO.cpp
 | |
|     FileSystem/File.cpp
 | |
|     FileSystem/FileBackedFileSystem.cpp
 | |
|     FileSystem/FileDescription.cpp
 | |
|     FileSystem/FileSystem.cpp
 | |
|     FileSystem/Inode.cpp
 | |
|     FileSystem/InodeFile.cpp
 | |
|     FileSystem/InodeWatcher.cpp
 | |
|     FileSystem/Mount.cpp
 | |
|     FileSystem/Plan9FileSystem.cpp
 | |
|     FileSystem/ProcFS.cpp
 | |
|     FileSystem/SysFS.cpp
 | |
|     FileSystem/SysFSComponent.cpp
 | |
|     FileSystem/TmpFS.cpp
 | |
|     FileSystem/VirtualFileSystem.cpp
 | |
|     FutexQueue.cpp
 | |
|     Interrupts/APIC.cpp
 | |
|     Interrupts/GenericInterruptHandler.cpp
 | |
|     Interrupts/IOAPIC.cpp
 | |
|     Interrupts/IRQHandler.cpp
 | |
|     Interrupts/InterruptManagement.cpp
 | |
|     Interrupts/PIC.cpp
 | |
|     Interrupts/SharedIRQHandler.cpp
 | |
|     Interrupts/SpuriousInterruptHandler.cpp
 | |
|     Interrupts/UnhandledInterruptHandler.cpp
 | |
|     KBufferBuilder.cpp
 | |
|     KLexicalPath.cpp
 | |
|     KString.cpp
 | |
|     KSyms.cpp
 | |
|     Lock.cpp
 | |
|     Net/E1000ENetworkAdapter.cpp
 | |
|     Net/E1000NetworkAdapter.cpp
 | |
|     Net/IPv4Socket.cpp
 | |
|     Net/LocalSocket.cpp
 | |
|     Net/LoopbackAdapter.cpp
 | |
|     Net/NE2000NetworkAdapter.cpp
 | |
|     Net/NetworkAdapter.cpp
 | |
|     Net/NetworkingManagement.cpp
 | |
|     Net/NetworkTask.cpp
 | |
|     Net/RTL8139NetworkAdapter.cpp
 | |
|     Net/RTL8168NetworkAdapter.cpp
 | |
|     Net/Routing.cpp
 | |
|     Net/Socket.cpp
 | |
|     Net/TCPSocket.cpp
 | |
|     Net/UDPSocket.cpp
 | |
|     Panic.cpp
 | |
|     PerformanceEventBuffer.cpp
 | |
|     Process.cpp
 | |
|     ProcessExposed.cpp
 | |
|     ProcessSpecificExposed.cpp
 | |
|     ProcessGroup.cpp
 | |
|     RTC.cpp
 | |
|     Random.cpp
 | |
|     Scheduler.cpp
 | |
|     StdLib.cpp
 | |
|     Syscall.cpp
 | |
|     Syscalls/anon_create.cpp
 | |
|     Syscalls/access.cpp
 | |
|     Syscalls/alarm.cpp
 | |
|     Syscalls/beep.cpp
 | |
|     Syscalls/chdir.cpp
 | |
|     Syscalls/chmod.cpp
 | |
|     Syscalls/chown.cpp
 | |
|     Syscalls/chroot.cpp
 | |
|     Syscalls/clock.cpp
 | |
|     Syscalls/debug.cpp
 | |
|     Syscalls/disown.cpp
 | |
|     Syscalls/dup2.cpp
 | |
|     Syscalls/emuctl.cpp
 | |
|     Syscalls/execve.cpp
 | |
|     Syscalls/exit.cpp
 | |
|     Syscalls/fcntl.cpp
 | |
|     Syscalls/fork.cpp
 | |
|     Syscalls/ftruncate.cpp
 | |
|     Syscalls/futex.cpp
 | |
|     Syscalls/get_dir_entries.cpp
 | |
|     Syscalls/get_stack_bounds.cpp
 | |
|     Syscalls/getrandom.cpp
 | |
|     Syscalls/getuid.cpp
 | |
|     Syscalls/hostname.cpp
 | |
|     Syscalls/ioctl.cpp
 | |
|     Syscalls/keymap.cpp
 | |
|     Syscalls/kill.cpp
 | |
|     Syscalls/link.cpp
 | |
|     Syscalls/lseek.cpp
 | |
|     Syscalls/mkdir.cpp
 | |
|     Syscalls/mknod.cpp
 | |
|     Syscalls/mmap.cpp
 | |
|     Syscalls/module.cpp
 | |
|     Syscalls/mount.cpp
 | |
|     Syscalls/open.cpp
 | |
|     Syscalls/perf_event.cpp
 | |
|     Syscalls/pipe.cpp
 | |
|     Syscalls/pledge.cpp
 | |
|     Syscalls/prctl.cpp
 | |
|     Syscalls/process.cpp
 | |
|     Syscalls/profiling.cpp
 | |
|     Syscalls/ptrace.cpp
 | |
|     Syscalls/purge.cpp
 | |
|     Syscalls/read.cpp
 | |
|     Syscalls/readlink.cpp
 | |
|     Syscalls/realpath.cpp
 | |
|     Syscalls/rename.cpp
 | |
|     Syscalls/rmdir.cpp
 | |
|     Syscalls/sched.cpp
 | |
|     Syscalls/select.cpp
 | |
|     Syscalls/sendfd.cpp
 | |
|     Syscalls/setpgid.cpp
 | |
|     Syscalls/setuid.cpp
 | |
|     Syscalls/shutdown.cpp
 | |
|     Syscalls/sigaction.cpp
 | |
|     Syscalls/socket.cpp
 | |
|     Syscalls/stat.cpp
 | |
|     Syscalls/statvfs.cpp
 | |
|     Syscalls/sync.cpp
 | |
|     Syscalls/sysconf.cpp
 | |
|     Syscalls/thread.cpp
 | |
|     Syscalls/times.cpp
 | |
|     Syscalls/ttyname.cpp
 | |
|     Syscalls/umask.cpp
 | |
|     Syscalls/uname.cpp
 | |
|     Syscalls/unlink.cpp
 | |
|     Syscalls/unveil.cpp
 | |
|     Syscalls/utime.cpp
 | |
|     Syscalls/waitid.cpp
 | |
|     Syscalls/inode_watcher.cpp
 | |
|     Syscalls/write.cpp
 | |
|     TTY/ConsoleManagement.cpp
 | |
|     TTY/MasterPTY.cpp
 | |
|     TTY/PTYMultiplexer.cpp
 | |
|     TTY/SlavePTY.cpp
 | |
|     TTY/TTY.cpp
 | |
|     TTY/VirtualConsole.cpp
 | |
|     Tasks/FinalizerTask.cpp
 | |
|     Tasks/SyncTask.cpp
 | |
|     Thread.cpp
 | |
|     ThreadBlockers.cpp
 | |
|     ThreadTracer.cpp
 | |
|     Time/APICTimer.cpp
 | |
|     Time/HPET.cpp
 | |
|     Time/HPETComparator.cpp
 | |
|     Time/PIT.cpp
 | |
|     Time/RTC.cpp
 | |
|     Time/TimeManagement.cpp
 | |
|     TimerQueue.cpp
 | |
|     UBSanitizer.cpp
 | |
|     UserOrKernelBuffer.cpp
 | |
|     VirtIO/VirtIO.cpp
 | |
|     VirtIO/VirtIOConsole.cpp
 | |
|     VirtIO/VirtIOConsolePort.cpp
 | |
|     VirtIO/VirtIOQueue.cpp
 | |
|     VirtIO/VirtIORNG.cpp
 | |
|     VM/AnonymousVMObject.cpp
 | |
|     VM/ContiguousVMObject.cpp
 | |
|     VM/InodeVMObject.cpp
 | |
|     VM/MemoryManager.cpp
 | |
|     VM/PageDirectory.cpp
 | |
|     VM/PhysicalPage.cpp
 | |
|     VM/PhysicalRegion.cpp
 | |
|     VM/PrivateInodeVMObject.cpp
 | |
|     VM/ProcessPagingScope.cpp
 | |
|     VM/PurgeablePageRanges.cpp
 | |
|     VM/Range.cpp
 | |
|     VM/RangeAllocator.cpp
 | |
|     VM/Region.cpp
 | |
|     VM/RingBuffer.cpp
 | |
|     VM/ScatterGatherList.cpp
 | |
|     VM/SharedInodeVMObject.cpp
 | |
|     VM/Space.cpp
 | |
|     VM/VMObject.cpp
 | |
|     WaitQueue.cpp
 | |
|     WorkQueue.cpp
 | |
|     init.cpp
 | |
|     kprintf.cpp
 | |
| )
 | |
| 
 | |
| set(KERNEL_SOURCES
 | |
|     ${KERNEL_SOURCES}
 | |
|     ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/${KERNEL_ARCH}/ASM_wrapper.cpp
 | |
|     ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/${KERNEL_ARCH}/Boot/ap_setup.S
 | |
|     ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/${KERNEL_ARCH}/InterruptEntry.cpp
 | |
|     ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/${KERNEL_ARCH}/Processor.cpp
 | |
| )
 | |
| 
 | |
| set(KERNEL_SOURCES
 | |
|     ${KERNEL_SOURCES}
 | |
|     ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/ASM_wrapper.cpp
 | |
|     ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/Boot/boot.S
 | |
|     ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/Boot/multiboot.S
 | |
|     ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/CPU.cpp
 | |
|     ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/Interrupts.cpp
 | |
|     ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/Processor.cpp
 | |
|     ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/ProcessorInfo.cpp
 | |
|     ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/SafeMem.cpp
 | |
|     ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/TrapFrame.cpp
 | |
| )
 | |
| 
 | |
| set(AK_SOURCES
 | |
|     ../AK/FlyString.cpp
 | |
|     ../AK/GenericLexer.cpp
 | |
|     ../AK/Hex.cpp
 | |
|     ../AK/String.cpp
 | |
|     ../AK/StringBuilder.cpp
 | |
|     ../AK/StringImpl.cpp
 | |
|     ../AK/StringUtils.cpp
 | |
|     ../AK/StringView.cpp
 | |
|     ../AK/Time.cpp
 | |
|     ../AK/Format.cpp
 | |
|     ../AK/UUID.cpp
 | |
| )
 | |
| 
 | |
| set(ELF_SOURCES
 | |
|     ../Userland/Libraries/LibELF/Image.cpp
 | |
|     ../Userland/Libraries/LibELF/Validation.cpp
 | |
| )
 | |
| 
 | |
| generate_state_machine(../Userland/Libraries/LibVT/StateMachine.txt ../Userland/Libraries/LibVT/EscapeSequenceStateMachine.h)
 | |
| 
 | |
| set(VT_SOURCES
 | |
|     ../Userland/Libraries/LibVT/Terminal.cpp
 | |
|     ../Userland/Libraries/LibVT/Line.cpp
 | |
|     ../Userland/Libraries/LibVT/EscapeSequenceParser.cpp
 | |
| )
 | |
| 
 | |
| set(KEYBOARD_SOURCES
 | |
|     ../Userland/Libraries/LibKeyboard/CharacterMap.cpp
 | |
| )
 | |
| 
 | |
| set(CRYPTO_SOURCES
 | |
|     ../Userland/Libraries/LibCrypto/Cipher/AES.cpp
 | |
|     ../Userland/Libraries/LibCrypto/Hash/SHA2.cpp
 | |
| )
 | |
| 
 | |
| set(SOURCES
 | |
|     ${KERNEL_SOURCES}
 | |
|     ${AK_SOURCES}
 | |
|     ${ELF_SOURCES}
 | |
|     ${VT_SOURCES}
 | |
|     ${KEYBOARD_SOURCES}
 | |
|     ${CRYPTO_SOURCES}
 | |
| )
 | |
| 
 | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option -Wvla -Wnull-dereference")
 | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -ffreestanding -fbuiltin")
 | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mno-80387 -mno-mmx -mno-sse -mno-sse2")
 | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-asynchronous-unwind-tables")
 | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-strong")
 | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
 | |
| if (NOT ${CMAKE_HOST_SYSTEM_NAME} MATCHES SerenityOS)
 | |
|     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostdlib -nostdinc -nostdinc++")
 | |
| endif()
 | |
| 
 | |
| if ("${SERENITY_ARCH}" STREQUAL "x86_64")
 | |
|     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcmodel=large -fno-pic -mno-red-zone")
 | |
| else()
 | |
|     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pie -fPIE")
 | |
| endif()
 | |
| 
 | |
| # Kernel Undefined Behavior Sanitizer (KUBSAN)
 | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined")
 | |
| 
 | |
| # Kernel Address Sanitize (KASAN) implementation is still a work in progress, this option
 | |
| # is not currently meant to be used, besides when developing Kernel ASAN support.
 | |
| #
 | |
| if (ENABLE_KERNEL_ADDRESS_SANITIZER)
 | |
|     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=kernel-address")
 | |
| endif()
 | |
| 
 | |
| add_compile_definitions(KERNEL)
 | |
| 
 | |
| # HACK: This is a workaround for CLion to grok the kernel sources.
 | |
| #       It's needed because CLion doesn't understand the way we switch compilers mid-build.
 | |
| add_compile_definitions(__serenity__)
 | |
| 
 | |
| add_link_options(LINKER:-T ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld -nostdlib)
 | |
| 
 | |
| add_library(kernel_heap STATIC ${KERNEL_HEAP_SOURCES})
 | |
| 
 | |
| if (${CMAKE_HOST_SYSTEM_NAME} MATCHES SerenityOS)
 | |
|     include_directories(/usr/local/include/c++/${GCC_VERSION}/)
 | |
| else()
 | |
|     if (NOT EXISTS ${TOOLCHAIN_ROOT}/${SERENITY_ARCH}-pc-serenity/include/c++/${GCC_VERSION}/)
 | |
|         message(FATAL_ERROR "Toolchain version ${GCC_VERSION} appears to be missing! Please run: Meta/serenity.sh rebuild-toolchain")
 | |
|     endif()
 | |
|     include_directories(${TOOLCHAIN_ROOT}/${SERENITY_ARCH}-pc-serenity/include/c++/${GCC_VERSION}/)
 | |
|     include_directories(${TOOLCHAIN_ROOT}/${SERENITY_ARCH}-pc-serenity/include/c++/${GCC_VERSION}/${SERENITY_ARCH}-pc-serenity/)
 | |
|     link_directories(${TOOLCHAIN_ROOT}/${SERENITY_ARCH}-pc-serenity/lib)
 | |
|     link_directories(${TOOLCHAIN_ROOT}/lib/gcc/${SERENITY_ARCH}-pc-serenity/${GCC_VERSION}/)
 | |
| endif()
 | |
| 
 | |
| if ("${SERENITY_ARCH}" STREQUAL "i686")
 | |
|     set(KERNEL_TARGET Kernel32)
 | |
| else()
 | |
|     set(KERNEL_TARGET Kernel64)
 | |
| endif()
 | |
| 
 | |
| add_executable(${KERNEL_TARGET} ${SOURCES})
 | |
| add_dependencies(${KERNEL_TARGET} generate_EscapeSequenceStateMachine.h)
 | |
| 
 | |
| set_target_properties(${KERNEL_TARGET} PROPERTIES LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld)
 | |
| 
 | |
| if (ENABLE_KERNEL_LTO)
 | |
|     include(CheckIPOSupported)
 | |
|     check_ipo_supported()
 | |
|     set_property(TARGET ${KERNEL_TARGET} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
 | |
| endif()
 | |
| target_link_libraries(${KERNEL_TARGET} kernel_heap gcc)
 | |
| add_dependencies(${KERNEL_TARGET} kernel_heap)
 | |
| 
 | |
| add_custom_command(
 | |
|     TARGET ${KERNEL_TARGET} POST_BUILD
 | |
|     COMMAND ${TOOLCHAIN_PREFIX}objcopy -O elf32-i386 ${CMAKE_CURRENT_BINARY_DIR}/${KERNEL_TARGET} ${CMAKE_CURRENT_BINARY_DIR}/Kernel
 | |
|     BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/Kernel
 | |
| )
 | |
| 
 | |
| install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Kernel" DESTINATION boot)
 | |
| 
 | |
| add_custom_command(
 | |
|     TARGET ${KERNEL_TARGET} POST_BUILD
 | |
|     COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/mkmap.sh
 | |
| )
 | |
| install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kernel.map DESTINATION res)
 | |
| 
 | |
| serenity_install_headers(Kernel)
 | |
| serenity_install_sources(Kernel)
 | |
| 
 | |
| add_subdirectory(Modules)
 | 
