wip swift in kernel
This commit is contained in:
+31
-2
@@ -1,6 +1,10 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(ksOSKernel LANGUAGES ASM C)
|
||||
|
||||
set(SWIFT_TOOLCHAIN "$ENV{HOME}/Library/Developer/Toolchains/swift-6.2.3-RELEASE.xctoolchain")
|
||||
set(SWIFTC "${SWIFT_TOOLCHAIN}/usr/bin/swiftc")
|
||||
set(SWIFT_RESOURCE_DIR "${SWIFT_TOOLCHAIN}/usr/lib/swift")
|
||||
|
||||
add_compile_options(-ffreestanding -nostdlib -O0 -g)
|
||||
|
||||
set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld)
|
||||
@@ -11,8 +15,33 @@ add_link_options(
|
||||
-Wl,-T,${LINKER_SCRIPT}
|
||||
)
|
||||
|
||||
add_executable(kernel.elf Source/entry.S)
|
||||
set(SWIFT_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Source/kernel.swift)
|
||||
set(SWIFT_OBJ ${CMAKE_CURRENT_BINARY_DIR}/kernel_swift.o)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${SWIFT_OBJ}
|
||||
COMMAND ${SWIFTC}
|
||||
-target aarch64-none-none-elf
|
||||
-enable-experimental-feature Embedded
|
||||
-parse-as-library
|
||||
-wmo
|
||||
-O
|
||||
-Xcc -fno-stack-protector
|
||||
-resource-dir ${SWIFT_RESOURCE_DIR}
|
||||
-c ${SWIFT_SOURCES}
|
||||
-o ${SWIFT_OBJ}
|
||||
DEPENDS ${SWIFT_SOURCES}
|
||||
COMMENT "Compiling Swift kernel"
|
||||
)
|
||||
|
||||
set_source_files_properties(${SWIFT_OBJ} PROPERTIES
|
||||
EXTERNAL_OBJECT TRUE
|
||||
GENERATED TRUE
|
||||
)
|
||||
|
||||
add_executable(kernel.elf Source/entry.S Source/stubs.c ${SWIFT_OBJ})
|
||||
|
||||
add_custom_command(TARGET kernel.elf POST_BUILD
|
||||
COMMAND ${LLVM_OBJCOPY} -O binary kernel.elf kernel.bin
|
||||
COMMENT "kernel.elf -> kernel.bin"
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user