2026-07-19 13:34:32 +01:00
|
|
|
cmake_minimum_required(VERSION 3.31)
|
|
|
|
|
project(ld C ASM)
|
|
|
|
|
|
2026-02-19 19:30:07 +00:00
|
|
|
file(GLOB c_sources *.c *.h)
|
|
|
|
|
file(GLOB arch_sources arch/${CMAKE_SYSTEM_PROCESSOR}/*.S)
|
|
|
|
|
|
|
|
|
|
add_executable(ld ${c_sources} ${arch_sources})
|
|
|
|
|
set_target_properties(ld PROPERTIES
|
|
|
|
|
POSITION_INDEPENDENT_CODE ON
|
|
|
|
|
OUTPUT_NAME "ld64"
|
|
|
|
|
SUFFIX ".so")
|
|
|
|
|
|
2026-07-19 13:34:32 +01:00
|
|
|
set(libc_deps
|
|
|
|
|
libc-core.a libc-malloc.a libc-io.a)
|
2026-03-06 20:19:46 +00:00
|
|
|
target_link_libraries(ld
|
2026-07-19 13:34:32 +01:00
|
|
|
"$<LINK_GROUP:cross_refs,${libc_deps}>"
|
|
|
|
|
libmagenta.a librosetta.a -l:libxpc.a)
|
2026-02-19 19:30:07 +00:00
|
|
|
|
|
|
|
|
target_compile_options(ld PRIVATE
|
2026-05-30 10:17:43 +01:00
|
|
|
-fvisibility=hidden
|
2026-02-19 19:30:07 +00:00
|
|
|
-fPIC -fno-stack-protector -nostdlib -ffreestanding)
|
|
|
|
|
target_link_options(ld PRIVATE
|
2026-05-30 10:17:43 +01:00
|
|
|
-fvisibility=hidden -Wl,--exclude-libs,ALL
|
|
|
|
|
# -Wl,--entry="_ld_start"
|
|
|
|
|
-T ${CMAKE_CURRENT_SOURCE_DIR}/arch/${CMAKE_SYSTEM_PROCESSOR}/layout.ld
|
2026-02-19 19:30:07 +00:00
|
|
|
-fPIC -nostdlib -ffreestanding -Wl,-shared)
|
2026-07-19 13:34:32 +01:00
|
|
|
install(TARGETS ld DESTINATION lib)
|