cmake_minimum_required(VERSION 3.16) project(vmctl C) set(CMAKE_C_STANDARD 17) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS ON) # POSIX sockets + linux/uinput.h need gnu extensions option(VMCTL_LTO "Enable LTO" OFF) add_library(vmctl STATIC src/vmctl/qmp.c src/vmctl/open.c src/vmctl/keymap.c src/vmctl/power.c src/vmctl/qmp_driver.c src/vmctl/linux/uinput_driver.c) target_include_directories(vmctl PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/vmctl/include) target_compile_options(vmctl PRIVATE -O2 -Wall -Wextra) set_target_properties(vmctl PROPERTIES POSITION_INDEPENDENT_CODE ON) if(VMCTL_LTO) target_compile_options(vmctl PRIVATE -flto) target_link_options(vmctl PRIVATE -flto) endif()