2023-04-20 21:16:17 +00:00
|
|
|
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)
|
2023-04-20 22:03:39 +00:00
|
|
|
file(GLOB_RECURSE libc_src_c "src/**.c")
|
|
|
|
file(GLOB_RECURSE libc_inc "inc/**.h")
|
|
|
|
file(GLOB_RECURSE libc_src_asm "src/**.asm")
|
2023-04-20 21:16:17 +00:00
|
|
|
|
|
|
|
|
2023-04-20 22:03:39 +00:00
|
|
|
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)
|
2023-04-20 21:16:17 +00:00
|
|
|
|
|
|
|
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>)
|