cmake_minimum_required(VERSION 3.20)
project(VMObfuscator)

find_package(LLVM REQUIRED CONFIG)

message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")

include_directories(${LLVM_INCLUDE_DIRS} include)
separate_arguments(LLVM_DEFINITIONS_LIST NATIVE_COMMAND ${LLVM_DEFINITIONS})
add_definitions(${LLVM_DEFINITIONS_LIST})

# Build the (single) pass as a loadable module
add_library(VMObfuscatorPass MODULE src/pass/VMObfuscatorPass.cpp)

# LLVM is built without RTTI by default
set_target_properties(VMObfuscatorPass PROPERTIES
    COMPILE_FLAGS "-fno-rtti"
    POSITION_INDEPENDENT_CODE ON
)

# Link against LLVM libraries
target_link_libraries(VMObfuscatorPass PRIVATE ${LLVM_LIBRARIES})
