cmake_minimum_required(VERSION 3.20)
project(JanusPayload C CXX ASM)

# Requires a RISC-V cross-compiler:
#   apt install gcc-riscv64-linux-gnu g++-riscv64-linux-gnu
# Or pass -DCMAKE_TOOLCHAIN_FILE=../cmake/riscv64.cmake

set(CMAKE_CXX_STANDARD 17)

add_executable(payload
    crt0.S
    main.cpp
)

target_compile_options(payload PRIVATE
    -nostdlib
    -fno-exceptions
    -fno-rtti
    -fPIC
    -Os
    -march=rv64imac
    -mabi=lp64
)

target_link_options(payload PRIVATE
    -nostdlib
    -static
    -fuse-ld=lld      # requires: sudo apt install lld
    -T ${CMAKE_CURRENT_SOURCE_DIR}/link.ld
)

# After build, generate flat binary + run embed_payload.py
add_custom_command(TARGET payload POST_BUILD
    COMMAND python3 ${CMAKE_SOURCE_DIR}/../tools/embed_payload.py
            $<TARGET_FILE:payload>
            ${CMAKE_SOURCE_DIR}/../src/loader/payload_blob.cpp
    COMMENT "Embedding payload into loader"
)
