cargo-shellcode 0.1.1

Compile a Rust crate into shellcode
cmake_minimum_required(VERSION 3.20)
project(Shellcode)

find_program(LLVM_CONFIG NAMES llvm-config)

if (NOT LLVM_CONFIG)
    message(FATAL_ERROR "llvm-config not found")
endif()

execute_process(
    COMMAND ${LLVM_CONFIG} --cmakedir
    OUTPUT_VARIABLE LLVM_CMAKE_DIR
    OUTPUT_STRIP_TRAILING_WHITESPACE
)

list(APPEND CMAKE_PREFIX_PATH ${LLVM_CMAKE_DIR})

find_package(LLVM REQUIRED CONFIG)

if (${LLVM_PACKAGE_VERSION} VERSION_LESS "15.0.0")
    message(FATAL_ERROR "LLVM version must be at least 15.0.0")
endif()

include_directories(SYSTEM ${LLVM_INCLUDE_DIRS})

if (NOT LLVM_ENABLE_RTTI)
    set(CMAKE_CXX_FLAGS "${CMAXE_CXX_FLAGS} -fno-rtti")
endif()

add_library(${PROJECT_NAME} SHARED Shellcode.cpp)

target_link_libraries(${PROJECT_NAME}
  "$<$<PLATFORM_ID:Darwin>:-undefined dynamic_lookup>")

install(TARGETS ${PROJECT_NAME} DESTINATION lib)