cmake_minimum_required(VERSION 3.31) project(ld C ASM) 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") set(libc_deps libc-core.a libc-malloc.a libc-io.a) target_link_libraries(ld "$" libmagenta.a librosetta.a -l:libxpc.a) target_compile_options(ld PRIVATE -fvisibility=hidden -fPIC -fno-stack-protector -nostdlib -ffreestanding) target_link_options(ld PRIVATE -fvisibility=hidden -Wl,--exclude-libs,ALL # -Wl,--entry="_ld_start" -T ${CMAKE_CURRENT_SOURCE_DIR}/arch/${CMAKE_SYSTEM_PROCESSOR}/layout.ld -fPIC -nostdlib -ffreestanding -Wl,-shared) install(TARGETS ld DESTINATION lib)