From 9b13be109bc66f4d4a1ad53ce5c92c7c495e41d7 Mon Sep 17 00:00:00 2001
From: "Maxin B. John" <maxin.john@intel.com>
Date: Tue, 24 Jul 2018 17:40:52 +0300
Subject: [PATCH] commit f63cbe944107b5cd8f150ceaaec43b26099d5688

Author: Adam Jackson <ajax@redhat.com>
Date:   Tue Feb 16 10:05:25 2016 -0500

demos: Don't build tri or cube

There are more interesting demos, all we really want here is vulkaninfo.
This helps because we don't need to pre-build glslang/llvm/lunarglass
just to get the loader and layers.

Upstream-Status: Inappropriate [configuration]

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Signed-off-by: Maxin B. John <maxin.john@intel.com>
---
 demos/CMakeLists.txt | 88 ----------------------------------------------------
 1 file changed, 88 deletions(-)

diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt
index 4f32679..26e4cdf 100644
--- a/demos/CMakeLists.txt
+++ b/demos/CMakeLists.txt
@@ -93,42 +93,6 @@ elseif(UNIX)
 else()
 endif()
 
-if(WIN32)
-    # For Windows, since 32-bit and 64-bit items can co-exist, we build each in its own build directory.
-    # 32-bit target data goes in build32, and 64-bit target data goes into build.  So, include/link the
-    # appropriate data at build time.
-    if (CMAKE_CL_64)
-        set (BUILDTGT_DIR build)
-    else ()
-        set (BUILDTGT_DIR build32)
-    endif()
-
-    # Use static MSVCRT libraries
-    foreach(configuration in CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO
-                             CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO)
-        if(${configuration} MATCHES "/MD")
-            string(REGEX REPLACE "/MD" "/MT" ${configuration} "${${configuration}}")
-        endif()
-    endforeach()
-
-   file(COPY cube.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos)
-   file(COPY vulkaninfo.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos)
-endif()
-
-add_custom_command(
-    COMMENT "Compiling cube demo vertex shader"
-    OUTPUT cube.vert.inc
-    COMMAND ${GLSLANG_VALIDATOR} -V -x -o ${CMAKE_CURRENT_BINARY_DIR}/cube.vert.inc ${PROJECT_SOURCE_DIR}/demos/cube.vert
-    MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/demos/cube.vert
-    DEPENDS ${PROJECT_SOURCE_DIR}/demos/cube.vert ${GLSLANG_VALIDATOR}
-)
-add_custom_command(
-    COMMENT "Compiling cube demo fragment shader"
-    OUTPUT cube.frag.inc
-    COMMAND ${GLSLANG_VALIDATOR} -V -x -o ${CMAKE_CURRENT_BINARY_DIR}/cube.frag.inc ${PROJECT_SOURCE_DIR}/demos/cube.frag
-    MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/demos/cube.frag
-    DEPENDS ${PROJECT_SOURCE_DIR}/demos/cube.frag ${GLSLANG_VALIDATOR}
-)
 
 include_directories(${CMAKE_CURRENT_BINARY_DIR})
 
@@ -172,55 +136,3 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
         install(TARGETS ${API_LOWERCASE}info DESTINATION ${CMAKE_INSTALL_BINDIR})
     endif()
 endif()
-
-######################################################################################
-# cube
-
-if(APPLE)
-    include(macOS/cube/cube.cmake)
-elseif(NOT WIN32)
-    if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR})
-        add_executable(cube cube.c ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc)
-        target_link_libraries(cube ${LIBRARIES})
-    endif()
-else()
-    if (CMAKE_CL_64)
-        set (LIB_DIR "Win64")
-    else()
-        set (LIB_DIR "Win32")
-    endif()
-
-    add_executable(cube WIN32 cube.c ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc)
-    target_link_libraries(cube ${LIBRARIES})
-endif()
-
-######################################################################################
-# cubepp
-
-if(APPLE)
-    include(macOS/cubepp/cubepp.cmake)
-elseif(NOT WIN32)
-    if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR})
-        add_executable(cubepp cube.cpp ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc)
-        target_link_libraries(cubepp ${LIBRARIES})
-    endif()
-else()
-    if (CMAKE_CL_64)
-        set (LIB_DIR "Win64")
-    else()
-        set (LIB_DIR "Win32")
-    endif()
-
-    add_executable(cubepp WIN32 cube.cpp ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc)
-    target_link_libraries(cubepp ${LIBRARIES})
-endif()
-
-######################################################################################
-# smoke
-
-if ((${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}))
-    if ((DEMOS_WSI_SELECTION STREQUAL "XCB") OR (DEMOS_WSI_SELECTION STREQUAL "WAYLAND") OR WIN32 OR
-        (CMAKE_SYSTEM_NAME STREQUAL "Android") OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin"))
-        add_subdirectory(smoke)
-    endif()
-endif()
-- 
2.4.0

