1project(gfx-streaming-kit) 2cmake_minimum_required(VERSION 3.11) 3 4if (WIN32) 5 add_definitions("-DUNICODE -D_UNICODE -DNOMINMAX -DEMUGL_BUILD -DVK_USE_PLATFORM_WIN32_KHR -DBUILDING_EMUGL_COMMON_SHARED") 6 add_definitions(/MP) 7endif() 8 9find_package(Threads) 10include(ExternalProject) 11enable_testing() 12 13# set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) 14set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) 15set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) 16set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/distribution) 17if (WIN32) 18else() 19 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3 -O3") 20endif() 21set(CMAKE_POSITION_INDEPENDENT_CODE ON) 22set(CMAKE_CXX_STANDARD 17) 23set(CMAKE_C_STANDARD 11) 24 25if (APPLE) 26 add_compile_definitions(VK_USE_PLATFORM_MACOS_MVK) 27elseif(UNIX) 28 # TODO(kaiyili, b/179477624): Add Linux specific Vulkan platform macro definitions 29elseif(WIN32) 30 add_compile_definitions(VK_USE_PLATFORM_WIN32_KHR) 31endif() 32 33add_compile_definitions(GLM_FORCE_RADIANS) 34add_compile_definitions(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES) 35 36if (MSVC) 37 # ask msvc not to warn not secure C ISO functions 38 add_compile_definitions(_CRT_SECURE_NO_WARNINGS) 39 # ask msvc not to warn non C ISO POSIX functions 40 add_compile_definitions(_CRT_NONSTDC_NO_DEPRECATE) 41endif() 42 43# Uncomment for ASAN support 44# set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -fsanitize=address") 45# set (CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -fno-omit-frame-pointer -fsanitize=address") 46 47# GoogleTest support: uses CMake ExternalProject to pull in external repo 48# without manual steps (during CMake build script generation phase) 49include(gtest.cmake) 50 51set(GFXSTREAM_REPO_ROOT ${CMAKE_CURRENT_SOURCE_DIR}) 52 53include(android.cmake) 54 55# Third party dependencies 56add_subdirectory(third-party) 57 58# Common base libraries for host################################################ 59 60add_subdirectory(base) 61add_subdirectory(snapshot) 62add_subdirectory(host-common) 63 64# Backends###################################################################### 65 66add_subdirectory(stream-servers) 67 68# Protocols and associated code generators###################################### 69 70add_subdirectory(protocols) 71 72# Fake Android guest#########################3################################## 73 74if (NOT WIN32) 75 add_subdirectory(fake-android-guest) 76endif() 77 78# Frontends##################################################################### 79 80# add_subdirectory(stream-clients) 81 82# Test environments############################################################# 83 84# add_subdirectory(testenvs) 85 86# Target: Host backend to consume real guest traffic############################ 87 88# Target: Host front+back drivers for test environment########################## 89 90# Target: Host front+back drivers for app isolation############################# 91 92# Tests#################3####################################################### 93add_test(NAME gfxstream-base_unittests COMMAND gfxstream-base_unittests) 94add_test(NAME gfxstream-host-common_unittests COMMAND gfxstream-host-common_unittests) 95add_test(NAME gfxstream_backend_unittests COMMAND gfxstream_backend_unittests) 96add_test(NAME OpenglRender_unittests COMMAND OpenglRender_unittests) 97add_test(NAME OpenglRender_snapshot_unittests COMMAND OpenglRender_snapshot_unittests) 98add_test(NAME Vulkan_unittests COMMAND Vulkan_unittests) 99