Newer
Older
minerva / Userland / Libraries / LibELF / CMakeLists.txt
@minerva minerva on 13 Jul 954 bytes Initial commit
set(SOURCES
    Image.cpp
    Validation.cpp
)

minerva_install_headers("LibELF")
minerva_install_sources("Userland/Libraries/LibELF")

if (MINERVA)
    list(APPEND SOURCES
        Arch/${MINERVA_ARCH}/entry.S
        Arch/${MINERVA_ARCH}/plt_trampoline.S
        Arch/${MINERVA_ARCH}/tls.cpp
        DynamicLinker.cpp
        DynamicLoader.cpp
        DynamicObject.cpp
        ELFBuild.cpp
        Relocation.cpp
    )

    if (MINERVA_ARCH STREQUAL "aarch64")
        list(APPEND SOURCES
            Arch/aarch64/tls.S
        )
    elseif (MINERVA_ARCH STREQUAL "riscv64")
        list(APPEND SOURCES
            Arch/riscv64/ExtensionBitmask.cpp
        )
    endif()

    add_library(DynamicLoader_LibELF STATIC ${SOURCES})
    target_link_libraries(DynamicLoader_LibELF
        PUBLIC DynamicLoader_CompileOptions
        PRIVATE DynamicLoader_LibC
    )
endif()

minerva_lib(LibELF elf ${SOURCES})
target_link_libraries(LibELF PRIVATE LibSystem)