Luna/libc/CMakeLists.txt

78 lines
1.8 KiB
CMake
Raw Normal View History

file(GLOB_RECURSE HEADERS include/*.h)
set(SOURCES
${HEADERS}
src/stdio.cpp
src/stdlib.cpp
src/unistd.cpp
src/errno.cpp
src/string.cpp
2023-04-13 19:09:27 +00:00
src/strftime.cpp
src/fcntl.cpp
2023-01-22 11:51:30 +00:00
src/assert.cpp
src/atexit.cpp
2023-01-06 19:48:08 +00:00
src/ctype.cpp
2023-01-06 23:21:08 +00:00
src/time.cpp
src/init.cpp
src/dirent.cpp
src/setjmp.cpp
src/env.cpp
2023-04-08 14:30:18 +00:00
src/pwd.cpp
src/grp.cpp
2023-05-31 20:12:50 +00:00
src/locale.cpp
src/scanf.cpp
2023-07-10 17:46:57 +00:00
src/signal.cpp
2023-03-12 14:32:09 +00:00
src/sys/stat.cpp
src/sys/mman.cpp
2023-03-23 21:42:24 +00:00
src/sys/wait.cpp
2023-04-09 09:24:13 +00:00
src/sys/ioctl.cpp
2023-04-24 19:02:04 +00:00
src/sys/utsname.cpp
src/sys/mount.cpp
src/sys/pstat.cpp
2023-05-20 10:48:17 +00:00
src/sys/resource.cpp
)
if(${LUNA_ARCH} STREQUAL "x86_64")
set(SOURCES
${SOURCES}
src/arch/x86_64/syscall.S
src/arch/x86_64/setjmp.S
2023-07-10 17:46:57 +00:00
src/arch/x86_64/sigreturn.S
)
endif()
add_library(crt0 STATIC src/arch/${LUNA_ARCH}/crt0.S)
add_custom_command(
TARGET crt0
COMMAND "${CMAKE_COMMAND}" -E copy $<TARGET_OBJECTS:crt0> ${LUNA_BASE}/usr/lib/crt0.o
)
add_library(bare_libc STATIC ${SOURCES})
target_link_libraries(bare_libc PUBLIC luna)
target_include_directories(bare_libc PUBLIC include/)
target_compile_options(bare_libc PRIVATE ${COMMON_FLAGS})
target_link_options(bare_libc PRIVATE -nostdlib)
set_target_properties(bare_libc PROPERTIES CXX_STANDARD 20)
add_custom_target(libc
COMMAND ${CMAKE_AR} -x $<TARGET_FILE:bare_libc>
COMMAND ${CMAKE_AR} -x $<TARGET_FILE:luna>
COMMAND ${CMAKE_AR} -rcs ${CMAKE_CURRENT_BINARY_DIR}/libc.a *.o
COMMAND /usr/bin/rm *.o
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS bare_libc luna crt0
)
add_custom_command(
TARGET libc
COMMAND "${CMAKE_COMMAND}" -E copy ${CMAKE_CURRENT_BINARY_DIR}/libc.a ${LUNA_BASE}/usr/lib/libc.a
)
file(WRITE "${LUNA_BASE}/usr/lib/libm.a" "INPUT(libc.a)")
2023-03-29 15:56:56 +00:00
file(WRITE "${LUNA_BASE}/usr/lib/libstdc++.a" "INPUT(libc.a)")