cmake_minimum_required(VERSION 3.16) project(vgpu-streamer C) set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS OFF) # strict c11; shim uses __asm__/__atomic_* — ok add_library(vgpustream STATIC src/stream/publish.c src/stream/win32/region.c src/stream/win32/present.c src/stream/win32/cursor.c src/stream/win32/capture.c src/stream/win32/capture_nvfbc.c src/stream/win32/capture_dda.c src/stream/win32/capture_gdi.c) target_include_directories(vgpustream PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/stream/include ${CMAKE_CURRENT_SOURCE_DIR}/src/stream/win32 ${CMAKE_CURRENT_SOURCE_DIR}/third_party) # vendor NvFBC + Windows.h shim target_compile_definitions(vgpustream PRIVATE CINTERFACE WIN32_LEAN_AND_MEAN=) target_compile_options(vgpustream PRIVATE $<$:-O2;-Wall;-Wextra> $<$:/O2;/W3>) target_link_libraries(vgpustream PRIVATE d3d11 dxgi dxguid uuid user32 gdi32) add_executable(vgpu-streamer src/stream/win32/main.c) set_target_properties(vgpu-streamer PROPERTIES OUTPUT_NAME vgpu-streamer) target_include_directories(vgpu-streamer PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/src/stream/include ${CMAKE_CURRENT_SOURCE_DIR}/src/stream/win32) target_link_libraries(vgpu-streamer PRIVATE vgpustream) target_link_options(vgpu-streamer PRIVATE $<$:-static;-s>)