cmake_minimum_required(VERSION 3.17.0) # Start Project project(runtime) # Warnings add_compile_options(-Wall -Wextra -Werror -Wpointer-arith -Wshadow -Wnull-dereference) # Headers add_subdirectory(lib) if(TARGET trampoline) return() endif() # Build add_executable(runtime src/main.cpp src/trampoline.cpp src/pipe/loop.cpp src/pipe/main.cpp src/pipe/memory.cpp ) # QEMU include(CheckSymbolExists) check_symbol_exists("__ARM_ARCH" "" DONT_USE_QEMU) if(NOT DONT_USE_QEMU) add_subdirectory(qemu) target_sources(runtime PRIVATE src/syscall/main.cpp src/syscall/handler.cpp src/qemu/qemu.cpp ) endif() # Link target_link_libraries(runtime dl rt trampoline-headers ) # External Library set(TRAMPOLINE_LIBRARY_NAME "trampoline" CACHE STRING "Trampoline Library That The Runtime Uses") target_compile_definitions(runtime PRIVATE "TRAMPOLINE_LIBRARY=\"lib${TRAMPOLINE_LIBRARY_NAME}.so\"") # Install if(DEFINED MCPI_LIB_DIR) install(TARGETS runtime DESTINATION "${MCPI_LIB_DIR}") # License install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" DESTINATION "${MCPI_LEGAL_DIR}/${PROJECT_NAME}") # RPath set_target_properties(runtime PROPERTIES INSTALL_RPATH "$ORIGIN") target_link_options(runtime PRIVATE "LINKER:--disable-new-dtags") endif()