feature (build system): setup a build system
This commit is contained in:
parent
4dc0bd6477
commit
0f52c02435
|
@ -0,0 +1,2 @@
|
||||||
|
cmake-build-debug
|
||||||
|
build
|
|
@ -0,0 +1,25 @@
|
||||||
|
cmake_minimum_required(VERSION 3.00)
|
||||||
|
project(libc)
|
||||||
|
set(C 99)
|
||||||
|
|
||||||
|
set(CMAKE_NASM_COMPILE_OBJECT "nasm <INCLUDES> <FLAGS> -o <OBJECT> <SOURCE>")
|
||||||
|
|
||||||
|
|
||||||
|
add_library(libc)
|
||||||
|
add_library(libc_asm OBJECT)
|
||||||
|
target_include_directories(libc PRIVATE inc)
|
||||||
|
file(GLOB_RECURSE libc_src_c "src/**/*.c")
|
||||||
|
file(GLOB_RECURSE libc_inc "inc/**/*.h")
|
||||||
|
file(GLOB_RECURSE libc_src_asm "src/**/*.asm")
|
||||||
|
|
||||||
|
|
||||||
|
target_compile_options(libc PRIVATE "-g -fno-stack-protector -fno-stack-check -ffreestanding -m64 -march=x86-64 -mabi=sysv")
|
||||||
|
target_link_options(libc PRIVATE "-Bsymbolic -nostdlib -shared -fno-stack-protector")
|
||||||
|
|
||||||
|
enable_language(ASM_NASM)
|
||||||
|
set(CAN_USE_ASSEMBLER TRUE)
|
||||||
|
set_target_properties(libc PROPERTIES PREFIX "")
|
||||||
|
set_target_properties(libc PROPERTIES SUFFIX ".so")
|
||||||
|
|
||||||
|
target_sources(libc_asm PRIVATE ${libc_src_asm})
|
||||||
|
target_sources(libc PRIVATE ${libc_src_c} ${libc_inc} $<TARGET_OBJECTS:libc_asm>)
|
|
@ -0,0 +1,52 @@
|
||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
# This file is part of noxos and licensed under the MIT open source license
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
workspace_setup() {
|
||||||
|
echo " --> Setting up workspace"
|
||||||
|
mkdir -pv build
|
||||||
|
mkdir -pv build/cmake
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
check_toolchain() {
|
||||||
|
echo " --> Checking Toolchain"
|
||||||
|
hash gcc
|
||||||
|
echo " |--> found gcc"
|
||||||
|
hash ld
|
||||||
|
echo " |--> found ld"
|
||||||
|
hash nasm
|
||||||
|
echo " |--> found nasm"
|
||||||
|
hash cmake
|
||||||
|
echo " |--> found cmake"
|
||||||
|
|
||||||
|
echo " --> All checks passed"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
libc_build() {
|
||||||
|
echo " --> Building the noxos standard library"
|
||||||
|
cd build/cmake
|
||||||
|
cmake -S ../.. -B .
|
||||||
|
make
|
||||||
|
cd ../..
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
echo "!=====[ NoxOS libc build script ]=====!"
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
"check")
|
||||||
|
check_toolchain
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
workspace_setup
|
||||||
|
libc_build
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "!=====[ Finished ]=====!"
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
; This file is part of noxos and licensed under the MIT open source license
|
||||||
|
|
||||||
|
syscall_perform:
|
||||||
|
; set the interrupt ID
|
||||||
|
mov rax, rdi
|
||||||
|
|
||||||
|
; set the arguments
|
||||||
|
mov rdi, rsi
|
||||||
|
mov rsi, rdx
|
||||||
|
mov rdx, rcx
|
||||||
|
mov rcx, r8
|
||||||
|
|
||||||
|
int 0x80
|
||||||
|
|
||||||
|
; the return value is already set in RAX
|
||||||
|
|
||||||
|
ret
|
||||||
|
GLOBAL syscall_perform
|
|
@ -0,0 +1 @@
|
||||||
|
// This file is part of noxos and licensed under the MIT open source license
|
Loading…
Reference in New Issue