2023-01-22 15:00:20 +01:00
|
|
|
file(GLOB_RECURSE HEADERS include/*.h)
|
2023-01-06 13:31:14 +01:00
|
|
|
|
|
|
|
set(SOURCES
|
|
|
|
${HEADERS}
|
|
|
|
src/stdio.cpp
|
|
|
|
src/stdlib.cpp
|
|
|
|
src/unistd.cpp
|
2023-01-06 17:35:07 +01:00
|
|
|
src/errno.cpp
|
|
|
|
src/string.cpp
|
2023-04-13 21:09:27 +02:00
|
|
|
src/strftime.cpp
|
2023-03-11 17:45:20 +01:00
|
|
|
src/fcntl.cpp
|
2023-01-22 12:51:30 +01:00
|
|
|
src/assert.cpp
|
2023-01-06 19:40:25 +01:00
|
|
|
src/atexit.cpp
|
2023-01-06 20:48:08 +01:00
|
|
|
src/ctype.cpp
|
2023-01-07 00:21:08 +01:00
|
|
|
src/time.cpp
|
2023-03-18 19:23:18 +01:00
|
|
|
src/init.cpp
|
2023-03-29 01:06:57 +02:00
|
|
|
src/dirent.cpp
|
2023-03-28 19:40:48 +02:00
|
|
|
src/setjmp.cpp
|
2023-04-07 15:03:38 +02:00
|
|
|
src/env.cpp
|
2023-04-08 16:30:18 +02:00
|
|
|
src/pwd.cpp
|
2023-05-06 12:11:35 +02:00
|
|
|
src/grp.cpp
|
2023-05-31 22:12:50 +02:00
|
|
|
src/locale.cpp
|
2023-07-10 19:46:57 +02:00
|
|
|
src/signal.cpp
|
2023-07-12 19:23:06 +02:00
|
|
|
src/termios.cpp
|
2023-08-08 14:14:35 +02:00
|
|
|
src/utime.cpp
|
2023-08-08 15:17:25 +02:00
|
|
|
src/strtod.cpp
|
2023-08-08 20:38:38 +02:00
|
|
|
src/math.cpp
|
2023-09-22 23:02:33 +02:00
|
|
|
src/pty.cpp
|
2023-11-25 12:18:25 +01:00
|
|
|
src/utmp.cpp
|
2024-04-10 22:37:36 +02:00
|
|
|
src/shadow.cpp
|
2023-03-12 15:32:09 +01:00
|
|
|
src/sys/stat.cpp
|
2023-01-13 19:08:02 +01:00
|
|
|
src/sys/mman.cpp
|
2023-03-23 22:42:24 +01:00
|
|
|
src/sys/wait.cpp
|
2023-04-09 11:24:13 +02:00
|
|
|
src/sys/ioctl.cpp
|
2023-04-24 21:02:04 +02:00
|
|
|
src/sys/utsname.cpp
|
2023-05-17 20:30:15 +02:00
|
|
|
src/sys/mount.cpp
|
2023-05-18 21:48:47 +02:00
|
|
|
src/sys/pstat.cpp
|
2023-08-17 20:15:32 +02:00
|
|
|
src/sys/memstat.cpp
|
2023-05-20 12:48:17 +02:00
|
|
|
src/sys/resource.cpp
|
2023-07-27 16:37:10 +02:00
|
|
|
src/sys/socket.cpp
|
2023-08-02 17:19:16 +02:00
|
|
|
src/sys/poll.cpp
|
2023-01-06 13:31:14 +01:00
|
|
|
)
|
|
|
|
|
2023-01-21 22:44:16 +01:00
|
|
|
if(${LUNA_ARCH} STREQUAL "x86_64")
|
2023-01-06 13:31:14 +01:00
|
|
|
set(SOURCES
|
|
|
|
${SOURCES}
|
|
|
|
src/arch/x86_64/syscall.S
|
2023-03-28 19:40:48 +02:00
|
|
|
src/arch/x86_64/setjmp.S
|
2023-07-10 19:46:57 +02:00
|
|
|
src/arch/x86_64/sigreturn.S
|
2023-01-06 13:31:14 +01:00
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2023-01-21 22:44:16 +01:00
|
|
|
add_library(crt0 STATIC src/arch/${LUNA_ARCH}/crt0.S)
|
2023-01-06 13:31:14 +01:00
|
|
|
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/)
|
|
|
|
|
2023-04-07 12:02:49 +02:00
|
|
|
target_compile_options(bare_libc PRIVATE ${COMMON_FLAGS})
|
|
|
|
|
2023-01-06 13:31:14 +01:00
|
|
|
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
|
2023-04-12 18:11:36 +02:00
|
|
|
COMMAND /usr/bin/rm *.o
|
2023-01-06 13:31:14 +01:00
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
2023-01-06 17:59:54 +01:00
|
|
|
DEPENDS bare_libc luna crt0
|
2023-01-06 13:31:14 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
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 17:56:56 +02:00
|
|
|
file(WRITE "${LUNA_BASE}/usr/lib/libstdc++.a" "INPUT(libc.a)")
|